File tree Expand file tree Collapse file tree 13 files changed +175
-64
lines changed Expand file tree Collapse file tree 13 files changed +175
-64
lines changed Original file line number Diff line number Diff line change 1- KNOWNBUG
1+ CORE
22cover_sequence2.sv
3- --bound 2
4- ^\[main\.p0\] cover \(main\.x == 2 ##1 main\.x == 3 ##1 main\.x == 100\): PROVED$
5- ^\[main\.p1\] cover \(main\.x == 98 ##1 main\.x == 99 ##1 main\.x == 100\): REFUTED up to bound 2$
3+ --bound 5
4+ ^\[main\.p0\] cover \(main\.x == 2 ##1 main\.x == 3 ##1 main\.x == 100\): REFUTED up to bound 5$
5+ ^\[main\.p1\] cover \(main\.x == 98 ##1 main\.x == 99 ##1 main\.x == 100\): REFUTED up to bound 5$
6+ ^\[main\.p2\] cover \(main\.x == 3 ##1 main\.x == 4 ##1 main\.x == 5\): PROVED$
7+ ^\[main\.p3\] cover \(main\.x == 4 ##1 main\.x == 5 ##1 main\.x == 6\): REFUTED up to bound 5$
68^EXIT=10$
79^SIGNAL=0$
810--
911^warning: ignoring
1012--
11- Cover property p0 cannot ever hold, but is shown proven when using a small bound.
Original file line number Diff line number Diff line change 11module main (input clk);
22
33 // count up
4- reg [ 7 : 0 ] x = 0 ;
4+ int x = 0 ;
55
6- always @ (posedge clk)
6+ always_ff @ (posedge clk)
77 x++ ;
88
99 // expected to fail
1010 p0: cover property (x== 2 ## 1 x== 3 ## 1 x== 100 );
1111
12- // expected to fail until bound reaches 100
12+ // expected to fail until x reaches 100
1313 p1: cover property (x== 98 ## 1 x== 99 ## 1 x== 100 );
1414
15+ // expected to pass once x reaches 5
16+ p2: cover property (x== 3 ## 1 x== 4 ## 1 x== 5 );
17+
18+ // expected to pass once x reaches 6
19+ p3: cover property (x== 4 ## 1 x== 5 ## 1 x== 6 );
20+
1521endmodule
Original file line number Diff line number Diff line change 1+ CORE
2+ cover_sequence3.sv
3+ --bound 3
4+ ^\[main\.p0\] cover \(1 \[\*10\]\): REFUTED up to bound 3$
5+ ^\[main\.p1\] cover \(1 \[\*4:10\]\): PROVED$
6+ ^\[main\.p2\] cover \(1 \[\*5:10\]\): REFUTED up to bound 3$
7+ ^EXIT=10$
8+ ^SIGNAL=0$
9+ --
10+ ^warning: ignoring
11+ --
Original file line number Diff line number Diff line change 1+ module main (input clk);
2+
3+ // count up
4+ int x = 0 ;
5+
6+ always_ff @ (posedge clk)
7+ x++ ;
8+
9+ // passes with bound >=9
10+ p0: cover property (1 [* 10 ]);
11+
12+ // passes with bound >=3
13+ p1: cover property (1 [* 4 : 10 ]);
14+
15+ // passes with bound >=4
16+ p2: cover property (1 [* 5 : 10 ]);
17+
18+ endmodule
Original file line number Diff line number Diff line change 1+ KNOWNBUG
2+ cover_sequence4.sv
3+ --bound 3
4+ ^\[main\.p0\] cover \(1 \[=10\]\): REFUTED up to bound 3$
5+ ^\[main\.p1\] cover \(1 \[=4:10\]\): PROVED$
6+ ^\[main\.p2\] cover \(1 \[=5:10\]\): REFUTED up to bound 3$
7+ ^EXIT=10$
8+ ^SIGNAL=0$
9+ --
10+ ^warning: ignoring
11+ --
12+ Implementation of [=x:y] is missing.
Original file line number Diff line number Diff line change 1+ module main (input clk);
2+
3+ // count up
4+ int x = 0 ;
5+
6+ always_ff @ (posedge clk)
7+ x++ ;
8+
9+ // passes with bound >=9
10+ p0: cover property (1 [= 10 ]);
11+
12+ // passes with bound >=3
13+ p1: cover property (1 [= 4 : 10 ]);
14+
15+ // passes with bound >=4
16+ p2: cover property (1 [= 5 : 10 ]);
17+
18+ endmodule
Original file line number Diff line number Diff line change 1- KNOWNBUG
1+ CORE
22sequence2.sv
3- --bound 10 --numbered-trace
4- ^\[main\.p0] ##\[0:\$\] main\.x == 10: PROVED up to bound 10$
5- ^\[main\.p1] ##\[0:\$\] main\.x == 10: REFUTED$
3+ --bound 10
4+ ^\[main\.p0] weak\( ##\[0:\$\] main\.x == 10\) : PROVED up to bound 10$
5+ ^\[main\.p1] strong\( ##\[0:\$\] main\.x == 10\) : REFUTED$
66^EXIT=10$
77^SIGNAL=0$
88--
99^warning: ignoring
1010--
11- strong(...) is missing.
Original file line number Diff line number Diff line change 1- KNOWNBUG
1+ CORE
22sequence3.sv
33--bound 20 --numbered-trace
4- ^\[main\.p0\] ##\[\*\] main\.x == 6: REFUTED$
5- ^\[main\.p1\] ##\[\*\] main\.x == 5: PROVED up to bound 20$
6- ^\[main\.p2\] ##\[\+\] main\.x == 0: REFUTED$
7- ^\[main\.p3\] ##\[\+\] main\.x == 5: PROVED up to bound 20$
4+ ^\[main\.p0\] strong\( ##\[\*\] main\.x == 6\) : REFUTED$
5+ ^\[main\.p1\] strong\( ##\[\*\] main\.x == 5\) : PROVED up to bound 20$
6+ ^\[main\.p2\] strong\( ##\[\+\] main\.x == 0\) : REFUTED$
7+ ^\[main\.p3\] strong\( ##\[\+\] main\.x == 5\) : PROVED up to bound 20$
88^EXIT=10$
99^SIGNAL=0$
1010--
1111^warning: ignoring
1212--
13- strong(...) is missing
Original file line number Diff line number Diff line change 11CORE
22strong1.sv
3- --bound 20
4- ^\[main\.p0\] strong\(##\[0:9\] main\.x == 100 \): REFUTED$
3+ --bound 4
4+ ^\[main\.p0\] strong\(##\[0:9\] main\.x == 5 \): REFUTED$
55^EXIT=10$
66^SIGNAL=0$
77--
Original file line number Diff line number Diff line change @@ -8,7 +8,7 @@ module main;
88 always @ (posedge clk)
99 x<= x+ 1 ;
1010
11- // fails
12- initial p0 : assert property (strong (## [0 : 9 ] x== 100 ));
11+ // fails if bound is too low
12+ initial p0 : assert property (strong (## [0 : 9 ] x== 5 ));
1313
1414endmodule
You can’t perform that action at this time.
0 commit comments