[Libre-soc-bugs] [Bug 458] PartitionedSignal needs nmigen constructs "m.If", Switch etc

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Sun Sep 26 17:52:03 BST 2021


https://bugs.libre-soc.org/show_bug.cgi?id=458

--- Comment #10 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
gaah.  another idea, which may be simpler to implement and is less disruptive
than temporary Signals *and* - maybe - has the potential to handle nested
Switch/case/If:

* override ast.Assign *as well* (PartitionedSignal.__Assign__,
  Value.__Assign__)
* at every SIMD Switch perform a full tree-walk of all AST searching
  for Assign statements
* append the test condition cases *onto the Assign*
* merge (AND) all test conditions together
* create a mini (leaf-node) Partitioned Switch with its
  own (private, leaf) for-loop, exactly as described
  in Comment #9

in other words, PartitionedSignal.__Assign__ becomes
a private (leaf node) Switch-for-loop-merged-with-Assign

the key strategic part is the merging (ANDing) together of all Switch
conditions that were created by dsl.py when parsing the user's HDL.

what is a huge relief is that this would *still* not require
a massive total replacement of dsl.py Module with a special
variant suitable for PartitionedSignal only.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-soc-bugs mailing list