Skip to content

Commit f557424

Browse files
committed
Merge branch 'develop' into 2.1.0-rc
2 parents 447d525 + 61e9abc commit f557424

File tree

22 files changed

+284
-56
lines changed

22 files changed

+284
-56
lines changed

tests/extension/thread_/axi_dma_long_wide/thread_axi_dma_long_wide.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,8 @@ def mkTest(memimg_name=None, memory_datawidth=128):
108108
clk = ports['CLK']
109109
rst = ports['RST']
110110

111-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
111+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
112+
memimg_name=memimg_name)
112113
memory.connect(ports, 'myaxi')
113114

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

tests/extension/thread_/axi_dma_multiram/thread_axi_dma_multiram.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,8 @@ def mkTest(memimg_name=None, memory_datawidth=128):
196196
clk = ports['CLK']
197197
rst = ports['RST']
198198

199-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
199+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
200+
memimg_name=memimg_name)
200201
memory.connect(ports, 'myaxi')
201202

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

tests/extension/thread_/axi_dma_wide/thread_axi_dma_wide.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ def mkTest(memimg_name=None, memory_datawidth=128):
111111
clk = ports['CLK']
112112
rst = ports['RST']
113113

114-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
114+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
115+
memimg_name=memimg_name)
115116
memory.connect(ports, 'myaxi')
116117

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

tests/extension/thread_/axi_dma_wide_unaligned/thread_axi_dma_wide_unaligned.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ def mkTest(memimg_name=None, memory_datawidth=128):
112112
clk = ports['CLK']
113113
rst = ports['RST']
114114

115-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
115+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
116+
memimg_name=memimg_name)
116117
memory.connect(ports, 'myaxi')
117118

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

tests/extension/thread_/multibank_nested_ram_dma/thread_multibank_nested_ram_dma.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@ def mkTest(memimg_name=None, memory_datawidth=128):
129129
clk = ports['CLK']
130130
rst = ports['RST']
131131

132-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
132+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
133+
memimg_name=memimg_name)
133134
memory.connect(ports, 'myaxi')
134135

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

tests/extension/thread_/multibank_nested_ram_dma_block/thread_multibank_nested_ram_dma_block.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,8 @@ def mkTest(memimg_name=None, memory_datawidth=128):
174174
clk = ports['CLK']
175175
rst = ports['RST']
176176

177-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
177+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
178+
memimg_name=memimg_name)
178179
memory.connect(ports, 'myaxi')
179180

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

tests/extension/thread_/multibank_nested_ram_dma_block_non_poweroftwo/thread_multibank_nested_ram_dma_block_non_poweroftwo.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,8 @@ def mkTest(memimg_name=None, memory_datawidth=128):
174174
clk = ports['CLK']
175175
rst = ports['RST']
176176

177-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
177+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
178+
memimg_name=memimg_name)
178179
memory.connect(ports, 'myaxi')
179180

