Skip to content

Commit 7442143

Browse files
committed
細かいバグ修整
always @(posedge CLK or posedge RST) begin if(RST) begin cnt[1:0] <= 0; end else begin cnt[1] <= SEND; cnt[0] <= 0; end end のようなコードで正しいバインドが生成できるように。
1 parent c9d6f22 commit 7442143

File tree

1 file changed

+18
-17
lines changed

1 file changed

+18
-17
lines changed

pyverilog/dataflow/dataflow.py

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
#-------------------------------------------------------------------------------
22
# dataflow.py
3-
#
3+
#
44
# Basic classes of Data flow nodes
55
#
66
# Copyright (C) 2013, Shinya Takamaeda-Yamazaki
7+
# modified by ryoduke fukatani
78
# License: Apache 2.0
89
#-------------------------------------------------------------------------------
910

@@ -47,7 +48,7 @@ def __repr__(self): pass
4748
def tostr(self): pass
4849
def tocode(self, dest='dest'): return self.__repr__()
4950
def tolabel(self): return self.__repr__()
50-
def children(self):
51+
def children(self):
5152
nodelist = []
5253
return tuple(nodelist)
5354
def __eq__(self, other):
@@ -69,8 +70,8 @@ def __repr__(self):
6970
return ret[:-1]
7071
def tostr(self):
7172
ret = '(Terminal '
72-
for n in self.name:
73-
ret += str(n) + '.'
73+
for n in self.name:
74+
ret += str(n) + '.'
7475
return ret[0:-1] + ')'
7576
def tocode(self, dest='dest'):
7677
#ret = ''
@@ -207,7 +208,7 @@ def __eq__(self, other):
207208
return self.operator == other.operator and self.nextnodes == other.nextnodes
208209
def __hash__(self):
209210
return hash((self.operator, tuple(self.nextnodes)))
210-
211+
211212
class DFPartselect(DFNotTerminal):
212213
attr_names = ()
213214
def __init__(self, var, msb, lsb):
@@ -312,8 +313,8 @@ def __repr__(self):
312313
return 'Branch'
313314
def tostr(self):
314315
ret = '(Branch'
315-
if self.condnode is not None: ret += ' Cond:' + self.condnode.tostr()
316-
if self.truenode is not None: ret += ' True:' + self.truenode.tostr()
316+
if self.condnode is not None: ret += ' Cond:' + self.condnode.tostr()
317+
if self.truenode is not None: ret += ' True:' + self.truenode.tostr()
317318
if self.falsenode is not None: ret += ' False:'+ self.falsenode.tostr()
318319
ret += ')'
319320
return ret
@@ -334,15 +335,15 @@ def _tocode_always(self, dest='dest', always='clockedge'):
334335
ret = 'if('
335336
if self.condnode is not None: ret += self.condnode.tocode(dest)
336337
ret += ') begin\n'
337-
if self.truenode is not None:
338+
if self.truenode is not None:
338339
if isinstance(self.truenode, DFBranch):
339340
ret += self.truenode.tocode(dest, always=always)
340341
elif always == 'clockedge':
341342
ret += dest + ' <= ' + self.truenode.tocode(dest) + ';\n'
342343
elif always == 'combination':
343344
ret += dest + ' = ' + self.truenode.tocode(dest) + ';\n'
344345
ret += 'end\n'
345-
if self.falsenode is not None:
346+
if self.falsenode is not None:
346347
ret += 'else begin\n'
347348
if isinstance(self.falsenode, DFBranch):
348349
ret += self.falsenode.tocode(dest, always=always)
@@ -462,7 +463,7 @@ def __repr__(self):
462463
return 'Delay'
463464
def tostr(self):
464465
ret = '(Delay '
465-
if self.nextnode is not None: ret += self.nextnode.tostr()
466+
if self.nextnode is not None: ret += self.nextnode.tostr()
466467
ret += ')'
467468
return ret
468469
def tocode(self, dest='dest'):
@@ -522,8 +523,8 @@ def __repr__(self):
522523
return str(self.name)
523524
def tostr(self):
524525
ret = '(Term name:' + str(self.name) + ' type:' + str(self.termtype)
525-
if self.msb is not None: ret += ' msb:' + self.msb.tostr()
526-
if self.lsb is not None: ret += ' lsb:' + self.lsb.tostr()
526+
if self.msb is not None: ret += ' msb:' + self.msb.tostr()
527+
if self.lsb is not None: ret += ' lsb:' + self.lsb.tostr()
527528
if self.lenmsb is not None: ret += ' lenmsb:' + self.lenmsb.tostr()
528529
if self.lenlsb is not None: ret += ' lenlsb:' + self.lenlsb.tostr()
529530
ret += ')'
@@ -641,7 +642,7 @@ def _localparam(self):
641642
code = 'localparam ' + dest
642643
code += ' = ' + self.tree.tocode(dest) + ';\n'
643644
return code
644-
645+
645646
def _assign(self):
646647
dest = self.getdest()
647648
code = 'assign ' + dest
@@ -652,10 +653,10 @@ def _always_clockedge(self):
652653
dest = self.getdest()
653654
code = 'always @('
654655
if self.alwaysinfo.clock_edge is not None and self.alwaysinfo.clock_name is not None:
655-
code += self.alwaysinfo.clock_edge + ' '
656+
code += self.alwaysinfo.clock_edge + ' '
656657
code += util.toFlatname(self.alwaysinfo.clock_name)
657658
if self.alwaysinfo.reset_edge is not None and self.alwaysinfo.reset_name is not None:
658-
code += ' or '
659+
code += ' or '
659660
code += self.alwaysinfo.reset_edge + ' '
660661
code += util.toFlatname(self.alwaysinfo.reset_name)
661662
code += ') begin\n'
@@ -681,7 +682,7 @@ def _always_combination(self):
681682
code += 'end\n'
682683
code += '\n'
683684
return code
684-
685+
685686
def isClockEdge(self):
686687
if self.alwaysinfo is None: return False
687688
return self.alwaysinfo.isClockEdge()
@@ -752,7 +753,7 @@ def setBind(self, name, bind):
752753
currentbindlist = self.binddict[name]
753754
c_i = 0
754755
for c in currentbindlist:
755-
if c.msb == bind.msb and c.msb == bind.msb and c.ptr == bind.ptr:
756+
if c.msb == bind.msb and c.lsb == bind.lsb and c.ptr == bind.ptr:
756757
self.binddict[name][c_i].tree = bind.tree
757758
return
758759
c_i += 1

0 commit comments

Comments
 (0)