from multipipe import CombMultiOutPipeline, CombMuxOutPipe
from multipipe import PriorityCombMuxInPipe
-from singlepipe import UnbufferedPipeline
+from singlepipe import SimpleHandshake, RecordObject
-class PassData: # (Value):
+class PassData2(RecordObject):
def __init__(self):
+ RecordObject.__init__(self)
self.mid = Signal(2, reset_less=True)
self.idx = Signal(8, reset_less=True)
self.data = Signal(16, reset_less=True)
- def _rhs_signals(self):
- return self.ports()
+
+class PassData:
+ def __init__(self):
+ self.mid = Signal(2, reset_less=True)
+ self.idx = Signal(8, reset_less=True)
+ self.data = Signal(16, reset_less=True)
+
+ def __iter__(self):
+ yield self.mid
+ yield self.idx
+ yield self.data
def shape(self):
bits, sign = 0, False
return [self.mid.eq(i.mid), self.idx.eq(i.idx), self.data.eq(i.data)]
def ports(self):
- return [self.mid, self.idx, self.data]
+ return list(self)
class PassThroughStage:
-class PassThroughPipe(UnbufferedPipeline):
+class PassThroughPipe(SimpleHandshake):
def __init__(self):
- UnbufferedPipeline.__init__(self, PassThroughStage())
+ SimpleHandshake.__init__(self, PassThroughStage())
class InputTest:
stage = PassThroughStage()
PriorityCombMuxInPipe.__init__(self, stage, p_len=self.num_rows)
- def ports(self):
- res = []
- for i in range(len(self.p)):
- res += [self.p[i].i_valid, self.p[i].o_ready] + \
- self.p[i].i_data.ports()
- res += [self.n.i_ready, self.n.o_valid] + \
- self.n.o_data.ports()
- return res
-
-
class OutputTest:
def __init__(self, dut):