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.
You should check out the Coding Style Guidelines for Maximizing Assertion Performance guide. You can find it by launching 'cdnshelp' and going to Incisive Enterprise Simulator -> Assertion-Based Verification -> Assertion Writing Guide -> Maximizing Assertion Performance.
In reply to tpylant:
Thank you very much, Tim.
That's the document I need to study.
I have a further question.
In the report ncprof.out, I have over 20% Stream Counts hits on SSS_MT_SVHASSIGN method, is it normal ?
And over 60% on a function which is checking memory data. Although the test case is doing a lot of memory read/write continuously, does this high percetage look OK?
In reply to nwang:
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.