Slice
IC Design Related Slice Handling.
Classes:
| Name | Description |
|---|---|
SliceDirection |
Slice Direction. |
Slice |
Bit slice of |
SliceDirection
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: |
extract |
Extract slice value from |
Attributes:
| Name | Type | Description |
|---|---|---|
width |
int
|
Slice Width. |
bits |
Colon separated bits. |
|
mask |
Mask. |
|
direction |
Direction. |
|
slice |
Python Slice Equivalent. |
bits
property
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.
>>> 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.
>>> 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
cast
staticmethod
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