icdutil.slices module
IC Design Related Slice Handling.
- class icdutil.slices.Slice(*args, **kwargs)[source]
Bases:
NewBaseBit slice of width bits starting at bit position left or right.
>>> s = Slice(right=6, left=9) >>> s Slice('9:6') >>> s.left 9 >>> s.right 6 >>> s.width 4 >>> str(s) '9:6' >>> s.mask 960 >>> s.direction <SliceDirection.DOWN: 0> >>> s.slice slice(9, 6, -1)
>>> s = Slice(left=6, right=9) >>> s Slice('6:9') >>> s.left 6 >>> s.right 9 >>> s.width 4 >>> str(s) '6:9' >>> s.mask 960 >>> s.direction <SliceDirection.UP: 1> >>> s.slice slice(6, 9, 1)
>>> Slice(left=7, right=4) in Slice(left=7, right=4) True >>> Slice(left=7, right=5) in Slice(left=7, right=4) True >>> Slice(left=6, right=4) in Slice(left=7, right=4) True >>> Slice(left=7, right=4) in Slice(left=6, right=4) False >>> Slice(left=7, right=4) in Slice(left=7, right=5) False >>> Slice(left=7, right=5) in Slice(left=4, right=7) False
>>> Slice('2:1') Slice('2:1') >>> Slice('1:2') Slice('1:2') >>> Slice(2) Slice('2') >>> Slice(right=2) Slice('2') >>> Slice(right=2, left=3) Slice('3:2') >>> Slice.cast(slice(2, 1)) Slice('2:1') >>> Slice.cast(slice(1, 2)) Slice('1:2') >>> Slice('') Traceback (most recent call last): ... ValueError: Invalid Slice Specification ''
- property bits
Colon separated bits.
>>> Slice(left=4, right=8).bits '4:8' >>> Slice(left=8, right=4).bits '8:4' >>> Slice(left=4).bits '4' >>> Slice(right=4).bits '4'
- static cast(value, direction=None) Slice[source]
Create
Slicefrom value.These three formats are supported:
>>> Slice.cast("[15:4]") Slice('15:4') >>> Slice.cast("[4:15]") Slice('4:15') >>> Slice.cast("[16]") Slice('16') >>> Slice.cast(range(4,16)) Slice('4:15') >>> Slice.cast(range(15, 3, -1)) Slice('15:4') >>> Slice.cast('16') Slice('16') >>> Slice.cast(16) Slice('16') >>> Slice.cast(Slice('16')) Slice('16') >>> Slice.cast('') Traceback (most recent call last): ... ValueError: Invalid Slice Specification '' >>> Slice.cast(None) Traceback (most recent call last): ... ValueError: Invalid Slice Specification None >>> Slice.cast("[4]", direction=DOWN) Slice('4') >>> Slice.cast("[4:15]", direction=DOWN) Traceback (most recent call last): ... ValueError: Slice must be downwards but is 4:15
- property direction
Direction.
>>> Slice(left=4, right=8).direction <SliceDirection.UP: 1> >>> Slice(left=8, right=4).direction <SliceDirection.DOWN: 0> >>> Slice(left=4).direction >>> Slice(right=4).direction
- extract(word)[source]
Extract slice value from word.
>>> slice = Slice(left=5, right=1) >>> slice.mask 62 >>> slice.extract(0x59) 12
- left
- property mask
Mask.
>>> Slice(left=4, right=8).mask 496 >>> Slice(left=8, right=4).mask 496 >>> Slice(left=4).mask 16 >>> Slice(right=4).mask 16
- right
- property slice
Python Slice Equivalent.
- property width: int
Slice Width.