Source code for hwtLib.avalon.sim.memSpaceMaster

from hwt.hdl.constants import WRITE, READ
from hwt.interfaces.agents.handshaked import HandshakedReadListener
from hwt.interfaces.agents.tuleWithCallback import TupleWithCallback
from hwtLib.sim.abstractMemSpaceMaster import AbstractMemSpaceMaster


[docs]class AvalonMmMemSpaceMaster(AbstractMemSpaceMaster): """ Controller of AvalonMM simulation agent which keeps track of axi lite transactions and aggregates them to proper register names on target bus """
[docs] def __init__(self, bus, registerMap): super(AvalonMmMemSpaceMaster, self).__init__(bus, registerMap) self._read_listener = None
[docs] def _write(self, addr, size, data, mask, onDone=None): """ add write address and write data to agent :param onDone: callback function(sim) -> None """ bus = self._bus._ag burstSize = 1 bus.req.append(TupleWithCallback(WRITE, addr, burstSize, data, mask, onDone=onDone))
[docs] def _read(self, addr, size, onDone=None): """ add read address transaction to agent """ bus = self._bus._ag burstsize = 1 bus.req.append((READ, addr, burstsize, None, None)) if onDone: raise NotImplementedError() if self._read_listener is None: self._read_listener = HandshakedReadListener(self._bus.r._ag) self._read_listener.register(self._r_planed_words_cnt, onDone)