Altera_Forum
Honored Contributor
13 years agoQuartus introduces large data path delay difference in two builds
Hi all,
We are having problems to make our design meet timing stably. We made two builds based on the same set of source code, one meets timing well and the other one just fails timing. When checking the violated path in the failed build against the timing-met build, we see that the slack in the failed build is -0.106ns, while the timing-met build has a positive slack of 0.632ns. Taking the clock arrival time into consideration, the actual data path delay difference is 0.579ns. We know that quartus fitter uses a random seed so it is reasonable to see some difference in different builds, however such difference of almost 0.6ns on the same path is difficult to accept. Looking into the timequest, we see that quartus seems to use different routing resources for the two builds. In the failed build (the pic on the left), in the red block, it can be seen that quartus uses both V_SEG and H_SEG (I guess they mean vertical and horizontal routing resources?) which introduces quite large delay. In the timing-passed build (the pic on the right), in the red block, quartus only uses the H_SEG for routing, which has relatively small delay. In the whole data path, such routing difference happens several times. In my guess, quartus uses some vertical routing resources as well as horizontal routing resources in the timing-failed design, and the vertical routing resources introduces considerable delay to the data path. Is this correct? If so, is there any way to force quartus not doing such stupid routing? I guess that quartus does this just because of some possible routing congestion due to difference in the placement. But since it is possible to find a placement/routing scheme to meet the timing, why can't it always do this? Thanks, Xin