Skip to content

Slice

IC Design Related Slice Handling.

Classes:

Name Description
SliceDirection

Slice Direction.

Slice

Bit slice of width bits starting at bit position left or right.

SliceDirection

Bases: Enum

Slice Direction.

Slice

Bases: mementos

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

Methods:

Name Description
cast

Create :any:Slice from value.

extract

Extract slice value from word.

Attributes:

Name Type Description
width int

Slice Width.

bits

Colon separated bits.

mask

Mask.

direction

Direction.

slice

Python Slice Equivalent.

width property

width

Slice Width.

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'

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
<SliceDirection.UP: 1>
>>> Slice(left=8, right=4).direction
<SliceDirection.DOWN: 0>
>>> 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 4:15

extract

extract(word)

Extract slice value from word.

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