I am using -profile to investigate why my simulation is so slow, and I found the warning:
the explanation of it is: The assertion is spending a significant amount of time starting new
attempts that immediately terminate. In most assertions, such activity
can be minimized by optimizations in ncsim; something about this
assertion is preventing those optimizations from taking effect.
I want to know what prevent the optimization, how can I fix it?
My assertion is fairly simple as below:
@(posedge clk) ((a && b && !c) ##1 (d && c)) |-> ##[0:2] S;
conflict:assert property (disable iff (!rst_an) check_conflict)
else `uvm_error("ERROR",$psprintf("conflict at %0t \n",$time))
Further, I don't quite understand what it means in the warning explaination "starting new attempts". In the case of my assertion, does it mean new attempts are started by satifying the first part of the expression (a && b && !c) is true, but terminated by (d&&c) is not true after ##1? From what I see in the waveform, my undertanding is not right. Can someone explain?
Could anyone help? Really appreciated.