Skip to content

Latest commit

 

History

History
75 lines (49 loc) · 2.12 KB

README.md

File metadata and controls

75 lines (49 loc) · 2.12 KB

DATE'25 "Timing-Driven Global Placement by Efficient Critical Path Extraction"

We provide the implementation of the method proposed in the paper. It is built upon the popular open-source infrastructure DREAMPlace.

Build with Docker

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.

  1. Get the code and put it in folder DATE25-TDP.

  2. 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
    
  1. 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
    
  1. cd /DATE25-TDP.

  2. Build.

    mkdir build
    cd build
    cmake .. 
    make
    make install
    
  3. 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
    

Test

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

Caution

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.