Skip to content

Commit a3f08ca

Browse files
committed
examples with RTL simulations are updated.
1 parent f0578f8 commit a3f08ca

File tree

12 files changed

+87
-40
lines changed

12 files changed

+87
-40
lines changed

examples/simulation_verilator/simulation_verilator.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def check(matrix_size, a_offset, b_offset, c_offset):
8888
return m
8989

9090

91-
def mkTest():
91+
def mkTest(memimg_name=None):
9292
m = Module('test')
9393

9494
matrix_size = 16
@@ -104,7 +104,8 @@ def mkTest():
104104
rst = ports['RST']
105105

106106
# memory image
107-
memname = 'mymem.out'
107+
if memimg_name is None:
108+
memimg_name = 'mymem.out'
108109

109110
def fwrite(f, value):
110111
s = '%08x' % value
@@ -113,7 +114,7 @@ def fwrite(f, value):
113114
f.write('%s\n' % s[2:4])
114115
f.write('%s\n' % s[0:2])
115116

116-
with open(memname, 'w') as f:
117+
with open(memimg_name, 'w') as f:
117118
# ram_a
118119
addr = 0
119120
nv = 1
@@ -155,7 +156,7 @@ def fwrite(f, value):
155156
for i in range(2 ** 20 - addr):
156157
f.write('%s\n' % '00')
157158

158-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memimg=memname)
159+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memimg=memimg_name)
159160
memory.connect(ports, 'myaxi')
160161

161162
uut = m.Instance(led, 'uut',

examples/simulation_verilator/test_simulation_verilator.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import absolute_import
22
from __future__ import print_function
3+
import os
34
import veriloggen
45
import simulation_verilator
56

@@ -50,7 +51,7 @@
5051
reg [8-1:0] _memory_mem [0:2**20-1];
5152
5253
initial begin
53-
$readmemh("mymem.out", _memory_mem);
54+
$readmemh("memimg_test_simulation_verilator.out", _memory_mem);
5455
end
5556
5657
reg [32-1:0] _memory_fsm;
@@ -1893,7 +1894,8 @@
18931894

18941895
def test():
18951896
veriloggen.reset()
1896-
test_module = simulation_verilator.mkTest()
1897+
memimg_name = 'memimg_' + os.path.splitext(os.path.basename(__file__))[0] + '.out'
1898+
test_module = simulation_verilator.mkTest(memimg_name=memimg_name)
18971899
verilog = veriloggen.simulation.to_verilator_code(
18981900
test_module, [test_module])
18991901
cpp = veriloggen.simulation.to_verilator_cpp(test_module, 'out')

examples/thread_matmul/test_thread_matmul.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import absolute_import
22
from __future__ import print_function
33

4+
import os
45
import veriloggen
56
import thread_matmul
67

@@ -10,7 +11,8 @@ def test(request):
1011

1112
simtype = request.config.getoption('--sim')
1213

13-
rslt = thread_matmul.run(filename=None, simtype=simtype)
14+
rslt = thread_matmul.run(filename=None, simtype=simtype,
15+
outputfile=os.path.splitext(os.path.basename(__file__))[0] + '.out')
1416

1517
verify_rslt = rslt.splitlines()[-1]
1618
assert(verify_rslt == '# verify: PASSED')

examples/thread_matmul/thread_matmul.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ def check(matrix_size, a_offset, b_offset, c_offset):
9696
return m
9797

9898

99-
def mkTest():
99+
def mkTest(memimg_name=None):
100100
matrix_size = 16
101101

102102
a_shape = (matrix_size, matrix_size)
@@ -147,8 +147,10 @@ def mkTest():
147147
clk = ports['CLK']
148148
rst = ports['RST']
149149

150-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memimg=mem,
151-
mem_datawidth=8 * axi_wordsize)
150+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst,
151+
mem_datawidth=8 * axi_wordsize,
152+
memimg=mem, memimg_name=memimg_name)
153+
152154
memory.connect(ports, 'myaxi')
153155

