update readme to v2.2
This commit is contained in:
parent
f5d4e081e8
commit
ce0794d300
117
README.md
117
README.md
@ -12,7 +12,7 @@ We are happy to announce that [Xplace 2.0](https://ieeexplore.ieee.org/abstract/
|
|||||||
|
|
||||||
Please check our [TCAD paper](https://ieeexplore.ieee.org/document/10373583) for more details about **Xplace-Route**!
|
Please check our [TCAD paper](https://ieeexplore.ieee.org/document/10373583) for more details about **Xplace-Route**!
|
||||||
|
|
||||||
## About
|
## About Xplace
|
||||||
Xplace is a fast and extensible GPU-accelerated global placement framework developed by the research team supervised by Prof. Evangeline F. Y. Young at The Chinese University of Hong Kong (CUHK). It achieves around 3x speedup per GP iteration compared to DREAMPlace and shows high extensibility.
|
Xplace is a fast and extensible GPU-accelerated global placement framework developed by the research team supervised by Prof. Evangeline F. Y. Young at The Chinese University of Hong Kong (CUHK). It achieves around 3x speedup per GP iteration compared to DREAMPlace and shows high extensibility.
|
||||||
|
|
||||||
|
|
||||||
@ -30,7 +30,35 @@ Lixin Liu, Bangqi Fu, Martin D. F. Wong, and Evangeline F. Y. Young. "[Xplace: a
|
|||||||
|
|
||||||
(For the Xplace-NN, please refer to branch [neural](https://github.com/cuhk-eda/Xplace/tree/neural))
|
(For the Xplace-NN, please refer to branch [neural](https://github.com/cuhk-eda/Xplace/tree/neural))
|
||||||
|
|
||||||
## Requirements
|
- [1. How to Build](#1-how-to-build)
|
||||||
|
* [1.1. Dependencies](#11-dependencies)
|
||||||
|
- [2. How to Run](#2-how-to-run)
|
||||||
|
* [2.1. Data Preparation](#21-data-preparation)
|
||||||
|
* [2.2. Run Placement Flow](#22-run-placement-flow)
|
||||||
|
* [2.3. Run Your Own Design](#23-run-your-own-design)
|
||||||
|
* [2.4. Placement Parameters](#24-placement-parameters)
|
||||||
|
- [3. Other Features](#3-other-features)
|
||||||
|
* [3.1. GPU-accelerated Place and Global Route Flow](#31-gpu-accelerated-place-and-global-route-flow)
|
||||||
|
* [3.2. Evaluate the Routability of Placement Solution](#32-evaluate-the-routability-of-placement-solution)
|
||||||
|
* [3.3. Load Design from Preprocessed File](#33-load-design-from-preprocessed-file)
|
||||||
|
- [4. Citation](#4-citation)
|
||||||
|
- [5. Contact](#5-contact)
|
||||||
|
- [6. License](#6-license)
|
||||||
|
|
||||||
|
## 1. How to Build
|
||||||
|
**Step 1**: Clone the Xplace repository. We'll call the directory that you cloned Xplace as `$XPLACE_HOME`.
|
||||||
|
```bash
|
||||||
|
git clone --recursive https://github.com/cuhk-eda/Xplace
|
||||||
|
```
|
||||||
|
**Step 2**: Build the shared libraries used in Xplace.
|
||||||
|
```bash
|
||||||
|
cd $XPLACE_HOME
|
||||||
|
mkdir build && cd build
|
||||||
|
cmake -DPYTHON_EXECUTABLE=$(which python) ..
|
||||||
|
make -j40 && make install
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1.1. Dependencies
|
||||||
- [CMake](https://cmake.org/) >= 3.17
|
- [CMake](https://cmake.org/) >= 3.17
|
||||||
- [GCC](https://gcc.gnu.org/) >= 7.5.0
|
- [GCC](https://gcc.gnu.org/) >= 7.5.0
|
||||||
- [Boost](https://www.boost.org/) >= 1.56.0
|
- [Boost](https://www.boost.org/) >= 1.56.0
|
||||||
@ -40,27 +68,15 @@ Lixin Liu, Bangqi Fu, Martin D. F. Wong, and Evangeline F. Y. Young. "[Xplace: a
|
|||||||
- [Cairo](https://www.cairographics.org/)
|
- [Cairo](https://www.cairographics.org/)
|
||||||
- [Innovus®](https://www.cadence.com/content/cadence-www/global/en_US/home/tools/digital-design-and-signoff/soc-implementation-and-floorplanning/innovus-implementation-system.html) (version 20.14, optional, for detailed routing and design rule checking)
|
- [Innovus®](https://www.cadence.com/content/cadence-www/global/en_US/home/tools/digital-design-and-signoff/soc-implementation-and-floorplanning/innovus-implementation-system.html) (version 20.14, optional, for detailed routing and design rule checking)
|
||||||
|
|
||||||
## Setup
|
## 2. How to Run
|
||||||
1. Clone the Xplace repository. We'll call the directory that you cloned Xplace as `$XPLACE_HOME`.
|
### 2.1. Data Preparation
|
||||||
```bash
|
|
||||||
git clone --recursive https://github.com/cuhk-eda/Xplace
|
|
||||||
```
|
|
||||||
2. Build the shared libraries used in Xplace.
|
|
||||||
```bash
|
|
||||||
cd $XPLACE_HOME
|
|
||||||
mkdir build && cd build
|
|
||||||
cmake -DPYTHON_EXECUTABLE=$(which python) ..
|
|
||||||
make -j40 && make install
|
|
||||||
```
|
|
||||||
|
|
||||||
## Prepare data
|
|
||||||
The following script will automatically download `ispd2005`, `ispd2015`, `iccad2019`, `ispd2018`, and `ispd2019` benchmarks in `./data/raw`. It also preprocesses `ispd2015` benchmark to fix some errors. Note that Innovus® can run detailed routing on this fixed `ispd2015`.
|
The following script will automatically download `ispd2005`, `ispd2015`, `iccad2019`, `ispd2018`, and `ispd2019` benchmarks in `./data/raw`. It also preprocesses `ispd2015` benchmark to fix some errors. Note that Innovus® can run detailed routing on this fixed `ispd2015`.
|
||||||
```bash
|
```bash
|
||||||
cd $XPLACE_HOME/data
|
cd $XPLACE_HOME/data
|
||||||
./download_data.sh
|
./download_data.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
## Get started
|
### 2.2. Run Placement Flow
|
||||||
- To run GP + DP flow for ISPD2005 dataset:
|
- To run GP + DP flow for ISPD2005 dataset:
|
||||||
```bash
|
```bash
|
||||||
# only run adaptec1
|
# only run adaptec1
|
||||||
@ -104,24 +120,47 @@ In ./result/exp_id
|
|||||||
- output # placement solutions
|
- output # placement solutions
|
||||||
```
|
```
|
||||||
|
|
||||||
## Parameters
|
### 2.3. Run Your Own Design
|
||||||
Please refer to `main.py`.
|
- **Custom Path Mode**: You can use the argument `--custom_path` to run your custom LEF/DEF or bookshelf benchmark.
|
||||||
|
|
||||||
## Run custom dataset
|
|
||||||
You can use the argument `--custom_path` to run your custom LEF/DEF or bookshelf benchmark.
|
|
||||||
|
|
||||||
Suppose there is a LEF/DEF benchmark named `toy` in `data/raw`, you can use the following command line to run the GP + DP flow:
|
Suppose there is a LEF/DEF benchmark named `toy` in `data/raw`, you can use the following command line to run the GP + DP flow:
|
||||||
```bash
|
```bash
|
||||||
python main.py --custom_path lef:data/raw/toy_input.lef,def:data/raw/toy_input.def,design_name:toy,benchmark:test --load_from_raw True --detail_placement True
|
python main.py --custom_path lef:data/raw/toy_input.lef,def:data/raw/toy_input.def,design_name:toy,benchmark:test --load_from_raw True --detail_placement True
|
||||||
```
|
```
|
||||||
|
|
||||||
You can also use the argument `--custom_json` to run multiple LEFs + DEF + Verilog:
|
- **Custom JSON Mode**: You can also use the argument `--custom_json` to run multiple LEFs + DEF + Verilog:
|
||||||
```
|
```
|
||||||
python main.py --custom_json examples/examples.json --load_from_raw True --target_density 0.9
|
python main.py --custom_json examples/examples.json --load_from_raw True --target_density 0.9
|
||||||
```
|
```
|
||||||
Please provide your LEFs/DEF in the input `json` file. An example of [ASAP7](https://github.com/The-OpenROAD-Project/asap7) input is given in `./examples/examples.json`. Note that the `verilog` format is only partially supported.
|
Please provide your LEFs/DEF in the input `json` file. An example of [ASAP7](https://github.com/The-OpenROAD-Project/asap7) input is given in `./examples/examples.json`. Note that the `verilog` format is only partially supported.
|
||||||
|
|
||||||
## Load design from preprocessed `pt` file (Optional)
|
### 2.4. Placement Parameters
|
||||||
|
Please refer to `main.py`.
|
||||||
|
|
||||||
|
## 3. Other Features
|
||||||
|
|
||||||
|
### 3.1. GPU-accelerated Place and Global Route Flow
|
||||||
|
Set `--final_route_eval True` in Python arguments to invoke the internal global router [GGR](cpp_to_py/gpugr/README.md) to run GPU-accelerated PnR flow. The flow will output the **placement DEF** and the **global routing guide** in `./result/exp_id/output`. Besides, GR metrics are reported in the log and recorded in `./result/exp_id/log/route.csv`.
|
||||||
|
|
||||||
|
- To run Place and Global Route flow for ISPD2015 dataset:
|
||||||
|
```bash
|
||||||
|
python main.py --dataset ispd2015_fix --run_all True --load_from_raw True --detail_placement True --use_cell_inflate True --final_route_eval True
|
||||||
|
```
|
||||||
|
|
||||||
|
More details about using GGR in Xplace can be found in [cpp_to_py/gpugr/README.md](cpp_to_py/gpugr/README.md).
|
||||||
|
|
||||||
|
### 3.2. Evaluate the Routability of Placement Solution
|
||||||
|
We provide three ways to evaluate the routability of a placement solution:
|
||||||
|
|
||||||
|
1. Set `--final_route_eval True` to invoke [GGR](cpp_to_py/gpugr/README.md) to evaluate the placement solution.
|
||||||
|
|
||||||
|
2. Use [CU-GR](https://github.com/cuhk-eda/cu-gr) to evaluate the placement solution by global routing. Please refer to [tool/cugr_ispd2015_fix/README.md](tool/cugr_ispd2015_fix/README.md) for instructions.
|
||||||
|
|
||||||
|
3. (Optional). If Innovus® has been properly installed in your OS, you may try to use Innovus® to detailedly route the placement solution. Please refer to [tool/innovus_ispd2015_fix/README.md](tool/innovus_ispd2015_fix/README.md) for instructions.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 3.3. Load Design from Preprocessed File
|
||||||
The following script will dump the parsed design into a single torch `pt` file so Xplace can load the design from the `pt` file instead of parsing the input file from scratch.
|
The following script will dump the parsed design into a single torch `pt` file so Xplace can load the design from the `pt` file instead of parsing the input file from scratch.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@ -143,27 +182,7 @@ python main.py --dataset ispd2005 --run_all True --load_from_raw False
|
|||||||
2. We currently do not support `pt` mode in the routability-driven global placement.
|
2. We currently do not support `pt` mode in the routability-driven global placement.
|
||||||
3. If you want to run `pt` mode for the custom dataset, you need to add the custom dataset path in `utils/get_design_params.py`.
|
3. If you want to run `pt` mode for the custom dataset, you need to add the custom dataset path in `utils/get_design_params.py`.
|
||||||
|
|
||||||
## GPU-accelerated place and global route flow (Xplace-Route + GGR)
|
## 4. Citation
|
||||||
Set `--final_route_eval True` in Python arguments to invoke the internal global router [GGR](cpp_to_py/gpugr/README.md) to run GPU-accelerated PnR flow. The flow will output the **placement DEF** and the **global routing guide** in `./result/exp_id/output`. Besides, GR metrics are reported in the log and recorded in `./result/exp_id/log/route.csv`.
|
|
||||||
|
|
||||||
- To run Place and Global Route flow for ISPD2015 dataset:
|
|
||||||
```bash
|
|
||||||
python main.py --dataset ispd2015_fix --run_all True --load_from_raw True --detail_placement True --use_cell_inflate True --final_route_eval True
|
|
||||||
```
|
|
||||||
|
|
||||||
More details about using GGR in Xplace can be found in [cpp_to_py/gpugr/README.md](cpp_to_py/gpugr/README.md).
|
|
||||||
|
|
||||||
## Evaluate the routability of Xplace's solution
|
|
||||||
We provide three ways to evaluate the routability of a placement solution:
|
|
||||||
|
|
||||||
1. Set `--final_route_eval True` to invoke [GGR](cpp_to_py/gpugr/README.md) to evaluate the placement solution.
|
|
||||||
|
|
||||||
2. Use [CU-GR](https://github.com/cuhk-eda/cu-gr) to evaluate the placement solution by global routing. Please refer to [tool/cugr_ispd2015_fix/README.md](tool/cugr_ispd2015_fix/README.md) for instructions.
|
|
||||||
|
|
||||||
3. (Optional). If Innovus® has been properly installed in your OS, you may try to use Innovus® to detailedly route the placement solution. Please refer to [tool/innovus_ispd2015_fix/README.md](tool/innovus_ispd2015_fix/README.md) for instructions.
|
|
||||||
|
|
||||||
|
|
||||||
## Citation
|
|
||||||
If you find **Xplace** useful in your research, please consider to cite:
|
If you find **Xplace** useful in your research, please consider to cite:
|
||||||
```bibtex
|
```bibtex
|
||||||
@article{xplace_tcad,
|
@article{xplace_tcad,
|
||||||
@ -205,15 +224,13 @@ Thanks the authors of [ePlace](https://dl.acm.org/doi/10.1145/2699873), [RePlAce
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 5. Contact
|
||||||
## Contact
|
|
||||||
|
|
||||||
- [Lixin Liu](https://liulixinkerry.github.io/) (lxliu@cse.cuhk.edu.hk)
|
- [Lixin Liu](https://liulixinkerry.github.io/) (lxliu@cse.cuhk.edu.hk)
|
||||||
- Bangqi Fu (bqfu21@cse.cuhk.edu.hk)
|
- [Bangqi Fu](https://scholar.google.com/citations?user=TKKJx3gAAAAJ&hl=en) (bqfu21@cse.cuhk.edu.hk)
|
||||||
- [Shiju Lin](https://shijulin.github.io/) (sjlin@cse.cuhk.edu.hk)
|
- [Shiju Lin](https://shijulin.github.io/) (sjlin@cse.cuhk.edu.hk)
|
||||||
- [Jinwei Liu](https://anticold.github.io/) (jwliu@cse.cuhk.edu.hk)
|
- [Jinwei Liu](https://anticold.github.io/) (jwliu@cse.cuhk.edu.hk)
|
||||||
|
|
||||||
|
## 6. License
|
||||||
## License
|
|
||||||
|
|
||||||
Xplace is an open source project licensed under a BSD 3-Clause License that can be found in the [LICENSE](LICENSE) file.
|
Xplace is an open source project licensed under a BSD 3-Clause License that can be found in the [LICENSE](LICENSE) file.
|
||||||
Loading…
Reference in New Issue
Block a user