def test_pymtl_struct_closure(do_test): a = CaseStructClosureGlobal.DUT() a.elaborate() a._rtlir_freevar_ref = { 'foo_at_upblk': (a._foo, rt.Port("input", rdt.Struct("Bits32Foo", {"foo": rdt.Vector(32)}))) } do_test(a)
def test_pymtl_packed_array(): class B(BitStruct): def __init__(s, foo=42): s.foo = [Bits32(foo) for _ in range(5)] class A(Component): def construct(s): s.in_ = InPort(B) a = A() a.elaborate() assert rdt.Struct( 'B', {'foo':rdt.PackedArray([5], rdt.Vector(32))}, ['foo'] ) == \ rdt.get_rtlir_dtype( a.in_ )
def test_py_struct(): class B(BitStruct): def __init__(s, foo=42): s.foo = Bits32(foo) class A(Component): def construct(s): s.in_ = InPort(B) a = A() a.elaborate() assert rdt.Struct('B', {'foo': rdt.Vector(32)}, ['foo']) == rdt.get_rtlir_dtype(a.in_)
def test_pymtl_packed_array(): @bitstruct class B: foo: [Bits32] * 5 class A(Component): def construct(s): s.in_ = InPort(B) a = A() a.elaborate() assert rdt.Struct( 'B', {'foo':rdt.PackedArray([5], rdt.Vector(32))} ) == \ rdt.get_rtlir_dtype( a.in_ )
def test_py_struct(): @bitstruct class B: foo: Bits32 class A(Component): def construct(s): s.in_ = InPort(B) a = A() a.elaborate() assert rdt.Struct('B', {'foo': rdt.Vector(32)}) == rdt.get_rtlir_dtype(a.in_)
def test_tmp_wire_struct( do_test ): @bitstruct class B: foo: Bits32 class A( dsl.Component ): def construct( s ): s.in_ = dsl.InPort( B ) s.out = dsl.OutPort( Bits32 ) @s.update def upblk(): u = s.in_ s.out = u.foo a = A() a.elaborate() a._rtlir_tmpvar_ref = \ {('u', 'upblk') : rt.Wire(rdt.Struct('B', {'foo':rdt.Vector(32)}))} do_test( a )
def test_tmp_wire_struct(do_test): a = CaseStructTmpWireComp.DUT() a.elaborate() a._rtlir_tmpvar_ref = \ {('u', 'upblk') : rt.Wire(rdt.Struct('Bits32Foo', {'foo':rdt.Vector(32)}))} do_test(a)
def test_pymtl_packed_array(): a = CasePackedArrayStructPortOnly.DUT() a.elaborate() assert rdt.get_rtlir_dtype( a.in_ ) == \ rdt.Struct( Bits32x5Foo, {'foo':rdt.PackedArray([5], rdt.Vector(32))} )
def test_py_struct(): a = CaseStructPortOnly.DUT() a.elaborate() assert rdt.get_rtlir_dtype(a.in_) == rdt.Struct(Bits32Foo, {'foo': rdt.Vector(32)})