Source code for hwtLib.examples.rtlLvl.axiReaderCore

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from hwt.code import If
from hwt.hdl.types.enum import HEnum
from hwt.synthesizer.rtlLevel.netlist import RtlNetlist
from hwtLib.examples.rtlLvl.netlistToRtl import netlistToVhdlStr
from ipCorePackager.constants import DIRECTION


[docs]def AxiReaderCore(): n = RtlNetlist() rSt_t = HEnum('rSt_t', ['rdIdle', 'rdData']) rSt = n.sig('rSt', rSt_t) r_idle = n.sig("r_idle") arRd = n.sig('arRd') arVld = n.sig('arVld') rVld = n.sig('rVld') rRd = n.sig('rRd') # ar fsm next If(arRd, # rdIdle If(arVld, rSt(rSt_t.rdData) ).Else( rSt(rSt_t.rdIdle) ) ).Else( # rdData If(rRd & rVld, rSt(rSt_t.rdIdle) ).Else( rSt(rSt_t.rdData) ) ) r_idle(rSt._eq(rSt_t.rdIdle)) return n, { r_idle: DIRECTION.OUT, arRd: DIRECTION.IN, arVld: DIRECTION.IN, rVld: DIRECTION.IN, rRd: DIRECTION.IN }
if __name__ == "__main__": netlist, interfaces = AxiReaderCore() print(netlistToVhdlStr("AxiReaderCore", netlist, interfaces))