180181
uut = m.Instance(led, 'uut',
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
TARGET=$(shell ls *.py | grep -v test | grep -v parsetab.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: run
14+
run:
15+
$(PYTHON) $(OPT) $(TARGET) $(ARGS)
16+
17+
.PHONY: test
18+
test:
19+
$(PYTHON) -m pytest -vv
20+
21+
.PHONY: check
22+
check:
23+
$(PYTHON) $(OPT) $(TARGET) $(ARGS) > tmp.v
24+
iverilog -tnull -Wall tmp.v
25+
rm -f tmp.v
26+
27+
.PHONY: clean
28+
clean:
29+
rm -rf *.pyc __pycache__ parsetab.py .cache *.out *.png *.dot tmp.v uut.vcd
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from __future__ import absolute_import
2+
from __future__ import print_function
3+
4+
import os
5+
import veriloggen
6+
import thread_multibank_ram_dma_bcast
7+
8+
9+
def test(request):
10+
veriloggen.reset()
11+
12+
simtype = request.config.getoption('--sim')
13+
14+
rslt = thread_multibank_ram_dma_bcast.run(filename=None, simtype=simtype,
15+
outputfile=os.path.splitext(os.path.basename(__file__))[0] + '.out')
16+
17+
verify_rslt = rslt.splitlines()[-1]
18+
assert(verify_rslt == '# verify: PASSED')
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
from __future__ import absolute_import
2+
from __future__ import print_function
3+
import sys
4+
import os
5+
6+
# the next line can be removed after installation
7+
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(
8+
os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))))
9+
10+
from veriloggen import *
11+
import veriloggen.thread as vthread
12+
import veriloggen.types.axi as axi
13+
14+
15+
def mkLed():
16+
m = Module('blinkled')
17+
clk = m.Input('CLK')
18+
rst = m.Input('RST')
19+
20+
datawidth = 32
21+
addrwidth = 8
22+
numbanks = 4
23+
myaxi = vthread.AXIM(m, 'myaxi', clk, rst, datawidth)
24+
myram0 = vthread.MultibankRAM(m, 'myram0', clk, rst, datawidth, addrwidth,
25+
numbanks=numbanks)
26+
myram1 = vthread.MultibankRAM(m, 'myram1', clk, rst, datawidth, addrwidth,
27+
numbanks=numbanks)
28+
29+
all_ok = m.TmpReg(initval=0, prefix='all_ok')
30+
wdata = m.TmpReg(width=datawidth, initval=0, prefix='wdata')
31+
rdata = m.TmpReg(width=datawidth, initval=0, prefix='rdata')
32+
rexpected = m.TmpReg(width=datawidth, initval=0, prefix='rexpected')
33+
34+
laddr_offset = 32
35+
36+
def blink(size):
37+
all_ok.value = True
38+
39+
print('# start')
40+
# Test for 4KB boundary check
41+
offset = 1024 * 16 + (myaxi.boundary_size - (datawidth // 8) * 3)
42+
body(size, offset)
43+
print('# end')
44+
45+
if all_ok:
46+
print('# verify: PASSED')
47+
else:
48+
print('# verify: FAILED')
49+
50+
vthread.finish()
51+
52+
def body(size, offset):
53+
# write
54+
for i in range(size):
55+
wdata.value = i + 0x1000
56+
myram0.write_bank(0, laddr_offset + i, wdata)
57+
58+
laddr = laddr_offset
59+
gaddr = offset
60+
myaxi.dma_write_bank(myram0, 0, laddr, gaddr, size)
61+
print('dma_write: [%d] -> [%d]' % (laddr, gaddr))
62+
63+
# write
64+
for i in range(size):
65+
wdata.value = i + 0x4000
66+
myram1.write_bank(0, laddr_offset + i, wdata)
67+
68+
laddr = laddr_offset
69+
gaddr = (size + size) * 4 + offset
70+
myaxi.dma_write_bank(myram1, 0, laddr, gaddr, size)
71+
print('dma_write: [%d] -> [%d]' % (laddr, gaddr))
72+
73+
# read
74+
laddr = laddr_offset
75+
gaddr = offset
76+
myaxi.dma_read_bcast(myram1, laddr, gaddr, size)
77+
print('dma_read: [%d] <- [%d]' % (laddr, gaddr))
78+
79+
for j in range(numbanks):
80+
for i in range(size):
81+
rdata.value = myram1.read_bank(j, i + laddr_offset)
82+
rexpected.value = i + 0x1000
83+
if vthread.verilog.NotEql(rdata, rexpected):
84+
print('rdata[%d] = %d (expected %d)' % (i, rdata, rexpected))
85+
all_ok.value = False
86+
87+
# read
88+
laddr = laddr_offset
89+
gaddr = (size + size) * 4 + offset
90+
myaxi.dma_read_bcast(myram0, laddr, gaddr, size)
91+
print('dma_read: [%d] <- [%d]' % (laddr, gaddr))
92+
93+
for j in range(numbanks):
94+
for i in range(size):
95+
rdata.value = myram0.read_bank(j, i + laddr_offset)
96+
rexpected.value = i + 0x4000
97+
if vthread.verilog.NotEql(rdata, rexpected):
98+
print('rdata[%d] = %d (expected %d)' % (i, rdata, rexpected))
99+
all_ok.value = False
100+
101+
th = vthread.Thread(m, 'th_blink', clk, rst, blink)
102+
fsm = th.start(17)
103+
104+
return m
105+
106+
107+
def mkTest(memimg_name=None):
108+
m = Module('test')
109+
110+
# target instance
111+
led = mkLed()
112+
113+
# copy paras and ports
114+
params = m.copy_params(led)
115+
ports = m.copy_sim_ports(led)
116+
117+
clk = ports['CLK']
118+
rst = ports['RST']
119+
120+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memimg_name=memimg_name)
121+
memory.connect(ports, 'myaxi')
122+
123+
uut = m.Instance(led, 'uut',
124+
params=m.connect_params(led),
125+
ports=m.connect_ports(led))
126+
127+
# simulation.setup_waveform(m, uut)
128+
simulation.setup_clock(m, clk, hperiod=5)
129+
init = simulation.setup_reset(m, rst, m.make_reset(), period=100)
130+
131+
init.add(
132+
Delay(1000000),
133+
Systask('finish'),
134+
)
135+
136+
return m
137+
138+
139+
def run(filename='tmp.v', simtype='iverilog', outputfile=None):
140+
141+
if outputfile is None:
142+
outputfile = os.path.splitext(os.path.basename(__file__))[0] + '.out'
143+
144+
memimg_name = 'memimg_' + outputfile
145+
146+
test = mkTest(memimg_name=memimg_name)
147+
148+
if filename is not None:
149+
test.to_verilog(filename)
150+
151+
sim = simulation.Simulator(test, sim=simtype)
152+
rslt = sim.run(outputfile=outputfile)
153+
lines = rslt.splitlines()
154+
if simtype == 'verilator' and lines[-1].startswith('-'):
155+
rslt = '\n'.join(lines[:-1])
156+
return rslt
157+
158+
159+
if __name__ == '__main__':
160+
rslt = run(filename='tmp.v')
161+
print(rslt)

tests/extension/thread_/multibank_ram_dma_block/thread_multibank_ram_dma_block.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ def mkTest(memimg_name=None, memory_datawidth=32):
175175
clk = ports['CLK']
176176
rst = ports['RST']
177177

178-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
178+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
179+
memimg_name=memimg_name)
179180
memory.connect(ports, 'myaxi')
180181

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

