Skip to content

Commit 6503595

Browse files
committed
SVA Monitors
This adds an alternative flow for checking SVA properties, by translating the property into a monitor, which is added to the transition system.
1 parent 2d61d66 commit 6503595

18 files changed

+470
-7
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
CORE
2+
always1.sv
3+
--sva-monitor --smv-word-level
4+
^VAR initial : boolean;$
5+
^VAR always_activated : boolean;$
6+
^INIT sva-monitor::initial$
7+
^INIT !sva-monitor::always_activated$
8+
^TRANS !next\(sva-monitor::initial\)$
9+
^TRANS next\(sva-monitor::always_activated\) = sva-monitor::always_active$
10+
^LTLSPEC G \(sva-monitor::always_active -> FALSE\)$
11+
^EXIT=0$
12+
^SIGNAL=0$
13+
--
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module main(input clk);
2+
3+
p0: assert property (0);
4+
5+
endmodule
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
CORE
2+
initial1.sv
3+
--sva-monitor --smv-word-level
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module main(input clk);
2+
3+
initial p0: assert property (0);
4+
5+
endmodule
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CORE
2+
s_eventually1.sv
3+
--sva-monitor --smv-word-level
4+
^-- Verilog::main\.p0: not converted$
5+
^EXIT=0$
6+
^SIGNAL=0$
7+
--
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module main(input clk);
2+
3+
p0: assert property (s_eventually 0);
4+
5+
endmodule
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
CORE
2+
s_nexttime1.sv
3+
--sva-monitor --smv-word-level
4+
^VAR initial : boolean;$
5+
^VAR delayed_active : boolean;$
6+
^INIT sva-monitor::initial$
7+
^INIT !sva-monitor::delayed_active$
8+
^TRANS !next\(sva-monitor::initial\)$
9+
^TRANS next\(sva-monitor::delayed_active\) = sva-monitor::initial$
10+
^LTLSPEC G \(sva-monitor::delayed_active -> FALSE\)$
11+
^EXIT=0$
12+
^SIGNAL=0$
13+
--
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module main(input clk);
2+
3+
initial p0: assert property (s_nexttime 0);
4+
5+
endmodule
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
CORE
2+
sequence1.sv
3+
--sva-monitor --smv-word-level
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module main(input clk);
2+
3+
reg [31:0] x = 0;
4+
5+
always_ff @(posedge clk)
6+
x++;
7+
8+
initial p0: assert property (x==0 ##1 x==1 ##1 x==2);
9+
10+
endmodule

0 commit comments

Comments
 (0)