summaryrefslogtreecommitdiff
path: root/tb/gfx_shader_bind/testbench/monitors.py
diff options
context:
space:
mode:
Diffstat (limited to 'tb/gfx_shader_bind/testbench/monitors.py')
-rw-r--r--tb/gfx_shader_bind/testbench/monitors.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/tb/gfx_shader_bind/testbench/monitors.py b/tb/gfx_shader_bind/testbench/monitors.py
new file mode 100644
index 0000000..6ecea0f
--- /dev/null
+++ b/tb/gfx_shader_bind/testbench/monitors.py
@@ -0,0 +1,30 @@
+import cocotb
+from cocotb.triggers import ReadOnly, RisingEdge
+
+from cocotb_bus.monitors import BusMonitor
+
+from .data import FrontWave
+
+class FrontWaveMonitor(BusMonitor):
+ _signals = ['insn', 'group', 'retry', 'valid']
+
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+
+ async def _monitor_recv(self):
+ pkt_receiving = False
+ received_data = []
+
+ while True:
+ await RisingEdge(self.clock)
+ await ReadOnly()
+
+ if not self.bus.valid.value:
+ continue
+
+ wave = FrontWave(
+ group=self.bus.group.value.integer,
+ insn=(self.bus.insn.value.integer if not self.bus.retry.value else None),
+ )
+
+ self._recv(wave)