tests/extension/thread_/multibank_ram_dma_block_non_poweroftwo/thread_multibank_ram_dma_block_non_poweroftwo.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ def mkTest(memimg_name=None, memory_datawidth=32):
175175
clk = ports['CLK']
176176
rst = ports['RST']
177177

178-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
178+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
179+
memimg_name=memimg_name)
179180
memory.connect(ports, 'myaxi')
180181

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

tests/extension/thread_/multibank_ram_dma_packed/thread_multibank_ram_dma_packed.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,8 @@ def mkTest(memimg_name=None, memory_datawidth=128):
127127
clk = ports['CLK']
128128
rst = ports['RST']
129129

130-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
130+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
131+
memimg_name=memimg_name)
131132
memory.connect(ports, 'myaxi')
132133

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

tests/extension/thread_/multibank_ram_dma_packed_long/thread_multibank_ram_dma_packed_long.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,8 @@ def mkTest(memimg_name=None, memory_datawidth=128):
123123
clk = ports['CLK']
124124
rst = ports['RST']
125125

126-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
126+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
127+
memimg_name=memimg_name)
127128
memory.connect(ports, 'myaxi')
128129

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

tests/extension/thread_/multibank_ram_dma_packed_narrow/thread_multibank_ram_dma_packed_narrow.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,8 @@ def mkTest(memimg_name=None, memory_datawidth=32):
127127
clk = ports['CLK']
128128
rst = ports['RST']
129129

130-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
130+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
131+
memimg_name=memimg_name)
131132
memory.connect(ports, 'myaxi')
132133

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

tests/extension/thread_/multibank_ram_dma_packed_wide/thread_multibank_ram_dma_packed_wide.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,8 @@ def mkTest(memimg_name=None, memory_datawidth=256):
125125
clk = ports['CLK']
126126
rst = ports['RST']
127127

128-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
128+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
129+
memimg_name=memimg_name)
129130
memory.connect(ports, 'myaxi')
130131

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

tests/extension/thread_/multibank_ram_dma_wide/thread_multibank_ram_dma_wide.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ def mkTest(memimg_name=None, memory_datawidth=128):
114114
clk = ports['CLK']
115115
rst = ports['RST']
116116

117-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
117+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
118+
memimg_name=memimg_name)
118119
memory.connect(ports, 'myaxi')
119120

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

tests/extension/thread_/stream_multibank/thread_stream_multibank.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,8 @@ def mkTest(memimg_name=None, memory_datawidth=128):
108108
clk = ports['CLK']
109109
rst = ports['RST']
110110

111-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
111+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
112+
memimg_name=memimg_name)
112113
memory.connect(ports, 'myaxi')
113114

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

tests/extension/thread_/stream_multibank_nested/thread_stream_multibank_nested.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ def mkTest(memimg_name=None, memory_datawidth=128):
114114
clk = ports['CLK']
115115
rst = ports['RST']
116116

117-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
117+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
118+
memimg_name=memimg_name)
118119
memory.connect(ports, 'myaxi')
119120

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

tests/extension/thread_/to_multibank_ram/thread_to_multibank_ram.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ def mkTest(memimg_name=None, memory_datawidth=128):
116116
clk = ports['CLK']
117117
rst = ports['RST']
118118

119-
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth)
119+
memory = axi.AxiMemoryModel(m, 'memory', clk, rst, memory_datawidth,
120+
memimg_name=memimg_name)
120121
memory.connect(ports, 'myaxi')
121122

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

0 commit comments

Comments
 (0)