AMF-Placer
2.0
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
AMFPlacer is an analytical mixed-size FPGA placer. More...
#include <AMFPlacer.h>
Public Member Functions | |
AMFPlacer (std::string JSONFileName, bool guiEnable) | |
Construct a new AMFPlacer object according to a given placer configuration file. More... | |
~AMFPlacer () | |
void | clearSomeAttributesCannotRecord () |
void | run () |
launch the analytical mixed-size FPGA placement procedure More... | |
Public Attributes | |
PaintDataBase * | paintData = nullptr |
Private Attributes | |
DeviceInfo * | deviceinfo = nullptr |
information related to the device (BELs, Sites, Tiles, Clock Regions) More... | |
DesignInfo * | designInfo = nullptr |
information related to the design (cells, pins and nets) More... | |
PlacementInfo * | placementInfo = nullptr |
inforamtion related to placement (locations, interconnections, status, constraints, legalization) More... | |
InitialPacker * | initialPacker = nullptr |
initially packing for macro extraction based on pre-defined rules More... | |
IncrementalBELPacker * | incrementalBELPacker = nullptr |
incremental pairing of some FFs and LUTs into small macros More... | |
GlobalPlacer * | globalPlacer = nullptr |
global placer acconting for initial placement, quadratic placement, cell spreading and macro legalization. More... | |
ParallelCLBPacker * | parallelCLBPacker = nullptr |
final packing of instances into CLB sites More... | |
std::map< std::string, std::string > | JSON |
the user-defined settings of placement More... | |
AMFPlacer is an analytical mixed-size FPGA placer.
To enable the performance optimization of application mapping on modern field-programmable gate arrays (FPGAs), certain critical path portions of the designs might be prearranged into many multi-cell macros during synthesis. These movable macros with constraints of shape and resources lead to challenging mixed-size placement for FPGA designs which cannot be addressed by previous works of analytical placers. AMF-Placer 2.0 is an open-source comprehensive timing-driven Analytical Mixed-size FPGA placer. It supports mixed-size placement of heterogeneous resources (e.g., LUT/FF/LUTRAM/MUX/CARRY/DSP/BRAM) on FPGA. To speed up the convergence and improve the timing quality of the placement, standing upon the shoulders of AMF-Placer 1.0, AMF-Placer 2.0 is equipped with a series of new techniques for timing optimization, including an effective regression-based timing model, placement-blockage-aware anchor insertion, WNS-aware timing-driven quadratic placement, and sector-guided detailed placement. Based on a set of the latest large open-source benchmarks from various domains for Xilinx Ultrascale FPGAs, experimental results indicate that critical path delays realized by AMF-Placer 2.0 are averagely 2.2% and 0.59% higher than those achieved by commercial tool Xilinx Vivavo 2020.2 and 2021.2 respectively. Meanwhile, the average runtime of placement procedure of AMF-Placer 2.0 is 14% and 8.5% higher than Xilinx Vivavo 2020.2 and 2021.2 respectively. Although limited by the absence of the exact timing model of the device, the information of design hierarchy and accurate routing feedback, AMF-Placer 2.0 is the first open-source FPGA placer which can handle the timing-driven mixed-size placement of practical complex designs with various FPGA resources and achieves the comparable quality to the latest commercial tools.
Definition at line 49 of file AMFPlacer.h.
|
inline |
Construct a new AMFPlacer object according to a given placer configuration file.
JSONFileName |
Definition at line 57 of file AMFPlacer.h.
|
inline |
Definition at line 100 of file AMFPlacer.h.
|
inline |
Definition at line 113 of file AMFPlacer.h.
Referenced by run().
|
inline |
launch the analytical mixed-size FPGA placement procedure
Definition at line 133 of file AMFPlacer.h.
Referenced by runPlacer().
|
private |
information related to the design (cells, pins and nets)
Definition at line 267 of file AMFPlacer.h.
Referenced by AMFPlacer(), run(), and ~AMFPlacer().
|
private |
information related to the device (BELs, Sites, Tiles, Clock Regions)
Definition at line 261 of file AMFPlacer.h.
Referenced by AMFPlacer(), run(), and ~AMFPlacer().
|
private |
global placer acconting for initial placement, quadratic placement, cell spreading and macro legalization.
Definition at line 291 of file AMFPlacer.h.
Referenced by run(), and ~AMFPlacer().
|
private |
incremental pairing of some FFs and LUTs into small macros
Definition at line 285 of file AMFPlacer.h.
Referenced by run(), and ~AMFPlacer().
|
private |
initially packing for macro extraction based on pre-defined rules
Definition at line 279 of file AMFPlacer.h.
Referenced by run(), and ~AMFPlacer().
|
private |
the user-defined settings of placement
Definition at line 303 of file AMFPlacer.h.
Referenced by AMFPlacer(), and run().
PaintDataBase* AMFPlacer::paintData = nullptr |
Definition at line 254 of file AMFPlacer.h.
Referenced by AMFPlacer(), main(), run(), and runVisualization().
|
private |
final packing of instances into CLB sites
Definition at line 297 of file AMFPlacer.h.
Referenced by run().
|
private |
inforamtion related to placement (locations, interconnections, status, constraints, legalization)
Definition at line 273 of file AMFPlacer.h.
Referenced by clearSomeAttributesCannotRecord(), run(), and ~AMFPlacer().