From a49dcb328ab6c1f419e3fd04499f720146ac343b Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Fri, 29 Jun 2012 16:10:50 +0200 Subject: [PATCH] actorlib/structuring/Cast: rawbits parameter --- migen/actorlib/structuring.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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) -- 2.30.2