summaryrefslogtreecommitdiff
path: root/tests/bram
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2015-01-03 10:57:01 +0100
committerClifford Wolf <clifford@clifford.at>2015-01-03 10:57:01 +0100
commita7e43ae3d97ef14c8d624d8fdfe938ae9f47ce84 (patch)
tree6d6e97eef96e519e273ee7fc34c53acff29f5061 /tests/bram
parent146f769beef2f6affa9df8e8265e0ca6519d3554 (diff)
Progress in memory_bram
Diffstat (limited to 'tests/bram')
-rw-r--r--tests/bram/generate.py25
-rw-r--r--tests/bram/run-single.sh4
-rwxr-xr-xtests/bram/run-test.sh2
3 files changed, 17 insertions, 14 deletions
diff --git a/tests/bram/generate.py b/tests/bram/generate.py
index 0e803218..840bfbd9 100644
--- a/tests/bram/generate.py
+++ b/tests/bram/generate.py
@@ -32,7 +32,6 @@ def create_bram(dsc_f, sim_f, ref_f, tb_f, k1, k2):
# XXX
init = 0
transp = [ 0 for i in range(groups) ]
- clkpol = [ random.randrange(0, 2) for i in range(groups) ]
for p1 in range(groups):
if wrmode[p1] == 0:
@@ -134,15 +133,25 @@ def create_bram(dsc_f, sim_f, ref_f, tb_f, k1, k2):
states.add(("CPW", clocks[p1], clkpol[p1]))
always_hdr = "always @(posedge CLK%d_CLKPOL%d) begin" % (clocks[p1], clkpol[p1])
+ v_stmts.append("`ifndef SYNTHESIS")
+ v_stmts.append("event UPDATE_%s;" % pf)
+ v_stmts.append("`endif")
+
v_stmts.append(always_hdr)
if wrmode[p1]:
- v_stmts.append(" `delay(%d)" % portindex);
+ v_stmts.append(" `ifndef SYNTHESIS");
+ v_stmts.append(" #%d;" % portindex);
+ v_stmts.append(" -> UPDATE_%s;" % pf)
+ v_stmts.append(" `endif")
for i in range(enable[p1]):
enrange = "[%d:%d]" % ((i+1)*dbits/enable[p1]-1, i*dbits/enable[p1])
v_stmts.append(" if (%sEN[%d]) memory[%sADDR]%s = %sDATA%s;" % (pf, i, pf, enrange, pf, enrange))
else:
+ v_stmts.append(" `ifndef SYNTHESIS");
if transp[p1]:
- v_stmts.append(" `delay(%d)" % (sum(ports)+1))
+ v_stmts.append(" #%d;" % sum(ports));
+ v_stmts.append(" -> UPDATE_%s;" % pf)
+ v_stmts.append(" `endif")
v_stmts.append(" %sDATA %s memory[%sADDR];" % (pf, assign_op, pf))
v_stmts.append("end")
@@ -177,13 +186,14 @@ def create_bram(dsc_f, sim_f, ref_f, tb_f, k1, k2):
if debug_mode:
print(" $dumpfile(`vcd_file);", file=tb_f)
print(" $dumpvars(0, bram_%02d_%02d_tb);" % (k1, k2), file=tb_f)
+ print(" #%d;" % (1000 + k2), file=tb_f)
for p in (tb_clocks + tb_addr + tb_din):
if p[-2:] == "EN":
print(" %s <= ~0;" % p, file=tb_f)
else:
print(" %s <= 0;" % p, file=tb_f)
- print(" #%d;" % (1000 + k2), file=tb_f)
+ print(" #1000;", file=tb_f)
for v in [1, 0, 1, 0]:
for p in tb_clocks:
@@ -218,13 +228,6 @@ for k1 in range(5):
for f in [sim_f, ref_f, tb_f]:
print("`timescale 1 ns / 1 ns", file=f)
- for f in [sim_f, ref_f]:
- print("`ifdef SYNTHESIS", file=f)
- print(" `define delay(n)", file=f)
- print("`else", file=f)
- print(" `define delay(n) #n;", file=f)
- print("`endif", file=f)
-
for k2 in range(1 if debug_mode else 10):
create_bram(dsc_f, sim_f, ref_f, tb_f, k1, k2)
diff --git a/tests/bram/run-single.sh b/tests/bram/run-single.sh
index 8a022e59..cb8295d1 100644
--- a/tests/bram/run-single.sh
+++ b/tests/bram/run-single.sh
@@ -2,8 +2,8 @@
set -e
../../yosys -qq -p "proc; opt; memory -nomap; memory_bram -rules temp/brams_${2}.txt; opt -fast -full" \
-l temp/synth_${1}_${2}.log -o temp/synth_${1}_${2}.v temp/brams_${1}.v
-iverilog -Dvcd_file=\"temp/tb_${1}_${2}.vcd\" -o temp/tb_${1}_${2}.tb temp/brams_${1}_tb.v temp/brams_${1}_ref.v \
- temp/synth_${1}_${2}.v temp/brams_${2}.v ../../techlibs/common/simlib.v
+iverilog -Dvcd_file=\"temp/tb_${1}_${2}.vcd\" -DSIMLIB_MEMDELAY=1ns -o temp/tb_${1}_${2}.tb temp/brams_${1}_tb.v \
+ temp/brams_${1}_ref.v temp/synth_${1}_${2}.v temp/brams_${2}.v ../../techlibs/common/simlib.v
temp/tb_${1}_${2}.tb > temp/tb_${1}_${2}.txt
if grep -q ERROR temp/tb_${1}_${2}.txt; then
grep -HC2 ERROR temp/tb_${1}_${2}.txt | head
diff --git a/tests/bram/run-test.sh b/tests/bram/run-test.sh
index cdf7d61b..d617187e 100755
--- a/tests/bram/run-test.sh
+++ b/tests/bram/run-test.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# run this test many times:
-# time bash -c 'for ((i=0; i<100; i++)); do echo "-- $i --"; bash run-test.sh || exit 1; done'
+# MAKE="make -j8" time bash -c 'for ((i=0; i<100; i++)); do echo "-- $i --"; bash run-test.sh || exit 1; done'
set -e
rm -rf temp