Source code for hwtLib.common_nonstd_interfaces.addr_hs

from hwt.interfaces.agents.handshaked import HandshakedAgent
from hwt.interfaces.std import HandshakeSync, VectSignal
from hwt.synthesizer.param import Param
from hwtSimApi.hdlSimulator import HdlSimulator


[docs]class AddrHs(HandshakeSync): def _config(self): self.ID_WIDTH = Param(4) self.ADDR_WIDTH = Param(32) def _declr(self): if self.ID_WIDTH: self.id = VectSignal(self.ID_WIDTH) self.addr = VectSignal(self.ADDR_WIDTH) HandshakeSync._declr(self)
[docs] def _initSimAgent(self, sim: HdlSimulator): self._ag = AddrHsAgent(sim, self)
[docs]class AddrHsAgent(HandshakedAgent):
[docs] def set_data(self, data): i = self.intf if data is None: id_, addr = None, None elif i.ID_WIDTH: id_, addr = data i.id.write(id_) else: addr = data i.addr.write(addr)
[docs] def get_data(self): i = self.intf if i.ID_WIDTH: return i.id.read(), i.addr.read() else: return i.addr.read()