示例#1
0
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'))]
示例#2
0
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 ) )