Source code for hwtLib.examples.rtlLvl.arithmetic.leadingZero
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from hwt.code import If
from hwt.hdl.types.bits import Bits
from hwt.synthesizer.rtlLevel.netlist import RtlNetlist
from hwtLib.examples.rtlLvl.netlistToRtl import netlistToVhdlStr
from ipCorePackager.constants import DIRECTION
[docs]def LeadingZero():
t = Bits(64)
resT = Bits(8)
n = RtlNetlist()
s_in = n.sig("s_in", t)
index = n.sig("s_indexOfFirstZero", resT)
leadingZeroTop = None # index is index of first empty record or last one
for i in reversed(range(8)):
connections = index(i)
if leadingZeroTop is None:
leadingZeroTop = connections
else:
leadingZeroTop = If(s_in[i]._eq(0),
connections
).Else(
leadingZeroTop
)
interf = {s_in: DIRECTION.IN, index: DIRECTION.OUT}
return n, interf
if __name__ == "__main__":
netlist, interfaces = LeadingZero()
print(netlistToVhdlStr("LeadingZero", netlist, interfaces))