diff --git a/cocotbext/axi/axis.py b/cocotbext/axi/axis.py index f30581c..be70a74 100644 --- a/cocotbext/axi/axis.py +++ b/cocotbext/axi/axis.py @@ -26,7 +26,7 @@ import logging from collections import deque import cocotb -from cocotb.triggers import RisingEdge, ReadOnly, Timer, First, Event +from cocotb.triggers import RisingEdge, Timer, First, Event from cocotb.utils import get_sim_time from cocotb.bus import Bus @@ -354,14 +354,13 @@ class AxiStreamSource(object): self.active = False while True: - await ReadOnly() + await RisingEdge(self.clock) # read handshake signals tready_sample = (not hasattr(self.bus, "tready")) or self.bus.tready.value tvalid_sample = (not hasattr(self.bus, "tvalid")) or self.bus.tvalid.value if self.reset is not None and self.reset.value: - await RisingEdge(self.clock) frame = None self.active = False self.bus.tdata <= 0 @@ -379,8 +378,6 @@ class AxiStreamSource(object): self.bus.tuser <= 0 continue - await RisingEdge(self.clock) - if (tready_sample and tvalid_sample) or not tvalid_sample: if frame is None and self.queue: frame = self.queue.popleft() @@ -597,14 +594,13 @@ class AxiStreamSink(object): self.active = False while True: - await ReadOnly() + await RisingEdge(self.clock) # read handshake signals tready_sample = (not hasattr(self.bus, "tready")) or self.bus.tready.value tvalid_sample = (not hasattr(self.bus, "tvalid")) or self.bus.tvalid.value if self.reset is not None and self.reset.value: - await RisingEdge(self.clock) frame = None self.active = False if hasattr(self.bus, "tready"): @@ -642,8 +638,6 @@ class AxiStreamSink(object): frame = None - await RisingEdge(self.clock) - if hasattr(self.bus, "tready"): self.bus.tready <= (not self.full() and not self.pause) @@ -784,14 +778,13 @@ class AxiStreamMonitor(object): self.active = False while True: - await ReadOnly() + await RisingEdge(self.clock) # read handshake signals tready_sample = (not hasattr(self.bus, "tready")) or self.bus.tready.value tvalid_sample = (not hasattr(self.bus, "tvalid")) or self.bus.tvalid.value if self.reset is not None and self.reset.value: - await RisingEdge(self.clock) frame = None self.active = False continue @@ -823,5 +816,3 @@ class AxiStreamMonitor(object): self.sync.set() frame = None - - await RisingEdge(self.clock) diff --git a/cocotbext/axi/stream.py b/cocotbext/axi/stream.py index dcb2617..b807ae1 100644 --- a/cocotbext/axi/stream.py +++ b/cocotbext/axi/stream.py @@ -26,7 +26,7 @@ import logging from collections import deque import cocotb -from cocotb.triggers import RisingEdge, ReadOnly, Event, First, Timer +from cocotb.triggers import RisingEdge, Event, First, Timer from cocotb.bus import Bus @@ -190,22 +190,19 @@ class StreamSource(StreamBase, StreamPause): async def _run_source(self): while True: - await ReadOnly() + await RisingEdge(self.clock) # read handshake signals ready_sample = self.ready is None or self.ready.value valid_sample = self.valid is None or self.valid.value if self.reset is not None and self.reset.value: - await RisingEdge(self.clock) self.clear() if self.valid is not None: self.valid <= 0 self.active = False continue - await RisingEdge(self.clock) - if (ready_sample and valid_sample) or (not valid_sample): if self.drive_obj and not self.pause: self.bus.drive(self.drive_obj) @@ -275,14 +272,13 @@ class StreamSink(StreamBase, StreamPause): async def _run_sink(self): while True: - await ReadOnly() + await RisingEdge(self.clock) # read handshake signals ready_sample = self.ready is None or self.ready.value valid_sample = self.valid is None or self.valid.value if self.reset is not None and self.reset.value: - await RisingEdge(self.clock) self.clear() if self.ready is not None: self.ready <= 0 @@ -293,7 +289,6 @@ class StreamSink(StreamBase, StreamPause): self.bus.sample(obj) self.callback(obj) - await RisingEdge(self.clock) if self.ready is not None: self.ready <= (not self.pause) @@ -351,14 +346,13 @@ class StreamMonitor(StreamBase): async def _run_monitor(self): while True: - await ReadOnly() + await RisingEdge(self.clock) # read handshake signals ready_sample = self.ready is None or self.ready.value valid_sample = self.valid is None or self.valid.value if self.reset is not None and self.reset.value: - await RisingEdge(self.clock) self.clear() continue @@ -367,8 +361,6 @@ class StreamMonitor(StreamBase): self.bus.sample(obj) self.callback(obj) - await RisingEdge(self.clock) - def define_stream(name, signals, optional_signals=None, valid_signal=None, ready_signal=None, signal_widths=None): all_signals = signals.copy()