AMF-Placer  2.0
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
AMF-Placer Documentation

DocumentationFlow CMakeFlow LoCCode LoCComment

Access The GitHub Project

Introduction

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.

Convergence (OpenPiton) Convergence (MiniMap2) Convergence (OptimSoC) Convergence (MemN2N) GUI GUIdetailed

License

This project is developed by Reconfiguration Computing Systems Lab, Hong Kong University of Science and Technology (HKUST). Tingyuan Liang (tlian.nosp@m.g@co.nosp@m.nnect.nosp@m..ust.nosp@m..hk), Gengjie Chen (chen_.nosp@m.geng.nosp@m.jie@h.nosp@m.otma.nosp@m.il.co.nosp@m.m), Jieru Zhao (zhao-.nosp@m.jier.nosp@m.u@sjt.nosp@m.u.ed.nosp@m.u.cn), Sharad Sinha (shara.nosp@m.d@ii.nosp@m.tgoa..nosp@m.ac.i.nosp@m.n) and Wei Zhang (eewei.nosp@m.z@us.nosp@m.t.hk) are the major contributors of this project.

In this repo, we provide the basic implementation of AMF-Placer 2.0, under the Apache License 2.0, supporting comprehensive timing-driven placement with critical path delay and runtime which are downgraded slightly by ~5% on average. If you want to obtain the advanced version of AMF-Placer 2.0 to reproduce the experimental results in the paper of AMF-Placer 2.0 for academic evaluation or commercial usage, you are required to contact the authors Tingyuan Liang (tlian.nosp@m.g@co.nosp@m.nnect.nosp@m..ust.nosp@m..hk) and Wei ZHANG (eewei.nosp@m.z@us.nosp@m.t.hk) with your offcial instituation email and we will response in 72 hours. If you are commercial entities, you can also contact ttsam.nosp@m.uel@.nosp@m.ust.h.nosp@m.k for licensing opportunities of the advanced version.

Documentation Hierarchy

Motivations

  1. Just reinvent the wheel for fun, try to build a complete flow and reproduce/improve some state-of-art techniques in the latest papers.
  2. Resolve some existing constraints in some previous works and consider more practical situations, like FPGA mixed-size placement with a series of optimization from the perspectives of timing, clocking, routability-aware and parallelism.
  3. A beginner-friendly placement framework with clear hierarchy and detailed Doxygen-based documentation. We hope that it can lower the overhead for people who are also interested in this research area.
  4. Currently, this framework is under development and it is still far from our goals and the practical demands, but we are happy to share our progress in this GitHub repository. If you have any questions/problems/suggestions, please contact feel free to contact us (Tingyuan LIANG, tlian.nosp@m.g@co.nosp@m.nnect.nosp@m..ust.nosp@m..hk)

Features

  1. supports placeemnt with a large number of mixed-size macros with shape constraints in practical FPGA applications.
  2. wirelength-driven, routability-aware, packing-aware, clock-aware, region-aware.
  3. initially timing-driven with basic embedded static timing analysis, WNS-aware global placement, efficient detailed placement
  4. a set of optional optimization techniques to improve mixed-size FPGA placement QoR
  5. parallelizes the implementation of each stage of placement based on multi-threading
  6. modularized function implementation for easier further development
  7. flexible and extensible JSON-based placement configuration
  8. supports placement check-point importing/exporting
  9. a set of pre-implementation benchmarks from latest practical FPGA applications
  10. provides a set of Tcl scripts which extracts design netlist from Vivado and exports post-placement information to Vivado
  11. A basic GUI for user to analyze the placement procedure to optimize the implementation

Todo List

  1. clock tree synthesis
  2. ckock-related optimization
  3. reduce the hyperparameters in the algorithms and make them adaptive to design features

Implementation Overview

Implementation Overview

Acknowledgement

We sincerely appreciate the kindly suggestions from reviewers, detailed explanations of UTPlaceF from Dr. Wuxi Li, useful advice on Vivado metric usages from Dr. Stephen Yang, fruitful discussion on some previous works with Dr. Yun Zhou and practical suggestions of the convenient usages of AMF-Placer from Mr. Jing Mai.

Issue Report

This project is under active development and far from perfect. We do want to make the placer useful for people in the community. Therefore,

(last updated Oct 26, 2022)