Place-and-Route Options

The best place to start with adjusting the place-and-route settings is to use one of the optimization levels. Each level is a "recipe" that controls both placement and routing; one is not necessarily better than the other. Efinix developed them to introduce as much useful variation as possible into the place-and-route process. These options will not help all designs, and often the default settings are actually the best choice.

Note: Using these options can cause significantly higher run-time. In fact, some options trigger completely different optimization algorithms than the standard flow.

Try running all of these optimization levels and choose the one that works best for your design. The timing values are best for designs that are easy to route while the congestion values are best for designs that are very difficult to route. For congested designs, these options resolve congestion early in the process so that the router can focus on meeting timing. If the number of routing iterations is greater than 20, the design is hard to route. The power options can help reduce a design's power consumption. See Optimization Sweeping for details on how to sweep these options using a script.

The seed option introduces random noise in the placer (see Seed Sweeping for a detailed discussion). The fMAX difference between the best and worst seed in a 5-seed sweep can be up to 10%. But keep in mind that a good seed only applies to one specific design for one Efinity® release on one operating system. So if you want to reproduce the same result for the same design, you need to use the same software release and same operating system.

Sometimes small design changes may appear to reduce fMAX by up to 10%. You should run a 5-seed sweep to verify that the decrease was actually due to the design change and not simply noise from the placer.

Tip: You set these options in the Project Editor. Choose File > Edit Project and click the Place and Route tab.
Table 1. Optimization Options
Optimization Value Description
--optimization_level NULL Disabled (default).
TIMING_1 Recipe 1 to meet timing for a non-congested design.
TIMING_2 Recipe 2 to meet timing for a non-congested design.
TIMING_3 Recipe 3 to meet timing for a non-congested design.
CONGESTION_1 Recipe 1 to meet timing and help a congested design route.
CONGESTION_2 Recipe 2 to meet timing and help a congested design route.
CONGESTION_3 Recipe 3 to meet timing and help a congested design route.
POWER_1 Recipe 1 to reduce a design's power consumption.
POWER_2 Recipe 2 to meet a design's power consumption.
seed Integer Enter any integer to insert a random seed into the place-and-route algorithm. Read more about seed sweeping in the next section.
--placer_effort_level 1, 2, 3, 4, 5 Controls how much runtime the placer uses to attempt to improve placement quality.
Default: 2
--max_threads Integer Choose the maximum number of threads that the placer can launch. Typically you want to use the default, -1, which means the placer can launch as many threads as it needs. However, if you are running other pocesses on your computer, you may want to limit the number of threads.
Default: -1
--print_critical_path Integer
1 - 1000
Choose how many critical paths to report. If you choose a high number, the software requires more time to generate the report.
Default: 10
--classic_flow on, off Choose whether to use the unified flow or classic flow.
on: Use classic flow
off: Use unified flow. Default.
--suppress_info_msgs off, on Suppress INFO messages from place and route.
Off: Default.
On: Suppress.
--suppress_warning_msgs off, on Suppress WARNING messages from place and route.
Off: Default.
On: Suppress.
--msg_suppression_list File path Suppress specific INFO/WARNING messages from place and route by message IDs.
The suppression list file should contain line separated message IDs. Comments are supported.
The same suppression list file may be used for both synthesis and place and route. Unrecognized IDs are ignored.
--beneficial-skew on, off When turned on, the software "borrows" slack from one clock to meet timing on another. (Titanium and Topaz FPGAs only)
Default: on