53 Commits

Author SHA1 Message Date
Mohamed Gaber
3876562d27 hotfix: main branch hashes not being pushed to dockerhub 2024-10-05 02:47:02 +03:00
Mohamed Gaber
46d8e5a042 Upgrade to nix-eda (#2135)
~ Avoid using `/dev/null` for writing DEF files (it tries to create a temp file and fail)
~ PDK now has a default value of sky130A even outside the Makefile
~ PDK_ROOT now set automatically if Volare is installed
~ Upgrade to a newer version of OpenLane 2, which in turns uses `nix-eda` 
~ Format nix packages using Alejandra
~ OpenROAD scripts now read liberty files before database files (they are linked together when the database is read)
~ Update Readme to remove Colab and add banner directing people to OpenLane 2
2024-07-07 23:08:26 +03:00
Mohamed Gaber
14b94a6682 Migrate Build System to Match OpenLane 2 (#2115)
+ Repository is now a Nix flake
~ Change all invocations of `openroad -python` to use `run_odbpy_script` for consistency
~ Change build system from ad-hoc to Nix, still producing a Docker image as a final result
~ Update KLayout scripts to use `klayout-pymod` or properly parse commandline arguments
~ `open_pdks` -> `bdc9412` to match OpenLane 2
- Remove local installer; `nix run .` will run OpenLane natively
2024-05-08 15:41:43 +03:00
Kareem Farid
571581d5b7 Integrate KLayout DRC for sky130 (#2059)
~ Bump open_pdks version to `cd1748bb197f9b7af62a54507de6624e30363943`
~ Rename `PRIMARY_SIGNOFF_TOOL` to `PRIMARY_GDSII_STREAMOUT_TOOL`
~ Update documentation of `RUN_MAGIC_DRC` and `RUN_KLAYOUT_DRC`
+ Integrate KLayout DRC for sky130
+ Add the following variables:
```
KLAYOUT_DRC_THREADS
QUIT_ON_KLAYOUT_DRC
RUN_KLAYOUT_DRC
KLAYOUT_DRC_RUNSET - PDK variable
KLAYOUT_DRC_OPTIONS - PDK variable
```
- Remove `KLAYOUT_DRC_KLAYOUT_GDS`
2023-12-11 17:31:54 +02:00
Kareem Farid
903a86ab59 Update OpenROAD (#2009)
* Update OpenROAD to `bdc8e94`
2023-10-09 07:48:41 +03:00
Mohamed Gaber
456838bffc Remove CVC (#1976)
- Remove `cvc_rv` utility (upstream no longer willing to support it as part of the flow)
~ Fix bug with OpenLane docker image builder copying run folders
2023-09-06 14:48:32 +03:00
Kareem Farid
df7fd510c6 Rework Antenna Repair (#1968)
- Remove BM64 test design
~ Update a couple of CI designs enabling RUN_HEURISTIC_DIODE_INSERTION and DIODE_ON_PORTS
~ Move OpenROAD DPL logic and API calls to scripts/openroad/common/dpl.tcl and update scripts/openroad/dpl.tcl accordingly
~ Move OpenROAD GRT logic and API calls to scripts/openroad/common/grt.tcl and update scripts/openroad/grt.tcl accordingly
~ Use `repair_antennas.tcl` instead of running it inside GRT script
+ Add scripts/openroad/repair_antennas.tcl with the following flow:
	* GRT - needed to run OR's repair antennas
	* OR's repair antennas (with cell padding for diodes)
	* DPL to legalize
	* GRT to create new guides for legalized cells
2023-09-05 18:39:58 +03:00
Kareem Farid
d03ecd965d Update OpenROAD + Handle Breaking Changes (#1949)
+ update utils.py `fetch_submodules_from_tarballs` to handle relative submodule url
~ `openroad_app` -> `0a6d0fd`
~ add extractor for operating conditions  

Co-authored-by: Donn <me@donn.website>
2023-09-05 16:51:08 +03:00
Kareem Farid
3bc9d02d0b Use OpenROAD mirror of lemon-graph (#1873) 2023-06-26 07:48:24 +03:00
Kareem Farid
a3c416c54e Linter(Verilator) enhancements (#1837)
~ generalize verilator variables:
  QUIT_ON_VERILATOR_ERRORS -> QUIT_ON_LINTER_ERRORS
  QUIT_ON_VERILATOR_WARNINGS -> QUIT_ON_LINTER_WARNINGS
  VERILATOR_RELATIVE_INCLUDES -> LINTER_RELATIVE_INCLUDES
  RUN_VERILATOR -> RUN_LINTER
+ add LINTER_INCLUDE_PDK_MODELS
+ add LINTER_DEFINES
+ include verilator in ci tool updater
- do not include pdk verilog models using -I
- remove workaround for verilator std error
- disallow timing constructs. Print an error to the user to remove or guard them.
2023-06-19 11:47:56 +03:00
Kareem Farid
66310e84d9 Remove STA manual patch (#1855) 2023-06-19 10:31:42 +03:00
Kareem Farid
69c91f0c49 Port fix from OpenSTA and update OpenROAD (#1817)
~ `openroad` -> `e289bc2ce4fee72a5d3e240d1b61b6385fcbe807`
2023-05-24 10:22:12 +03:00
Kareem Farid
02a096e7af Integrate Verilator (#1760)
+ Add verilator check before synthesis
+ Add QUIT_ON_VERILATOR_ERRORS
+ Add QUIT_ON_VERILATOR_WARNINGS
+ Add VERILATOR_RELATIVE_INCLUDES
+ Only load verilog models for selected PDKs and warn the user about unsupported PD
2023-04-19 14:22:25 +02:00
Kareem Farid
99996fee7a Remove patch from OpenROAD Docker build (#1761) 2023-04-18 12:19:15 +02:00
Openlane Bot
f4c6f5fead [BOT] Update openroad_app (#1681)
openroad_app -> 6840b7481d49c83870f79646cf979e66f22f6833
~ apply patch for sta crash
2023-03-23 15:55:57 +02:00
Vitor Bandeira
f37ad488a4 Update OpenROAD (#1666)
~ `openroad_app` -> 0264023b6c2a8ae803b8d440478d657387277d93
~ `boost` -> 1.80
~ add `sed` patch for odd `-m64` flag

Co-authored-by: Vitor Bandeira <vvbandeira@precisioninno.com>
Co-authored-by: kareefardi <kareem.farid@efabless.com>
2023-03-07 14:08:45 +02:00
Daniel Bovensiepen Li
95580b003f docs(docker/readme): fix typo (#1664) 2023-02-18 18:39:01 +02:00
Openlane Bot
78ed21795f [BOT] Update openroad_app (#1487)
Co-authored-by: Donn <me@donn.website>

+ Adds or_tools to the OR build process
2022-11-17 20:29:24 +02:00
Mitch Bailey
3809309b8c Renamed cvc to cvc_rv to avoid conflict (#1440)
~ `cvc` -> `cvc_rv` + updated filenames and invocations
~ `run_lef_cvc` -> `run_erc` with translation behavior 

Co-authored-by: Donn <me@donn.website>
2022-10-24 11:36:00 +02:00
Mohamed Gaber
5abc5f749d Elaboration, Signoff SDC Configuration Variables (#1406)
+ Create `RCX_SDC_FILE` as an optional SDC file to be used only for parasitics extraction (and consequent STA)
+ Document `SYNTH_ELABORATE_ONLY`, which only elaborates structured netlists without an attempt at logic mapping ~ Add translation behavior from previous, ambiguously named `SYNTH_TOP_LEVEL` to `SYNTH_ELABORATE_ONLY`
~ `scripts/yosys/synth_top.tcl` -> `elaborate.tcl`
~ Documentation consistency fixes
~ Fix wildcard in `docker/Makefile`
2022-10-03 16:44:13 +02:00
Mohamed Gaber
cbb9e6b02a Documentation Restructure (#1337)
~ Documentation all moved under `docs/source`, arranged hierarchically according to the table of contents
~ `Klayout` changed to `KLayout` in all logging messages
~ Readme rewritten to just be concise, parts of it isolated into standalone documentation
~ RTD builds no longer use conda (saves some time)
~ Fixed all broken links
2022-09-12 14:49:15 +02:00
Arman Avetisyan
826bb8f7f9 Installation, Quickstart Guide and Sphynx Overhaul (#1259)
+ Documentation changed, README no longer documentation's landing page
+ New installation and quickstart guides created
2022-09-06 12:10:03 +02:00
Mohamed Gaber
b6bacc9d1a Build Script Fixes (#1283)
~ Update API endpoint for `test_manifest_exists` to use v2 of the Docker API
~ Comment out `tool.dependencies` behavior in `dependencies/installer.py`
~ Add deprecation notice for the local installer
2022-08-24 21:21:29 +02:00
Mohamed Gaber
4476a58407 Sky130 Enhancements (#1240)
+ Add feature to match PDK names using Python `fnmatch`, allowing wildcards in `config.json` `pdk::` statements
~ open_pdks -> `e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066`
- Remove "dependencies" field from tool_metadata.yml
- Removed sky130 version from tool_metadata.yml, tracked through the open_pdks "sky130.json" file instead
- Removed CVC scripts, placed in the PDK
2022-07-29 16:03:10 +02:00
Mohamed Gaber
ab6b79bce7 Don't require click for Docker platform extraction (#1205)
~ `docker/utils.py current-docker-platform` isolated into standalone `docker/current_platform.py` script that does not require any non-default Python libraries
2022-07-18 12:03:28 +02:00
Mohamed Gaber
601eede636 Support Multi-Arch Docker Builds (#1075)
Tested on Apple M1 and AWS Graviton.

+ Add support for multiple-architecture building
    + Support for amd64, ppc64le and arm64v8 added
    + amd64 and arm64v8 will be automatically built by the CI

~ Major CI Overhauls
   ~ Added composite actions for the Docker build and setting environment variables
   ~ pdk build is now its own job, and amd64/aarch64 have a job each
   ~ matrix -> design_matrix, designs only tested on amd64 for performance reasons

~ run/build base docker images now pushed to Docker Hub based on a hash of dependency lists (to work with the buildx `docker-container` driver)

- Remove pandas (overkill for what we're using it for)

- Remove `cugr`, `drcu` *for now* (they're x86-64 Linux-only utilities)
2022-05-21 18:47:55 +02:00
Mohamed Gaber
bb89ac959a Integrate Volare for PDK Building and Mangement, Part 2 (#1052)
Please excuse the last commit lacking a changelog.

+ PDK installation uses Volare, transparently to the user: all they have to do is type "make", where it will get OpenLane and the PDK
+ CI now uses Volare to either **get** or **build** the PDK (if not found), which speeds up the fastest test set by around 60%.
+ Added rudimentary dependency installation instructions.
+ pyyaml folded into the repo, so users without pip can still run issue surveys
~ Open PDKs updated: Parasitics are now extracted using a rules file based on [spef-extractor](https://github.com/Cloud-V/spef-extractor) as a ***temporary*** measure
~ Issue survey no longer checks for click and pyyaml: a venv is used in those scenarios.
~ OpenLane build no longer uses the host filesystem as an intermediary, instead using a templated dockerfile with an N-stage build for N tools, saving IO operations (40% improvement measured)
~ Old PDK targets renamed to build-pdk-conda, includes SRAM by default
~ Replaced python3 ./env.py issue-survey with `make survey`
- Removed Fault from documentation (until I get the chance to work on it)
2022-04-15 13:15:46 +02:00
Mohamed Gaber
54ec01ab0d Integrate Volare for PDK Building and Mangement (#1048)
* Initial work on integrating volare

* CI

* More CI fixes

* Update opdks

* Switch to Efabless open_pdks fork, update
2022-04-14 20:24:29 -07:00
Mohamed Gaber
6fb8992e9a Revert OpenROAD to c1c3151 (#1049) 2022-04-14 16:11:25 +02:00
Don MacMillen
c7cc8f3e57 Docker Readme Updates (#995)
Co-authored-by: Donn <me@donn.website>
2022-03-18 10:22:07 +02:00
Donn
00da77e58c More Usability Tweaks (#984)
+ `-verbose` flag added with multiple levels, replacing `-disable_output` (which is now the default behavior)
+ New command `puts_verbose` added, to be used for extra pieces of information
+ ./flow.tcl header now includes version, copyright and licensing information
+ Added `-last_run` flag allowing you to quickly resume the last run (useful with -interactive)
+ Added `open_in_klayout` command that lets you open the CURRENT_DEF in Klayout
~ `env.py issue-survey` now detects whether it's running inside the container and warns accordingly
~ RUN_KLAYOUT, RUN_KLAYOUT_DRC, RUN_MAGIC_DRC, RUN_LVS now only control noninteractive flows
~ Full git hash added to containers
~ Various Documentation Updates
~ Changed verbosity of various output messages
- Removed `-disable_output` (now the default behavior)
- Removed OpenLane ASCII art
- Removed various "chatty" messages, including things succeeding (shut up unless something fails)
2022-03-14 12:09:15 +02:00
Donn
f42a0fc549 Make Klayout an OpenLane Tool Proper, Update to Klayout 0.27.7 (#919)
+ Klayout is now a proper OpenLane tool
~ klayout -> 0.27.7
- local installer no longer includes Klayout in dependencies: bring your own klayout
2022-02-14 14:41:56 +02:00
Donn
4db7f91ab4 Update OpenROAD to HEAD (#890)
- also removed second git yum install
2022-01-27 22:13:26 +02:00
Vitor Bandeira
d974919fd3 Remove endpoint dependency from base image (#887) 2022-01-27 16:33:44 +02:00
Donn
7a65b61b17 Add Python Linting (#876)
+ Added linting rules for flake8, formatting with black
+ Added a GitHub Action to enforce lint/format rules
2022-01-24 14:22:09 +02:00
Donn
c4fbac9d18 Assorted Fixes To Error Reporting System (#854)
+ Warnings now printed by flow_fail and at the end of noninteractive flow runs
+ Created warnings.log, errors.log with all warnings and errors
+ Get Tag now returns a dummy tag if you're on a branch that's not `main` or `master`
~ Tarballing moved to run_tests.py
~ Restored `-u` permissions to run_test.py.
~ Version mismatches now cause the flow to fail, straight up
~ flow_summary.log -> openlane.log
~ Various warning messages updated
~ Version checking moved to `prep`
~ change .bashrc CWD color to green (black was not readable)
~ `return -code error` added to flow_fail, removed after all flow_fail invocations
~ `make pdk` fixed
- Removed `--tar_list` from run_designs.py - do your own tarring
2022-01-12 02:03:24 +02:00
Donn
bd8ce27550 Allow Including sky130A in the OpenLane Docker Image (#846)
+ Add a dependency system for tools, so some tools can be built first in local installs or have other repos and commits included in docker image builds
+ Add fully working `open_pdks` image that does NOT use Conda
+ Add options to list containerized tools in `dependencies/tool.py`, with a `--no-pdks` flag to exclude open_pdks
+ Add libraries/sky130_fd_pr/latest to the full PDK build (was missing)
~ Isolated PDK building stuff into `./dependencies/pdk.mk`
~ Final merge no longer uses a tarball, just uses a good 'ol copy

---
Caveat is this will not be enabled by default or used by the CI for now. The reason is the PDK adds another 3 gigabytes to the final image and takes positively forever to build.

To use an internally built PDK, you need to export two variables:

export EXTERNAL_PDK_INSTALLATION=0
export NO_PDKS=0

Then you'd `make openlane` as normal.

To finally enable this, we'd need to rewrite make_timing to not take forever (probably in Rust/Swift/Go/whatever) and Open_PDKs would need to be updated so it gzips the liberty files. We'd also need to ensure that all tools can load .lib.gz files.

Co-authored-by: Olof Kindgren <olof.kindgren@gmail.com>
2022-01-05 16:14:14 +02:00
Donn
e1807e0b40 Multi-Stage Builds For Tools (#825)
Tool images no longer include source code or build artifacts, but they are still runnable. The result images are a lot smaller, but can still be run independently.

This entailed the creation of a common base image for runnable images.

The images still contain tarballs for backwards compatibility with older versions of OpenLane.
2021-12-29 16:29:21 +02:00
Donn
4599582927 Fix #816 (#821)
[skip ci]
2021-12-29 15:29:55 +02:00
Donn
80c55b0c25 Update OpenROAD SWIG to 4.0.1 (#814)
+ Add llvm-devtoolset-7-clang to CentOS 7 dependencies, just in case (OpenROAD was being funny with GCC for a second there)
~ Updates OpenROAD SWIG to 4.0.1
~ Update scripts to support changes in newer versions of OpenROAD
~ Onus of building images moved to the OpenLane CI proper instead of the tool update flow, which now just basically edits one file
2021-12-28 17:21:57 +02:00
Donn
b91f251826 Move Binaries To Docker (#783)
+ Binaries can now either be built or fetched from Docker, not checked into repo history
+ Tool updater pushes docker images
+ Added git as a tool (the one in centos repos is very out of date)
+ Fixed Docker bashrc
~ Fixed cugr, drcu, and vlogtoverilog builds
~ Update CentOS 7 dependencies
~ Folded fetch_submodules into utils.py
~ Assorted Makefile Tweaks
2021-12-23 00:35:30 +02:00
Donn
4a1c799056 Fix Magic Manifest Version, Fix Klayout DEF to GDS, .bashrc (#790)
+ .bashrc now also copied to image root
+ klayout def2gds now supports a lef file
~ klayout def2gds fix by manually specifying a lef file
~ magic manifest updated to match actual tarball
- removed klayout def2gds shell script (worthless)
- .bashrc no longer sources /etc/bashrc
2021-12-22 20:03:26 +02:00
Donn
c481f38c44 Update OpenROAD to e9d88df, update OpenROAD boost to 1.76 (#762) 2021-12-15 19:37:51 +02:00
Donn
96670268d9 Usability Tweaks (#759)
~ CI now uploads each run tarball individually
~ Updated READMEs
~ `save_views` now always executed
- Removed `run_power_pins_insertion_step`: `write_powered_verilog` now run right before LVS
2021-12-14 16:42:41 +02:00
Matt Liberty
412fcf0d46 Update OpenROAD version + Updates for OpenDB API changes (#756) 2021-12-13 23:20:05 +02:00
Donn
3cb375c28b Redo Klayout (#757) 2021-12-13 18:14:32 +02:00
Donn
445acc69b3 Report Generation Bugfixes (#742)
* Report Generation Bugfixes

+ Added `-override_env` option to flow.tcl to override certain environment variables on a per-run basis
+ Added option to extract inverter cells into the metrics behind an env var (so as not to break compatibility)
+ Klayout requirements added to runtime
~ Regression test outputs renamed, design report now in yaml
~ CI now runs on ubuntu-20.04 specifically, installs pyyaml
~ Fixed `make test`
~ Rewrote compare_regression_reports in click
~ Fixed compare_regression_design (typo made it not run, aliasing failures!!)
~ Changes to variable names: FINAL_TIMING_REPORT_TAG is now LAST_TIMING_REPORT_TAG, ran every STA
~ Fixed yosys gate type extraction

* Fix Odd Antenna Issue By Reverting OpenROAD
2021-12-02 10:55:01 +02:00
Donn
520f2f136a Update OpenROAD, Magic and CVC (#734)
CVC now also points at master instead of @donn's fork
2021-11-24 14:59:08 +02:00
Donn
92f1274352 Non-fixed layer count for GLB RT adjustments (#721)
* Non-fixed layer count for GLB RT adjustments

Remember this kids, nothing is more permanent than a temporary solution.

* GLB_RT_LX_ADJUSTMENT variables consolidated into GLB_RT_LAYER_ADJUSTMENTS, a comma-delimited set of values

* GLB_RT_LX_ADJUSTMENT will continue to be accepted but display a deprecation warning, and will be removed in a later version of OpenLane.

* GLB_RT_L1_ADJUSTMENT value from the PDK is now ignored.

* Bashrc fix (Line wrap problem), or_issue fix
2021-11-18 12:06:02 +02:00
Donn
bdb1b56f58 or_issue, sta.tcl updates (#715)
* Only `read_verilog` if there's no CURRENT_DEF: see https://github.com/The-OpenROAD-Project/OpenROAD/issues/1305#issuecomment-968336079 (Practically didn't cause an issue as all DEFs are used without the standalone flag)
    * or_issue now supports netlist inputs and no longer generates tarballs: encourages inspecting and running the code before uploading a tarball
    * or_issue now also creates tcl, gdb and lldb files
    * OpenROAD commit now sedded in instead of GITDIR-NOTFOUND: See last paragraph of https://github.com/Cloud-V/DFFRAM/issues/115
2021-11-16 14:44:55 +02:00