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_SLICE(sliceVals, width):
"""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(width)
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.getValueCls()(SLICE, v, 1)