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.
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?