R
Rob Dekker
Guest
Got an interesting case for SystemVerilog Assertion experts.
I am confused on this.
Consider the following assertion statement :
assert property (@(posedge clk1) a ##1 @(posedge clk2) b |=> c ) ;
The LRM precedence rules seem to indicate that this should be interpreted as this :
assert property (@(posedge clk1) a ##1 (@(posedge clk2) (b |=> c) ) ;
where |=> c is thus clocked by 'clk2'....
but then the RHS of ##1 is a sequence, and |=> is only allowed in a property,
so this implementation should cause an error.
Or should it be implemented like this :
assert property (@(posedge clk1) (a ##1 @(posedge clk2) b) |=> c ) ;
where |=> c is thus clocked by 'clk1'...
But is that right ?
Or should it be interpreted differently again ?
Any insights would be greatly appreciated.
I am confused on this.
Consider the following assertion statement :
assert property (@(posedge clk1) a ##1 @(posedge clk2) b |=> c ) ;
The LRM precedence rules seem to indicate that this should be interpreted as this :
assert property (@(posedge clk1) a ##1 (@(posedge clk2) (b |=> c) ) ;
where |=> c is thus clocked by 'clk2'....
but then the RHS of ##1 is a sequence, and |=> is only allowed in a property,
so this implementation should cause an error.
Or should it be implemented like this :
assert property (@(posedge clk1) (a ##1 @(posedge clk2) b) |=> c ) ;
where |=> c is thus clocked by 'clk1'...
But is that right ?
Or should it be interpreted differently again ?
Any insights would be greatly appreciated.