Source code for hwt.hdl.types.sliceUtils
from hwt.doc_markers import internal
from hwt.hdl.types.defs import INT, SLICE
from hwt.hdl.types.slice import HSlice
from hwt.hdl.types.typeCast import toHVal
[docs]
@internal
def slice_to_HSlice(sliceVals: slice, widthOfSlicedVec: int):
"""convert python slice to value of SLICE hdl type"""
if sliceVals.step is None:
step = -1
else:
step = sliceVals.step
start = sliceVals.start
if start is None:
start = INT.from_py(widthOfSlicedVec)
else:
start = toHVal(start)
stop = sliceVals.stop
if stop is None:
stop = INT.from_py(0)
else:
stop = toHVal(stop)
v = slice(start, stop, step)
return HSlice.getConstCls()(SLICE, v, 1)