Hello all,I am working with a design where TimeQuest reports paths not meeting setup by a very small margin, 1-2% of the clock freq. There are only a handful of paths, and every time I change the seed, it is a totally different random set of paths. The Fast timing models all seem ok though. So every time I make an RTL change, I have to go through this same pain, of running the design several times with a few different seeds until there are no violations. I found that adding extra uncertainty to the clock doesn't help directly. I get the same behavior because TimeQuest simply includes the uncertainty in the random failing paths. However, if I remove the uncertainty, things look better. I assume this is because the fitter works with the uncertainty, and TimeQuest doesn't. This seems like a bad approach to me though. Is there a way to tell the fitter to use extra uncertainty than the final analysis? Note that I am using Standard Fit, not Auto Fit.
The Fitter will use the timing specs to try and create a design that will meet timing, but at some point, it will just give up. Timequest is nothing more than an analysis tool to help you debug where the fitter was having difficulty. The randomness you see is perfectly expected. The fitter uses a seed (based on the source code and fitter seed) to start the fit process. Using a different seed will produce a completely different layout.The best and easiest way to fix timing problems is to change the RTL. What are the timing problems? are they through logic between flops, or at the IOs? If it is your design, they increasing pipelining (reducing logic between registers) will make the fitter's job easier. Also - have you specified all false paths/multi-cycle paths correctly? getting these set correctly reduces the effort the fitter needs to make and means it can put more effort in elsewhere in the design.
I understand that TimeQuest is just analysis. But I get better results when I manually add in some margin by telling the fitter about extra uncertainty, and not telling TimeQuest about that.The paths aren't particularly difficult, no reason to go add flops
Over constraining the design just for the fitter can force the fitter to work harder, or start from a better position.Clearly the paths are difficult for some reason, otherwise they would meet timing. Modifying the code is ALWAYS the easiest option.