Source code for hwtLib.amba.axi4Lite

from hwt.interfaces.std import VectSignal
from hwtLib.amba.axi3Lite import IP_Axi3Lite, Axi3Lite, Axi3Lite_r, \
    Axi3Lite_b, Axi3Lite_w, Axi3Lite_addr, Axi3Lite_addrAgent
from hwtLib.amba.axi_intf_common import AxiMap
from hwtLib.amba.constants import PROT_DEFAULT
from hwtSimApi.hdlSimulator import HdlSimulator


[docs]class Axi4Lite_addr(Axi3Lite_addr): """ :class:`~.Axi3Lite_addr` with "prot" signal added. .. hwt-autodoc:: """ def _declr(self): super(Axi4Lite_addr, self)._declr() self.prot = VectSignal(3)
[docs] def _initSimAgent(self, sim: HdlSimulator): self._ag = Axi4Lite_addrAgent(sim, self)
[docs]class Axi4Lite_addrAgent(Axi3Lite_addrAgent): """ :ivar ~.data: iterable of addr """
[docs] def get_data(self): return self.intf.addr.read(), self.intf.prot.read()
[docs] def set_data(self, data): if data is None: addr, prot = None, None else: addr, prot = data self.intf.addr.write(addr) self.intf.prot.write(prot)
[docs] def create_addr_req(self, addr, prot=PROT_DEFAULT): return (addr, prot)
[docs]class Axi4Lite_w(Axi3Lite_w): """ (Same as :class:`~.Axi3Lite_w`) .. hwt-autodoc:: """
[docs]class Axi4Lite_b(Axi3Lite_b): """ (Same as :class:`~.Axi3Lite_b`) .. hwt-autodoc:: """
[docs]class Axi4Lite_r(Axi3Lite_r): """ (Same as :class:`~.Axi3Lite_r`) .. hwt-autodoc:: """
[docs]class Axi4Lite(Axi3Lite): """ Axi4-lite bus interface (Same as :class:`~.Axi3Lite` just address channels do have "prot" signal) .. hwt-autodoc:: """ AW_CLS = Axi4Lite_addr AR_CLS = Axi4Lite_addr W_CLS = Axi4Lite_w R_CLS = Axi4Lite_r B_CLS = Axi4Lite_b
[docs] def _getIpCoreIntfClass(self): return IP_Axi4Lite
[docs]class IP_Axi4Lite(IP_Axi3Lite): """ IP core meta description for Axi4-lite interface """
[docs] def __init__(self): super().__init__() self.quartus_name = "axi4lite" a_sigs = ['addr', 'prot', 'valid', 'ready'] self.map = {'aw': AxiMap('aw', a_sigs), 'w': AxiMap('w', ['data', 'strb', 'valid', 'ready']), 'ar': AxiMap('ar', a_sigs), 'r': AxiMap('r', ['data', 'resp', 'valid', 'ready']), 'b': AxiMap('b', ['valid', 'ready', 'resp']) }