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.
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.
| 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 |