From: Sebastien Bourdeauducq Date: Fri, 29 Jun 2012 14:10:50 +0000 (+0200) Subject: actorlib/structuring/Cast: rawbits parameter X-Git-Tag: 24jan2021_ls180~2099^2~875 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a49dcb328ab6c1f419e3fd04499f720146ac343b;p=litex.git actorlib/structuring/Cast: rawbits parameter --- diff --git a/migen/actorlib/structuring.py b/migen/actorlib/structuring.py index 15ced2d3..9b798ee5 100644 --- a/migen/actorlib/structuring.py +++ b/migen/actorlib/structuring.py @@ -1,11 +1,17 @@ from migen.fhdl.structure import * from migen.flow.actor import * +def _rawbits_layout(l): + if isinstance(l, int): + return [("rawbits", BV(l))] + else: + return l + class Cast(CombinatorialActor): def __init__(self, layout_from, layout_to): super().__init__( - ("sink", Sink, layout_from), - ("source", Source, layout_to)) + ("sink", Sink, _rawbits_layout(layout_from)), + ("source", Source, _rawbits_layout(layout_to))) def get_process_fragment(self): sigs_from = self.token("sink").flatten() @@ -45,7 +51,7 @@ class Unpack(Actor): ) ] cases = [(Constant(i, BV(muxbits)) if i else Default(), - Cat(*self.token("source").flatten()).eq(*self.token("sink").subrecord("chunk{0}".format(i)).flatten())) + Cat(*self.token("source").flatten()).eq(Cat(*self.token("sink").subrecord("chunk{0}".format(i)).flatten()))) for i in range(self.n)] comb.append(Case(mux, *cases)) return Fragment(comb, sync)