Skip to content

Slice Handling

IC Design Related Slice Handling.

SliceDirection

Bases: Enum

Slice Direction.

Slice

Bases: LightObject

Bit 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 s.slice slice(9, 6, -1) tuple(s) (9, 8, 7, 6) s.prev 5 s.nxt 10

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 s.slice slice(6, 9, 1) tuple(s) (6, 7, 8, 9) s.prev 5 s.nxt 10

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 ''

bits 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'

prev property

prev

Previous Bit respecting direction.

nxt property

nxt

Next Free Bit respecting direction.

mask 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

direction property

direction

Direction.

Slice(left=4, right=8).direction Slice(left=8, right=4).direction Slice(left=4).direction Slice(right=4).direction

slice property

slice

Python Slice Equivalent.

cast staticmethod

cast(value, direction=None)

Create :any:Slice from 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 upwards

extract

extract(word)

Extract slice value from word.

slice = Slice(left=5, right=1) slice.mask 62 slice.extract(0x59) 12