Skip to content

gudeh/OpenROAD-flow-scripts

 
 

Repository files navigation

gudeh's editions and reminder

Prooblem: when trying to set my Yosys fork as a submodule of my own ORFS, it fails to compile ABC. Even when using the same hash version of ABC for compilation. The error seems to be the addition of a "-fpermissive" option for compilation of ABC. Manual solution:

-To turn around this issue we have to edit "build_openroad.sh" so it does not compile Yosys, by commenting the line with "make install" of Yosys.

-Also, in "flow/Makefile", we need to make sure to use the system Yosys, and not the absolute path, by using the command: "YOSYS_CMD ?= $(shell command -v yosys)"

Be careful to not commit and push this editions on "build_openroad.sh" and "flow/Makefile"!!!!

To push modifications while restoring ORFS default:

-git checkout upstream/main -- build_openroad.sh. This will discard local modifications and use upstream's build_openroad.sh file.

-flow/Makefile: Manually remove the added YOSYS_CMD line and put back the original with absolute path.

OpenROAD Flow

Build Status Docs

OpenROAD-flow-scripts (ORFS) is a fully autonomous, RTL-GDSII flow for rapid architecture and design space exploration, early prediction of QoR and detailed physical design implementation. However, ORFS also enables manual intervention for finer user control of individual flow stages through Tcl commands and Python APIs.

%%{init: { 'logLevel': 'debug', 'theme': 'dark'
  } }%%
timeline
  title RTL-GDSII Using OpenROAD-flow-scripts
  Synthesis
    : Inputs  [RTL, SDC, .lib, .lef]
    : Logic Synthesis  (Yosys)
    : Output files  [Netlist, SDC]
  Floorplan
    : Floorplan Initialization
    : IO placement  (random)
    : Timing-driven mixed-size placement
    : Macro placement
    : Tapcell and welltie insertion
    : PDN generation
  Placement
    : Global placement without placed IOs
    : IO placement  (optimized)
    : Global placement with placed IOs
    : Resizing and buffering
    : Detailed placement
  CTS : Clock Tree Synthesis
    : Timing optimization
    : Filler cell insertion
  Routing
    : Global Routing
    : Detailed Routing
  Finishing
    : Metal Fill insertion
    : Signoff timing report
    : Generate GDSII  (KLayout)
    : DRC/LVS check (KLayout)
Loading

Tool Installation

Docker Based Installation

To ease dependency installation issues, ORFS uses docker images. Docker image includes ORFS binaries, applications as well as all required dependencies. All of the flow tools are encapsulated inside the container image.

If Docker is not installed already, install latest docker tool based on OS from here.

To manage docker as non-root user and verify that you can run docker commands without sudo must complete steps from here.

Build ORFS with Docker

Document for detailed steps on docker based installation found here.

Pre-built Binaries

You can download, set up and run ORFS easily with pre-built binaries, including OpenROAD, Yosys and Klayout. See instructions here.

Thanks to Precision Innovations for providing and supporting OpenROAD based binaries.

Note Only the latest version of OpenROAD is guaranteed to work with the latest version of ORFS.

Disclaimer The versions of OpenROAD, Yosys and Klayout provided by other third-party vendors are not guaranteed to work with ORFS.

Local Installation

Document for detailed local installation steps found here.

Using the Flow

  • For details about the OpenROAD and the available features and individual flows commands, see the documentation here.
  • For details about automated flow setup, see ORFS docs here.
  • Flow tutorial to run the complete OpenROAD based flow from RTL-GDSII, see the tutorial here.
  • To watch ORFS flow tutorial videos, check here.

Citing this Work

If you use this software in any published work, we would appreciate a citation! Please use the following references:

@article{ajayi2019openroad,
  title={OpenROAD: Toward a Self-Driving, Open-Source Digital Layout Implementation Tool Chain},
  author={Ajayi, T and Blaauw, D and Chan, TB and Cheng, CK and Chhabria, VA and Choo, DK and Coltella, M and Dobre, S and Dreslinski, R and Foga{\c{c}}a, M and others},
  journal={Proc. GOMACTECH},
  pages={1105--1110},
  year={2019}
}

A copy of this paper is available here (PDF).

@inproceedings{ajayi2019toward,
  title={Toward an open-source digital flow: First learnings from the openroad project},
  author={Ajayi, Tutu and Chhabria, Vidya A and Foga{\c{c}}a, Mateus and Hashemi, Soheil and Hosny, Abdelrahman and Kahng, Andrew B and Kim, Minsoo and Lee, Jeongsup and Mallappa, Uday and Neseem, Marina and others},
  booktitle={Proceedings of the 56th Annual Design Automation Conference 2019},
  pages={1--4},
  year={2019}
}

A copy of this paper is available here (PDF).

If you like the tools, please give us a star on our GitHub repos!

License

The OpenROAD-flow-scripts repository (build and run scripts) has a BSD 3-Clause License. The flow relies on several tools, platforms and designs that each have their own licenses:

  • Find the tool license at: OpenROAD-flow-scripts/tools/{tool}/ or OpenROAD-flow-scripts/tools/OpenROAD/src/{tool}/.
  • Find the platform license at: OpenROAD-flow-scripts/flow/platforms/{platform}/.
  • Find the design license at: OpenROAD-flow-scripts/flow/designs/src/{design}/.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Verilog 86.8%
  • SourcePawn 8.7%
  • Coq 2.3%
  • Tcl 1.9%
  • Makefile 0.2%
  • Python 0.1%