We provide the implementation of the method proposed in the paper. It is built upon the popular open-source infrastructure DREAMPlace.
We highly recommend the use of Docker to enable a smooth environment configuration.
The following steps are borrowed from DREAMPlace repository. We make minor revisions to make it more clear.
-
Get the code and put it in folder
DATE25-TDP
. -
Get the container:
-
Option 1: pull from the cloud limbo018/dreamplace.
docker pull limbo018/dreamplace:cuda
-
Option 2: build the container.
docker build . --file Dockerfile --tag your_name/dreamplace:cuda
- Enter bash environment of the container. Replace
limbo018
with your name if option 2 is chosen in the previous step.
-
Option 1: Run with GPU on Linux.
docker run --gpus 1 -it -v $(pwd):/DATE25-TDP limbo018/dreamplace:cuda bash
-
Option 2: Run with CPU on Linux.
docker run -it -v $(pwd):/DREAMPlace limbo018/dreamplace:cuda bash
-
cd /DATE25-TDP
. -
Build.
mkdir build cd build cmake .. make make install
-
Get benchmarks: download the cases here: https://drive.google.com/file/d/1xeauwLR9lOxnYvsK2JGPSY0INQh8VuE4/view?usp=sharing. Unzip the package and put it in the following directory:
install/benchmarks/iccad2015.ot
Run our method on case superblue1 of ICCAD2015 timing-driven placement contest:
python dreamplace/Placer.py test/iccad2015.pin2pin/$case.json
Or you can run all 8 cases by:
cd install
./run.sh
The default configuration for Critical Path Extraction uses 8 threads to accommodate various CPU cores and RAM capacities, impacting only the execution speed without affecting timing performance. For reproducing the speeds reported in the paper, adjust the thread count to 52 as specified in DATE25-TDP/thirdparty/OpenTimer/ot/timer/path.cpp
at line 426.