Skip to content

Commit 7c819e6

Browse files
committed
add warp formal checks
1 parent 34edbef commit 7c819e6

5 files changed

Lines changed: 129 additions & 1 deletion

File tree

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
a.out
2-
warp/
2+
./warp/
33
warp_bmc/
44
warp_cover/
55
env
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/cover/
2+
/complete/
3+
/honest/
4+
/checks/
5+
/testbug[0-9][0-9][0-9].cfg
6+
/testbug[0-9][0-9][0-9]/
7+
/testbugs.mk
8+
/cexdata-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
9+
/cexdata-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].zip
10+
/picorv32.v
11+
/disasm.s
12+
/disasm.o
13+
*.v
14+
warp_formal.sv
15+
warp_hart_tb.sv
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
discrete.v:
2+
cp -ra ../../../../rtl/{*.v,*.sv} .
3+
4+
checks: discrete.v
5+
python3 ../../checks/genchecks.py
6+
$(MAKE) -C checks
7+
8+
check: checks
9+
10+
clean:
11+
rm -f *.v *.sv
12+
rm -rf checks
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
[options]
2+
isa rv64i
3+
nret 2
4+
5+
[depth]
6+
# arithmetic instructions retire on ch0
7+
insn_add_ch0 20
8+
insn_slt_ch0 20
9+
insn_sltu_ch0 20
10+
insn_addi_ch0 20
11+
insn_slti_ch0 20
12+
insn_sltiu_ch0 20
13+
insn_lui_ch0 20
14+
insn_auipc_ch0 20
15+
insn_addw_ch0 20
16+
insn_subw_ch0 20
17+
insn_addiw_ch0 20
18+
19+
# logical instructions retire on ch1
20+
insn_or_ch1 20
21+
insn_and_ch1 20
22+
insn_xor_ch1 20
23+
insn_ori_ch1 20
24+
insn_andi_ch1 20
25+
insn_xori_ch1 20
26+
27+
# reg 15 25
28+
# reg 1 3
29+
# 25
30+
#pc_fwd 10 30
31+
#pc_bwd 10 30
32+
# liveness 1 10 30
33+
# unique 1 10 30
34+
# causal 10 30
35+
# cover 1 15
36+
37+
# csrw 15
38+
# csr_ill 15
39+
# csrc_inc 1 15
40+
# csrc_upcnt 1 15
41+
42+
[sort]
43+
reg_ch0
44+
45+
# [csrs]
46+
# mcycle inc upcnt
47+
# minstret inc upcnt
48+
49+
# [illegal_csrs]
50+
# c00 u w
51+
# c80 u w
52+
# c02 u w
53+
# c82 u w
54+
55+
[defines]
56+
`define RISCV_FORMAL_ALIGNED_MEM
57+
# `define RISCV_FORMAL_ALTOPS
58+
`define RISCV_FORMAL_UMODE
59+
# `define PICORV32_TESTBUG_NONE
60+
# `define DEBUGNETS
61+
62+
# [defines liveness]
63+
# `define PICORV32_FAIRNESS
64+
65+
[verilog-files]
66+
@basedir@/cores/@core@/wrapper.sv
67+
@basedir@/cores/@core@/warp_defines.v
68+
@basedir@/cores/@core@/warp_util.v
69+
@basedir@/cores/@core@/warp_fetch.v
70+
@basedir@/cores/@core@/warp_decode.v
71+
@basedir@/cores/@core@/warp_issue.v
72+
@basedir@/cores/@core@/warp_integer.v
73+
@basedir@/cores/@core@/warp_hart.v
74+
75+
# [cover]
76+
# always @* if (!reset) cover (channel[0].cnt_insns == 2);
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
module rvfi_wrapper (
2+
input wire clock,
3+
input wire reset,
4+
`RVFI_OUTPUTS
5+
);
6+
7+
(* keep *) wire [31:0] imem_addr;
8+
(* keep *) wire [31:0] imem_rdata;
9+
(* keep *) wire [31:0] dmem_addr;
10+
(* keep *) wire [31:0] dmem_wdata;
11+
(* keep *) wire [31:0] dmem_rdata;
12+
13+
warp_hart dut (
14+
.i_clk(clock),
15+
.i_rst_n(!reset),
16+
17+
// .o_imem_addr(imem_addr),
18+
// .i_imem_rdata(imem_rdata),
19+
// .o_dmem_addr(dmem_addr),
20+
// .o_dmem_wdata(dmem_wdata),
21+
// .i_dmem_rdata(dmem_rdata),
22+
23+
`RVFI_CONN
24+
);
25+
endmodule

0 commit comments

Comments
 (0)