class AvalonSTTB(object): """Testbench for avalon basic stream""" def __init__(self, dut): self.dut = dut self.clkedge = RisingEdge(dut.clk) self.stream_in = AvalonSTDriver(self.dut, "asi", dut.clk) self.stream_out = AvalonSTMonitor(self.dut, "aso", dut.clk) with warnings.catch_warnings(): warnings.simplefilter("ignore") self.scoreboard = Scoreboard(self.dut, fail_immediately=True) self.expected_output = [] self.scoreboard.add_interface(self.stream_out, self.expected_output) self.backpressure = BitDriver(self.dut.aso_ready, self.dut.clk) @cocotb.coroutine def initialise(self): self.dut.reset <= 0 cocotb.fork(Clock(self.dut.clk, 10).start()) for _ in range(3): yield self.clkedge self.dut.reset <= 1 yield self.clkedge @cocotb.coroutine def send_data(self, data): exp_data = struct.pack("B", data) self.expected_output.append(exp_data) yield self.stream_in.send(data)
def __init__(self, dut): self.dut = dut self.clkedge = RisingEdge(dut.clk) self.stream_in = AvalonSTDriver(self.dut, "asi", dut.clk) self.stream_out = AvalonSTMonitor(self.dut, "aso", dut.clk) self.scoreboard = Scoreboard(self.dut, fail_immediately=True) self.expected_output = [] self.scoreboard.add_interface(self.stream_out, self.expected_output) self.backpressure = BitDriver(self.dut.aso_ready, self.dut.clk)