Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
17 years ago

Quartus II Fitter advice

Hi,

I am currently upgrading an old deisgn to operate at a higher frequency where the timing is extremely tight. After doing a full compilation, I always recieve some setup timing warnings. Initially 1300, but after altering much of the code, the best I have achieved is 2. However I am having difficulty in getting rid of the remaining warnings.

When I fix what appears to be the problem, I obtain warnings in other parts of the design which beforehand were under control. From what I read this type of thing seems normal, if the timing is tight.

I have tried experimenting with the seed value for the fitter, but I have not managed to obtain a design without setup time warnings. Sometimes the number of warnings and the location of the warnings can vary significantly. I have tried using cliques when I have very few warnings as recomended by batfink in an older post, but this has not had the desired affect.

I am using a Flex 10ke device (with Quartus v7.1), and very few options are available in the fitter settings. I worked on a project using a stratix 2 GX before and many more options were available to play with. I don´t know if anybody has any tips which they could post to help me close this out. Perhaps a combination of settings that could work well.

What type of design can make life difficult for the fitter?

At the moment I am focusing on improving the code, and trying to find parts which may make life difficult for the fitter and trying to improve it. Perhaps this is the best solution?

Its probably better to have some sort of margin with the timing. What I am worried about is obtaining a design free of warnings, then later noticing something which needs to be changed and after chagning it being faced with more timing warnings and being back at square 1.

Basically I am interested in:

  1. Any fitter settings that anybody knows of that could help me out. (probably not the best approach in the long run?)

  2. Design practise that can make life difficult for the fitter.

  3. And any other tips or info that anybody may have.
Many thanks for your time.

16 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    It is very unusual to need to overconstrain the timing requirements or to get a benefit from overconstraining. If you get an apparent benefit for one compile, that might be a random change in result not related to the change in the requirements.

    If "Fitter effort" is set to "Standard Fit", the Fitter should be giving the best fmax it can regardless of the requirement. For a design with one clock domain, increasing the fmax requirement should make no consistent difference in actual fmax (no difference on average over a seed sweep or for multiple compiles done for other small changes).

    For a design with more than one clock domain, artificially overconstraining one domain could make the Fitter work harder on that domain compared to other domains. If that's what you want to do, it would be better to overconstrain with clock setup uncertainty and keep the frequency requirement in Quartus set to the true frequency requirement of the design.

    If "Fitter effort" is set to "Auto Fit", the Fitter estimates when it has gotten good enough performance and then stops optimizing. If "Auto Fit" gives negative slack and a Fitter compilation message says that some performance optimizations were skipped, then the Fitter probably made a wrong decision. It would be good to file a service request and let Altera look at the design. For your own immediate solution, you can add some guard band to this "Auto Fit" early-termination-of-optimization decision by enter a value for "Desired worst case slack (margin)" in the dialog box for Fitter Settings, or you can simply change to "Standard Fit".
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Well, interesting theory, but not my experience of using Quartus over multiple designs over the last 12 years.

    My designs are always pushing fmax to the limit on the device, and I would say that I almost never get the timing to close with the frequencies I'm looking for. Overconstraining by typically 5% - 10% frequently allows me to close timing (but not get a clean report).

    Typically my designs have multiple clock domains and high logic utilization. And I'm talking about designs that can take 12 hours to fit on a dual penryn 1300MHz FSB machine with 32G of RAM.

    I've made this a subject of many reports to local FAEs and even provided testcases to Altera of designs that won't close timing until it's overconstrained and I've never had anything useful back from them.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi,

    I just have one further question regarding the DSE.

    I was playing around with it again the last day and I noticed that if I specify more than 40 seeds, it gives me warning at the bottom saying something like "may not be useful in a large design" (sorry I don't have the correct warning as on this PC I don't have Quartus installed).

    What exactly does it mean by this?

    Is it that if you do not meet timing in less than 40 seeds, the design will probably never meet timing. I wasn't planning on running 40 as I can meet the timing with less, but I was just curious as to why the DSE produces this warning before beginning. Would there be anything wrong ignoring this warning and sepcifying a seed sweep of more than 40?

    Thanks again for the advise.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I'd guess that it means that the set of options called for by the seed would result in significant logic duplication and that for a large design this could result in a no-fit because of running out of resources.

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    I've made this a subject of many reports to local FAEs and even provided testcases to Altera of designs that won't close timing until it's overconstrained and I've never had anything useful back from them.

    --- Quote End ---

    That's too bad, because Altera software people should look at designs that behave the way you described. That's contrary to how Quartus is advertised to work. There might be something in your designs that is fundamentally different from most designs that are used to tune the Fitter algorithms.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    I was playing around with [DSE] again the last day and I noticed that if I specify more than 40 seeds, it gives me warning at the bottom saying something like "may not be useful in a large design" (sorry I don't have the correct warning as on this PC I don't have Quartus installed).

    What exactly does it mean by this?

    Is it that if you do not meet timing in less than 40 seeds, the design will probably never meet timing.

    --- Quote End ---

    The last sentence I quoted is probably the reason for the warning.

    I've never noticed that message and probably never tried more than 40 seeds. If DSE actually runs with more than 40, then the results should be valid.

    As I mentioned before though, Altera people who know how the Fitter works will say there is usually no need to run more than around 5 seeds, and I rarely run more than 10 because for most designs it is likely that 10 seeds will produce about as good a result as you would ever get. If you need just a few more picoseconds and would rather run a huge seed sweep than change the design, then you might get lucky with a huge number of seeds. For most people though, the best out of 10 seeds will probably be close enough to the best you could possibly get with virtually infinite seeds.

    --- Quote Start ---

    I'd guess that it means that the set of options called for by the seed would result in significant logic duplication and that for a large design this could result in a no-fit because of running out of resources.

    --- Quote End ---

    DSE explorations more complicated than seed sweeps would have different amounts of duplication for the settings tried from one compile to the next. For a simple seed sweep, though, any difference in logic duplication would be entirely in the Fitter and entirely random just like the randomness in the slack results.