--- /dev/null
+# from .fhdl.structure import *
+# from .fhdl.module import *
+# from .fhdl.specials import *
+from .fhdl.bitcontainer import *
+# from .fhdl.decorators import *
+# from .fhdl.simplify import *
+
+# from .sim import *
+
+# from .genlib.record import *
+# from .genlib.fsm import *
--- /dev/null
+from ... import tools
+from ...fhdl import ast
+from ...tools import deprecated
+
+
+__all__ = ["log2_int", "bits_for", "value_bits_sign"]
+
+
+@deprecated("instead of `log2_int`, use `nmigen.tools.log2_int`")
+def log2_int(n, need_pow2=True):
+ return tools.log2_int(n, need_pow2)
+
+
+@deprecated("instead of `bits_for`, use `nmigen.tools.bits_for`")
+def bits_for(n, require_sign_bit=False):
+ return tools.bits_for(n, require_sign_bit)
+
+
+@deprecated("instead of `value_bits_sign(v)`, use `v.bits_sign()`")
+def value_bits_sign(v):
+ return ast.Value.wrap(v).bits_sign()
from collections import Iterable
+import functools
+import warnings
-__all__ = ["flatten", "union", "log2_int", "bits_for"]
+__all__ = ["flatten", "union", "log2_int", "bits_for", "deprecated"]
def flatten(i):
if require_sign_bit:
r += 1
return r
+
+
+def deprecated(message):
+ def decorator(f):
+ @functools.wraps(f)
+ def wrapper(*args, **kwargs):
+ warnings.warn(message, DeprecationWarning, stacklevel=2)
+ return f(*args, **kwargs)
+ return wrapper
+ return decorator