154156
uut = m.Instance(led, 'uut',
@@ -167,15 +169,20 @@ def mkTest():
167169
return m
168170

169171

170-
def run(filename='tmp.v', simtype='iverilog'):
172+
def run(filename='tmp.v', simtype='iverilog', outputfile=None):
171173

172-
test = mkTest()
174+
if outputfile is None:
175+
outputfile = os.path.splitext(os.path.basename(__file__))[0] + '.out'
176+
177+
memimg_name = 'memimg_' + outputfile
178+
179+
test = mkTest(memimg_name=memimg_name)
173180

174181
if filename is not None:
175182
test.to_verilog(filename)
176183

177184
sim = simulation.Simulator(test, sim=simtype)
178-
rslt = sim.run(outputfile=simtype + '.out')
185+
rslt = sim.run(outputfile=outputfile)
179186
lines = rslt.splitlines()
180187
if simtype == 'verilator' and lines[-1].startswith('-'):
181188
rslt = '\n'.join(lines[:-1])

examples/thread_matmul_ipcore/test_thread_matmul_ipcore.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import absolute_import
22
from __future__ import print_function
33

4+
import os
45
import veriloggen
56
import thread_matmul_ipcore
67

@@ -10,7 +11,8 @@ def test(request):
1011

1112
simtype = request.config.getoption('--sim')
1213

13-
rslt = thread_matmul_ipcore.run(filename=None, simtype=simtype)
14+
rslt = thread_matmul_ipcore.run(filename=None, simtype=simtype,
15+
outputfile=os.path.splitext(os.path.basename(__file__))[0] + '.out')
1416

1517
verify_rslt = rslt.splitlines()[-1]
1618
assert(verify_rslt == '# verify: PASSED')

examples/thread_matmul_ipcore/thread_matmul_ipcore.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def comp(matrix_size, a_offset, b_offset, c_offset):
7777
return m
7878

7979

80-
def mkTest():
80+
def mkTest(memimg_name=None):
8181

8282
a_shape = (matrix_size, matrix_size)
8383
b_shape = (matrix_size, matrix_size)
@@ -127,8 +127,10 @@ def mkTest():
127127
clk = ports['CLK']
128128
rst = ports['RST']
129129

130-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memimg=mem,
131-
mem_datawidth=8 * axi_wordsize)
130+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst,
131+
mem_datawidth=8 * axi_wordsize,
132+
memimg=mem, memimg_name=memimg_name)
133+
132134
memory.connect(ports, 'maxi')
133135

134136
# AXI-Slave controller
@@ -215,15 +217,20 @@ def ctrl():
215217
return m
216218

217219

218-
def run(filename='tmp.v', simtype='iverilog'):
220+
def run(filename='tmp.v', simtype='iverilog', outputfile=None):
221+
222+
if outputfile is None:
223+
outputfile = os.path.splitext(os.path.basename(__file__))[0] + '.out'
224+
225+
memimg_name = 'memimg_' + outputfile
219226

220-
test = mkTest()
227+
test = mkTest(memimg_name=memimg_name)
221228

222229
if filename is not None:
223230
test.to_verilog(filename)
224231

225232
sim = simulation.Simulator(test, sim=simtype)
226-
rslt = sim.run(outputfile=simtype + '.out')
233+
rslt = sim.run(outputfile=outputfile)
227234
lines = rslt.splitlines()
228235
if simtype == 'verilator' and lines[-1].startswith('-'):
229236
rslt = '\n'.join(lines[:-1])

examples/thread_matmul_narrow/test_thread_matmul_narrow.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import absolute_import
22
from __future__ import print_function
33

4+
import os
45
import veriloggen
56
import thread_matmul_narrow
67

@@ -10,7 +11,8 @@ def test(request):
1011

1112
simtype = request.config.getoption('--sim')
1213

13-
rslt = thread_matmul_narrow.run(filename=None, simtype=simtype)
14+
rslt = thread_matmul_narrow.run(filename=None, simtype=simtype,
15+
outputfile=os.path.splitext(os.path.basename(__file__))[0] + '.out')
1416

1517
verify_rslt = rslt.splitlines()[-1]
1618
assert(verify_rslt == '# verify: PASSED')

examples/thread_matmul_narrow/thread_matmul_narrow.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ def check(matrix_size, a_offset, b_offset, c_offset):
9797
return m
9898

