Coder Social home page Coder Social logo

cisen / amf-placer-vivado-llvm-fpga Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zslwyuan/amf-placer

0.0 0.0 0.0 369.97 MB

AMF-Placer: An open-source analytical mixed-size FPGA placer

License: Other

Shell 0.04% C++ 93.95% Python 4.55% C 0.16% Tcl 0.64% CMake 0.66%

amf-placer-vivado-llvm-fpga's Introduction

AMF-Placer

DocumentationFlow CMakeFlow LoCCode LoCComment

Introduction

AMF-Placer is an open-source analytical mixed-size FPGA placer supporting mixed-size placement on FPGA, with an interface to Xilinx Vivado. To speed up the convergence and improve the quality of the placement, AMF-Placer is equipped with a series of new techniques for wirelength optimization, cell spreading, packing, and legalization. Based on a set of the latest large open-source benchmarks from various domains for Xilinx Ultrascale FPGAs, experimental results indicate that AMF-Placer can improve HPWL by 20.4%-89.3% and reduce runtime by 8.0%-84.2%, compared to the baseline. Furthermore, utilizing the parallelism of the proposed algorithms, with 8 threads, the placement procedure can be accelerated by 2.41x on average. Detailed Docygen-based documentation (e.g, introduction, usage, implementation and experimental results) can be accessed here.

Convergence (OpenPiton) Convergence (MiniMap2) Convergence (OptimSoC) Convergence (MemN2N)

License

This project is developed by Reconfiguration Computing Systems Lab, Hong Kong University of Science and Technology (HKUST). Tingyuan Liang ([email protected]), Gengjie Chen (chen_gengjie.hotmail.com), Jieru Zhao (zhao-jieru.sjtu.edu.cn), Sharad Sinha ([email protected]) and Wei Zhang ([email protected]) are the major contributors of this project.

For non-commercial usage of this open-source project, users should comply the Apache License attached in the root directory. For commercial usage of this open-source project, users must contact project supervisor (Wei ZHANG, [email protected]) for authorization.

Publications

[1] AMF-Placer: High-Performance Analytical Mixed-size Placer for FPGA(pre-print)

@INPROCEEDINGS{AMFPlacer,  author={Liang, Tingyuan and Chen, Gengjie and Zhao, Jieru and Sinha, Sharad and Zhang, Wei},  booktitle={2021 IEEE/ACM International Conference on Computer-Aided Design (ICCAD)},   title={AMF-Placer: High-Performance Analytical Mixed-size Placer for FPGA},   year={2021},  volume={},  number={},  pages={1-6},}

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, [email protected])

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. (initially timing-driven with basic embedded static timing analysis)
  3. a set of optional optimization techniques to improve mixed-size FPGA placement QoR
  4. parallelizes the implementation of each stage of placement based on multi-threading
  5. modularized function implementation for easier further development
  6. flexible and extensible JSON-based placement configuration
  7. supports placement check-point importing/exporting
  8. a set of pre-implementation benchmarks from latest practical FPGA applications
  9. provides a set of Tcl scripts which extracts design netlist from Vivado and exports post-placement information to Vivado

Implementation Overview

Implementation Overview

Project Hiearchy

Below is a hiearchy tree of this project. As for the details, please refer to the class information and collaboration diagram in the Doxygen documentation and trace the implementation, e.g., AMFPlacer, GlobalPlacer, and PlacementInfo.

├── benchmarks  // benchmark information
│   ├── analysisScripts  // experimental result analysis Python scripts
│   ├── testConfig       // some test settings of placer
│   ├── VCU108           // information of design and device for VCU108
│   │   ├── compatibleTable    // mapping information between design and device
│   │   ├── design             // design information
│   │   └── device             // device information
│   └── vivadoScripts    // some Vivado Tcl scripts to extract design/device information
├── build                // potential target directory for built output
├── doc                  // documentation-related materials
└── src                  // source code of the project
    ├── app              // application (e.g., AMFPlacer)
    │   └── AMFPlacer    // A High-Performance Analytical Mixed-size Placer for FPGA
    └── lib              // libraries for application implementation
        ├── 3rdParty     // third-party libraries
        ├── HiFPlacer    // our placement function modules
        │   ├── designInfo
        │   ├── deviceInfo
        │   ├── placement
        │   │   ├── globalPlacement
        │   │   ├── legalization
        │   │   ├── packing
        │   │   ├── placementInfo
        │   │   └── placementTiming
        │   └── problemSolvers
        └── utils        // some minor utility functions

Dependencies

  1. eigen 3.3.8 (source code included)
  2. PaToH (library included)
  3. osqp (source code included)
  4. MKL (optional)
  5. opengl, freeglut, glew (optional)

Todo List

  1. stable clock legalization
  2. basic static timing analysis (doing)
  3. timing term in analytical model (doing)
  4. timing-driven detailed placement

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,

  • If you have any question/problem, please feel free to create an issue in the GitHub Issue or email us (Tingyuan LIANG, tliang AT connect DOT ust DOT hk)
  • We sincerely welcome code contribution to this project or suggestion in any approach!

(last updated Aug 17, 2021)

amf-placer-vivado-llvm-fpga's People

Contributors

magic3007 avatar zslwyuan avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.