Trying to verify Verilog/VHDL designs with formal methods and tools
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

41 lines
728 B

module counter_t (
input Reset_n_i,
input Clk_i,
output [31:0] Data_o
);
`define INIT_VALUE 8
counter #(.Init(`INIT_VALUE)) counter_i (
.Reset_n_i(Reset_n_i),
.Clk_i(Clk_i),
.Data_o(Data_o)
);
reg init_state = 1;
always @(*)
if (init_state) assume (!Reset_n_i);
always @(posedge Clk_i)
init_state = 0;
/*
// Don't works with Verific at the moment
initial begin
assume (!Reset_n_i);
end
*/
// Proves fail, counterexample hasn't initial reset active
assert property (@(posedge Clk_i) Data_o >= `INIT_VALUE && Data_o <= 64);
assert property (@(posedge Clk_i) disable iff (!Reset_n_i) Data_o < 64 |=> Data_o == $past(Data_o) + 1);
endmodule