[myhdl-list] AttributeError: '_ConvertFunctionVisitor' object has no attribute 'funcBuf'
Brought to you by:
jandecaluwe
From: Neal B. <ndb...@gm...> - 2009-03-04 18:20:52
|
Translating to verilog produced the above error. This is basically the code. def maxval (bits): return ~(-1 << (bits-1)) def minval (bits): return (-1 << (bits-1)) def sat_rnd (x, bits, outbits): y1 = x >> (bits-1) y2 = y1 + 1 y3 = y2 >> 1 if (y3 > maxval (outbits)): return maxval (outbits) elif (y3 < minval (outbits)): return minval (outbits) else: return y3 def Counter (count, clock, en, n, reset): @always (clock.posedge, reset.posedge) def cntLogic(): if reset == 1: count.next = 0 elif en: if count == n-1: count.next = 0 else: count.next = count + 1 # print "count:", count return cntLogic def accum (x, result, count, clock, en, n, reset): def log2 (x): "positive only!" cnt = 0 while (x != 0): x >>= 1 cnt += 1 return cnt-1 sumbits = log2 (n) + len (result) _sum = Signal (intbv(0)[sumbits:]) @always (clock.posedge, reset.posedge) def accum_logic(): if reset == 1: _sum.next = 0 result.next = 0 elif en: _sum.next = _sum + x if count == n-1: ##print 'count:', count, 'sum:', _sum result.next = sat_rnd (_sum, log2 (n), len (result)) _sum.next = 0 return accum_logic def Decimator (clock, en, x, n, count, result, reset): cnt1 = Counter (count, clock, en, n, reset) acc1 = accum (x, result, count, clock, en, n, reset) return cnt1, acc1 Traceback (most recent call last): File "test3.py", line 163, in <module> verilog() File "test3.py", line 150, in verilog toVerilog (Decimator, clock, en, x, n, count, result, reset) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 122, in __call__ _convertGens(genlist, vfile) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 313, in _convertGens compiler.walk(ast, v) File "/usr/lib64/python2.5/compiler/visitor.py", line 106, in walk walker.preorder(tree, visitor) File "/usr/lib64/python2.5/compiler/visitor.py", line 63, in preorder self.dispatch(tree, *args) # XXX *args make sense? File "/usr/lib64/python2.5/compiler/visitor.py", line 57, in dispatch return meth(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 841, in visitModule self.visit(stmt) File "/usr/lib64/python2.5/compiler/visitor.py", line 57, in dispatch return meth(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 1134, in visitFunction self.visit(node.code) File "/usr/lib64/python2.5/compiler/visitor.py", line 57, in dispatch return meth(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 989, in visitStmt self.visit(stmt) File "/usr/lib64/python2.5/compiler/visitor.py", line 57, in dispatch return meth(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 776, in visitIf self.mapToIf(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 823, in mapToIf self.visit(suite) File "/usr/lib64/python2.5/compiler/visitor.py", line 57, in dispatch return meth(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 989, in visitStmt self.visit(stmt) File "/usr/lib64/python2.5/compiler/visitor.py", line 57, in dispatch return meth(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 776, in visitIf self.mapToIf(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 823, in mapToIf self.visit(suite) File "/usr/lib64/python2.5/compiler/visitor.py", line 57, in dispatch return meth(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 989, in visitStmt self.visit(stmt) File "/usr/lib64/python2.5/compiler/visitor.py", line 57, in dispatch return meth(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 541, in visitAssign self.visit(node.expr) File "/usr/lib64/python2.5/compiler/visitor.py", line 57, in dispatch return meth(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 646, in visitCallFunc compiler.walk(node.ast, v) File "/usr/lib64/python2.5/compiler/visitor.py", line 106, in walk walker.preorder(tree, visitor) File "/usr/lib64/python2.5/compiler/visitor.py", line 63, in preorder self.dispatch(tree, *args) # XXX *args make sense? File "/usr/lib64/python2.5/compiler/visitor.py", line 57, in dispatch return meth(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 841, in visitModule self.visit(stmt) File "/usr/lib64/python2.5/compiler/visitor.py", line 57, in dispatch return meth(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 1168, in visitFunction self.visit(node.code) File "/usr/lib64/python2.5/compiler/visitor.py", line 57, in dispatch return meth(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 989, in visitStmt self.visit(stmt) File "/usr/lib64/python2.5/compiler/visitor.py", line 57, in dispatch return meth(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 776, in visitIf self.mapToIf(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 820, in mapToIf self.visit(test) File "/usr/lib64/python2.5/compiler/visitor.py", line 57, in dispatch return meth(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 656, in visitCompare self.visit(code, context) File "/usr/lib64/python2.5/compiler/visitor.py", line 57, in dispatch return meth(node, *args) File "/usr/lib/python2.5/site-packages/myhdl/conversion/_toVerilog.py", line 645, in visitCallFunc v = Visitor(node.ast, self.funcBuf) AttributeError: '_ConvertFunctionVisitor' object has no attribute 'funcBuf' |