Skip to content

Commit 64bebfb

Browse files
committed
First dataflow_test is added.
1 parent 4a4b150 commit 64bebfb

File tree

11 files changed

+120
-7
lines changed

11 files changed

+120
-7
lines changed

pyverilog/dataflow/dataflow.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ def __init__(self,name,termtype=(),msb=None,lsb=None,lenmsb=None,lenlsb=None):
522522
def __repr__(self):
523523
return str(self.name)
524524
def tostr(self):
525-
ret = '(Term name:' + str(self.name) + ' type:' + str(self.termtype)
525+
ret = '(Term name:' + str(self.name) + ' type:' + str(sorted(self.termtype, key=lambda x:str(x)))
526526
if self.msb is not None: ret += ' msb:' + self.msb.tostr()
527527
if self.lsb is not None: ret += ' lsb:' + self.lsb.tostr()
528528
if self.lenmsb is not None: ret += ' lenmsb:' + self.lenmsb.tostr()

pyverilog/dataflow/dataflow_analyzer.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -137,13 +137,13 @@ def showVersion():
137137

138138
directives = verilogdataflowanalyzer.get_directives()
139139
print('Directive:')
140-
for dr in directives:
140+
for dr in sorted(directives, key=lambda x:str(x)):
141141
print(dr)
142142

143143
instances = verilogdataflowanalyzer.getInstances()
144144
print('Instance:')
145-
for ins in instances:
146-
print(ins)
145+
for module, instname in sorted(instances, key=lambda x:str(x[1])):
146+
print((module, instname))
147147

148148
if options.nobind:
149149
print('Signal:')
@@ -159,11 +159,11 @@ def showVersion():
159159
else:
160160
terms = verilogdataflowanalyzer.getTerms()
161161
print('Term:')
162-
for tk, tv in sorted(terms.items(), key=lambda x:len(x[0])):
162+
for tk, tv in sorted(terms.items(), key=lambda x:str(x[0])):
163163
print(tv.tostr())
164164

165165
binddict = verilogdataflowanalyzer.getBinddict()
166166
print('Bind:')
167-
for bk, bv in sorted(binddict.items(), key=lambda x:len(x[0])):
167+
for bk, bv in sorted(binddict.items(), key=lambda x:str(x[0])):
168168
for bvi in bv:
169169
print(bvi.tostr())

tests/dataflow_test/Makefile

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
TEST=*.py
2+
ARGS=
3+
4+
PYTHON=python3
5+
#PYTHON=python
6+
#OPT=-m pdb
7+
#OPT=-m cProfile -s time
8+
#OPT=-m cProfile -o profile.rslt
9+
10+
.PHONY: all
11+
all: test
12+
13+
.PHONY: test
14+
test:
15+
$(PYTHON) -m pytest -vv $(TEST)
16+
17+
.PHONY: clean
18+
clean:
19+
rm -rf *.pyc __pycache__ parsetab.py *.out

tests/dataflow_test/pyverilog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../pyverilog

tests/dataflow_test/test_led.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import os
2+
import sys
3+
from pyverilog.dataflow.dataflow_analyzer import VerilogDataflowAnalyzer
4+
5+
codedir = '../../testcode/'
6+
7+
expected = """\
8+
Directive:
9+
Instance:
10+
(led, 'led')
11+
Term:
12+
(Term name:led.CLK type:['Input'] msb:(IntConst 0) lsb:(IntConst 0))
13+
(Term name:led.LED type:['Output', 'Reg'] msb:(IntConst 7) lsb:(IntConst 0))
14+
(Term name:led.RST type:['Input'] msb:(IntConst 0) lsb:(IntConst 0))
15+
(Term name:led.STEP type:['Parameter'] msb:'d31 lsb:'d0)
16+
(Term name:led.count type:['Reg'] msb:(IntConst 31) lsb:(IntConst 0))
17+
Bind:
18+
(Bind dest:led.LED tree:(Branch Cond:(Terminal led.RST) True:(IntConst 0) False:(Branch Cond:(Operator Eq Next:(Terminal led.count),(Operator Minus Next:(Terminal led.STEP),(IntConst 1))) True:(Operator Plus Next:(Terminal led.LED),(IntConst 1)))))
19+
(Bind dest:led.STEP tree:(IntConst 10))
20+
(Bind dest:led.count tree:(Branch Cond:(Terminal led.RST) True:(IntConst 0) False:(Branch Cond:(Operator Eq Next:(Terminal led.count),(Operator Minus Next:(Terminal led.STEP),(IntConst 1))) True:(IntConst 0) False:(Operator Plus Next:(Terminal led.count),(IntConst 1)))))
21+
"""
22+
23+
def test():
24+
filelist = [codedir + 'led.v']
25+
topmodule = 'led'
26+
noreorder = False
27+
nobind = False
28+
include = None
29+
define = None
30+
31+
analyzer = VerilogDataflowAnalyzer(filelist, topmodule,
32+
noreorder=noreorder,
33+
nobind=nobind,
34+
preprocess_include=include,
35+
preprocess_define=define)
36+
analyzer.generate()
37+
38+
directives = analyzer.get_directives()
39+
instances = analyzer.getInstances()
40+
terms = analyzer.getTerms()
41+
binddict = analyzer.getBinddict()
42+
43+
output = []
44+
45+
output.append('Directive:\n')
46+
for dr in sorted(directives, key=lambda x:str(x)):
47+
output.append(str(dr))
48+
output.append('\n')
49+
50+
output.append('Instance:\n')
51+
for module, instname in sorted(instances, key=lambda x:str(x[1])):
52+
output.append(str((module, instname)))
53+
output.append('\n')
54+
55+
output.append('Term:\n')
56+
for tk, tv in sorted(terms.items(), key=lambda x:str(x[0])):
57+
output.append(tv.tostr())
58+
output.append('\n')
59+
60+
output.append('Bind:\n')
61+
for bk, bv in sorted(binddict.items(), key=lambda x:str(x[0])):
62+
for bvi in bv:
63+
output.append(bvi.tostr())
64+
output.append('\n')
65+
66+
rslt = ''.join(output)
67+
68+
print(rslt)
69+
assert(rslt == expected)
70+
71+
if __name__ == '__main__':
72+
test()

tests/parser_test/pyverilog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../pyverilog/

tests/parser_test/test_delay.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,4 +88,8 @@ def test():
8888

8989
rslt = output.getvalue()
9090

91+
print(rslt)
9192
assert(rslt == expected)
93+
94+
if __name__ == '__main__':
95+
test()

tests/parser_test/test_escape.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,4 +123,8 @@ def test():
123123

124124
rslt = output.getvalue()
125125

126+
print(rslt)
126127
assert(rslt == expected)
128+
129+
if __name__ == '__main__':
130+
test()

tests/parser_test/test_instance_array.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,4 +229,8 @@ def test():
229229

230230
rslt = output.getvalue()
231231

232+
print(rslt)
232233
assert(rslt == expected)
234+
235+
if __name__ == '__main__':
236+
test()
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,4 +142,8 @@ def test():
142142

143143
rslt = output.getvalue()
144144

145+
print(rslt)
145146
assert(rslt == expected)
147+
148+
if __name__ == '__main__':
149+
test()

0 commit comments

Comments
 (0)