49 lines
2.1 KiB
Plaintext
49 lines
2.1 KiB
Plaintext
|
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.
|