9999

100-
def mkTest():
100+
def mkTest(memimg_name=None):
101101
matrix_size = 16
102102

103103
a_shape = (matrix_size, matrix_size)
@@ -148,8 +148,10 @@ def mkTest():
148148
clk = ports['CLK']
149149
rst = ports['RST']
150150

151-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memimg=mem,
152-
mem_datawidth=8 * axi_wordsize)
151+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst,
152+
mem_datawidth=8 * axi_wordsize,
153+
memimg=mem, memimg_name=memimg_name)
154+
153155
memory.connect(ports, 'myaxi')
154156

155157
uut = m.Instance(led, 'uut',
@@ -168,15 +170,20 @@ def mkTest():
168170
return m
169171

170172

171-
def run(filename='tmp.v', simtype='iverilog'):
173+
def run(filename='tmp.v', simtype='iverilog', outputfile=None):
174+
175+
if outputfile is None:
176+
outputfile = os.path.splitext(os.path.basename(__file__))[0] + '.out'
177+
178+
memimg_name = 'memimg_' + outputfile
172179

173-
test = mkTest()
180+
test = mkTest(memimg_name=memimg_name)
174181

175182
if filename is not None:
176183
test.to_verilog(filename)
177184

178185
sim = simulation.Simulator(test, sim=simtype)
179-
rslt = sim.run(outputfile=simtype + '.out')
186+
rslt = sim.run(outputfile=outputfile)
180187
lines = rslt.splitlines()
181188
if simtype == 'verilator' and lines[-1].startswith('-'):
182189
rslt = '\n'.join(lines[:-1])

examples/thread_matmul_wide/test_thread_matmul_wide.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import absolute_import
22
from __future__ import print_function
33

4+
import os
45
import veriloggen
56
import thread_matmul_wide
67

@@ -10,7 +11,8 @@ def test(request):
1011

1112
simtype = request.config.getoption('--sim')
1213

13-
rslt = thread_matmul_wide.run(filename=None, simtype=simtype)
14+
rslt = thread_matmul_wide.run(filename=None, simtype=simtype,
15+
outputfile=os.path.splitext(os.path.basename(__file__))[0] + '.out')
1416

1517
verify_rslt = rslt.splitlines()[-1]
1618
assert(verify_rslt == '# verify: PASSED')

examples/thread_matmul_wide/thread_matmul_wide.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ def check(matrix_size, a_offset, b_offset, c_offset):
9696
return m
9797

9898

99-
def mkTest():
99+
def mkTest(memimg_name=None):
100100
matrix_size = 16
101101

102102
a_shape = (matrix_size, matrix_size)
@@ -150,7 +150,8 @@ def mkTest():
150150
memory = axi.AxiMemoryModel(m, 'memory', clk, rst,
151151
datawidth=8 * axi_wordsize,
152152
mem_datawidth=8 * axi_wordsize,
153-
memimg=mem)
153+
memimg=mem, memimg_name=memimg_name)
154+
154155
memory.connect(ports, 'myaxi')
155156

156157
uut = m.Instance(led, 'uut',
@@ -169,15 +170,20 @@ def mkTest():
169170
return m
170171

171172

172-
def run(filename='tmp.v', simtype='iverilog'):
173+
def run(filename='tmp.v', simtype='iverilog', outputfile=None):
174+
175+
if outputfile is None:
176+
outputfile = os.path.splitext(os.path.basename(__file__))[0] + '.out'
177+
178+
memimg_name = 'memimg_' + outputfile
173179

174-
test = mkTest()
180+
test = mkTest(memimg_name=memimg_name)
175181

176182
if filename is not None:
177183
test.to_verilog(filename)
178184

179185
sim = simulation.Simulator(test, sim=simtype)
180-
rslt = sim.run(outputfile=simtype + '.out')
186+
rslt = sim.run(outputfile=outputfile)
181187
lines = rslt.splitlines()
182188
if simtype == 'verilator' and lines[-1].startswith('-'):
183189
rslt = '\n'.join(lines[:-1])

0 commit comments

Comments
 (0)