Remove await ReadOnly

This commit is contained in:
Alex Forencich
2020-12-24 00:24:03 -08:00
parent 7b7e8bf3e2
commit 7582067929
2 changed files with 8 additions and 25 deletions

View File

@@ -26,7 +26,7 @@ import logging
from collections import deque from collections import deque
import cocotb 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.utils import get_sim_time
from cocotb.bus import Bus from cocotb.bus import Bus
@@ -354,14 +354,13 @@ class AxiStreamSource(object):
self.active = False self.active = False
while True: while True:
await ReadOnly() await RisingEdge(self.clock)
# read handshake signals # read handshake signals
tready_sample = (not hasattr(self.bus, "tready")) or self.bus.tready.value tready_sample = (not hasattr(self.bus, "tready")) or self.bus.tready.value
tvalid_sample = (not hasattr(self.bus, "tvalid")) or self.bus.tvalid.value tvalid_sample = (not hasattr(self.bus, "tvalid")) or self.bus.tvalid.value
if self.reset is not None and self.reset.value: if self.reset is not None and self.reset.value:
await RisingEdge(self.clock)
frame = None frame = None
self.active = False self.active = False
self.bus.tdata <= 0 self.bus.tdata <= 0
@@ -379,8 +378,6 @@ class AxiStreamSource(object):
self.bus.tuser <= 0 self.bus.tuser <= 0
continue continue
await RisingEdge(self.clock)
if (tready_sample and tvalid_sample) or not tvalid_sample: if (tready_sample and tvalid_sample) or not tvalid_sample:
if frame is None and self.queue: if frame is None and self.queue:
frame = self.queue.popleft() frame = self.queue.popleft()
@@ -597,14 +594,13 @@ class AxiStreamSink(object):
self.active = False self.active = False
while True: while True:
await ReadOnly() await RisingEdge(self.clock)
# read handshake signals # read handshake signals
tready_sample = (not hasattr(self.bus, "tready")) or self.bus.tready.value tready_sample = (not hasattr(self.bus, "tready")) or self.bus.tready.value
tvalid_sample = (not hasattr(self.bus, "tvalid")) or self.bus.tvalid.value tvalid_sample = (not hasattr(self.bus, "tvalid")) or self.bus.tvalid.value
if self.reset is not None and self.reset.value: if self.reset is not None and self.reset.value:
await RisingEdge(self.clock)
frame = None frame = None
self.active = False self.active = False
if hasattr(self.bus, "tready"): if hasattr(self.bus, "tready"):
@@ -642,8 +638,6 @@ class AxiStreamSink(object):
frame = None frame = None
await RisingEdge(self.clock)
if hasattr(self.bus, "tready"): if hasattr(self.bus, "tready"):
self.bus.tready <= (not self.full() and not self.pause) self.bus.tready <= (not self.full() and not self.pause)
@@ -784,14 +778,13 @@ class AxiStreamMonitor(object):
self.active = False self.active = False
while True: while True:
await ReadOnly() await RisingEdge(self.clock)
# read handshake signals # read handshake signals
tready_sample = (not hasattr(self.bus, "tready")) or self.bus.tready.value tready_sample = (not hasattr(self.bus, "tready")) or self.bus.tready.value
tvalid_sample = (not hasattr(self.bus, "tvalid")) or self.bus.tvalid.value tvalid_sample = (not hasattr(self.bus, "tvalid")) or self.bus.tvalid.value
if self.reset is not None and self.reset.value: if self.reset is not None and self.reset.value:
await RisingEdge(self.clock)
frame = None frame = None
self.active = False self.active = False
continue continue
@@ -823,5 +816,3 @@ class AxiStreamMonitor(object):
self.sync.set() self.sync.set()
frame = None frame = None
await RisingEdge(self.clock)

View File

@@ -26,7 +26,7 @@ import logging
from collections import deque from collections import deque
import cocotb import cocotb
from cocotb.triggers import RisingEdge, ReadOnly, Event, First, Timer from cocotb.triggers import RisingEdge, Event, First, Timer
from cocotb.bus import Bus from cocotb.bus import Bus
@@ -190,22 +190,19 @@ class StreamSource(StreamBase, StreamPause):
async def _run_source(self): async def _run_source(self):
while True: while True:
await ReadOnly() await RisingEdge(self.clock)
# read handshake signals # read handshake signals
ready_sample = self.ready is None or self.ready.value ready_sample = self.ready is None or self.ready.value
valid_sample = self.valid is None or self.valid.value valid_sample = self.valid is None or self.valid.value
if self.reset is not None and self.reset.value: if self.reset is not None and self.reset.value:
await RisingEdge(self.clock)
self.clear() self.clear()
if self.valid is not None: if self.valid is not None:
self.valid <= 0 self.valid <= 0
self.active = False self.active = False
continue continue
await RisingEdge(self.clock)
if (ready_sample and valid_sample) or (not valid_sample): if (ready_sample and valid_sample) or (not valid_sample):
if self.drive_obj and not self.pause: if self.drive_obj and not self.pause:
self.bus.drive(self.drive_obj) self.bus.drive(self.drive_obj)
@@ -275,14 +272,13 @@ class StreamSink(StreamBase, StreamPause):
async def _run_sink(self): async def _run_sink(self):
while True: while True:
await ReadOnly() await RisingEdge(self.clock)
# read handshake signals # read handshake signals
ready_sample = self.ready is None or self.ready.value ready_sample = self.ready is None or self.ready.value
valid_sample = self.valid is None or self.valid.value valid_sample = self.valid is None or self.valid.value
if self.reset is not None and self.reset.value: if self.reset is not None and self.reset.value:
await RisingEdge(self.clock)
self.clear() self.clear()
if self.ready is not None: if self.ready is not None:
self.ready <= 0 self.ready <= 0
@@ -293,7 +289,6 @@ class StreamSink(StreamBase, StreamPause):
self.bus.sample(obj) self.bus.sample(obj)
self.callback(obj) self.callback(obj)
await RisingEdge(self.clock)
if self.ready is not None: if self.ready is not None:
self.ready <= (not self.pause) self.ready <= (not self.pause)
@@ -351,14 +346,13 @@ class StreamMonitor(StreamBase):
async def _run_monitor(self): async def _run_monitor(self):
while True: while True:
await ReadOnly() await RisingEdge(self.clock)
# read handshake signals # read handshake signals
ready_sample = self.ready is None or self.ready.value ready_sample = self.ready is None or self.ready.value
valid_sample = self.valid is None or self.valid.value valid_sample = self.valid is None or self.valid.value
if self.reset is not None and self.reset.value: if self.reset is not None and self.reset.value:
await RisingEdge(self.clock)
self.clear() self.clear()
continue continue
@@ -367,8 +361,6 @@ class StreamMonitor(StreamBase):
self.bus.sample(obj) self.bus.sample(obj)
self.callback(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): def define_stream(name, signals, optional_signals=None, valid_signal=None, ready_signal=None, signal_widths=None):
all_signals = signals.copy() all_signals = signals.copy()