Guest
Hi,
Could someone please clarify my confusion about the following line
from the SystemVerilog standard:
14.3 The stratified event scheduler
....
The Observed region is for the evaluation of the property
expressions when they are triggered.
Doesn't this mean that for the code below an 'rdy' should be
'ack'ed as if it were combinatorial? because that is not what happens
and indeed
examples from the standard don't support my interpretation.
module assert_property_test();
reg clk, ack;
reg [7:0] req;
wire rdy;
initial begin
clk = 0;
req = 1;
end
always #5 clk = ~clk;
always @(posedge clk)
if (req[7]) begin
if (ack) req = 1;
end
else
req = req << 1;
assign rdy = req[7];
property rdy_ack;
@(posedge clk) rdy;
endproperty
assert_rdy_ack: assert property( rdy_ack )
begin ack = 1'b1; end
else
begin ack = 1'b0; end
endmodule
Could someone please clarify my confusion about the following line
from the SystemVerilog standard:
14.3 The stratified event scheduler
....
The Observed region is for the evaluation of the property
expressions when they are triggered.
Doesn't this mean that for the code below an 'rdy' should be
'ack'ed as if it were combinatorial? because that is not what happens
and indeed
examples from the standard don't support my interpretation.
module assert_property_test();
reg clk, ack;
reg [7:0] req;
wire rdy;
initial begin
clk = 0;
req = 1;
end
always #5 clk = ~clk;
always @(posedge clk)
if (req[7]) begin
if (ack) req = 1;
end
else
req = req << 1;
assign rdy = req[7];
property rdy_ack;
@(posedge clk) rdy;
endproperty
assert_rdy_ack: assert property( rdy_ack )
begin ack = 1'b1; end
else
begin ack = 1'b0; end
endmodule