Skip to content

Commit f89b785

Browse files
committed
SystemVerilog queue benchmarks
This adds SystemVerilog benchmarks that implement various queues.
1 parent 4197882 commit f89b785

File tree

7 files changed

+87
-2
lines changed

7 files changed

+87
-2
lines changed

regression/ebmc/Makefile

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ default: test
33
TEST_PL = ../../lib/cbmc/regression/test.pl
44

55
test:
6-
@$(TEST_PL) -e -p -c ../../../src/ebmc/ebmc
6+
@$(TEST_PL) -e -p -c ../../../src/ebmc/ebmc -X buechi
7+
8+
test-buechi:
9+
@$(TEST_PL) -e -p -c ../../../src/ebmc/ebmc -I buechi
710

811
test-z3:
9-
@$(TEST_PL) -e -p -c "../../../src/ebmc/ebmc --z3" -X broken-smt-backend
12+
@$(TEST_PL) -e -p -c "../../../src/ebmc/ebmc --z3" -X broken-smt-backend -X buechi
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE buechi
2+
queue_depth1.sv
3+
--bdd --buechi
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
7+
^warning: ignoring
8+
--
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module queue(
2+
input data_in, valid_in,
3+
output data_out, valid_out,
4+
input clk);
5+
6+
reg data;
7+
reg valid;
8+
9+
always_ff @(posedge clk)
10+
{data, valid} <= {data_in, valid_in};
11+
12+
assign data_out = data;
13+
assign valid_out = valid;
14+
15+
assert property (@(posedge clk) valid_in implies s_eventually valid_out);
16+
17+
endmodule
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE buechi
2+
queue_depth2.sv
3+
--bdd --buechi
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
7+
^warning: ignoring
8+
--
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
module queue(
2+
input data_in, valid_in,
3+
output data_out, valid_out,
4+
input clk);
5+
6+
reg data0, data1;
7+
reg valid0, valid1;
8+
9+
always_ff @(posedge clk) begin
10+
{data0, valid0} <= {data_in, valid_in};
11+
{data1, valid1} <= {data0, valid0};
12+
end
13+
14+
assign data_out = data1;
15+
assign valid_out = valid1;
16+
17+
assert property (@(posedge clk) valid_in implies s_eventually valid_out);
18+
19+
endmodule
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE buechi
2+
queue_depthN.sv
3+
--bdd --buechi
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
7+
^warning: ignoring
8+
--
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
module queue
2+
#(parameter N = 10)
3+
(input data_in, valid_in,
4+
output data_out, valid_out,
5+
input clk);
6+
7+
reg data[N];
8+
reg valid[N];
9+
10+
always_ff @(posedge clk)
11+
{data[0], valid[0]} <= {data_in, valid_in};
12+
13+
always_ff @(posedge clk)
14+
for(integer i=1; i<N; i++)
15+
{data[i], valid[i]} <= {data[i-1], valid[i-1]};
16+
17+
assign data_out = data[N-1];
18+
assign valid_out = valid[N-1];
19+
20+
assert property (@(posedge clk) valid_in implies s_eventually valid_out);
21+
22+
endmodule

0 commit comments

Comments
 (0)