mirror of
https://github.com/myhdl/myhdl.git
synced 2024-12-14 07:44:38 +08:00
Drop support for legacy Python 2.7
This commit is contained in:
parent
a74f26da21
commit
562aa3a409
@ -4,7 +4,6 @@ language: python
|
||||
python:
|
||||
- "3.7"
|
||||
- "3.6"
|
||||
- "2.7"
|
||||
- "pypy3.5"
|
||||
|
||||
install:
|
||||
|
@ -37,7 +37,7 @@ class DecTest(TestCase):
|
||||
@instance
|
||||
def stimulus():
|
||||
if nrsamples:
|
||||
vals = [long(random()*(2**width)) for i in range(nrsamples)]
|
||||
vals = [int(random()*(2**width)) for i in range(nrsamples)]
|
||||
else:
|
||||
vals = range(2**width)
|
||||
for i in vals:
|
||||
|
@ -37,7 +37,7 @@ class LeadZeroDetTest(TestCase):
|
||||
@instance
|
||||
def stimulus():
|
||||
if nrsamples:
|
||||
vals = [long(random()*(2**width)) for i in range(nrsamples)]
|
||||
vals = [int(random()*(2**width)) for i in range(nrsamples)]
|
||||
else:
|
||||
vals = range(2**width)
|
||||
for i in vals:
|
||||
|
@ -24,10 +24,10 @@ import sys
|
||||
import os
|
||||
#import shlex
|
||||
import subprocess
|
||||
from os import set_inheritable
|
||||
|
||||
from myhdl._intbv import intbv
|
||||
from myhdl import _simulator, CosimulationError
|
||||
from myhdl._compat import set_inheritable, string_types, to_bytes, to_str
|
||||
|
||||
_MAXLINE = 4096
|
||||
|
||||
@ -84,7 +84,7 @@ class Cosimulation(object):
|
||||
env['MYHDL_TO_PIPE'] = str(msvcrt.get_osfhandle(wt))
|
||||
env['MYHDL_FROM_PIPE'] = str(msvcrt.get_osfhandle(rf))
|
||||
|
||||
if isinstance(exe, string_types):
|
||||
if isinstance(exe, str):
|
||||
# exe = shlex.split(exe)
|
||||
exe = exe.split(' ')
|
||||
|
||||
@ -99,7 +99,7 @@ class Cosimulation(object):
|
||||
os.close(wt)
|
||||
os.close(rf)
|
||||
while 1:
|
||||
s = to_str(os.read(rt, _MAXLINE))
|
||||
s = os.read(rt, _MAXLINE).decode()
|
||||
if not s:
|
||||
raise CosimulationError(_error.SimulationEnd)
|
||||
e = s.split()
|
||||
@ -141,7 +141,7 @@ class Cosimulation(object):
|
||||
def _get(self):
|
||||
if not self._getMode:
|
||||
return
|
||||
buf = to_str(os.read(self._rt, _MAXLINE))
|
||||
buf = os.read(self._rt, _MAXLINE).decode()
|
||||
if not buf:
|
||||
raise CosimulationError(_error.SimulationEnd)
|
||||
e = buf.split()
|
||||
@ -180,7 +180,7 @@ class Cosimulation(object):
|
||||
if buf[-1] == 'L':
|
||||
buf = buf[:-1] # strip trailing L
|
||||
buflist.append(buf)
|
||||
os.write(self._wf, to_bytes(" ".join(buflist)))
|
||||
os.write(self._wf, (" ".join(buflist)).encode())
|
||||
self._getMode = 1
|
||||
|
||||
def _waiter(self):
|
||||
|
@ -26,7 +26,6 @@ from __future__ import absolute_import
|
||||
import warnings
|
||||
from copy import deepcopy
|
||||
|
||||
from myhdl._compat import long
|
||||
from myhdl._Signal import _Signal
|
||||
from myhdl._Waiter import _SignalWaiter, _SignalTupleWaiter
|
||||
from myhdl._intbv import intbv
|
||||
@ -143,12 +142,12 @@ class ConcatSignal(_ShadowSignal):
|
||||
v = a
|
||||
elif isinstance(a, str):
|
||||
w = len(a)
|
||||
v = long(a, 2)
|
||||
v = int(a, 2)
|
||||
else:
|
||||
raise TypeError("ConcatSignal: inappropriate argument type: %s"
|
||||
% type(a))
|
||||
nrbits += w
|
||||
val = val << w | v & (long(1) << w) - 1
|
||||
val = val << w | v & (1 << w) - 1
|
||||
self._initval = val
|
||||
ini = intbv(val)[nrbits:]
|
||||
_ShadowSignal.__init__(self, ini)
|
||||
|
@ -31,7 +31,6 @@ from __future__ import print_function
|
||||
|
||||
from copy import copy, deepcopy
|
||||
|
||||
from myhdl._compat import integer_types, long
|
||||
from myhdl import _simulator as sim
|
||||
from myhdl._simulator import _futureEvents
|
||||
from myhdl._simulator import _siglist
|
||||
@ -148,8 +147,8 @@ class _Signal(object):
|
||||
self._setNextVal = self._setNextBool
|
||||
self._printVcd = self._printVcdBit
|
||||
self._nrbits = 1
|
||||
elif isinstance(val, integer_types):
|
||||
self._type = integer_types
|
||||
elif isinstance(val, int):
|
||||
self._type = (int,)
|
||||
self._setNextVal = self._setNextInt
|
||||
elif isinstance(val, intbv):
|
||||
self._type = intbv
|
||||
@ -205,7 +204,7 @@ class _Signal(object):
|
||||
self._val = None
|
||||
elif isinstance(val, intbv):
|
||||
self._val._val = next._val
|
||||
elif isinstance(val, (integer_types, EnumItemType)):
|
||||
elif isinstance(val, (int, EnumItemType)):
|
||||
self._val = next
|
||||
else:
|
||||
self._val = deepcopy(next)
|
||||
@ -294,14 +293,14 @@ class _Signal(object):
|
||||
def _setNextInt(self, val):
|
||||
if isinstance(val, intbv):
|
||||
val = val._val
|
||||
elif not isinstance(val, (integer_types, intbv)):
|
||||
elif not isinstance(val, (int, intbv)):
|
||||
raise TypeError("Expected int or intbv, got %s" % type(val))
|
||||
self._next = val
|
||||
|
||||
def _setNextIntbv(self, val):
|
||||
if isinstance(val, intbv):
|
||||
val = val._val
|
||||
elif not isinstance(val, integer_types):
|
||||
elif not isinstance(val, int):
|
||||
raise TypeError("Expected int or intbv, got %s" % type(val))
|
||||
self._next._val = val
|
||||
self._next._handleBounds()
|
||||
@ -494,7 +493,7 @@ class _Signal(object):
|
||||
return int(self._val)
|
||||
|
||||
def __long__(self):
|
||||
return long(self._val)
|
||||
return int(self._val)
|
||||
|
||||
def __float__(self):
|
||||
return float(self._val)
|
||||
|
@ -20,9 +20,6 @@
|
||||
""" module with the bin function.
|
||||
|
||||
"""
|
||||
from myhdl._compat import long
|
||||
|
||||
|
||||
def _int2bitstring(num):
|
||||
if num == 0:
|
||||
return '0'
|
||||
@ -46,7 +43,7 @@ def bin(num, width=0):
|
||||
Optional parameter:
|
||||
width -- specifies the desired string (sign bit padding)
|
||||
"""
|
||||
num = long(num)
|
||||
num = int(num)
|
||||
s = _int2bitstring(num)
|
||||
if width:
|
||||
pad = '0'
|
||||
|
@ -26,7 +26,6 @@ import inspect
|
||||
import functools
|
||||
|
||||
import myhdl
|
||||
from myhdl._compat import PY2
|
||||
from myhdl import BlockError, BlockInstanceError, Cosimulation
|
||||
from myhdl._instance import _Instantiator
|
||||
from myhdl._util import _flatten
|
||||
@ -74,10 +73,9 @@ def _getCallInfo():
|
||||
callerrec = stack[4]
|
||||
# special case for list comprehension's extra scope in PY3
|
||||
if name == '<listcomp>':
|
||||
if not PY2:
|
||||
funcrec = stack[4]
|
||||
if len(stack) > 5:
|
||||
callerrec = stack[5]
|
||||
funcrec = stack[4]
|
||||
if len(stack) > 5:
|
||||
callerrec = stack[5]
|
||||
|
||||
name = funcrec[3]
|
||||
frame = funcrec[0]
|
||||
|
@ -1,70 +0,0 @@
|
||||
'''
|
||||
|
||||
|
||||
'''
|
||||
|
||||
import sys
|
||||
import types
|
||||
|
||||
PY2 = sys.version_info[0] == 2
|
||||
PYPY = hasattr(sys, 'pypy_translation_info')
|
||||
|
||||
_identity = lambda x: x
|
||||
|
||||
if not PY2:
|
||||
string_types = (str,)
|
||||
integer_types = (int,)
|
||||
long = int
|
||||
class_types = (type,)
|
||||
|
||||
from io import StringIO
|
||||
from os import set_inheritable
|
||||
import builtins
|
||||
|
||||
def to_bytes(s):
|
||||
return s.encode()
|
||||
|
||||
def to_str(b):
|
||||
return b.decode()
|
||||
|
||||
else:
|
||||
string_types = (str, unicode)
|
||||
integer_types = (int, long)
|
||||
long = long
|
||||
class_types = (type, types.ClassType)
|
||||
|
||||
from cStringIO import StringIO
|
||||
import __builtin__ as builtins
|
||||
|
||||
to_bytes = _identity
|
||||
to_str = _identity
|
||||
|
||||
def set_inheritable(fd, inheritable):
|
||||
# This implementation of set_inheritable is based on a code sample in
|
||||
# [PEP 0446](https://www.python.org/dev/peps/pep-0446/) and on the
|
||||
# CPython implementation of that proposal which can be browsed [here]
|
||||
# (hg.python.org/releasing/3.4/file/8671f89107c8/Modules/posixmodule.c#l11130)
|
||||
if sys.platform == "win32":
|
||||
import msvcrt
|
||||
# import ctypes.windll.kernel32 as kernel32
|
||||
import ctypes
|
||||
windll = ctypes.LibraryLoader(ctypes.WinDLL)
|
||||
SetHandleInformation = windll.kernel32.SetHandleInformation
|
||||
|
||||
HANDLE_FLAG_INHERIT = 1
|
||||
|
||||
if SetHandleInformation(msvcrt.get_osfhandle(fd),
|
||||
HANDLE_FLAG_INHERIT,
|
||||
1 if inheritable else 0) == 0:
|
||||
raise IOError("Failed on HANDLE_FLAG_INHERIT")
|
||||
else:
|
||||
import fcntl
|
||||
|
||||
fd_flags = fcntl.fcntl(fd, fcntl.F_GETFD)
|
||||
|
||||
if inheritable:
|
||||
fd_flags &= ~fcntl.FD_CLOEXEC
|
||||
else:
|
||||
fd_flags |= fcntl.FD_CLOEXEC
|
||||
|
||||
fcntl.fcntl(fd, fcntl.F_SETFD, fd_flags)
|
@ -24,10 +24,8 @@
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
from myhdl._compat import integer_types
|
||||
from myhdl._intbv import intbv
|
||||
from myhdl._Signal import _Signal
|
||||
from myhdl._compat import long
|
||||
|
||||
|
||||
def concat(base, *args):
|
||||
@ -35,7 +33,7 @@ def concat(base, *args):
|
||||
if isinstance(base, intbv):
|
||||
basewidth = base._nrbits
|
||||
val = base._val
|
||||
elif isinstance(base, integer_types):
|
||||
elif isinstance(base, int):
|
||||
if isinstance(base, bool):
|
||||
basewidth = 1
|
||||
else:
|
||||
@ -49,7 +47,7 @@ def concat(base, *args):
|
||||
val = base._val
|
||||
elif isinstance(base, str):
|
||||
basewidth = len(base)
|
||||
val = long(base, 2)
|
||||
val = int(base, 2)
|
||||
else:
|
||||
raise TypeError("concat: inappropriate first argument type: %s"
|
||||
% type(base))
|
||||
@ -70,14 +68,14 @@ def concat(base, *args):
|
||||
v = arg
|
||||
elif isinstance(arg, str):
|
||||
w = len(arg)
|
||||
v = long(arg, 2)
|
||||
v = int(arg, 2)
|
||||
else:
|
||||
raise TypeError("concat: inappropriate argument type: %s"
|
||||
% type(arg))
|
||||
if not w:
|
||||
raise TypeError("concat: arg on pos %d should have length" % (i + 1))
|
||||
width += w
|
||||
val = val << w | v & (long(1) << w) - 1
|
||||
val = val << w | v & (1 << w) - 1
|
||||
|
||||
if basewidth:
|
||||
return intbv(val, _nrbits=basewidth + width)
|
||||
|
@ -20,8 +20,6 @@
|
||||
""" Module that provides the delay class."""
|
||||
from __future__ import absolute_import
|
||||
|
||||
from myhdl._compat import integer_types
|
||||
|
||||
_errmsg = "arg of delay constructor should be a natural integeer"
|
||||
|
||||
|
||||
@ -36,6 +34,6 @@ class delay(object):
|
||||
val -- a natural integer representing the desired delay
|
||||
|
||||
"""
|
||||
if not isinstance(val, integer_types) or val < 0:
|
||||
if not isinstance(val, int) or val < 0:
|
||||
raise TypeError(_errmsg)
|
||||
self._time = val
|
||||
|
@ -24,7 +24,6 @@ from __future__ import absolute_import
|
||||
|
||||
from myhdl._bin import bin
|
||||
from myhdl._Signal import _Signal
|
||||
from myhdl._compat import string_types
|
||||
# from myhdl.conversion._VHDLNameValidation import _nameValid
|
||||
|
||||
|
||||
@ -58,7 +57,7 @@ def enum(*names, **kwargs):
|
||||
codedict = {}
|
||||
i = 0
|
||||
for name in names:
|
||||
if not isinstance(name, string_types):
|
||||
if not isinstance(name, str):
|
||||
raise TypeError()
|
||||
if name in codedict:
|
||||
raise ValueError("enum literals should be unique")
|
||||
|
@ -20,8 +20,8 @@
|
||||
""" Module with the intbv class """
|
||||
from __future__ import absolute_import, division
|
||||
|
||||
import builtins
|
||||
|
||||
from myhdl._compat import long, integer_types, string_types, builtins
|
||||
from myhdl._bin import bin
|
||||
|
||||
|
||||
@ -43,11 +43,11 @@ class intbv(object):
|
||||
else:
|
||||
# make sure there is a leading zero bit in positive numbers
|
||||
_nrbits = builtins.max(len(bin(max - 1)) + 1, len(bin(min)))
|
||||
if isinstance(val, integer_types):
|
||||
if isinstance(val, int):
|
||||
self._val = val
|
||||
elif isinstance(val, string_types):
|
||||
elif isinstance(val, str):
|
||||
mval = val.replace('_', '')
|
||||
self._val = long(mval, 2)
|
||||
self._val = int(mval, 2)
|
||||
_nrbits = len(mval)
|
||||
elif isinstance(val, intbv):
|
||||
self._val = val._val
|
||||
@ -138,7 +138,7 @@ class intbv(object):
|
||||
if i <= j:
|
||||
raise ValueError("intbv[i:j] requires i > j\n"
|
||||
" i, j == %s, %s" % (i, j))
|
||||
res = intbv((self._val & (long(1) << i) - 1) >> j, _nrbits=i - j)
|
||||
res = intbv((self._val & (1 << i) - 1) >> j, _nrbits=i - j)
|
||||
return res
|
||||
else:
|
||||
i = int(key)
|
||||
@ -157,15 +157,15 @@ class intbv(object):
|
||||
raise ValueError("intbv[i:j] = v requires j >= 0\n"
|
||||
" j == %s" % j)
|
||||
if i is None: # default
|
||||
q = self._val % (long(1) << j)
|
||||
self._val = val * (long(1) << j) + q
|
||||
q = self._val % (1 << j)
|
||||
self._val = val * (1 << j) + q
|
||||
self._handleBounds()
|
||||
return
|
||||
i = int(i)
|
||||
if i <= j:
|
||||
raise ValueError("intbv[i:j] = v requires i > j\n"
|
||||
" i, j, v == %s, %s, %s" % (i, j, val))
|
||||
lim = (long(1) << (i - j))
|
||||
lim = (1 << (i - j))
|
||||
if val >= lim or val < -lim:
|
||||
raise ValueError("intbv[i:j] = v abs(v) too large\n"
|
||||
" i, j, v == %s, %s, %s" % (i, j, val))
|
||||
@ -176,9 +176,9 @@ class intbv(object):
|
||||
else:
|
||||
i = int(key)
|
||||
if val == 1:
|
||||
self._val |= (long(1) << i)
|
||||
self._val |= (1 << i)
|
||||
elif val == 0:
|
||||
self._val &= ~(long(1) << i)
|
||||
self._val &= ~(1 << i)
|
||||
else:
|
||||
raise ValueError("intbv[i] = v requires v in (0, 1)\n"
|
||||
" i == %s " % i)
|
||||
@ -254,9 +254,9 @@ class intbv(object):
|
||||
|
||||
def __lshift__(self, other):
|
||||
if isinstance(other, intbv):
|
||||
return intbv(long(self._val) << other._val)
|
||||
return intbv(int(self._val) << other._val)
|
||||
else:
|
||||
return intbv(long(self._val) << other)
|
||||
return intbv(int(self._val) << other)
|
||||
|
||||
def __rlshift__(self, other):
|
||||
return other << self._val
|
||||
@ -350,7 +350,7 @@ class intbv(object):
|
||||
self._val **= other._val
|
||||
else:
|
||||
self._val **= other
|
||||
if not isinstance(self._val, integer_types):
|
||||
if not isinstance(self._val, int):
|
||||
raise ValueError("intbv value should be integer")
|
||||
self._handleBounds()
|
||||
return self
|
||||
@ -380,7 +380,7 @@ class intbv(object):
|
||||
return self
|
||||
|
||||
def __ilshift__(self, other):
|
||||
self._val = long(self._val)
|
||||
self._val = int(self._val)
|
||||
if isinstance(other, intbv):
|
||||
self._val <<= other._val
|
||||
else:
|
||||
@ -407,7 +407,7 @@ class intbv(object):
|
||||
|
||||
def __invert__(self):
|
||||
if self._nrbits and self._min >= 0:
|
||||
return intbv(~self._val & (long(1) << self._nrbits) - 1)
|
||||
return intbv(~self._val & (1 << self._nrbits) - 1)
|
||||
else:
|
||||
return intbv(~self._val)
|
||||
|
||||
@ -415,7 +415,7 @@ class intbv(object):
|
||||
return int(self._val)
|
||||
|
||||
def __long__(self):
|
||||
return long(self._val)
|
||||
return int(self._val)
|
||||
|
||||
def __float__(self):
|
||||
return float(self._val)
|
||||
|
@ -21,7 +21,6 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from ._intbv import intbv
|
||||
from ._compat import long
|
||||
|
||||
|
||||
class modbv(intbv):
|
||||
@ -54,7 +53,7 @@ class modbv(intbv):
|
||||
if i <= j:
|
||||
raise ValueError("modbv[i:j] requires i > j\n"
|
||||
" i, j == %s, %s" % (i, j))
|
||||
res = modbv((self._val & (long(1) << i) - 1) >> j, _nrbits=i - j)
|
||||
res = modbv((self._val & (1 << i) - 1) >> j, _nrbits=i - j)
|
||||
return res
|
||||
else:
|
||||
i = int(key)
|
||||
|
@ -29,8 +29,7 @@ import sys
|
||||
import inspect
|
||||
|
||||
from tokenize import generate_tokens, untokenize, INDENT
|
||||
|
||||
from myhdl._compat import integer_types, StringIO
|
||||
from io import StringIO
|
||||
|
||||
|
||||
def _printExcInfo():
|
||||
@ -59,7 +58,7 @@ def _isTupleOfInts(obj):
|
||||
if not isinstance(obj, tuple):
|
||||
return False
|
||||
for e in obj:
|
||||
if not isinstance(e, integer_types):
|
||||
if not isinstance(e, int):
|
||||
return False
|
||||
return True
|
||||
|
||||
|
@ -29,6 +29,7 @@ from types import FunctionType, MethodType
|
||||
import sys
|
||||
import re
|
||||
import ast
|
||||
import builtins
|
||||
from itertools import chain
|
||||
|
||||
import myhdl
|
||||
@ -48,7 +49,6 @@ from myhdl._util import _flatten
|
||||
from myhdl._util import _isTupleOfInts
|
||||
from myhdl._util import _makeAST
|
||||
from myhdl._resolverefs import _AttrRefTransformer
|
||||
from myhdl._compat import builtins, integer_types, PY2
|
||||
|
||||
myhdlObjects = myhdl.__dict__.values()
|
||||
builtinObjects = builtins.__dict__.values()
|
||||
@ -590,7 +590,7 @@ class _AnalyzeVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
node.obj = int(0) # XXX
|
||||
elif f is bool:
|
||||
node.obj = bool()
|
||||
elif f in _flatten(integer_types):
|
||||
elif f is int:
|
||||
node.obj = int(-1)
|
||||
# elif f in (posedge , negedge):
|
||||
# # node.obj = _EdgeDetector()
|
||||
@ -628,7 +628,7 @@ class _AnalyzeVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
if f.__code__.co_freevars:
|
||||
for n, c in zip(f.__code__.co_freevars, f.__closure__):
|
||||
obj = c.cell_contents
|
||||
if not isinstance(obj, (integer_types, _Signal)):
|
||||
if not isinstance(obj, (int, _Signal)):
|
||||
self.raiseError(node, _error.FreeVarTypeError, n)
|
||||
tree.symdict[n] = obj
|
||||
v = _FirstPassVisitor(tree)
|
||||
@ -671,7 +671,7 @@ class _AnalyzeVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
val = arg.obj
|
||||
if isinstance(val, bool):
|
||||
val = int(val) # cast bool to int first
|
||||
if isinstance(val, (EnumItemType, integer_types)):
|
||||
if isinstance(val, (EnumItemType, int)):
|
||||
node.case = (node.left, val)
|
||||
# check whether it can be part of an edge check
|
||||
n = node.left.id
|
||||
@ -898,12 +898,7 @@ class _AnalyzeVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
nr = 0
|
||||
a = []
|
||||
|
||||
if PY2 and isinstance(node, ast.Print):
|
||||
node_args = node.values
|
||||
else:
|
||||
node_args = node.args
|
||||
|
||||
for n in node_args:
|
||||
for n in node.args:
|
||||
if isinstance(n, ast.BinOp) and isinstance(n.op, ast.Mod) and \
|
||||
isinstance(n.left, ast.Str):
|
||||
if isinstance(n.right, ast.Tuple):
|
||||
|
@ -26,7 +26,6 @@ from __future__ import absolute_import
|
||||
import ast
|
||||
|
||||
from myhdl import ConversionError
|
||||
from myhdl._compat import PY2
|
||||
|
||||
|
||||
class _error(object):
|
||||
@ -220,7 +219,4 @@ class _namesVisitor(ast.NodeVisitor):
|
||||
|
||||
|
||||
def _get_argnames(node):
|
||||
if PY2:
|
||||
return [arg.id for arg in node.args.args]
|
||||
else:
|
||||
return [arg.arg for arg in node.args.args]
|
||||
return [arg.arg for arg in node.args.args]
|
||||
|
@ -36,6 +36,7 @@ from types import GeneratorType
|
||||
import warnings
|
||||
from copy import copy
|
||||
import string
|
||||
from io import StringIO
|
||||
|
||||
# import myhdl
|
||||
import myhdl
|
||||
@ -54,7 +55,6 @@ from myhdl._concat import concat
|
||||
from myhdl._delay import delay
|
||||
from myhdl._misc import downrange
|
||||
from myhdl._util import _flatten
|
||||
from myhdl._compat import integer_types, class_types, StringIO
|
||||
from myhdl._ShadowSignal import _TristateSignal, _TristateDriver
|
||||
from myhdl._block import _Block
|
||||
from myhdl._getHierarchy import _getHierarchy
|
||||
@ -1108,7 +1108,7 @@ class _ConvertVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
node.args[0].s = v
|
||||
self.write(v)
|
||||
return
|
||||
elif f in integer_types:
|
||||
elif f is int:
|
||||
opening, closing = '', ''
|
||||
pre, suf = self.inferCast(node.vhd, node.vhdOri)
|
||||
# convert number argument to integer
|
||||
@ -1138,7 +1138,7 @@ class _ConvertVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
self.write(closing)
|
||||
self.write(suf)
|
||||
return
|
||||
elif (type(f) in class_types) and issubclass(f, Exception):
|
||||
elif (type(f) in (type,)) and issubclass(f, Exception):
|
||||
self.write(f.__name__)
|
||||
elif f in (posedge, negedge):
|
||||
opening, closing = ' ', ''
|
||||
@ -1456,7 +1456,7 @@ class _ConvertVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
s = "'%s'" % int(obj)
|
||||
else:
|
||||
s = "%s" % obj
|
||||
elif isinstance(obj, integer_types):
|
||||
elif isinstance(obj, int):
|
||||
if isinstance(node.vhd, vhd_int):
|
||||
s = self.IntRepr(obj)
|
||||
elif isinstance(node.vhd, vhd_boolean):
|
||||
@ -1484,7 +1484,7 @@ class _ConvertVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
s = m.name
|
||||
elif isinstance(obj, EnumItemType):
|
||||
s = obj._toVHDL()
|
||||
elif (type(obj) in class_types) and issubclass(obj, Exception):
|
||||
elif (type(obj) in (type,)) and issubclass(obj, Exception):
|
||||
s = n
|
||||
else:
|
||||
self.raiseError(node, _error.UnsupportedType, "%s, %s" % (n, type(obj)))
|
||||
@ -2149,7 +2149,7 @@ def inferVhdlObj(obj):
|
||||
else:
|
||||
tipe = obj._type
|
||||
vhd = vhd_enum(tipe)
|
||||
elif isinstance(obj, integer_types):
|
||||
elif isinstance(obj, int):
|
||||
if obj >= 0:
|
||||
vhd = vhd_nat()
|
||||
else:
|
||||
@ -2216,7 +2216,7 @@ class _AnnotateTypesVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
node.vhd = vhd_unsigned(s)
|
||||
elif f is bool:
|
||||
node.vhd = vhd_boolean()
|
||||
elif f in _flatten(integer_types, ord):
|
||||
elif f in (int, ord):
|
||||
node.vhd = vhd_int()
|
||||
node.args[0].vhd = vhd_int()
|
||||
elif f in (intbv, modbv):
|
||||
|
@ -33,14 +33,13 @@ import inspect
|
||||
from datetime import datetime
|
||||
import ast
|
||||
import string
|
||||
from io import StringIO
|
||||
|
||||
from types import GeneratorType
|
||||
from myhdl._compat import StringIO
|
||||
import warnings
|
||||
|
||||
import myhdl
|
||||
from myhdl import *
|
||||
from myhdl._compat import integer_types, class_types, PY2
|
||||
from myhdl import ToVerilogError, ToVerilogWarning
|
||||
from myhdl._extractHierarchy import (_HierExtr, _isMem, _getMemInfo,
|
||||
_UserVerilogCode, _userCodeMap)
|
||||
@ -835,7 +834,7 @@ class _ConvertVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
elif f is ord:
|
||||
opening, closing = '', ''
|
||||
node.args[0].s = str(ord(node.args[0].s))
|
||||
elif f in integer_types:
|
||||
elif f is int:
|
||||
opening, closing = '', ''
|
||||
# convert number argument to integer
|
||||
if isinstance(node.args[0], ast.Num):
|
||||
@ -851,7 +850,7 @@ class _ConvertVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
self.write(opening)
|
||||
self.visit(fn.value)
|
||||
self.write(closing)
|
||||
elif (type(f) in class_types) and issubclass(f, Exception):
|
||||
elif (type(f) in (type,)) and issubclass(f, Exception):
|
||||
self.write(f.__name__)
|
||||
elif f in (posedge, negedge):
|
||||
opening, closing = ' ', ''
|
||||
@ -1093,10 +1092,6 @@ class _ConvertVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
|
||||
def getName(self, node):
|
||||
n = node.id
|
||||
if PY2 and n in ('True', 'False', 'None'):
|
||||
self.visit_NameConstant(node)
|
||||
return
|
||||
|
||||
addSignBit = False
|
||||
isMixedExpr = (not node.signed) and (self.context == _context.SIGNED)
|
||||
if n in self.tree.vardict:
|
||||
@ -1110,7 +1105,7 @@ class _ConvertVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
obj = self.tree.symdict[n]
|
||||
if isinstance(obj, bool):
|
||||
s = "1'b%s" % int(obj)
|
||||
elif isinstance(obj, integer_types):
|
||||
elif isinstance(obj, int):
|
||||
s = self.IntRepr(obj)
|
||||
elif isinstance(obj, _Signal):
|
||||
addSignBit = isMixedExpr
|
||||
@ -1121,7 +1116,7 @@ class _ConvertVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
s = m.name
|
||||
elif isinstance(obj, EnumItemType):
|
||||
s = obj._toVerilog()
|
||||
elif (type(obj) in class_types) and issubclass(obj, Exception):
|
||||
elif (type(obj) in (type,)) and issubclass(obj, Exception):
|
||||
s = n
|
||||
else:
|
||||
self.raiseError(node, _error.UnsupportedType, "%s, %s" % (n, type(obj)))
|
||||
@ -1535,7 +1530,7 @@ class _ConvertTaskVisitor(_ConvertVisitor):
|
||||
def _maybeNegative(obj):
|
||||
if hasattr(obj, '_min') and (obj._min is not None) and (obj._min < 0):
|
||||
return True
|
||||
if isinstance(obj, integer_types) and obj < 0:
|
||||
if isinstance(obj, int) and obj < 0:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
@ -1,5 +1,3 @@
|
||||
import sys
|
||||
|
||||
import py
|
||||
import pytest
|
||||
|
||||
@ -10,8 +8,7 @@ xfail = pytest.mark.xfail
|
||||
|
||||
all_sims = list(_simulators)
|
||||
|
||||
if sys.version_info[0] > 2:
|
||||
collect_ignore = ['conversion/toVerilog/test_not_supported_py2.py']
|
||||
collect_ignore = ['conversion/toVerilog/test_not_supported_py2.py']
|
||||
|
||||
def pytest_addoption(parser):
|
||||
parser.addoption("--sim", action="store", choices=all_sims,
|
||||
|
@ -29,7 +29,6 @@ if sys.platform == "win32":
|
||||
import msvcrt
|
||||
|
||||
from myhdl import Signal
|
||||
from myhdl._compat import to_bytes
|
||||
from myhdl._Cosimulation import Cosimulation, CosimulationError, _error
|
||||
|
||||
if __name__ != '__main__':
|
||||
@ -90,7 +89,7 @@ class TestCosimulation:
|
||||
buf = "FROM 00 "
|
||||
for s, w in zip(fromSignames, fromSizes):
|
||||
buf += "%s %s " % (s, w)
|
||||
os.write(wt, to_bytes(buf))
|
||||
os.write(wt, buf.encode())
|
||||
os.read(rf, MAXLINE)
|
||||
os.write(wt, b"TO 0000 a 1")
|
||||
os.read(rf, MAXLINE)
|
||||
@ -110,7 +109,7 @@ class TestCosimulation:
|
||||
buf = "TO 00 "
|
||||
for s, w in zip(toSignames, toSizes):
|
||||
buf += "%s %s " % (s, w)
|
||||
os.write(wt, to_bytes(buf))
|
||||
os.write(wt, buf.encode())
|
||||
os.read(rf, MAXLINE)
|
||||
os.write(wt, b"FROM 0000")
|
||||
os.read(rf, MAXLINE)
|
||||
@ -130,12 +129,12 @@ class TestCosimulation:
|
||||
buf = "FROM 00 "
|
||||
for s, w in zip(fromSignames, fromSizes):
|
||||
buf += "%s %s " % (s, w)
|
||||
os.write(wt, to_bytes(buf))
|
||||
os.write(wt, buf.encode())
|
||||
os.read(rf, MAXLINE)
|
||||
buf = "TO 00 "
|
||||
for s, w in zip(toSignames, toSizes):
|
||||
buf += "%s %s " % (s, w)
|
||||
os.write(wt, to_bytes(buf))
|
||||
os.write(wt, buf.encode())
|
||||
os.read(rf, MAXLINE)
|
||||
os.write(wt, b"START")
|
||||
os.read(rf, MAXLINE)
|
||||
@ -150,7 +149,7 @@ class TestCosimulation:
|
||||
buf = "TO 01 "
|
||||
for s, w in zip(fromSignames, fromSizes):
|
||||
buf += "%s %s " % (s, w)
|
||||
os.write(wt, to_bytes(buf))
|
||||
os.write(wt, buf.encode())
|
||||
|
||||
def testNoComm(self):
|
||||
with raises_kind(CosimulationError, _error.NoCommunication):
|
||||
@ -177,7 +176,7 @@ class TestCosimulation:
|
||||
for s, w in zip(fromSignames, fromSizes):
|
||||
buf += "%s %s " % (s, w)
|
||||
buf += "bb 5"
|
||||
os.write(wt, to_bytes(buf))
|
||||
os.write(wt, buf.encode())
|
||||
|
||||
def testToSignalsDupl(self):
|
||||
with raises_kind(CosimulationError, _error.DuplicateSigNames):
|
||||
@ -190,7 +189,7 @@ class TestCosimulation:
|
||||
for s, w in zip(toSignames, toSizes):
|
||||
buf += "%s %s " % (s, w)
|
||||
buf += "fff 6"
|
||||
os.write(wt, to_bytes(buf))
|
||||
os.write(wt, buf.encode())
|
||||
|
||||
def testFromSignalVals(self):
|
||||
cosim = Cosimulation(exe + "cosimFromSignalVals", **allSigs)
|
||||
@ -204,7 +203,7 @@ class TestCosimulation:
|
||||
buf = "FROM 00 "
|
||||
for s, w in zip(fromSignames, fromSizes):
|
||||
buf += "%s %s " % (s, w)
|
||||
os.write(wt, to_bytes(buf))
|
||||
os.write(wt, buf.encode())
|
||||
os.read(rf, MAXLINE)
|
||||
os.write(wt, b"TO 0000 a 1")
|
||||
os.read(rf, MAXLINE)
|
||||
@ -234,12 +233,12 @@ class TestCosimulation:
|
||||
buf = "FROM 00 "
|
||||
for s, w in zip(fromSignames, fromSizes):
|
||||
buf += "%s %s " % (s, w)
|
||||
os.write(wt, to_bytes(buf))
|
||||
os.write(wt, buf.encode())
|
||||
os.read(rf, MAXLINE)
|
||||
buf = "TO 00 "
|
||||
for s, w in zip(toSignames, toSizes):
|
||||
buf += "%s %s " % (s, w)
|
||||
os.write(wt, to_bytes(buf))
|
||||
os.write(wt, buf.encode())
|
||||
os.read(rf, MAXLINE)
|
||||
os.write(wt, b"START")
|
||||
os.read(rf, MAXLINE)
|
||||
@ -249,7 +248,7 @@ class TestCosimulation:
|
||||
buf += " "
|
||||
buf += hex(v)[2:]
|
||||
buf += " "
|
||||
os.write(wt, to_bytes(buf))
|
||||
os.write(wt, buf.encode())
|
||||
os.read(rf, MAXLINE)
|
||||
buf = "0 "
|
||||
for s, v in zip(toSignames, toXVals):
|
||||
@ -257,7 +256,7 @@ class TestCosimulation:
|
||||
buf += " "
|
||||
buf += v
|
||||
buf += " "
|
||||
os.write(wt, to_bytes(buf))
|
||||
os.write(wt, buf.encode())
|
||||
|
||||
if __name__ == "__main__":
|
||||
getattr(TestCosimulation, sys.argv[1])()
|
||||
|
@ -2,7 +2,6 @@ from __future__ import absolute_import
|
||||
|
||||
import myhdl
|
||||
from myhdl import *
|
||||
from myhdl._compat import long
|
||||
|
||||
|
||||
def bench_SliceSignal():
|
||||
@ -114,9 +113,9 @@ def bench_ConcatSignalWithConsts():
|
||||
d.next = m
|
||||
e.next = n
|
||||
yield delay(10)
|
||||
assert s[29:27] == long(c1, 2)
|
||||
assert s[29:27] == int(c1, 2)
|
||||
assert s[27:22] == a
|
||||
assert s[21] == long(c2, 2)
|
||||
assert s[21] == int(c2, 2)
|
||||
assert s[20] == b
|
||||
assert s[20:17] == c3
|
||||
assert s[17:14] == c
|
||||
|
@ -29,7 +29,6 @@ from random import randrange
|
||||
import pytest
|
||||
|
||||
from myhdl import Signal, intbv
|
||||
from myhdl._compat import long
|
||||
from myhdl._simulator import _siglist
|
||||
|
||||
random.seed(1) # random, but deterministic
|
||||
@ -107,8 +106,8 @@ class TestSig:
|
||||
for s in (self.sigs + self.incompatibleSigs):
|
||||
for n in (self.vals + self.incompatibleVals):
|
||||
assert isinstance(s.val, s._type)
|
||||
if isinstance(s.val, (int, long, intbv)):
|
||||
t = (int, long, intbv)
|
||||
if isinstance(s.val, (int, intbv)):
|
||||
t = (int, intbv)
|
||||
else:
|
||||
t = s._type
|
||||
if not isinstance(n, t):
|
||||
@ -261,11 +260,11 @@ class TestSignalAsNum:
|
||||
def binaryCheck(self, op, imin=0, imax=None, jmin=0, jmax=None):
|
||||
self.seqSetup(imin=imin, imax=imax, jmin=jmin, jmax=jmax)
|
||||
for i, j in zip(self.seqi, self.seqj):
|
||||
bi = Signal(long(i))
|
||||
bj = Signal(long(j))
|
||||
ref = op(long(i), j)
|
||||
bi = Signal(int(i))
|
||||
bj = Signal(int(j))
|
||||
ref = op(int(i), j)
|
||||
r1 = op(bi, j)
|
||||
r2 = op(long(i), bj)
|
||||
r2 = op(int(i), bj)
|
||||
r3 = op(bi, bj)
|
||||
assert type(r1) == type(ref)
|
||||
assert type(r2) == type(ref)
|
||||
@ -278,13 +277,13 @@ class TestSignalAsNum:
|
||||
self.seqSetup(imin=imin, imax=imax, jmin=jmin, jmax=jmax)
|
||||
for i, j in zip(self.seqi, self.seqj):
|
||||
bj = Signal(j)
|
||||
ref = long(i)
|
||||
ref = int(i)
|
||||
ref = op(ref, j)
|
||||
r1 = bi1 = Signal(i)
|
||||
with pytest.raises(TypeError):
|
||||
r1 = op(r1, j)
|
||||
|
||||
r2 = long(i)
|
||||
r2 = int(i)
|
||||
r2 = op(r2, bj)
|
||||
r3 = bi3 = Signal(i)
|
||||
with pytest.raises(TypeError):
|
||||
@ -405,7 +404,7 @@ class TestSignalAsNum:
|
||||
self.conversionCheck(int, imax=maxint)
|
||||
|
||||
def testLong(self):
|
||||
self.conversionCheck(long)
|
||||
self.conversionCheck(int)
|
||||
|
||||
def testFloat(self):
|
||||
self.conversionCheck(float)
|
||||
@ -469,11 +468,11 @@ class TestSignalIntBvIndexing:
|
||||
def testGetItem(self):
|
||||
self.seqsSetup()
|
||||
for s in self.seqs:
|
||||
n = long(s, 2)
|
||||
n = int(s, 2)
|
||||
sbv = Signal(intbv(n))
|
||||
sbvi = Signal(intbv(~n))
|
||||
for i in range(len(s)+20):
|
||||
ref = long(getItem(s, i), 2)
|
||||
ref = int(getItem(s, i), 2)
|
||||
res = sbv[i]
|
||||
resi = sbvi[i]
|
||||
assert res == ref
|
||||
@ -484,7 +483,7 @@ class TestSignalIntBvIndexing:
|
||||
def testGetSlice(self):
|
||||
self.seqsSetup()
|
||||
for s in self.seqs:
|
||||
n = long(s, 2)
|
||||
n = int(s, 2)
|
||||
sbv = Signal(intbv(n))
|
||||
sbvi = Signal(intbv(~n))
|
||||
for i in range(1, len(s)+20):
|
||||
@ -495,7 +494,7 @@ class TestSignalIntBvIndexing:
|
||||
except ValueError:
|
||||
assert i<=j
|
||||
continue
|
||||
ref = long(getSlice(s, i, j), 2)
|
||||
ref = int(getSlice(s, i, j), 2)
|
||||
assert res == ref
|
||||
assert type(res) == intbv
|
||||
mask = (2**(i-j))-1
|
||||
|
@ -25,7 +25,6 @@ import sys
|
||||
from random import randrange
|
||||
|
||||
from myhdl import bin
|
||||
from myhdl._compat import long
|
||||
|
||||
random.seed(1) # random, but deterministic
|
||||
|
||||
@ -48,7 +47,7 @@ def binref(num, width=0):
|
||||
Optional parameter:
|
||||
width -- specifies the desired string (sign bit padding)
|
||||
"""
|
||||
num = long(num)
|
||||
num = int(num)
|
||||
s = _int2bitstring(num)
|
||||
if width:
|
||||
pad = '0'
|
||||
|
@ -26,7 +26,6 @@ from functools import reduce
|
||||
|
||||
import pytest
|
||||
|
||||
from myhdl._compat import long
|
||||
from myhdl._concat import concat
|
||||
from myhdl._intbv import intbv
|
||||
from myhdl._Signal import Signal
|
||||
@ -49,7 +48,7 @@ class TestConcat:
|
||||
bv = concat(base, *exts)
|
||||
refstr = basestr + reduce(operator.add, extstr)
|
||||
reflen = len(refstr)
|
||||
ref = long(refstr, 2)
|
||||
ref = int(refstr, 2)
|
||||
assert bv == ref
|
||||
assert len(bv) == reflen
|
||||
|
||||
@ -58,7 +57,7 @@ class TestConcat:
|
||||
for exts, extstr in zip(extslist, self.extslist):
|
||||
bv = concat(base, *exts)
|
||||
refstr = basestr + reduce(operator.add, extstr)
|
||||
ref = long(refstr, 2)
|
||||
ref = int(refstr, 2)
|
||||
assert bv == ref
|
||||
assert len(bv) == 0
|
||||
|
||||
@ -68,12 +67,12 @@ class TestConcat:
|
||||
self.ConcatToSizedBase(bases, extslist)
|
||||
|
||||
def testConcatStringsToInt(self):
|
||||
bases = [long(base, 2) for base in self.bases]
|
||||
bases = [int(base, 2) for base in self.bases]
|
||||
extslist = self.extslist
|
||||
self.ConcatToUnsizedBase(bases, extslist)
|
||||
|
||||
def testConcatStringsToSignalInt(self):
|
||||
bases = [Signal(long(base, 2)) for base in self.bases]
|
||||
bases = [Signal(int(base, 2)) for base in self.bases]
|
||||
extslist = self.extslist
|
||||
self.ConcatToUnsizedBase(bases, extslist)
|
||||
|
||||
@ -140,28 +139,28 @@ class TestConcat:
|
||||
self.ConcatToSizedBase(bases, extslist)
|
||||
|
||||
def testConcatIntbvsToInt(self):
|
||||
bases = [long(base, 2) for base in self.bases]
|
||||
bases = [int(base, 2) for base in self.bases]
|
||||
extslist = []
|
||||
for exts in self.extslist:
|
||||
extslist.append([intbv(ext) for ext in exts])
|
||||
self.ConcatToUnsizedBase(bases, extslist)
|
||||
|
||||
def testConcatSignalIntbvsToInt(self):
|
||||
bases = [long(base, 2) for base in self.bases]
|
||||
bases = [int(base, 2) for base in self.bases]
|
||||
extslist = []
|
||||
for exts in self.extslist:
|
||||
extslist.append([Signal(intbv(ext)) for ext in exts])
|
||||
self.ConcatToUnsizedBase(bases, extslist)
|
||||
|
||||
def testConcatIntbvsToSignalInt(self):
|
||||
bases = [Signal(long(base, 2)) for base in self.bases]
|
||||
bases = [Signal(int(base, 2)) for base in self.bases]
|
||||
extslist = []
|
||||
for exts in self.extslist:
|
||||
extslist.append([intbv(ext) for ext in exts])
|
||||
self.ConcatToUnsizedBase(bases, extslist)
|
||||
|
||||
def testConcatSignalIntbvsToSignalInt(self):
|
||||
bases = [Signal(long(base, 2)) for base in self.bases]
|
||||
bases = [Signal(int(base, 2)) for base in self.bases]
|
||||
extslist = []
|
||||
for exts in self.extslist:
|
||||
extslist.append([Signal(intbv(ext)) for ext in exts])
|
||||
@ -199,7 +198,7 @@ class TestConcat:
|
||||
def testConcatMixToUnsizedBase(self):
|
||||
bases = []
|
||||
for base in self.bases:
|
||||
seq = (long(base, 2), Signal(long(base, 2)))
|
||||
seq = (int(base, 2), Signal(int(base, 2)))
|
||||
bases.append(random.choice(seq))
|
||||
extslist = []
|
||||
for exts in self.extslist:
|
||||
|
@ -28,7 +28,6 @@ from random import randrange
|
||||
|
||||
import pytest
|
||||
|
||||
from myhdl._compat import integer_types, long
|
||||
from myhdl._intbv import intbv
|
||||
|
||||
random.seed(2) # random, but deterministic
|
||||
@ -105,11 +104,11 @@ class TestIntBvIndexing:
|
||||
def testGetItem(self):
|
||||
self.seqsSetup()
|
||||
for s in self.seqs:
|
||||
n = long(s, 2)
|
||||
n = int(s, 2)
|
||||
bv = intbv(n)
|
||||
bvi = intbv(~n)
|
||||
for i in range(len(s)+20):
|
||||
ref = long(getItem(s, i), 2)
|
||||
ref = int(getItem(s, i), 2)
|
||||
res = bv[i]
|
||||
resi = bvi[i]
|
||||
assert res == ref
|
||||
@ -120,7 +119,7 @@ class TestIntBvIndexing:
|
||||
def testGetSlice(self):
|
||||
self.seqsSetup()
|
||||
for s in self.seqs:
|
||||
n = long(s, 2)
|
||||
n = int(s, 2)
|
||||
bv = intbv(n)
|
||||
bvi = intbv(~n)
|
||||
for i in range(1, len(s)+20):
|
||||
@ -131,7 +130,7 @@ class TestIntBvIndexing:
|
||||
except ValueError:
|
||||
assert i<=j
|
||||
continue
|
||||
ref = long(getSlice(s, i, j), 2)
|
||||
ref = int(getSlice(s, i, j), 2)
|
||||
assert res == ref
|
||||
assert type(res) == intbv
|
||||
mask = (2**(i-j))-1
|
||||
@ -141,13 +140,13 @@ class TestIntBvIndexing:
|
||||
def testGetSliceLeftOpen(self):
|
||||
self.seqsSetup()
|
||||
for s in self.seqs:
|
||||
n = long(s, 2)
|
||||
n = int(s, 2)
|
||||
bv = intbv(n)
|
||||
bvi = intbv(~n)
|
||||
for j in range(0,len(s)+20):
|
||||
res = bv[:j]
|
||||
resi = bvi[:j]
|
||||
ref = long(getSliceLeftOpen(s, j), 2)
|
||||
ref = int(getSliceLeftOpen(s, j), 2)
|
||||
assert res == ref
|
||||
assert type(res) == intbv
|
||||
assert resi+ref == -1
|
||||
@ -156,7 +155,7 @@ class TestIntBvIndexing:
|
||||
def testSetItem(self):
|
||||
self.seqsSetup()
|
||||
for s in self.seqs:
|
||||
n = long(s, 2)
|
||||
n = int(s, 2)
|
||||
for it in (int, intbv):
|
||||
for i in range(len(s)+20):
|
||||
# print i
|
||||
@ -168,10 +167,10 @@ class TestIntBvIndexing:
|
||||
bv1[i] = it(1)
|
||||
bv0i[i] = it(0)
|
||||
bv1i[i] = it(1)
|
||||
ref0 = long(setItem(s, i, '0'), 2)
|
||||
ref1 = long(setItem(s, i, '1'), 2)
|
||||
ref0i = ~long(setItem(s, i, '1'), 2)
|
||||
ref1i = ~long(setItem(s, i, '0'), 2)
|
||||
ref0 = int(setItem(s, i, '0'), 2)
|
||||
ref1 = int(setItem(s, i, '1'), 2)
|
||||
ref0i = ~int(setItem(s, i, '1'), 2)
|
||||
ref1i = ~int(setItem(s, i, '0'), 2)
|
||||
assert bv0 == ref0
|
||||
assert bv1 == ref1
|
||||
assert bv0i == ref0i
|
||||
@ -181,7 +180,7 @@ class TestIntBvIndexing:
|
||||
self.seqsSetup()
|
||||
toggle = 0
|
||||
for s in self.seqs:
|
||||
n = long(s, 2)
|
||||
n = int(s, 2)
|
||||
for i in range(1, len(s)+5):
|
||||
for j in range(0, len(s)+5):
|
||||
for v in self.seqv:
|
||||
@ -189,7 +188,7 @@ class TestIntBvIndexing:
|
||||
extv = ext + v
|
||||
bv = intbv(n)
|
||||
bvi = intbv(~n)
|
||||
val = long(v, 2)
|
||||
val = int(v, 2)
|
||||
toggle ^= 1
|
||||
if toggle:
|
||||
val = intbv(val)
|
||||
@ -199,7 +198,7 @@ class TestIntBvIndexing:
|
||||
assert i<=j or val >= 2**(i-j)
|
||||
continue
|
||||
else:
|
||||
ref = long(setSlice(s, i, j, extv), 2)
|
||||
ref = int(setSlice(s, i, j, extv), 2)
|
||||
assert bv == ref
|
||||
mask = (2**(i-j))-1
|
||||
vali = val ^ mask
|
||||
@ -209,27 +208,27 @@ class TestIntBvIndexing:
|
||||
assert vali >= 2**(i-j)
|
||||
continue
|
||||
else:
|
||||
refi = ~long(setSlice(s, i, j, extv), 2)
|
||||
refi = ~int(setSlice(s, i, j, extv), 2)
|
||||
assert bvi == refi
|
||||
|
||||
def testSetSliceLeftOpen(self):
|
||||
self.seqsSetup()
|
||||
toggle = 0
|
||||
for s in self.seqs:
|
||||
n = long(s, 2)
|
||||
n = int(s, 2)
|
||||
for j in range(0, len(s)+5):
|
||||
for v in self.seqv:
|
||||
bv = intbv(n)
|
||||
bvi = intbv(~n)
|
||||
val = long(v, 2)
|
||||
val = int(v, 2)
|
||||
toggle ^= 1
|
||||
if toggle:
|
||||
val = intbv(val)
|
||||
bv[:j] = val
|
||||
bvi[:j] = -1-val
|
||||
ref = long(setSliceLeftOpen(s, j, v), 2)
|
||||
ref = int(setSliceLeftOpen(s, j, v), 2)
|
||||
assert bv == ref
|
||||
refi = ~long(setSliceLeftOpen(s, j, v), 2)
|
||||
refi = ~int(setSliceLeftOpen(s, j, v), 2)
|
||||
assert bvi == refi
|
||||
|
||||
|
||||
@ -253,7 +252,7 @@ class TestIntBvAsInt:
|
||||
j = randrange(jmin, jfirstmax)
|
||||
seqi.append(i)
|
||||
seqj.append(j)
|
||||
# then some potentially longs
|
||||
# then some potentially ints
|
||||
for n in range(100):
|
||||
if not imax:
|
||||
i = randrange(maxint) + randrange(maxint)
|
||||
@ -271,11 +270,11 @@ class TestIntBvAsInt:
|
||||
def binaryCheck(self, op, imin=0, imax=None, jmin=0, jmax=None):
|
||||
self.seqSetup(imin=imin, imax=imax, jmin=jmin, jmax=jmax)
|
||||
for i, j in zip(self.seqi, self.seqj):
|
||||
bi = intbv(long(i))
|
||||
bi = intbv(int(i))
|
||||
bj = intbv(j)
|
||||
ref = op(long(i), j)
|
||||
ref = op(int(i), j)
|
||||
r1 = op(bi, j)
|
||||
r2 = op(long(i), bj)
|
||||
r2 = op(int(i), bj)
|
||||
r3 = op(bi, bj)
|
||||
#self.assertEqual(type(r1), intbv)
|
||||
#self.assertEqual(type(r2), intbv)
|
||||
@ -288,13 +287,13 @@ class TestIntBvAsInt:
|
||||
self.seqSetup(imin=imin, imax=imax, jmin=jmin, jmax=jmax)
|
||||
for i, j in zip(self.seqi, self.seqj):
|
||||
bj = intbv(j)
|
||||
ref = long(i)
|
||||
ref = int(i)
|
||||
ref = op(ref, j)
|
||||
r1 = bi1 = intbv(long(i))
|
||||
r1 = bi1 = intbv(int(i))
|
||||
r1 = op(r1, j)
|
||||
r2 = long(i)
|
||||
r2 = int(i)
|
||||
r2 = op(r2, bj)
|
||||
r3 = bi3 = intbv(long(i))
|
||||
r3 = bi3 = intbv(int(i))
|
||||
r3 = op(r3, bj)
|
||||
assert type(r1) == intbv
|
||||
assert type(r3) == intbv
|
||||
@ -420,7 +419,7 @@ class TestIntBvAsInt:
|
||||
self.conversionCheck(int, imax=maxint)
|
||||
|
||||
def testLong(self):
|
||||
self.conversionCheck(long)
|
||||
self.conversionCheck(int)
|
||||
|
||||
def testFloat(self):
|
||||
self.conversionCheck(float)
|
||||
@ -486,10 +485,10 @@ class TestIntbvBounds:
|
||||
a = intbv(i)
|
||||
assert a == i # just to be sure
|
||||
try:
|
||||
exec("a %s long(j)" % op)
|
||||
exec("a %s int(j)" % op)
|
||||
except (ZeroDivisionError, ValueError):
|
||||
return # prune
|
||||
if not isinstance(a._val, integer_types):
|
||||
if not isinstance(a._val, int):
|
||||
return # prune
|
||||
if abs(a) > maxint * maxint:
|
||||
return # keep it reasonable
|
||||
@ -498,17 +497,17 @@ class TestIntbvBounds:
|
||||
for m in (i+1, a):
|
||||
b = intbv(i, min=i, max=m)
|
||||
with pytest.raises(ValueError):
|
||||
exec("b %s long(j)" % op)
|
||||
exec("b %s int(j)" % op)
|
||||
elif a < i :
|
||||
b = intbv(i, min=a, max=i+1)
|
||||
exec("b %s long(j)" % op) # should be ok
|
||||
exec("b %s int(j)" % op) # should be ok
|
||||
for m in (a+1, i):
|
||||
b = intbv(i, min=m, max=i+1)
|
||||
with pytest.raises(ValueError):
|
||||
exec("b %s long(j)" % op)
|
||||
exec("b %s int(j)" % op)
|
||||
else: # a == i
|
||||
b = intbv(i, min=i, max=i+1)
|
||||
exec("b %s long(j)" % op) # should be ok
|
||||
exec("b %s int(j)" % op) # should be ok
|
||||
|
||||
def checkOp(self, op):
|
||||
for i in (0, 1, -1, 2, -2, 16, -24, 129, -234, 1025, -15660):
|
||||
|
@ -29,7 +29,6 @@ from random import randrange
|
||||
|
||||
from myhdl._intbv import intbv
|
||||
from myhdl._modbv import modbv
|
||||
from myhdl._compat import integer_types, long
|
||||
|
||||
random.seed(3)
|
||||
maxint=sys.maxsize
|
||||
|
11
setup.py
11
setup.py
@ -8,8 +8,8 @@ import sys
|
||||
|
||||
from collections import defaultdict
|
||||
|
||||
if sys.version_info < (2, 6) or (3, 0) <= sys.version_info < (3, 4):
|
||||
raise RuntimeError("Python version 2.6, 2.7 or >= 3.4 required.")
|
||||
if sys.version_info < (3, 4):
|
||||
raise RuntimeError("Python version 3.4+ required.")
|
||||
|
||||
|
||||
# Prefer setuptools over distutils
|
||||
@ -53,10 +53,11 @@ setup(
|
||||
'License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)',
|
||||
'Operating System :: OS Independent',
|
||||
'Programming Language :: Python',
|
||||
'Programming Language :: Python :: 2',
|
||||
'Programming Language :: Python :: 2.6',
|
||||
'Programming Language :: Python :: 2.7',
|
||||
'Programming Language :: Python :: 3',
|
||||
'Programming Language :: Python :: 3.4',
|
||||
'Programming Language :: Python :: 3.5',
|
||||
'Programming Language :: Python :: 3.6',
|
||||
'Programming Language :: Python :: 3.7',
|
||||
'Programming Language :: Python :: 3 :: Only',
|
||||
]
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user