Forum Discussion

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

Quartus Router Congestion

Hello all,

I have a Cyclone V A9 device (300k LEs) and a big design that fit it 95% ALM 12% Memory bits 37% DSP. 14% of ALM are unavailable due to LAB input limits and wide-signals conflicts so real used space is 81% of ALM.

Compilation fail due to

Warning (16618): Fitter routing phase terminated due to routing congestion. Congestion details can be found in Chip Planner.

Critical Warning (188026): The Fitter failed to successfully route the design. You may be able get this design to route by making design modifications, changing the fitter seed or by enabling the Fitter Aggressive Routability Optimizations logic option.

etc..

Attached a Chip Planner blank and with congestion map. Threshold is at 99%, why in black area (= no my logic) there is a congestion? What is in that area (circled yellow into images)?

I am trying to change some settings and floorplanning design but every compilation take 1+ hour (I use .vqm file generated by another tool so analysis and synthesis is fast, i do just routing)

Image link: http://it.tinypic.com/r/2wecbdk/9

Thank you

30 Replies

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

    What is your clocking setup, and do you have the design constrained properly? Timing constraints that are too tight can cause the tools to work way too hard, duplicate logic, etc.

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

    Result is not fed into multiplier, no way to do another math.

    I have retiming, FSM explorer, automatic compile points etc.. turned ON in synplify.

    I have RAM (using standard vhdl template) and cache synthetized with registers but very small.

    RAM is recognized by Quartus and have up to 750+ bit width and 512 depth for high bandwith
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    750bit x512 ram built with registers is HUGE. thats nearly 400k registers alone! No wonder routing is congested!

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

    I used VHDL 2008 fixed point division with retiming (and stages of registers at output) but performance isn't so great..

    I use also multipliers in another part of design but with Cyclone V A9 there are a lot of it.. seem a good idea to try.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    750bit x512 ram built with registers is HUGE. thats nearly 400k registers alone! No wonder routing is congested!

    --- Quote End ---

    Built with builtin RAM :)

    Cache built with registers is 300 bytes
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    My experience used to be Altera and Xilinx passes were similar. The fact that it takes 14 hours to synthesize for a Cyclone V design makes me think something is wrong, as that seems wildly out of proportion. They've always had fast compile times and over an hour seems long to me. (General statement though. I remember one design that was about that size, but the RTL would originally make something about 10x that size and due to nets tied off it would get reduced down to 1/10th that size. This was how the user coded their design, but the synthesis times were significantly higher than design of similar size)

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

    --- Quote Start ---

    I used VHDL 2008 fixed point division with retiming (and stages of registers at output) but performance isn't so great..

    I use also multipliers in another part of design but with Cyclone V A9 there are a lot of it.. seem a good idea to try.

    --- Quote End ---

    I would always trust the lpm_divide megafunction over retimed dividers. its quite easy to just instantiate an lpm divide manually and do type conversion on the in/output. It would avoid the need for synplify (which has never done a better job than quartus - which was admitted by the synplify reps when they visited - this was several years ago though).
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Compiling with Quartus using LPM_DIV with Pipeline is better

    http://www.alteraforum.com/forum/attachment.php?attachmentid=11715&stc=1

    I have too low frequency but during fitting I have hibernated PC and when resumed today compilation time was wrong (counted also when pc was turned off) and then skipped some optimizations..

    Info (170236): Routing optimizations have been running for 12 hour(s)

    Info (170242): 197139 out of 213944 signals have been routed.

    Info (170238): 27703 interconnect resources are used by multiple signals.

    Info (170199): The Fitter performed an Auto Fit compilation. Optimizations were skipped to reduce compilation time.

    Info (170200): Optimizations that may affect the design's timing were skipped

    Never hibernate during compilation..

    PS: Powerplay report that Routing Dynamic Power is more than Block Thermal Power, routing power is used only at configuration?