fhdl/bitcontainer: remove fslice and freversed

This commit is contained in:
Sebastien Bourdeauducq 2015-09-17 14:38:33 +08:00
parent fd88b9b8a3
commit 0a92e346d3
1 changed files with 1 additions and 58 deletions

View File

@ -1,7 +1,7 @@
from migen.fhdl import structure as f
__all__ = ["log2_int", "bits_for", "flen", "fiter", "fslice", "freversed"]
__all__ = ["log2_int", "bits_for", "flen", "fiter"]
def log2_int(n, need_pow2=True):
@ -149,60 +149,3 @@ def fiter(v):
return (v[i] for i in range(flen(v)))
else:
raise TypeError("Can not bit-iterate {} {}".format(type(v), v))
def fslice(v, s):
"""Bit slice
Parameters
----------
v : int, bool or Value
s : slice or int
Returns
-------
int or Value
Expression for the slice `s` of `v`.
Examples
--------
>>> fslice(f.Signal(2), 1) #doctest: +ELLIPSIS
<migen.fhdl.structure._Slice object at 0x...>
>>> bin(fslice(0b1101, slice(1, None, 2)))
'0b10'
>>> fslice(-1, slice(0, 4))
1
>>> fslice(-7, slice(None))
9
"""
if isinstance(v, (bool, int)):
if isinstance(s, int):
s = slice(s)
idx = range(*s.indices(bits_for(v)))
return sum(((v >> i) & 1) << j for j, i in enumerate(idx))
elif isinstance(v, f.Value):
return v[s]
else:
raise TypeError("Can not bit-slice {} {}".format(type(v), v))
def freversed(v):
"""Bit reverse
Parameters
----------
v : int, bool or Value
Returns
-------
int or Value
Expression containing the bit reversed input.
Examples
--------
>>> freversed(f.Signal(2)) #doctest: +ELLIPSIS
<migen.fhdl.structure.Cat object at 0x...>
>>> bin(freversed(0b1011))
'0b1101'
"""
return fslice(v, slice(None, None, -1))