Defer idle event until completion of transfer

This commit is contained in:
Alex Forencich
2021-03-17 18:02:11 -07:00
parent f19ca9f651
commit abb78308ff
2 changed files with 4 additions and 4 deletions

View File

@@ -469,8 +469,6 @@ class AxiStreamSource(AxiStreamBase, AxiStreamPause):
if (tready_sample and tvalid_sample) or not tvalid_sample:
if frame is None and not self.queue.empty():
frame = self.queue.get_nowait()
if self.queue.empty():
self.idle_event.set()
self.queue_occupancy_bytes -= len(frame)
self.queue_occupancy_frames -= 1
frame.sim_time_start = get_sim_time()
@@ -520,6 +518,8 @@ class AxiStreamSource(AxiStreamBase, AxiStreamPause):
if hasattr(self.bus, "tlast"):
self.bus.tlast <= 0
self.active = bool(frame)
if not frame and self.queue.empty():
self.idle_event.set()
class AxiStreamMonitor(AxiStreamBase):

View File

@@ -219,8 +219,6 @@ class StreamSource(StreamBase, StreamPause):
if (ready_sample and valid_sample) or (not valid_sample):
if not self.queue.empty() and not self.pause:
self.bus.drive(self.queue.get_nowait())
if self.queue.empty():
self.idle_event.set()
if self.valid is not None:
self.valid <= 1
self.active = True
@@ -228,6 +226,8 @@ class StreamSource(StreamBase, StreamPause):
if self.valid is not None:
self.valid <= 0
self.active = not self.queue.empty()
if self.queue.empty():
self.idle_event.set()
class StreamMonitor(StreamBase):