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:
property check_conflict; @(posedge clk) ((a && b && !c) ##1 (d && c)) |-> ##[0:2] S; endproperty 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.
These method entries are optimized assembly routines which are mostly event simulator internal operations. I would suggest trying the "-iprof" option that provide more detail than the standard "-profile" option. you'll need to use the "iprof" command to analyze the output from "-iprof". It is best to review the iprof help by searching for iprof in cdsnhelp.