Skip to content
This repository was archived by the owner on Jun 3, 2024. It is now read-only.

Commit 926489d

Browse files
committed
Add Multiranges test
Signed-off-by: Kamil Rakoczy <[email protected]>
1 parent 9697268 commit 926489d

File tree

4 files changed

+122
-0
lines changed

4 files changed

+122
-0
lines changed

tests/Multiranges/Makefile.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
TOP_FILE := $(TEST_DIR)/top.sv
2+
TOP_MODULE := top

tests/Multiranges/main.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#include <iostream>
2+
#include <verilated_vcd_c.h>
3+
4+
#define VL_DEBUG
5+
#include "Vtop.h"
6+
#include "verilated.h"
7+
8+
static vluint64_t main_time = 0;
9+
10+
double
11+
sc_time_stamp()
12+
{
13+
return main_time;
14+
}
15+
16+
int main (int argc, char **argv) {
17+
Verilated::commandArgs(argc, argv);
18+
Vtop *top = new Vtop();
19+
20+
Verilated::traceEverOn(true);
21+
VerilatedVcdC* tfp = new VerilatedVcdC;
22+
top->trace(tfp, 99);
23+
tfp->open("dump.vcd");
24+
25+
while (!Verilated::gotFinish() && (main_time < 100)) {
26+
top->eval();
27+
tfp->dump(main_time);
28+
29+
main_time += 1;
30+
31+
std::cout << "time: " << main_time
32+
<< std::endl;
33+
}
34+
top->final();
35+
tfp->close();
36+
delete top;
37+
38+
return 0;
39+
}

tests/Multiranges/top.sv

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
module top #(
2+
parameter int unsigned PMPNumRegions = 4
3+
)(
4+
input logic [33:0] csr_pmp_addr_o [PMPNumRegions]
5+
);
6+
//logic [7:0] [31:0] rdata_d, rdata_q;
7+
logic [7:0] a, b, c;
8+
logic [7:0] d_array[0:3];
9+
logic [7:0] e_array[3:0];
10+
11+
logic [7:0] mult_array_a[3:0][3:0];
12+
logic [7:0] mult_array_b[3:0][3:0];
13+
logic [7:0] mult_array_c[3:0][3:0];
14+
logic [7:0] mult_array_d[3:0][3:0];
15+
16+
logic packed_mult_array_a[3:0][3:0];
17+
logic packed_mult_array_b[3:0][3:0];
18+
19+
assign a = 8'hf0;
20+
assign b[0] = 1'b1;
21+
assign c[7:4] = 4'hf;
22+
23+
assign d_array[3] = 8'hF;
24+
assign e_array[0] = 8'hF;
25+
26+
assign mult_array_a[3][3][3:0] = 4'b0101;
27+
assign mult_array_b[3][3] = '{8'h0f};
28+
assign mult_array_c[3] = '{8'h0c, 8'h0d, 8'h0e, 8'h0f};
29+
assign mult_array_d = '{'{8'h00, 8'h01, 8'h02, 8'h03},
30+
'{8'h04, 8'h05, 8'h06, 8'h07},
31+
'{8'h08, 8'h09, 8'h0a, 8'h0b},
32+
'{8'h0c, 8'h0d, 8'h0e, 8'h0f}};
33+
34+
assign packed_mult_array_a = 16'h4321;
35+
assign packed_mult_array_b[0] = 4'b0000;
36+
assign packed_mult_array_b[1] = 4'b0001;
37+
assign packed_mult_array_b[2] = 4'b0010;
38+
assign packed_mult_array_b[3] = 4'b0100;
39+
40+
for (genvar i = 0; i < PMPNumRegions; i++) begin : g_pmp_csrs
41+
assign csr_pmp_addr_o[i] = '1;
42+
end
43+
44+
always_comb begin
45+
46+
assert(a == 8'hf0);
47+
assert(b[0] == 1'b1);
48+
assert(c[7:4] == 4'hf);
49+
50+
assert(csr_pmp_addr_o[0] == '1);
51+
assert(csr_pmp_addr_o[1] == '1);
52+
assert(csr_pmp_addr_o[2] == '1);
53+
assert(csr_pmp_addr_o[3] == '1);
54+
55+
assert(d_array[3] == 8'hF);
56+
assert(e_array[0] == 8'hF);
57+
58+
assert(mult_array_a[3][3][3:0] == 4'b0101 );
59+
assert(mult_array_b[3][3] == '{8'h0f});
60+
assert(mult_array_c[3] == '{8'h0c, 8'h0d, 8'h0e, 8'h0f});
61+
assert(mult_array_d == '{'{8'h00, 8'h01, 8'h02, 8'h03},
62+
'{8'h04, 8'h05, 8'h06, 8'h07},
63+
'{8'h08, 8'h09, 8'h0a, 8'h0b},
64+
'{8'h0c, 8'h0d, 8'h0e, 8'h0f}});
65+
assert(packed_mult_array_a == 16'h4321);
66+
assert(packed_mult_array_b[0] == 4'b0000);
67+
assert(packed_mult_array_b[1] == 4'b0001);
68+
assert(packed_mult_array_b[2] == 4'b0010);
69+
assert(packed_mult_array_b[3] == 4'b0100);
70+
71+
end
72+
73+
endmodule

tests/Multiranges/yosys_script

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
plugin -i uhdm
2+
read_uhdm -debug top.uhdm
3+
prep -top \top
4+
write_verilog
5+
write_verilog yosys.sv
6+
select -module top
7+
sat -verify -seq 1 -tempinduct -prove-asserts -show-all
8+
sim -rstlen 10 -vcd dump.vcd

0 commit comments

Comments
 (0)