[libre-riscv-dev] need help with auto-pipeline stage creation
Luke Kenneth Casson Leighton
lkcl at lkcl.net
Wed Apr 3 09:09:49 BST 2019
On Wed, Apr 3, 2019 at 7:26 AM Jacob Lifshay <programmerjake at gmail.com> wrote:
>
> If something gets way too complex, I find reimplementing using the previous
> implementation as reference usually helps.
i'm not quite there yet, as i don't have an actual understanding of
the issues in order to _begin_ a new implementation. i'm basically
losing track of how the __getattr__ and __setattr_ overloads work in
conjunction with the nmigen AST, which is itself based on overloads of
arithmetic operators.
the nmigen arithmetic operator overloads are used to accumulate an
AST, which *normally* is passed in to an "m.d.sync +=
signal.eq(something)" call.
i am *delaying* that assignment into m.d.sync (or m.d.comb),
accumulating the list of assignments and adding them to *modules*
which are created dynamically - one per stage - as a way to create a
firebreak.
unfortunately, somewhere along the line, the chain of assignments is
broken, leaving inputs disconnected from outputs. i do not know where
this is occurring.
l.
More information about the libre-riscv-dev
mailing list