[Libre-soc-bugs] [Bug 731] potential design oversight in Partitioned SimdSignal Cat/Assign/etc lhs/rhs
bugzilla-daemon at libre-soc.org
bugzilla-daemon at libre-soc.org
Sun Oct 17 20:30:26 BST 2021
https://bugs.libre-soc.org/show_bug.cgi?id=731
Luke Kenneth Casson Leighton <lkcl at lkcl.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
See Also| |https://bugs.libre-soc.org/
| |show_bug.cgi?id=719
--- Comment #1 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
firstly, some unit tests need writing (in test_partsig.py),
it does not matter if they fail, that indicates a need to be
fixed.
examining PartitionedCat as an example, the flaw is anticipated
but not yet confirmed to be here:
112 with m.Case(pbit):
113 # direct access to the underlying Signal
114 comb += self.output.sig.eq(Cat(*output))
this is expected only to cope with RHS. the option would therefore
be required for the following:
comb += Cat(*output).eq(self.input)
but, paradoxically, this results in exactly the same code because
output has to be followed up with an assignment to self.output.sig
anyway.
thus, we conclude that for "lhs" mode there must be a *list of outputs*
rather than as is the case currently only a list of *inputs*.
determining which mode to use, unfortunately, cannot be determined until
the actual Assignment takes place!
therefore, Assignment must actually perform an analysis of its lhs and
rhs arguments and set which mode (lhs or rhs) they are set to!
this is a rather large piece of work so should only be done if it
turns out to be entirely necessary, and, furthermore, evaluated against
whether the existing HDL can be adopted to avoid LHS AST assignments,
temporarily. there are a number of known uses of Cat for example
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the libre-soc-bugs
mailing list