Skip to content

Commit bb1579f

Browse files
committed
Pytest for partial assignment is added.
1 parent 98152b5 commit bb1579f

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import os
2+
import sys
3+
from pyverilog.dataflow.dataflow_analyzer import VerilogDataflowAnalyzer
4+
5+
codedir = '../../testcode/'
6+
7+
expected = """\
8+
(Bind dest:TOP._rn0_i tree:(IntConst 0))
9+
(Bind dest:TOP._rn1_i tree:(Operator Plus Next:'d0,(IntConst 1)))
10+
(Bind dest:TOP._rn2_i tree:(Operator Plus Next:'d1,(IntConst 1)))
11+
(Bind dest:TOP._rn3_i tree:(Operator Plus Next:'d2,(IntConst 1)))
12+
(Bind dest:TOP._rn4_i tree:(Operator Plus Next:'d3,(IntConst 1)))
13+
(Bind dest:TOP.i tree:(Terminal TOP._rn4_i))
14+
(Bind dest:TOP.mem msb:'d1 lsb:'d0 ptr:(Terminal TOP.IN) \
15+
tree:(Operator Plus Next:(Partselect Var:(Pointer Var:(Terminal TOP.mem) PTR:(Terminal TOP.IN)) MSB:(Operator Minus Next:(Operator Times Next:(IntConst 2),(Operator Plus Next:'d0,(IntConst 1))),(IntConst 1)) LSB:(Operator Times Next:(IntConst 2),'d0)),(IntConst 2'b1)))
16+
(Bind dest:TOP.mem msb:'d3 lsb:'d2 ptr:(Terminal TOP.IN) \
17+
tree:(Operator Plus Next:(Partselect Var:(Pointer Var:(Terminal TOP.mem) PTR:(Terminal TOP.IN)) MSB:(Operator Minus Next:(Operator Times Next:(IntConst 2),(Operator Plus Next:'d1,(IntConst 1))),(IntConst 1)) LSB:(Operator Times Next:(IntConst 2),'d1)),(IntConst 2'b1)))
18+
(Bind dest:TOP.mem msb:'d5 lsb:'d4 ptr:(Terminal TOP.IN) \
19+
tree:(Operator Plus Next:(Partselect Var:(Pointer Var:(Terminal TOP.mem) PTR:(Terminal TOP.IN)) MSB:(Operator Minus Next:(Operator Times Next:(IntConst 2),(Operator Plus Next:'d2,(IntConst 1))),(IntConst 1)) LSB:(Operator Times Next:(IntConst 2),'d2)),(IntConst 2'b1)))
20+
(Bind dest:TOP.mem msb:'d7 lsb:'d6 ptr:(Terminal TOP.IN) \
21+
tree:(Operator Plus Next:(Partselect Var:(Pointer Var:(Terminal TOP.mem) PTR:(Terminal TOP.IN)) MSB:(Operator Minus Next:(Operator Times Next:(IntConst 2),(Operator Plus Next:'d3,(IntConst 1))),(IntConst 1)) LSB:(Operator Times Next:(IntConst 2),'d3)),(IntConst 2'b1)))
22+
"""
23+
24+
def test():
25+
filelist = [codedir + 'partial.v']
26+
topmodule = 'TOP'
27+
noreorder = False
28+
nobind = False
29+
include = None
30+
define = None
31+
32+
analyzer = VerilogDataflowAnalyzer(filelist, topmodule,
33+
noreorder=noreorder,
34+
nobind=nobind,
35+
preprocess_include=include,
36+
preprocess_define=define)
37+
analyzer.generate()
38+
39+
directives = analyzer.get_directives()
40+
instances = analyzer.getInstances()
41+
terms = analyzer.getTerms()
42+
binddict = analyzer.getBinddict()
43+
44+
output = []
45+
46+
for bk, bv in sorted(binddict.items(), key=lambda x:str(x[0])):
47+
for bvi in bv:
48+
output.append(bvi.tostr())
49+
output.append('\n')
50+
51+
rslt = ''.join(output)
52+
53+
print(rslt)
54+
assert(rslt == expected)
55+
56+
if __name__ == '__main__':
57+
test()

0 commit comments

Comments
 (0)