copying from non-Partitioned sources to Partitioned sources needs to be
there are twelve permutations needing entirely different behaviour:
* Scalar or Partitioned source
* signed or unsigned destination
* source length is less, equal, or greater than destination.
idea regarding assign, an override of __Assign__, with a private
"collection list" of predicated partition conditions, that comes through
if __Assign__ understands that, and only assigns things based on a Condition
in each partition, it makes Switch's job a lot easier.
if the Condition defaults to a Const 0b111111 but is
overridden if Switch tells it to change that, the complexity
of trying to use temporary Signals is gone.
implemented... probably all 6 cases for parallel signal. untested.
should work. uses nmutil.extend.ext as the underlying "detector".
scalar signal should be a reasonably easy adaptation.
turned out to be very easy. integration into PartitionedSignal is next.
preliminary unit test for PartitionedSignal.eq()
first cut found "whoops" errors, now sorted (bit of a scary moment there
in the design): returning a single (lowered) eq which copies over the
output from the on-demand-created Module, by copying its *lowered*
output (to Value) works (thank goodness)
next is to add unit tests for the other 11 permutations.
that completes the set of 12 permutations needed:
for out_width in [16, 24, 8]:
for sign in [True, False]:
for scalar in [True, False]:
self.run_tst(16, out_width, sign, scalar)
about the only other useful thing to try there is perhaps
inputting other types (scalar Const for example)