Following 2 tumultuous years, we are glad to officially announce our post-Covid release - InTime 2022. One of the top features that is included with InTime 2022 is *drum roll*- Automated Floorplanning!
Floorplanning is one of those problems where the solution can be classified either as an art or science. Even if you are a "newbie", basic floorplanning can be extremely beneficial for results. To describe the goals of floorplanning in layman terms, you basically need to
- Reduce congestion
- Place it such that the routes are shorter
- Make the routing easier
Placement and routing engines of major FPGA tools are well-tuned and robust enough in most cases. However, these engines are often inadequate for designs with high utilization (like RAM or DSP) and/or congestion. Strange errors like "insuffiicient SLL" are reported when LUT utilization is only 15% of the whole device. Hence, floorplanning is necessary to guide these engines to provide better Place & Route results and get it to compile successfully.
Once you have decided to floorplan your design, you will realize that floorplanning in FPGA designs is predominantly an arduous and manual process. The FPGA tools provide commands and utilities to define, create, position, and manipulate areas of the target devices. The critical decisions regarding the sizes, locations and instances to floorplan, are left to the human designers. This mostly means that the more experienced you are, the better the floorplanning results become.
Last, after you have floorplanned your design, a fundamental challenge is actually assessing whether the floorplan is overall beneficial or not. Floorplanning is carried out before placement and routing and the results depend on combinations of factors such as
- Locations of I/Os, hard macros and dedicated resources;
- Placement and routing congestion;
- Place and Route settings;
- (For multi-die devices) Number of dies and available die crossing resources;
- Amount of randomness in the initial placement;
- And many more, as devices and designs become more complex.
These contributing factors complicate the assessment of floorplans and the decision-making process.
Automated Floorplanning in InTime
InTime floorplanning is an automated, congestion-aware floorplanning approach. We have noticed that FPGA designs bearing certain characteristics, are very prone to failing P&R or producing bad timing. Hence, InTime floorplanning prioritises designs with specific issues such as:
- High utilization designs with congestion on multi-die devices
- Low LUT, High RAM/DSP designs on multi-die devices
- Single die devices with high routing delays
Suffice to say, there are many reasons for a design that fails or has bad timing. Floorplanning is effective for certain design issues. For example, it does not resolve issues such as high number of logic levels or fanout. Timing degradation caused by these issues have to be solved by other methods, e.g. running InTime Default recipe or RTL changes
Two modes of automated floorplanning
There are two modes of automated floorplanning. This is controlled with a Tcl command
flow set fp_type <mode>
1. Congestion mode (default):
This is the default mode. For designs that have a congestion problem, this mode detects modules responsible for inducing excessive global or localized congestion and floorplans the design to alleviate congestion;
2. Resource Balancing mode:
This mode analyzes hierarchical connectivity across the design to determine the best floorplans that balance connectivity between floorplan partitions, improving overall timing performance.
This mode is usually more effective for designs when there is a imbalance in resources or SLL distribution. Errors such as "
ERROR: [Place 30-99] Placer failed with error: 33041 SLLs required between SLR0 and SLR1 of 25920 SLLs available." The floorplanner will balance the utilization of each SLR to resolve this problem.
There are other parameters which can be used to configure the floorplanning. Visit InTime Documentation on Floorplanning to learn more about running the Auto-Floorplanning recipe and parameters.
Tools for Manual Floorplanning
In the worst case, you may need to manually floorplan the design. As mentioned above, there are 3 objectives for floorplanning. One of the key considerations for creating your own floorplans, is to identify which instances are to be floorplan. For example, is it a congestion problem as the utilization is high in a particular SLR? Is there a insufficient SLL problem? These will help you zoom in to the instance that is critical.
Once you have zoomed in a few critical instances, it is time to understand how these instances are related to the rest of the design. When you run the Auto Floorplan recipe, a visualization of the hierarchy connectivity is created. (To view this graph, switch to the Analysis Tab and right click on the job to be analyzed and switch to "Learning Analysis", "Connectivity")
This is an interactive graph where each circle or "node" represents an instance. The lines connecting them are called "edges". If you look closely, you can see the arrow heads on these edges indicating the direction of the data flow. If the results are based on post-routed timing information, the thickness of the arrow represents how serious is the negative slack. (The thicker it is, the more negative it is) Each of the colour represents a closely connected group of nodes.
Here are some considerations when doing floorplanning.
- If a particular critical instance is green, you may want to find out if the nodes in the same group are placed close to it, i.e. same SLR or nearby clockregions. You can also use this graph to find out if 2 groups are highly connected.
- For the same group of nodes, are they placed into separate SLRs? Should they be placed in the same SLR?
- Are certain SLR congested? If so, can some instances be floorplanned in other SLR thus reducing congestion?
Manual floorplanning is not easy, slow and iterative. One word of advice. Our experiments showed that it is better to give ample room for the partitions instead of over-constraining them, even though the tool says it can fit into the partition you created.
To try the new automated floorplanning, contact us to download an evaluation copy of InTime.