blob: 6ecea0fe88115beaa2d87ec2f44fb9b24b9ef4d0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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)
|