| 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. |
| |
| Packing |
| ======= |
| |
| 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. |
| |
| Placing |
| ======= |
| |
| 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 |
| ======= |
| |
| Routing is one of the most demanding tasks of 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. |
| |
| Analysis |
| ======== |
| |
| This last step usually checks the whole design in terms of timings and power |
| consumption. |