Source code for hwtLib.examples.rtlLvl.simpleEnum
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from hwt.code import If
from hwt.hdl.types.bits import Bits
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 SimpleEnum():
t = Bits(8)
fsmT = HEnum('fsmT', ['send0', 'send1'])
n = RtlNetlist()
s_out = n.sig("s_out", t)
s_in0 = n.sig("s_in0", t)
s_in1 = n.sig("s_in1", t)
clk = n.sig("clk")
syncRst = n.sig("rst")
fsmSt = n.sig("fsmSt", fsmT, clk, syncRst, fsmT.send0)
If(fsmSt._eq(fsmT.send0),
s_out(s_in0),
fsmSt(fsmT.send1),
).Else(
s_out(s_in1),
fsmSt(fsmT.send0)
)
interf = {clk: DIRECTION.IN, syncRst: DIRECTION.IN,
s_in0: DIRECTION.IN, s_in1: DIRECTION.IN,
s_out: DIRECTION.OUT}
return n, interf
if __name__ == "__main__":
netlist, interfaces = SimpleEnum()
print(netlistToVhdlStr("SimpleEnum", netlist, interfaces))