Skip to content

Commit 2306b4b

Browse files
committed
example: Hazard3 CPU
The Hazard3 RISC-V CPU comes with SVA assertions. This script downloads the RTL, and runs ebmc to check them.
1 parent bbdb0b1 commit 2306b4b

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

examples/Hazard3/Hazard3.sh

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#!/bin/sh
2+
3+
# abort on error
4+
set -e
5+
6+
# clone Hazard3 repo if not done yet
7+
if [ ! -e Hazard3/.git ] ; then
8+
git clone https://github.com/Wren6991/Hazard3
9+
git checkout v1.0
10+
fi
11+
12+
cd Hazard3
13+
14+
# unimplemented boolbv_widtht::get_entry()
15+
# ebmc -I hdl -D HAZARD3_ASSERTIONS --bound 0 \
16+
# --top hazard3_alu \
17+
# hdl/arith/hazard3_alu.v \
18+
# hdl/arith/hazard3_priority_encode.v \
19+
# hdl/arith/hazard3_onehot_encode.v \
20+
# hdl/arith/hazard3_onehot_priority.v \
21+
# hdl/arith/hazard3_shift_barrel.v
22+
23+
# expected elaboration-time constant, but got `hazard3_muldiv_seq.properties.i'
24+
# $past, for loop
25+
# ebmc -I hdl -D HAZARD3_ASSERTIONS --systemverilog --bound 0 hdl/arith/hazard3_muldiv_seq.v
26+
27+
ebmc -I hdl -D HAZARD3_ASSERTIONS --bound 0 hdl/arith/hazard3_shift_barrel.v
28+
29+
# ebmc -I hdl -I test/formal/riscv-formal/tb -I test/formal/instruction_fetch_match -D HAZARD3_ASSERTIONS --bound 0 \
30+
# hdl/hazard3_core.v \
31+
# hdl/arith/hazard3_alu.v
32+
33+
# failed to convert part select index
34+
#ebmc -I hdl -I test/formal/riscv-formal/tb -I test/formal/instruction_fetch_match -D HAZARD3_ASSERTIONS --systemverilog --bound 0 \
35+
# hdl/hazard3_cpu_2port.v \
36+
# hdl/hazard3_core.v \
37+
# hdl/arith/hazard3_alu.v \
38+
# hdl/arith/hazard3_branchcmp.v \
39+
# hdl/arith/hazard3_priority_encode.v \
40+
# hdl/arith/hazard3_onehot_encode.v \
41+
# hdl/arith/hazard3_onehot_priority.v \
42+
# hdl/arith/hazard3_onehot_priority_dynamic.v \
43+
# hdl/arith/hazard3_shift_barrel.v \
44+
# hdl/hazard3_csr.v \
45+
# hdl/hazard3_irq_ctrl.v
46+
47+
# failed to convert part select index
48+
# ebmc -I hdl -D HAZARD3_ASSERTIONS --systemverilog --bound 0 \
49+
# hdl/hazard3_csr.v \
50+
# hdl/hazard3_irq_ctrl.v \
51+
# hdl/arith/hazard3_onehot_encode.v \
52+
# hdl/arith/hazard3_onehot_priority.v \
53+
# hdl/arith/hazard3_onehot_priority_dynamic.v
54+
55+
ebmc -I hdl -D HAZARD3_ASSERTIONS --bound 0 --top hazard3_decode hdl/hazard3_decode.v hdl/hazard3_instr_decompress.v
56+
57+
# conflicting assignment types
58+
# ebmc -I hdl -D HAZARD3_ASSERTIONS --systemverilog --bound 0 hdl/hazard3_frontend.v
59+
60+
# property disabled by config
61+
# ebmc -I hdl -D HAZARD3_ASSERTIONS --bound 0 hdl/hazard3_instr_decompress.v
62+
63+
# property fails
64+
# ebmc -I hdl -D HAZARD3_ASSERTIONS --bound 0 hdl/hazard3_power_ctrl.v
65+

0 commit comments

Comments
 (0)