コード例 #1
0
ファイル: ComponentLevel3_test.py プロジェクト: qtt2/pymtl3
        def construct(s):
            s.in_ = InPort(SomeMsg1)
            s.out1 = OutPort(SomeMsg2)
            s.out2 = OutPort(SomeMsg2)

            connect(s.in_.a, s.out1.c)
            connect(s.in_.b[0:8], s.out2.c)
コード例 #2
0
ファイル: ComponentLevel3_test.py プロジェクト: qtt2/pymtl3
        def construct(s):
            s.in_ = InPort(Bits32)
            s.out1 = OutPort(Bits8)
            s.out2 = OutPort(Bits8)

            connect(s.in_[0:8], s.out1[0:8])
            connect(s.in_[0:4], s.out2[0:4])
コード例 #3
0
ファイル: ComponentLevel3_test.py プロジェクト: qtt2/pymtl3
        def construct(s):
            s.y = OutPort(Bits32)
            s.z = OutPort(Bits32)
            s.x = InPort(Bits32)

            s.y //= Bits32(1)
            s.z //= s.x
コード例 #4
0
ファイル: ComponentLevel3_test.py プロジェクト: qtt2/pymtl3
        def construct(s):
            s.in_ = InPort(SomeMsg1)
            s.out1 = OutPort(SomeMsg2)
            s.out2 = OutPort(SomeMsg2)

            # connect( s.in_.a, s.out1.c )
            # connect( s.in_.b[0:8], s.out2.c )
            @update
            def up_pass():
                s.out1.c @= s.in_.a
                s.out2.c @= s.in_.b[0:8]
コード例 #5
0
ファイル: DataStruct_test.py プロジェクト: yxd97/pymtl3
        def construct(s):
            s.struct = InPort(B)
            s.out = OutPort(C)
            s.out2 = OutPort(Bits16)
            connect(s.struct.bar[1][4], s.out)
            connect(s.struct.bar[1][4].bar, s.out2)

            s.wire = Wire(B)

            @s.update_ff
            def ffs():
                s.wire.bar <<= 1
コード例 #6
0
ファイル: ComponentLevel3_test.py プロジェクト: qtt2/pymtl3
        def construct(s, x):
            s.in_ = InPort(Bits32)
            s.out = OutPort(Bits32)
            s.out2 = OutPort(Bits32)

            s.out //= lambda: s.in_ + x

            # TODO throw some better error message when
            # the implicit name of a lambda function conflicts
            # with the explicit name of an update block

            @update
            def _lambda__s_out():
                s.out2 = Bits32(2)
コード例 #7
0
        def construct(s):
            s.out = OutPort(int)
            s.a = A()(out=s.out)

            @s.update
            def up_out_read():
                print(s.out)
コード例 #8
0
 def construct(s):
     s.x0 = Wire()
     s.x1 = InPort()
     s.x2 = OutPort()
     assert s.x0._dsl.Type == Bits1
     assert s.x1._dsl.Type == Bits1
     assert s.x2._dsl.Type == Bits1
コード例 #9
0
        def construct(s):
            s.in_ = [InPort(int) for _ in range(2)]
            s.sel = InPort(int)
            s.out = OutPort(int)

            s.mux1 = Mux(int, 2)(
                in_={
                    0: s.in_[0],
                    1: s.in_[1]
                },
                sel=s.sel,
            )
            s.mux2 = Mux(int, 2)(
                in_={
                    0: s.in_[0],
                    1: s.in_[1]
                },
                sel=s.sel,
            )
            s.mux3 = Mux(int, 2)(
                out=s.out,
                in_={
                    0: s.mux1.out,
                    1: s.mux2.out
                },
                sel=s.sel,
            )
コード例 #10
0
        def construct(s):
            s.out = OutPort(int)  # Wire is the same
            s.a = A()(out=s.out)

            s.in_ = InPort(int)

            connect(s.out, s.in_)
コード例 #11
0
  def construct( s, Type, ninputs ):
    s.in_ = [ InPort( Type ) for _ in range(ninputs) ]
    s.sel = InPort( int if Type is int else mk_bits( clog2(ninputs) ) )
    s.out = OutPort( Type )

    @s.update
    def up_mux():
      s.out = s.in_[ s.sel ]
コード例 #12
0
    def construct( s ):
      s.y = OutPort( Bits8 )
      s.x = Wire( Bits32 )

      s.y //= s.x[0:8]
      @s.update
      def sx():
        s.x = 10 # Except
コード例 #13
0
ファイル: ComponentLevel3_test.py プロジェクト: qtt2/pymtl3
    def construct(s, Type, ninputs):
        s.in_ = [InPort(Type) for _ in range(ninputs)]
        s.sel = InPort(mk_bits(clog2(ninputs)))
        s.out = OutPort(Type)

        @update
        def up_mux():
            s.out @= s.in_[s.sel]
コード例 #14
0
        def construct(s):
            s.out = OutPort(32)  # Wire is the same
            s.a = A()
            s.a.out //= s.out

            s.in_ = InPort(32)

            connect(s.out, s.in_)
コード例 #15
0
        def construct(s, InType, OutType):

            s.in_ = InPort(InType)
            s.out = OutPort(OutType)

            @s.update
            def adapter_incr():
                s.out = s.in_ + OutType(1)
コード例 #16
0
        def construct(s):
            s.out = OutPort(32)
            s.a = A()
            s.a.out //= s.out

            @update
            def up_out_read():
                print(s.out)
