[Libre-soc-bugs] [Bug 707] PartitionedSignal limited Cat function needed

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Fri Sep 24 01:12:16 BST 2021


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

--- Comment #2 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
looking at the tables created in the URL wiki page, the algorithm appears to
be:

m.Switch()
for pbits cases: 0b000 to 0b111
  output = []
  yielders = [Yielder(a), Yielder(b), ....]
  runlist = split pbits into runs of zeros
  for y in yielders:
     for i in runlist:
        for _ in range(i)+1:
            thing = yield from y
            output.append(y)
  with m.Case(pbits):
     comb += out.eq(Cat(*output)

where Yielder() is a function that yields one partition
at a time from the PartitionedSignal.

another way to do this is just to have a list of
indices which get incremented and explicitly select
the partition data explicitly.

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


More information about the libre-soc-bugs mailing list