Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Steps to complete a successful test run of OpenROAD #5

Open
RTimothyEdwards opened this issue Jul 17, 2019 · 7 comments
Open

Steps to complete a successful test run of OpenROAD #5

RTimothyEdwards opened this issue Jul 17, 2019 · 7 comments
Labels
documentation Improvements or additions to documentation

Comments

@RTimothyEdwards
Copy link

Yay, I have success!

I managed to create a GDS file with the test AES module using FreePDK45 with the Nangate standard cell library.

It wasn't easy, so for reference for anyone else having difficulty to get the OpenROAD tools up and running, here are the steps I took. Please note the various workarounds for issues:

(1) Did
git clone https://github.com/The-OpenROAD-Project/alpha-release
Put this into ~/src/OpenROAD_alpha

(2) Did
wget https://github.com/The-OpenROAD-Project/alpha-release/releases/download/v2019-07-16_13-32/OpenROAD-2019-07-16_13-32.tar.gz
Put this into ~/src/OpenROAD_release

(3) Did
cd ~/src/OpenROAD_release/openroad
bash (I run tcsh for my environment, which doesn't work with the setup script)
source setup.sh

(4) There were issues with some of the tools; I took the easy way out and swapped the search order in PATH so that /usr/local/bin gets executed first, which finds yosys and magic in my system installation, which solves a few of the library dependency problems (old libraries used in OpenROAD, like libffi 5 instead of libffi 6).

(5) I didn't have a local copy of verilog2def, which wanted libtcl8.5 and libtk8.5 (also out of date), so I did:
cd /usr/lib/x86_64-linux-gnu
ln -s libtcl8.6.so libtcl8.5.so
ln -s libtk8.6.so libtk8.5.so".

(6) The runTritonCTS.tcl script execs python scripts with missing dependencies, so I did:
sudo pip3 install queuelib
sudo pip3 install matplotlib

(7) The runTritonCTS.tcl script calls "exec python" which runs python2, not python3, so I edited the script and changed all occurrences of "python" to "python3".

(8) With the changes made above, the entire test procedure goes like this:

    cd ~/src/OpenROAD_release/openroad
    bash
    source setup.sh
    export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/home/tim/src/OpenROAD_release/openroad/OpenROAD-2019-07-16_13-32/bin:/home/tim/src/OpenROAD_release/openroad/OpenROAD-2019-07-16_13-32/bin/Linux-x86_64:/home/tim/src/OpenROAD_release/openroad/OpenROAD-2019-07-16_13-32/pdn/scripts:.
    cd ~/src/OpenROAD_alpha/flow/
    vi Makefile
    (uncomment "DESIGN_CONFIG = ./designs/aes_nangate45.mk")
    source designs/aes_nangate45.mk
    make

(9) I viewed the result using magic:

    magic -d XR -T platforms/nangate45/magic.tech
    (at the magic prompt:)
    gds read results/aes_cipher_top/finish.gds
@tajayi tajayi added the documentation Improvements or additions to documentation label Jul 17, 2019
@tajayi
Copy link
Contributor

tajayi commented Jul 17, 2019

Hi Tim,
The builds are not currently in the best shape. We have identified it as an issue an are working on some short term and much needed long term strategies.

To address some points specifically:
(1)-(2): User choice

(3): I can add a tcsh script

(4): We use a mofified version of Yosys+Abc which includes support for upsizing/downsizing as well as physical synthesis support (still in dev). Our goal is to hopefully be able to upstream some of these changes

(5) We currently have a dependency on tcl8.5 (as well as including tcl8-6 in our package) but further improvements we plan to make should make this more consistent

(6) I updated the readme

(7) Filed an issue against tritonCTS: The-OpenROAD-Project/TritonCTS#15

Thanks for trying out our flow and pushing through it

@tajayi
Copy link
Contributor

tajayi commented Jul 31, 2019 via email

@oharboe
Copy link
Contributor

oharboe commented Jul 31, 2019 via email

@tajayi
Copy link
Contributor

tajayi commented Jul 31, 2019

Instructions updated and also pushed the "latest" tag to dockerhub

@oharboe
Copy link
Contributor

oharboe commented Jul 31, 2019 via email

@RTimothyEdwards
Copy link
Author

Note that FastRoute is a global router. qrouter is a detail router which makes it equivalent to TritonRoute, not FastRoute. qrouter has the capacity to take a global route solution as input, but since I was never aware of a standard file format, I never implemented it. So qrouter attempts to do a detail route on an entire design without a global route as input. That is part of what makes qrouter painfully slow.

I think the more interesting question is, since FastRoute + TritonRoute has the same file formats as qrouter, can a script be written that incorporates them directly into qflow, replacing qrouter?

It's not exactly a question of whether one tool can do something that another tool can't. It's more a question of how fast it will run, and how good a solution it will produce. Although there are certainly specific features to check if they are implemented or not, such as handling minimum metal area rule (done by qrouter, not very well), handling antenna rule violations (again done by qrouter, not very well), and run-length spacing rules (not done by qrouter at all).

@oharboe
Copy link
Contributor

oharboe commented Jul 31, 2019 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

3 participants