def test_L2_struct_attr(): a = CaseConnectStructAttrToOutComp.DUT() a.elaborate() a.apply( StructuralRTLIRGenL2Pass( gen_connections( a ) ) ) connections = a.get_metadata( StructuralRTLIRGenL2Pass.connections ) comp = CurComp(a, 's') assert connections == \ [(StructAttr(CurCompAttr(comp, 'in_'), 'foo'), CurCompAttr(comp, 'out'))]
def test_L2_struct_attr(): a = CaseConnectStructAttrToOutComp.DUT() a.elaborate() a.apply( StructuralRTLIRGenL2Pass( gen_connections( a ) ) ) ns = a._pass_structural_rtlir_gen comp = CurComp(a, 's') assert ns.connections == \ [(StructAttr(CurCompAttr(comp, 'in_'), 'foo'), CurCompAttr(comp, 'out'))]
def test_L2_struct_attr(): class B( BitStruct ): def __init__( s, foo=42 ): s.foo = Bits32( foo ) class A( dsl.Component ): def construct( s ): s.in_ = dsl.InPort( B ) s.out = dsl.OutPort( Bits32 ) dsl.connect( s.out, s.in_.foo ) a = A() a.elaborate() a.apply( StructuralRTLIRGenL2Pass( *gen_connections( a ) ) ) ns = a._pass_structural_rtlir_gen comp = CurComp(a, 's') assert ns.connections == \ [(StructAttr(CurCompAttr(comp, 'in_'), 'foo'), CurCompAttr(comp, 'out'))]
def test_L2_packed_index(): @bitstruct class B: foo: [Bits32] * 5 class A(dsl.Component): def construct(s): s.in_ = dsl.InPort(B) s.out = dsl.OutPort(Bits32) dsl.connect(s.out, s.in_.foo[1]) a = A() a.elaborate() a.apply(StructuralRTLIRGenL2Pass(gen_connections(a))) ns = a._pass_structural_rtlir_gen comp = CurComp(a, 's') assert ns.connections == \ [(PackedIndex(StructAttr(CurCompAttr(comp, 'in_'), 'foo'), 1), CurCompAttr(comp, 'out'))]
def gen_structural_trans_metadata( s, tr_top ): # c_ss: self-self connections # c_sc: self-child connections # c_cc: child-child connections tr_top.apply( StructuralRTLIRGenL2Pass( s.c_ss, s.c_sc, s.c_cc ) )
def gen_structural_trans_metadata( s, tr_top ): tr_top.apply( StructuralRTLIRGenL2Pass( s.inst_conns ) )