Source code for hwtLib.interfaces.addrDataHs
from hwt.interfaces.agents.handshaked import HandshakedAgent
from hwt.interfaces.std import VectSignal, HandshakeSync
from hwt.synthesizer.param import Param
[docs]class AddrDataHsAgent(HandshakedAgent):
[docs] def doWrite(self, s, data):
i = self.intf
w = s.write
if data is None:
addr, d = None, None
else:
addr, d = data
w(addr, i.addr)
w(d, i.data)
[docs] def doRead(self, s):
i = self.intf
r = s.read
return r(i.addr), r(i.data), r(i.mask)
[docs]class AddrDataHs(HandshakeSync):
[docs] def _config(self):
self.ADDR_WIDTH = Param(8)
self.DATA_WIDTH = Param(8)
[docs] def _declr(self):
super(AddrDataHs, self)._declr()
self.addr = VectSignal(self.ADDR_WIDTH)
self.data = VectSignal(self.DATA_WIDTH)
[docs] def _initSimAgent(self):
self._ag = AddrDataHsAgent(self)
[docs]class AddrDataMaskHsAgent(HandshakedAgent):
[docs] def doWrite(self, s, data):
i = self.intf
w = s.write
if data is None:
addr, d, mask = None, None, None
else:
addr, d, mask = data
w(addr, i.addr)
w(d, i.data)
w(mask, i.mask)
[docs] def doRead(self, s):
i = self.intf
r = s.read
return r(i.addr), r(i.data), r(i.mask)
[docs]class AddrDataBitMaskHs(AddrDataHs):
[docs] def _declr(self):
super(AddrDataBitMaskHs, self)._declr()
self.mask = VectSignal(self.DATA_WIDTH)
[docs] def _initSimAgent(self):
self._ag = AddrDataMaskHsAgent(self)