2022-03-10 04:46:21 -05:00
|
|
|
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
|
|
|
|
=======
|
|
|
|
|
2022-05-24 15:03:40 -04:00
|
|
|
Routing is one of the most demanding tasks of the whole process.
|
2022-03-10 04:46:21 -05:00
|
|
|
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.
|