コード例 #17
0
ファイル: ComponentLevel3_test.py プロジェクト: qtt2/pymtl3
        def construct(s, x):
            s.in_ = InPort(Bits32)
            s.out = [OutPort(Bits32) for _ in range(5)]

            s.xs = [A() for _ in range(5)]
            for i, m in enumerate(s.xs):
                m.in_ //= lambda: s.in_ + i
                m.out //= s.out[i]
コード例 #18
0
    def construct( s, num_incrs=1, DataType=Bits4() ):
      s.in_ = [ InPort ( DataType ) for _ in range( num_incrs ) ]
      s.out = [ OutPort( DataType ) for _ in range( num_incrs ) ]

      s.incrs = [ Incr( DataType=DataType ) for _ in range( num_incrs ) ]

      for i in range( num_incrs ):
        connect( s.in_[i], s.incrs[i].in_ )
        connect( s.out[i], s.incrs[i].out )
コード例 #19
0
ファイル: ComponentLevel3_test.py プロジェクト: qtt2/pymtl3
        def construct(s):

            s.a = OutPort(Bits10)
            s.b = Wire(Bits32)
            connect(s.a, s.b[9:19])

            @update
            def up():
                s.b[0:10] @= 1023
コード例 #20
0
    def construct( s, DataType=Bits4(), incr_value=1 ):
      s.in_ = InPort ( DataType )
      s.out = OutPort( DataType )

      s.incr_value = DataType( incr_value )

      @s.update
      def up_incr():
        s.out = s.in_ + s.incr_value
コード例 #21
0
ファイル: set_param_test.py プロジェクト: qtt2/pymtl3
    def construct( s, DataType=Bits4, incr_value=1 ):
      s.in_ = InPort ( DataType )
      s.out = OutPort( DataType )

      s.incr_value = incr_value

      @update
      def up_incr():
        s.out @= s.in_ + s.incr_value
コード例 #22
0
ファイル: ComponentLevel3_test.py プロジェクト: qtt2/pymtl3
        def construct(s):
            s.in_ = [InPort(32) for _ in range(2)]
            s.sel = InPort(1)
            s.out = OutPort(32)

            s.mux = Mux(Bits32, 2)
            s.mux.in_[0] //= s.in_[0]
            s.mux.in_[1] //= s.in_[1]
            s.mux.sel //= s.sel
            s.out //= s.mux.out
コード例 #23
0
  def construct( s, Type, input_ ):
    assert type(input_) == list, "TestSrc only accepts a list of inputs!"
    s.input_ = deque([ Type(x) for x in input_ ]) # deque.popleft() is faster

    s.out = OutPort(Type)

    @s.update
    def up_src():
      if not s.input_:
        s.out = Type()
      else:
        s.out = s.input_.popleft()
コード例 #24
0
    def construct(s, input_):
        assert type(input_) == list, "TestSrc only accepts a list of inputs!"

        s.input_ = deque(input_)  # deque.popleft() is faster
        s.out = OutPort(int)

        @s.update
        def up_src():
            if not s.input_:
                s.out = 0
            else:
                s.out = s.input_.popleft()
コード例 #25
0
ファイル: Interface_test.py プロジェクト: qtt2/pymtl3
    def construct( s, InType, OutType ):

      s.in_ = InPort ( InType  )
      s.out = OutPort( OutType )

      if InType.nbits > OutType.nbits:
        @update
        def adapter_incr_zext():
          s.out @= zext( s.in_ + 1, InType )
      else:
        @update
        def adapter_incr_trunc():
          s.out @= trunc( s.in_ + 1, OutType )
コード例 #26
0
ファイル: ComponentLevel3_test.py プロジェクト: qtt2/pymtl3
        def construct(s):
            s.in_ = [InPort(32) for _ in range(2)]
            s.sel = InPort(1)
            s.out = OutPort(32)

            s.mux1 = Mux(Bits32, 2)
            s.mux1.in_[0] //= s.in_[0]
            s.mux1.in_[1] //= s.in_[1]
            s.mux1.sel //= s.sel

            s.mux2 = Mux(Bits32, 2)
            s.mux2.in_[0] //= s.in_[0]
            s.mux2.in_[1] //= s.in_[1]
            s.mux2.sel //= s.sel

            s.mux3 = Mux(Bits32, 2)
            s.mux3.in_[0] //= s.mux1.out
            s.mux3.in_[1] //= s.mux2.out
            s.mux3.sel //= s.sel
            s.mux3.out //= s.out
コード例 #27
0
ファイル: DataStruct_test.py プロジェクト: yxd97/pymtl3
 def construct(s):
     s.in_ = InPort(B)
     s.out = OutPort(Bits32)
     # PyMTL mistakenly takes s.in_.foo[1] as a single bit!
     connect(s.out, s.in_.foo[1])
コード例 #28
0
ファイル: Interface_test.py プロジェクト: qtt2/pymtl3
 def construct( s ):
   s.send_msg = OutPort( Bits1 )
   s.send_val = OutPort( Bits1 )
コード例 #29
0
ファイル: Interface_test.py プロジェクト: qtt2/pymtl3
    def construct( s, Type ):
      s.send_msg = OutPort( Type  )
      s.send_val = OutPort( Bits1 )

      s.Type = Type
コード例 #30
0
ファイル: Interface_test.py プロジェクト: qtt2/pymtl3
  def construct( s, Type ):

    s.msg = OutPort( Type )
    s.val = OutPort()
    s.rdy = InPort()