mirror of
https://github.com/myhdl/myhdl.git
synced 2025-01-24 21:52:56 +08:00
Merge branch 'jck-py3-conv'
This commit is contained in:
commit
5934e06383
@ -77,6 +77,9 @@ def enum(*names, **kwargs):
|
||||
self._nritems = type._nritems
|
||||
self._type = type
|
||||
|
||||
def __hash__(self):
|
||||
return hash((self._type, self._index))
|
||||
|
||||
def __repr__(self):
|
||||
return self._name
|
||||
|
||||
|
@ -20,7 +20,7 @@
|
||||
""" MyHDL conversion analysis module.
|
||||
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
from __future__ import absolute_import, print_function
|
||||
|
||||
import inspect
|
||||
# import compiler
|
||||
@ -39,13 +39,14 @@ from myhdl._always_comb import _AlwaysComb
|
||||
from myhdl._always_seq import _AlwaysSeq
|
||||
from myhdl._always import _Always
|
||||
from myhdl.conversion._misc import (_error, _access, _kind,
|
||||
_ConversionMixin, _Label, _genUniqueSuffix)
|
||||
_ConversionMixin, _Label, _genUniqueSuffix,
|
||||
_get_argnames)
|
||||
from myhdl._extractHierarchy import _isMem, _getMemInfo, _UserCode
|
||||
from myhdl._Signal import _Signal, _WaiterList
|
||||
from myhdl._ShadowSignal import _ShadowSignal, _SliceSignal, _TristateDriver
|
||||
from myhdl._util import _isTupleOfInts, _dedent, _flatten, _makeAST
|
||||
from myhdl._resolverefs import _AttrRefTransformer
|
||||
from myhdl._compat import builtins, integer_types
|
||||
from myhdl._compat import builtins, integer_types, PY2
|
||||
|
||||
myhdlObjects = myhdl.__dict__.values()
|
||||
builtinObjects = builtins.__dict__.values()
|
||||
@ -287,7 +288,7 @@ class _FirstPassVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
if not self.toplevel:
|
||||
self.raiseError(node, _error.NotSupported, "embedded function definition")
|
||||
self.toplevel = False
|
||||
node.argnames = [arg.id for arg in node.args.args]
|
||||
node.argnames = _get_argnames(node)
|
||||
# don't visit decorator lists - they can support more than other calls
|
||||
# put official docstrings aside for separate processing
|
||||
node.doc = None
|
||||
@ -559,6 +560,13 @@ class _AnalyzeVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
|
||||
def visit_Call(self, node):
|
||||
self.visit(node.func)
|
||||
f = self.getObj(node.func)
|
||||
node.obj = None
|
||||
|
||||
if f is print:
|
||||
self.visit_Print(node)
|
||||
return
|
||||
|
||||
self.access = _access.UNKNOWN
|
||||
for arg in node.args:
|
||||
self.visit(arg)
|
||||
@ -566,8 +574,6 @@ class _AnalyzeVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
self.visit(kw)
|
||||
self.access = _access.INPUT
|
||||
argsAreInputs = True
|
||||
f = self.getObj(node.func)
|
||||
node.obj = None
|
||||
if type(f) is type and issubclass(f, intbv):
|
||||
node.obj = self.getVal(node)
|
||||
elif f is concat:
|
||||
@ -614,7 +620,7 @@ class _AnalyzeVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
v.visit(tree)
|
||||
node.obj = tree.returnObj
|
||||
node.tree = tree
|
||||
tree.argnames = argnames = [arg.id for arg in tree.body[0].args.args]
|
||||
tree.argnames = argnames = _get_argnames(tree.body[0])
|
||||
# extend argument list with keyword arguments on the correct position
|
||||
node.args.extend([None]*len(node.keywords))
|
||||
for kw in node.keywords:
|
||||
@ -766,6 +772,9 @@ class _AnalyzeVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
self.raiseError(node, _error.UnsupportedListComp)
|
||||
mem.depth = cf.args[0].obj
|
||||
|
||||
def visit_NameConstant(self, node):
|
||||
node.obj = node.value
|
||||
|
||||
def visit_Name(self, node):
|
||||
if isinstance(node.ctx, ast.Store):
|
||||
self.setName(node)
|
||||
@ -893,7 +902,13 @@ class _AnalyzeVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
f = []
|
||||
nr = 0
|
||||
a = []
|
||||
for n in node.values:
|
||||
|
||||
if PY2 and isinstance(node, ast.Print):
|
||||
node_args = node.values
|
||||
else:
|
||||
node_args = 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):
|
||||
@ -1169,7 +1184,7 @@ class _AnalyzeFuncVisitor(_AnalyzeVisitor):
|
||||
|
||||
def visit_FunctionDef(self, node):
|
||||
self.refStack.push()
|
||||
argnames = [arg.id for arg in node.args.args]
|
||||
argnames = _get_argnames(node)
|
||||
for i, arg in enumerate(self.args):
|
||||
n = argnames[i]
|
||||
self.tree.symdict[n] = self.getObj(arg)
|
||||
@ -1276,7 +1291,7 @@ class _AnalyzeTopFuncVisitor(_AnalyzeVisitor):
|
||||
def visit_FunctionDef(self, node):
|
||||
|
||||
self.name = node.name
|
||||
self.argnames = [arg.id for arg in node.args.args]
|
||||
self.argnames = _get_argnames(node)
|
||||
if isboundmethod(self.func):
|
||||
if not self.argnames[0] == 'self':
|
||||
self.raiseError(node, _error.NotSupported,
|
||||
|
@ -30,6 +30,7 @@ import myhdl
|
||||
from myhdl import *
|
||||
from myhdl import ConversionError
|
||||
from myhdl._util import _flatten
|
||||
from myhdl._compat import PY2
|
||||
|
||||
class _error(object):
|
||||
FirstArgType = "first argument should be a classic function"
|
||||
@ -209,3 +210,9 @@ class _namesVisitor(ast.NodeVisitor):
|
||||
|
||||
def visit_Name(self, node):
|
||||
self.names.append(node.id)
|
||||
|
||||
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]
|
||||
|
@ -275,7 +275,7 @@ def _writeCustomPackage(f, intf):
|
||||
print("attribute enum_encoding: string;", file=f)
|
||||
print(file=f)
|
||||
sortedList = list(_enumPortTypeSet)
|
||||
sortedList.sort(cmp=lambda a, b: cmp(a._name, b._name))
|
||||
sortedList.sort(key=lambda x: x._name)
|
||||
for t in sortedList:
|
||||
print(" %s" % t._toVHDL(), file=f)
|
||||
print(file=f)
|
||||
@ -366,7 +366,7 @@ def _writeConstants(f):
|
||||
def _writeTypeDefs(f):
|
||||
f.write("\n")
|
||||
sortedList = list(_enumTypeSet)
|
||||
sortedList.sort(cmp=lambda a, b: cmp(a._name, b._name))
|
||||
sortedList.sort(key=lambda x: x._name)
|
||||
for t in sortedList:
|
||||
f.write("%s\n" % t._toVHDL())
|
||||
f.write("\n")
|
||||
@ -926,6 +926,11 @@ class _ConvertVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
fn = node.func
|
||||
# assert isinstance(fn, astNode.Name)
|
||||
f = self.getObj(fn)
|
||||
|
||||
if f is print:
|
||||
self.visit_Print(node)
|
||||
return
|
||||
|
||||
fname = ''
|
||||
pre, suf = '', ''
|
||||
opening, closing = '(', ')'
|
||||
@ -1243,6 +1248,10 @@ class _ConvertVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
for stmt in node.body:
|
||||
self.visit(stmt)
|
||||
|
||||
def visit_NameConstant(self, node):
|
||||
node.id = str(node.value)
|
||||
self.getName(node)
|
||||
|
||||
def visit_Name(self, node):
|
||||
if isinstance(node.ctx, ast.Store):
|
||||
self.setName(node)
|
||||
@ -1975,7 +1984,7 @@ def inferVhdlObj(obj):
|
||||
if (isinstance(obj, _Signal) and obj._type is intbv) or \
|
||||
isinstance(obj, intbv):
|
||||
ls = getattr(obj, 'lenStr', False)
|
||||
if obj.min < 0:
|
||||
if obj.min is None or obj.min < 0:
|
||||
vhd = vhd_signed(size=len(obj), lenStr=ls)
|
||||
else:
|
||||
vhd = vhd_unsigned(size=len(obj), lenStr=ls)
|
||||
@ -2101,6 +2110,10 @@ class _AnnotateTypesVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
self.tree.vardict[var] = _loopInt(-1)
|
||||
self.generic_visit(node)
|
||||
|
||||
def visit_NameConstant(self, node):
|
||||
node.vhd = inferVhdlObj(node.value)
|
||||
node.vhdOri = copy(node.vhd)
|
||||
|
||||
def visit_Name(self, node):
|
||||
if node.id in self.tree.vardict:
|
||||
node.obj = self.tree.vardict[node.id]
|
||||
|
@ -39,7 +39,7 @@ import warnings
|
||||
|
||||
import myhdl
|
||||
from myhdl import *
|
||||
from myhdl._compat import integer_types, class_types
|
||||
from myhdl._compat import integer_types, class_types, PY2
|
||||
from myhdl import ToVerilogError, ToVerilogWarning
|
||||
from myhdl._extractHierarchy import (_HierExtr, _isMem, _getMemInfo,
|
||||
_UserVerilogCode, _userCodeMap)
|
||||
@ -175,7 +175,7 @@ class _ToVerilogConvertor(object):
|
||||
|
||||
# build portmap for cosimulation
|
||||
portmap = {}
|
||||
for n, s in intf.argdict.iteritems():
|
||||
for n, s in intf.argdict.items():
|
||||
if hasattr(s, 'driver'): portmap[n] = s.driver()
|
||||
else: portmap[n] = s
|
||||
self.portmap = portmap
|
||||
@ -443,6 +443,12 @@ opmap = {
|
||||
ast.Or : '||',
|
||||
}
|
||||
|
||||
nameconstant_map = {
|
||||
True: "1'b1",
|
||||
False: "0'b1",
|
||||
None: "'bz"
|
||||
}
|
||||
|
||||
|
||||
|
||||
class _ConvertVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
@ -716,6 +722,11 @@ class _ConvertVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
fn = node.func
|
||||
# assert isinstance(fn, astNode.Name)
|
||||
f = self.getObj(fn)
|
||||
|
||||
if f is print:
|
||||
self.visit_Print(node)
|
||||
return
|
||||
|
||||
opening, closing = '(', ')'
|
||||
if f is bool:
|
||||
self.write("(")
|
||||
@ -982,6 +993,9 @@ class _ConvertVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
def visit_ListComp(self, node):
|
||||
pass # do nothing
|
||||
|
||||
def visit_NameConstant(self, node):
|
||||
self.write(nameconstant_map[node.obj])
|
||||
|
||||
def visit_Name(self, node):
|
||||
if isinstance(node.ctx, ast.Store):
|
||||
self.setName(node)
|
||||
@ -992,16 +1006,14 @@ class _ConvertVisitor(ast.NodeVisitor, _ConversionMixin):
|
||||
self.write(node.id)
|
||||
|
||||
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)
|
||||
n = node.id
|
||||
if n == 'False':
|
||||
s = "1'b0"
|
||||
elif n == 'True':
|
||||
s = "1'b1"
|
||||
elif n == 'None':
|
||||
s = "'bz"
|
||||
elif n in self.tree.vardict:
|
||||
if n in self.tree.vardict:
|
||||
addSignBit = isMixedExpr
|
||||
s = n
|
||||
elif n in self.tree.argnames:
|
||||
|
@ -152,7 +152,7 @@ class _VerificationClass(object):
|
||||
print("Analysis succeeded", file=sys.stderr)
|
||||
return 0
|
||||
|
||||
f = tempfile.TemporaryFile()
|
||||
f = tempfile.TemporaryFile(mode='w+t')
|
||||
sys.stdout = f
|
||||
sim = Simulation(inst)
|
||||
sim.run()
|
||||
@ -174,7 +174,7 @@ class _VerificationClass(object):
|
||||
print("Elaboration failed", file=sys.stderr)
|
||||
return ret
|
||||
|
||||
g = tempfile.TemporaryFile()
|
||||
g = tempfile.TemporaryFile(mode='w+t')
|
||||
#print(simulate)
|
||||
ret = subprocess.call(simulate, stdout=g, shell=True)
|
||||
# if ret != 0:
|
||||
|
@ -13,13 +13,13 @@ def bench_SliceSignal():
|
||||
for i in range(N):
|
||||
s.next = i
|
||||
yield delay(10)
|
||||
print int(a)
|
||||
print int(b)
|
||||
print int(c)
|
||||
print d
|
||||
print e
|
||||
print f
|
||||
print g
|
||||
print(int(a))
|
||||
print(int(b))
|
||||
print(int(c))
|
||||
print(d)
|
||||
print(e)
|
||||
print(f)
|
||||
print(g)
|
||||
|
||||
return check
|
||||
|
||||
@ -52,7 +52,7 @@ def bench_ConcatSignal():
|
||||
c.next = k
|
||||
d.next = m
|
||||
yield delay(10)
|
||||
print s
|
||||
print(s)
|
||||
|
||||
return check
|
||||
|
||||
@ -78,15 +78,15 @@ def bench_TristateSignal():
|
||||
#print s
|
||||
a.next = 1
|
||||
yield delay(10)
|
||||
print s
|
||||
print(s)
|
||||
a.next = None
|
||||
b.next = 122
|
||||
yield delay(10)
|
||||
print s
|
||||
print(s)
|
||||
b.next = None
|
||||
c.next = 233
|
||||
yield delay(10)
|
||||
print s
|
||||
print(s)
|
||||
c.next = None
|
||||
yield delay(10)
|
||||
#print s
|
||||
@ -129,7 +129,7 @@ def bench_permute(conv=False):
|
||||
for i in range(2**len(a)):
|
||||
a.next = i
|
||||
yield delay(10)
|
||||
print x, a
|
||||
print("%d %d" % (x, a))
|
||||
assert x[2] == a[0]
|
||||
assert x[1] == a[2]
|
||||
assert x[0] == a[1]
|
||||
|
@ -56,7 +56,7 @@ def bench_adapter(conv=False):
|
||||
assert o_err[1] == (i_err[2] | i_err[3] | i_err[4] | i_err[5])
|
||||
assert o_err[2] == i_err[1]
|
||||
assert o_err[3] == i_err[0]
|
||||
print o_err
|
||||
print(o_err)
|
||||
|
||||
return dut, stimulus
|
||||
|
||||
|
@ -60,7 +60,7 @@ def bin2grayBench(width, bin2gray):
|
||||
#print "B: " + bin(B, width) + "| G_v: " + bin(G_v, width)
|
||||
#print bin(G, width)
|
||||
#print bin(G_v, width)
|
||||
print "%d" % G
|
||||
print("%d" % G)
|
||||
|
||||
|
||||
return stimulus, bin2gray_inst
|
||||
|
@ -70,7 +70,7 @@ def bench_case(map_case, N):
|
||||
for i in range(N):
|
||||
a.next = i
|
||||
yield delay(10)
|
||||
print z
|
||||
print(z)
|
||||
|
||||
return stimulus, inst
|
||||
|
||||
|
@ -166,11 +166,11 @@ def DecBench(dec):
|
||||
def check():
|
||||
yield reset.negedge
|
||||
yield reset.posedge
|
||||
print count
|
||||
print(count)
|
||||
while 1:
|
||||
yield clock.posedge
|
||||
yield delay(1)
|
||||
print count
|
||||
print(count)
|
||||
|
||||
dec_inst = dec(count, enable, clock, reset, n=n)
|
||||
|
||||
|
@ -102,7 +102,7 @@ def FSMBench(FramerCtrl, t_State):
|
||||
yield clk.posedge
|
||||
while True:
|
||||
yield clk.negedge
|
||||
print "negedge"
|
||||
print("negedge")
|
||||
# in the end, this should work
|
||||
# print state
|
||||
|
||||
|
@ -117,9 +117,9 @@ def HecCalculator_v(name, hec, header):
|
||||
|
||||
|
||||
|
||||
headers = [ 0x00000000L,
|
||||
0x01234567L,
|
||||
0xbac6f4caL
|
||||
headers = [ 0x00000000,
|
||||
0x01234567,
|
||||
0xbac6f4ca
|
||||
]
|
||||
|
||||
headers.extend([randrange(2**32-1) for i in range(10)])
|
||||
@ -139,7 +139,7 @@ def HecBench(HecCalculator):
|
||||
for i in range(len(headers)):
|
||||
header.next = headers[i]
|
||||
yield delay(10)
|
||||
print hec
|
||||
print(hec)
|
||||
|
||||
return stimulus, heccalc_inst
|
||||
|
||||
|
@ -157,7 +157,7 @@ def IncBench(inc):
|
||||
yield clock.negedge
|
||||
while True:
|
||||
yield clock.negedge
|
||||
print count
|
||||
print(count)
|
||||
|
||||
return inc_inst, clockgen, monitor
|
||||
|
||||
|
@ -51,7 +51,7 @@ def PlainIntbv():
|
||||
@instance
|
||||
def logic():
|
||||
|
||||
print "Plain Instance Test"
|
||||
print("Plain Instance Test")
|
||||
|
||||
yield delay(10)
|
||||
# intbv with positive range, pos number, and msb not set, return signed()
|
||||
@ -208,7 +208,7 @@ def SlicedSigned():
|
||||
def logic():
|
||||
b = intbv(4, min=-8, max=8)
|
||||
a = intbv(4, min=-8, max=8)
|
||||
print "SLicedSigned test"
|
||||
print("SLicedSigned test")
|
||||
yield delay(10)
|
||||
b[:] = a[4:]
|
||||
assert b == 4
|
||||
@ -228,7 +228,7 @@ def SignedConcat():
|
||||
|
||||
@instance
|
||||
def logic():
|
||||
print "Signed Concat test"
|
||||
print("Signed Concat test")
|
||||
yield delay(10)
|
||||
|
||||
# concat 3 bits
|
||||
|
@ -32,7 +32,7 @@ def intbv2list():
|
||||
a.next = i
|
||||
yield delay(10)
|
||||
assert z == a
|
||||
print a
|
||||
print(a)
|
||||
raise StopSimulation
|
||||
|
||||
return extract, assemble, stimulus
|
||||
@ -186,7 +186,7 @@ def processlist(case, inv):
|
||||
a.next = i
|
||||
yield delay(10)
|
||||
assert z == ~a
|
||||
print z
|
||||
print(z)
|
||||
raise StopSimulation
|
||||
|
||||
return case_inst, stimulus
|
||||
@ -225,7 +225,7 @@ def unsigned():
|
||||
a[0].next = 2
|
||||
a[1].next = 5
|
||||
yield delay(10)
|
||||
print z
|
||||
print(z)
|
||||
|
||||
return logic, stimulus
|
||||
|
||||
@ -247,7 +247,7 @@ def signed():
|
||||
a[0].next = 2
|
||||
a[1].next = -5
|
||||
yield delay(10)
|
||||
print z
|
||||
print(z)
|
||||
|
||||
return logic, stimulus
|
||||
|
||||
@ -270,7 +270,7 @@ def mixed():
|
||||
a[0].next = -6
|
||||
b[2].next = 15
|
||||
yield delay(10)
|
||||
print z
|
||||
print(z)
|
||||
|
||||
return logic, stimulus
|
||||
|
||||
|
@ -291,7 +291,7 @@ def LoopBench(LoopTest):
|
||||
for i in range(100):
|
||||
a.next = data[i]
|
||||
yield delay(10)
|
||||
print z
|
||||
print(z)
|
||||
|
||||
return stimulus, looptest_inst
|
||||
|
||||
|
@ -136,7 +136,7 @@ def ObjBench(hObj):
|
||||
x.next = nx
|
||||
yield clk.posedge
|
||||
yield clk.posedge
|
||||
print "x %d y %d" % (x, y)
|
||||
print("x %d y %d" % (x, y))
|
||||
assert x == nx
|
||||
assert y == ny
|
||||
raise StopSimulation
|
||||
|
@ -40,19 +40,19 @@ def NonlocalBench():
|
||||
yield clk.negedge
|
||||
reset.next = 1
|
||||
yield clk.negedge
|
||||
print qout
|
||||
print(qout)
|
||||
assert qout == ONE
|
||||
reset.next = 0
|
||||
for i in range(100):
|
||||
yield clk.negedge
|
||||
print qout
|
||||
print(qout)
|
||||
init.next = 1
|
||||
yield clk.negedge
|
||||
assert qout == ALL_ONES
|
||||
print qout
|
||||
print(qout)
|
||||
init.next = 0
|
||||
for i in range(300):
|
||||
print qout
|
||||
print(qout)
|
||||
raise StopSimulation()
|
||||
|
||||
return scrambler, clkgen, stimulus
|
||||
|
@ -15,40 +15,39 @@ def NumassBench():
|
||||
|
||||
@instance
|
||||
def check():
|
||||
p.next = 0
|
||||
q.next = 0
|
||||
r.next = 0
|
||||
s.next = 0
|
||||
p.next = 0
|
||||
q.next = 0
|
||||
r.next = 0
|
||||
s.next = 0
|
||||
yield delay(10)
|
||||
print p, q, r ,s
|
||||
p.next = 1
|
||||
q.next = 1
|
||||
r.next = 1
|
||||
s.next = 1
|
||||
print("%d %d %d %d" % (p, q, r, s))
|
||||
p.next = 1
|
||||
q.next = 1
|
||||
r.next = 1
|
||||
s.next = 1
|
||||
yield delay(10)
|
||||
print p, q, r ,s
|
||||
p.next = 2
|
||||
q.next = 2
|
||||
r.next = -2
|
||||
s.next = -2
|
||||
print("%d %d %d %d" % (p, q, r, s))
|
||||
p.next = 2
|
||||
q.next = 2
|
||||
r.next = -2
|
||||
s.next = -2
|
||||
yield delay(10)
|
||||
print p, q, r ,s
|
||||
p.next = 255
|
||||
q.next = 246836311517
|
||||
r.next = 255
|
||||
s.next = -246836311517
|
||||
print("%d %d %d %d" % (p, q, r, s))
|
||||
p.next = 255
|
||||
q.next = 246836311517
|
||||
r.next = 255
|
||||
s.next = -246836311517
|
||||
yield delay(10)
|
||||
print p, q[40:20], q[20:0], r ,s[41:20], s[20:0]
|
||||
p.next = 254
|
||||
q.next = PBIGINT
|
||||
r.next = -256
|
||||
s.next = NBIGINT
|
||||
print("%d %d %d %d %d %d" % (p, q[40:20], q[20:0], r ,s[41:20], s[20:0]))
|
||||
p.next = 254
|
||||
q.next = PBIGINT
|
||||
r.next = -256
|
||||
s.next = NBIGINT
|
||||
yield delay(10)
|
||||
print p, q[40:20], q[20:0], r ,s[41:20], s[20:0]
|
||||
print("%d %d %d %d %d %d" % (p, q[40:20], q[20:0], r ,s[41:20], s[20:0]))
|
||||
|
||||
return check
|
||||
|
||||
|
||||
def test_numass():
|
||||
assert conversion.verify(NumassBench) == 0
|
||||
|
||||
|
@ -21,47 +21,47 @@ def PrintBench():
|
||||
i2[:] = -7
|
||||
si2.next = -5
|
||||
yield delay(10)
|
||||
print
|
||||
print i1
|
||||
print i2
|
||||
print i1, i2
|
||||
print si1
|
||||
print si2
|
||||
print('')
|
||||
print(i1)
|
||||
print(i2)
|
||||
print("%d %d" % (i1, i2))
|
||||
print(si1)
|
||||
print(si2)
|
||||
|
||||
yield delay(10)
|
||||
print "This is a test"
|
||||
print("This is a test")
|
||||
|
||||
yield delay(10)
|
||||
print int(b)
|
||||
print int(sb)
|
||||
print(int(b))
|
||||
print(int(sb))
|
||||
|
||||
yield delay(10)
|
||||
print "i1 is %s" % i1
|
||||
print("i1 is %s" % i1)
|
||||
|
||||
yield delay(10)
|
||||
print "i1 is %s, i2 is %s" % (i1, i2)
|
||||
print "i1 %s i2 %s b %s si1 %s si2 %s" % (i1, i2, b, si1, si2)
|
||||
print "i1 %d i2 %d b %d si1 %d si2 %d" % (i1, i2, b, si1, si2)
|
||||
print b
|
||||
print("i1 is %s, i2 is %s" % (i1, i2))
|
||||
print("i1 %s i2 %s b %s si1 %s si2 %s" % (i1, i2, b, si1, si2))
|
||||
print("i1 %d i2 %d b %d si1 %d si2 %d" % (i1, i2, b, si1, si2))
|
||||
print(b)
|
||||
#print "%% %s" % i1
|
||||
|
||||
yield delay(10)
|
||||
print state
|
||||
print "the state is %s" % state
|
||||
print "the state is %s" % (state,)
|
||||
print "i1 is %s and the state is %s" % (i1, state)
|
||||
print(state)
|
||||
print("the state is %s" % state)
|
||||
print("the state is %s" % (state,))
|
||||
print("i1 is %s and the state is %s" % (i1, state))
|
||||
|
||||
# ord test
|
||||
yield delay(10)
|
||||
print ord('y')
|
||||
print ord('2')
|
||||
print(ord('y'))
|
||||
print(ord('2'))
|
||||
|
||||
# signed
|
||||
yield delay(10)
|
||||
print i1.signed()
|
||||
print i2.signed()
|
||||
print si1.signed()
|
||||
print si2.signed()
|
||||
print(i1.signed())
|
||||
print(i2.signed())
|
||||
print(si1.signed())
|
||||
print(si2.signed())
|
||||
|
||||
return logic
|
||||
|
||||
@ -76,7 +76,7 @@ def PrintError1():
|
||||
def logic():
|
||||
i1 = intbv(12)[8:]
|
||||
yield delay(10)
|
||||
print "floating point %f end" % i1
|
||||
print("floating point %f end" % i1)
|
||||
return logic
|
||||
|
||||
def testPrintError1():
|
||||
@ -92,7 +92,7 @@ def PrintError2():
|
||||
def logic():
|
||||
i1 = intbv(12)[8:]
|
||||
yield delay(10)
|
||||
print "begin %s %s end" % i1
|
||||
print("begin %s %s end" % i1)
|
||||
return logic
|
||||
|
||||
def testPrintError2():
|
||||
@ -109,7 +109,7 @@ def PrintError3():
|
||||
i1 = intbv(12)[8:]
|
||||
i2 = intbv(13)[8:]
|
||||
yield delay(10)
|
||||
print "begin %s end" % (i1, i2)
|
||||
print("begin %s end" % (i1, i2))
|
||||
return logic
|
||||
|
||||
def testPrintError3():
|
||||
@ -125,7 +125,7 @@ def PrintError4():
|
||||
def logic():
|
||||
i1 = intbv(12)[8:]
|
||||
yield delay(10)
|
||||
print "%10s" % i1
|
||||
print("%10s" % i1)
|
||||
return logic
|
||||
|
||||
def testPrintError4():
|
||||
@ -141,7 +141,7 @@ def PrintError5():
|
||||
def logic():
|
||||
i1 = intbv(12)[8:]
|
||||
yield delay(10)
|
||||
print "%-10s" % i1
|
||||
print("%-10s" % i1)
|
||||
return logic
|
||||
|
||||
def testPrintError5():
|
||||
|
@ -117,7 +117,7 @@ def RamBench(ram, depth=128):
|
||||
yield clk.posedge
|
||||
yield delay(1)
|
||||
assert dout == i
|
||||
print dout
|
||||
print(dout)
|
||||
raise StopSimulation()
|
||||
|
||||
@instance
|
||||
|
@ -73,7 +73,7 @@ def RomBench(rom):
|
||||
yield delay(1)
|
||||
if __debug__:
|
||||
assert dout == ROM[i]
|
||||
print dout
|
||||
print(dout)
|
||||
raise StopSimulation()
|
||||
|
||||
@instance
|
||||
|
@ -55,7 +55,7 @@ def TernaryBench(ternary):
|
||||
clk.next = 1
|
||||
yield delay(10)
|
||||
assert dout == (i + 1) % 128
|
||||
print dout
|
||||
print(dout)
|
||||
clk.next = 0
|
||||
yield delay(10)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user