Skip to content

Commit 3dd86da

Browse files
committed
ranking function for i2c benchmarks
This adds a lexicographic ranking function for the i2c benchmarks.
1 parent 5a36ef4 commit 3dd86da

File tree

2 files changed

+30
-22
lines changed

2 files changed

+30
-22
lines changed

examples/Benchmarks/check_ranking

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -41,28 +41,26 @@ ebmc gray_9.sv --ranking-function "2**16-cnt"
4141
ebmc gray_10.sv --ranking-function "2**17-cnt"
4242
ebmc gray_11.sv --ranking-function "2**18-cnt"
4343

44-
if false ; then
45-
ebmc i2c_1.sv --ranking-function "2**9-cnt"
46-
ebmc i2c_2.sv --ranking-function "2**10-cnt"
47-
ebmc i2c_3.sv --ranking-function "2**11-cnt"
48-
ebmc i2c_4.sv --ranking-function "2**12-cnt"
49-
ebmc i2c_5.sv --ranking-function "2**13-cnt"
50-
ebmc i2c_6.sv --ranking-function "2**14-cnt"
51-
ebmc i2c_7.sv --ranking-function "2**15-cnt"
52-
ebmc i2c_8.sv --ranking-function "2**16-cnt"
53-
ebmc i2c_9.sv --ranking-function "2**17-cnt"
54-
ebmc i2c_10.sv --ranking-function "2**18-cnt"
55-
ebmc i2c_11.sv --ranking-function "2**19-cnt"
56-
ebmc i2c_12.sv --ranking-function "2**10-cnt"
57-
ebmc i2c_13.sv --ranking-function "2**10-cnt"
58-
ebmc i2c_14.sv --ranking-function "2**10-cnt"
59-
ebmc i2c_15.sv --ranking-function "2**10-cnt"
60-
ebmc i2c_16.sv --ranking-function "2**10-cnt"
61-
ebmc i2c_17.sv --ranking-function "2**10-cnt"
62-
ebmc i2c_18.sv --ranking-function "2**10-cnt"
63-
ebmc i2c_19.sv --ranking-function "2**10-cnt"
64-
ebmc i2c_20.sv --ranking-function "2**19-cnt"
65-
fi
44+
ebmc i2c_1.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
45+
ebmc i2c_2.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
46+
ebmc i2c_3.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
47+
ebmc i2c_4.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
48+
ebmc i2c_5.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
49+
ebmc i2c_6.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
50+
ebmc i2c_7.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
51+
ebmc i2c_8.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
52+
ebmc i2c_9.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
53+
ebmc i2c_10.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
54+
ebmc i2c_11.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
55+
ebmc i2c_12.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
56+
ebmc i2c_13.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
57+
ebmc i2c_14.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
58+
ebmc i2c_15.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
59+
ebmc i2c_16.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
60+
ebmc i2c_17.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
61+
ebmc i2c_18.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
62+
ebmc i2c_19.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
63+
ebmc i2c_20.sv --ranking-function "{cnt>=divider*4 ? 3 : scl_clk==0 && cnt>=3*divider-1 ? 2 : scl_clk ? 1 : 0, divider*4-cnt}"
6664

6765
ebmc lcd_1.sv --ranking-function "{3-state,500-cnt}"
6866
ebmc lcd_2.sv --ranking-function "{3-state,1000-cnt}"

examples/Benchmarks/i2c_1.sv

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,14 @@ module i2cStrech #(localparam divider = 125, localparam CBITS = 9) (input clk, i
3737
p1: assert property (@(posedge clk) s_eventually rst == 1 || scl_not_ena == 1 || stretch == 1);
3838
//F G (rst = F & scl_not_ena = F) -> G F (stretch = T)
3939

40+
wire [8:0] rank1 =
41+
cnt>=divider*4 ? 3 : // 500
42+
!scl_clk && cnt>=3*divider-1 ? 2 :
43+
scl_clk ? 1 :
44+
0 ;
45+
46+
wire [8:0] rank2 = 500 - cnt;
47+
48+
wire [31:0] rank = {rank1, rank2};
49+
4050
endmodule

0 commit comments

Comments
 (0)