Closed
Description
The new basic engine heuristic seems to introduce a bug when it is applied to designs containing assumptions not supported by the k-induction engine (temporal property in my case). The assumption seems to be transformed into an assertion.
As an example, if you take regression/ebmc/k-induction/ring_buffer.sv
, and you slightly modify the first assumption in order to add a temporal operator as follows, the engine will output REFUTED
instead of ASSUMED
or FAILURE: property unsupported by k-induction
for the first assumption:
module ring_buffer(input clk, input read, input write);
reg [4:0] count=0;
reg [3:0] readptr=0, writeptr=0;
always @(posedge clk) begin
if(read) begin
readptr++;
count--;
end
if(write) begin
writeptr++;
count++;
end
end
wire full=count==16;
wire empty=count==0;
assume property (empty |=> !read);
assume property (full |-> !write);
p0: assert property (((writeptr-readptr)&'b1111)==count[3:0]);
p1: assert property (count <= 16);
p2: assert property (count != 17);
endmodule
Metadata
Metadata
Assignees
Labels
No labels