Place & Route¶
The Synthesis process results in an output containing logical elements available on the desired FPGA chip with the specified connections between them. However, it does not specify the physical layout of those elements in the final design. The goal of the Place and Route (PnR) process is to take the synthesized design and implement it into the target FPGA device. The PnR tool needs to have information about the physical composition of the device, routing paths between the different logical blocks and signal propagation timings. The working flow of different PnR tools may vary, however, the process presented below represents the typical one, adopted by most of these tools. Usually, it consists of four steps - packing, placing, routing and analysis.
In the first step, the tool collects and analyzes the primitives present in the synthesized design (e.g. Flip-Flops, Muxes, Carry-chains, etc), and organizes them in clusters, each one belonging to a physical tile of the device. The PnR tool makes the best possible decision, based on the FPGA routing resources and timings between different points in the chip.
After having clustered all the various primitives into the physical tiles of the device, the tool begins the placement process. This step consists in assigning a physical location to every cluster generated in the packing stage. The choice of the locations is based on the chosen algorithm and on the user’s parameters, but generally, the final goal is to find the best placement that allows the routing step to find more optimal solutions.
Routing is one of the most demanding tasks of the the whole process. All possible connections between the placed blocks and the information on the signals propagation timings, form a complex graph. The tool tries to find the optimal path connecting all the placed clusters using the information provided in the routing graph. Once all the nets have been routed, an output file containing the implemented design is produced.
This last step usually checks the whole design in terms of timings and power consumption.