Commit Graph

135 Commits

Author SHA1 Message Date
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
9602463a6d Add Commit-Based Docker Tags (#967) 2022-03-03 00:07:19 +02:00
Arman Avetisyan
de223b4c53 Add Issue-Specific CI (#902)
This adds an issue-specific CI that can be used to test specific regressions rather than running entire flows.

Also, a partial solution for #892.
2022-02-28 13:56:36 +02:00
Matt Liberty
d09cdaf4b4 Allow mounting OpenROAD GUI Settings (#926)
+ If ~/.openroad exists, a docker option is automatically added to mount it
2022-02-17 11:39:34 +02:00
Teodor-Dumitru Ene
0c06531ce8 Add quick_design recipe to Makefile (#910)
This single-purpose recipe mounts the docker container and runs a desired
design through the flow. Provides better support for running OpenLane via
script.

Resolves #907.
2022-02-13 06:26:15 +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
ec1e6bec68 Update environment survey, allow configuring python versions (#794)
* Update environment survey

This updates the issue environment survey to better detect whether it's running inside the OpenLane container or not, and properly discourage people from doing so.

* Make the version of Python used configurable via environment variable

[skip ci]
2021-12-24 01:45:19 +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
Mitch Bailey
13602d384e Fix SRAM installation options (#788)
[skip ci]
2021-12-22 22:18:41 +02:00
Donn
1ab8d55fab Fix or Remove Designs Failing The Extended Test Set (#777)
+ Added ability to run extended test sets on a specific pull request's PR by adding `[ci ets]` anywhere in the PR body (the example there counted!)
+ Added capacity to disable certain designs in a test set by prefixing the design with a `#`
+ Added new script that allows someone to iterate on a design's timing closure 
~ Decreased core utilization for some designs that just aren't routing
~ Fixed sizes of {BM64, blabla, y_huff} to avoid pin location issue
~ Increased max buffer percentages for some designs failing to achieve timing closure
~ Update all references to the design directory in config.tcl for all designs to `$::env(DESIGN_DIR)`.
~ core area/die area no longer have an EOL at the end of their value
2021-12-22 02:36:50 +02:00
Donn
c71becce71 Rewrite run_designs.py (#760)
+ run_designs.py now exits with exit code 2 if a design failed
~ run_designs.py rewritten in click, API altered slightly
~ renamed `addComputedStatistics` to `add_computed_statistics`
- removed `make regression_test`
2021-12-14 19:51:36 +02:00
Donn
79ede3dbf2 Improved Local Installs (#744)
Local installs are now installed to a gitignored folder in the repo's file structure and use the same files as the repository.

This is a minimal flow change with no effect on the Dockerized environment. [skip ci]
2021-12-09 13:05:18 +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
Matt Liberty
540e2a2350 Allow OpenROAD GUI to run inside "make mount" (#740)
Signed-off-by: Matt Liberty <mliberty@eng.ucsd.edu>
2021-11-30 09:21:43 +02:00
Kareem Farid
1bf3709488 Correctly set when INSTALL_SRAM=enabled OPEN_PDK_ARGS (#738)
[skip ci]
2021-11-25 17:43:13 +02:00
Manar
6245b0e675 Fix sram install (#724)
Also disable by default
2021-11-19 21:38:50 +02:00
Donn
cbb562bd43 Assorted Usability Improvements (#709)
* verilog2def -> init_floorplan

Some files still retained the name of a floorplanning tool we're no longer using. It has been removed.

* netlist locations

Netlists generated as part of later steps were placed under `synthesis/`. They have been moved to their proper locations.

* Build tweaks

`make openlane` now actually builds the container. `make pull-openlane` has been added with the original functionality.

The git commit has been placed in the container at `/git_version`.

A custom `.bashrc` has been added.

Non-standard `echo -ne` invocations replaced with `printf`.

* Issues

verify_versions now works without a `PDK_ROOT` set (`$openlane_root/pdks`)

clarified issue template
2021-11-13 13:20:00 +02:00
Donn
8950f1aaeb OpenROAD Script Updates (#702)
* Rewrite or_replace.tcl

That script used a lot of internal swig commands with an unstable API/unpredictable behavior. Resolves #697.

* Expose `max_displacement` flag for detailed placement

This was added at some point as a replacement to the diamond search height thing and is necessary for macros.

* Add OpenROAD GUI/Tcl Readline

Resolves #642. Note that this addition will be intentionally undocumented and is intended more for people who absolutely want it.

MISC:

* CI fast fail off/always push image

The CI will report failures still, but will still publish an image and create a tag. Additionally, other tests won't be killed  on the first failure.

* Naming convention changes

  * `docker_build/` -> `docker`: Just is more consistent with literally every other codebase that uses Docker ever.

  * Removed `or_` prefix from OpenROAD scripts: redundant: They're all already under a folder called "openroad." The distinction no longer makes any sense as there are no separate scripts for the previously standalone utilities.
2021-11-12 13:16:15 +02:00
Donn
6d85a85eac Docker Overhaul (#673)
This makes a number of internal improvements to the docker build process.

* A common build base

This common build base utilizes the dependency list outlined in `/dependencies` for both yum and pip, with the exception of cu-gr and dr-cu which use an... interesting (read: obtuse) build system. Speaking of...

* A pre-compile dependency list

This allows for the installing of dependencies that may need to be needed to compile *other* dependencies, incl. wheel, pyinstaller, devtoolset, etc.

* Builds now use tarballs

Git is no longer used, saving us the time needed to check out the *entire commit history every single time we build.* To handle submodules, I wrote a special script. Only OpenROAD uses submodules anyhow.

* Rewrote final image

The final image's Dockerfile was a mess. The new one also uses the dependency list and is better organized.

* OpenLane is now mounted to `/openlane` instead of `/openLANE_flow`

We don't really use `openLANE`, branding was settled on `OpenLane`, except I think it's better for everyone's sanity if I avoid capital letters altogether.
2021-10-25 14:45:52 +02:00
Donn
5278301413 Improved Environment Utilities (#648)
+ ./install.py greatly expanded to ./env.py, a python script consolidating all manners of environment configuration including installation and docker option generation
+ issues are now required to use ./env.py to survey the environment
+ installs to arch/manjaro now supported
~ python no longer asks to install, it creates a virtual environment
~ centos7 -> centos-7 (for consistency)
~ scripts reorganized: i need that top level as pristine as humanly possible
- removed csv2html. just use a viewer

Co-authored-by: Ahmed Nofal <ahmed.nofal@efabless.com>
2021-10-16 21:32:23 +02:00
Donn
18ef85a44b Makefile tweaks (#630)
This changes Makefile environment variables to be consistent with caravel user project based on feedback from @mattvenn.

Also, the fastest_test_set/extended_test_set productions have been fixed from a break in #627.

* IMAGE_NAME -> OPENLANE_IMAGE_NAME

* CURRENT_TAG -> OPENLANE_TAG
2021-09-29 18:46:53 +02:00
Donn
675ad11cfd Alter make pdk to make ngspice files (#623)
~ Fixes #620

Co-authored-by: Harald Pretl <harald.pretl@jku.at>
2021-09-22 12:59:56 +02:00
Donn
2faaedabbb Rewrite the Report Generation Infrastructure (#608)
* `report.sh` was rewritten in python and folded into `report.py`
    * 'E404' reverted- sorry @kareefardi, a lot of code just expects a number.
    * `report.py` was pretty much rewritten, for that matter.
* wns/tns reporting fixed

---

Also significant fixes made with the help of @Manarabdelaty 
* s44 pdn fix: weird substitution issue that somehow only spuriously surfaces
* manual_macro_placement_test pdn fix: FP_PDN_CHECK_NODES set to 0 (Warnings treated as errors by OpenLane, LVS still passes so we are golden)
2021-09-16 14:54:14 +02:00
Donn
cc5305ac38 Rework Multithreading Variables (#588)
* Rework Multithreading Variables

~ ROUTING_CORES now overridable by environment
- Deprecated TR parameter file removed

* Update default value for ROUTING_CORES
2021-09-07 18:33:18 +02:00
Donn
f1a3448f8c Top Level Cleanup (#568)
~ Reformatted run_designs.py to be more consistent with the rest of the codebase
~ Moved almost all top level scripts into other folders
~ Moved most top level documentation to docs/source
~ ol_install.py -> install.py
~ Fixed infinite recursion issue with or_issue.py
2021-09-01 01:20:51 +03:00
Mitch Bailey
0743140ad6 Fixed missing default override for open_pdks configure. (#570) 2021-08-31 22:25:47 +03:00
Manar
2c10d1ddfd Fix pdk install for latest open_pdks version (#565)
* Update open_pdks make target

* Update open_pdks

* [Makefile] Update open_pdks configure arguments

* Override open_pdks default installation path

* Remove /pdk from gen_source target

* Remove more /sky130A/pdk

* Update open_pdks commit
2021-08-30 23:16:41 +03:00
Donn
f7fd774a76 Makefile fixes (#551)
*Actually* fixes #495. Oops.
2021-08-22 20:11:08 +03:00
Donn
71ad1f0e95 Complete Test Set -> Extended Test Set (#540)
Also fixed minor issue with version verification in docker containers
2021-08-16 17:26:39 +03:00
Mitch Bailey
2a8b8e29b1 open_pdks' Makefile includes calls to git that may not work in a docker container. (#534)
This commit moves the git calls outside the container.
2021-08-15 12:14:08 +03:00
Mohamed Gaber
93e1848c99 Updates to Installation, Running and Testing Apparatus
+ Added Ability To Install on macOS Using Homebrew
+ Ensured more tools build on macOS
~ Proper Detection of Docker/Podman
~ Proper Utilization of Klayout Batch Mode (No more xvfb-run  unless absolutely necessary)
~ Config files revised: Removed variables now clearly marked as **removed** and sent to end of list
~ CI/Makefile tests are closer now
2021-08-03 18:11:58 +02:00
Donn
8d70ae306f Versioning Improvements (#510)
* Get OpenLane version

* Remove OpenPhySyn and Antmicro Yosys

* Time-based tag names, current -> latest

* Made local installer comply with new versioning scheme

* Made Docker Get Commit/Repo Info From YAML file

~ Updater now also updates just the YAML file
~ Main makefile PDK option also consults the YAML file
~ Updated CI to reflect the above changes + reduce redundancy (Cleanup and Deploy Folded)

* CI Bugfix

* One Final CI Fix
2021-07-28 23:09:50 +02:00
Donn
37c12927b3 Re-add blabla/usb_cdc_core, Test Set Enhancements 2021-07-07 14:55:19 +02:00
Donn
543144f68d Migrate to a more current version of OpenROAD (#433)
* Initial Set Of Changes
+ Made openroad binary customizable with OPENROAD_BIN env var: defaults to `openroad`
+ OL Install allows for customizable flow.tcl for testing
+ OR Issue now explicitly requires input and output defs as arguments
+ Updated routing commands
- Removed standalone tritonroute
- Removed CTS sqr_cap/sqr_rest options (no longer supported)

* Partial Merge Of The-OpenROAD-Project/OpenLane#472

Co-authored-by: Osama Hammad <osama21@aucegypt.edu>

* Fixed Docker Environment
`import opendbpy` -> `opendb`
eigen is an archive now
Removed Diamond Search Height Completely

* Remove Minimum Distance, FP w/ layer numbers

(per discussion with @osamahammad21)

* Update PDK

~ Install new version of Git to handle Open_PDK's cloning woes
~ Update Commit Hash With Fixes To `download.sh`
~ Address The-OpenROAD-Project/OpenLane#475 while I'm here

* Update OpenROAD, Remove Standalone OpenSTA

* Remove Standalone OpenDP

* Update TritonRoute Invocation

+ Random Seed Specified
+ Removed deprecated values from .params file
(Not gonna remove .params file just yet)
+ Updated or_issue.py to handle incomplete file paths

* update report layer usage

* Makefile Tweaks

- Decreased duplication
~ Now using long flags (See #476)

* Updates to run_designs, OR commit

* number of grt antenna repairer iterations

* Update Magic & Netgen for LVS Issue

- Remove blabla from completeTestSet pending RTimothyEdwards/netgen#21
+ Update Magic and Netgen to same versions as master
+  Update Readme to replace efabless links with OpenLane ones

* Update Magic/Netgen to Latest Versions

- Remove usb_cdc_core from fastestTestSet pending RTimothyEdwards/netgen#21

Co-authored-by: Osama Hammad <osama21@aucegypt.edu>
2021-07-07 14:55:19 +02:00
Donn
fc8b7870ce Bring Nofal's Changes From Master (#406)
* Bring Nofal's Changes From Master

* Fixed make fastest_test_set
2021-07-07 14:55:19 +02:00
Matthew Ballance
b70b8353df Run docker and check whether it's actually podman emulating Docker
Signed-off-by: Matthew Ballance <matt.ballance@gmail.com>
2021-07-07 14:55:19 +02:00
Matthew Ballance
9c2b260209 Don't pass -u options to docker if podman (Centos8) is actually being used
Signed-off-by: Matthew Ballance <matt.ballance@gmail.com>
2021-07-07 14:55:19 +02:00
Mohamed Gaber
5c6bb77ca4 Revert "Revert changes to coincide with v0.14"
This reverts commit b7ea44399e.
2021-07-07 14:55:19 +02:00
Mohamed Gaber
478c59c907 Revert changes to coincide with v0.14 2021-05-03 21:36:06 +02:00
donn
788b6846e1 Apply automatic changes to PDK 2021-05-01 03:48:35 +02:00
donn
dff1c93f69 Apply automatic changes to PDK 2021-04-30 17:42:24 +02:00
donn
2650ea5953 Apply automatic changes to PDK 2021-04-28 17:53:29 +00:00
Donn
87a711e3c3 CI Overhaul (#301)
* add docker build & push workflow

* full spm test

* remove -it

* Add the first test set

* Job Separation

* init self-hosted test

* specify the python version

* Try removing python all in all

* Migrate the whole OpenLANE CI workflow -- needs testing

* rework env vars

* add missing if

* Moving the converted configs to the main openlane repo instead of my personal fork (#241)

* swap references

* reset cron

* hopefully finalize full workflow

* typo fix :)

* fix branch name lookup

* try a fix for GITHUB_ENV usage

* add a create branch action

* reduce fastest test set

* use latest as the docker tag in the default branch

* run cron earlier

* add flow for auto image deletion

* add badge space

* add missing closing quotes

* remove faulty condition

* another missing closing bracket

* fix docker delete script

* debugging image deletion

* add deletion ref

* delete travis

* add the utils directory

* prepare to merge to the origin staging branch

* revert changes to the tagger

* remove the travis badge

* fix references

* Update openlane_ci.yml

* Update openlane_ci.yml to run on Github Machines

* add CI documentation

* divide fastest test set across 5 jobs

* CI Overhaul

* Removed tag file updates

* Use GitHub mirrors for netgen, magic [skip ci]

* Removed Skip, Fixed Complete Test Set

* No secrets during build and test

* Artifact deletion

* Race condition

Co-authored-by: agorararmard <aagouhar@efabless.com>
2021-04-28 19:50:40 +02:00
Travis CI
880ade4b4d Update Latest Green Tag to v0.12 2021-03-24 04:13:20 +00:00
Travis CI
a8bab582ce Update Latest Green Tag to v0.11 2021-03-23 04:11:58 +00:00
Amr A. Gouhar
eb675e0672 Manually update open_pdks & add option to disable sram installation (#274)
sram disabled by default as it's time expensive.
2021-03-22 23:37:59 +02:00
github-actions[bot]
a4dbe64dd4 Update Latest Green Tag (#265)
Co-authored-by: agorararmard <agorararmard@users.noreply.github.com>
2021-03-01 19:16:22 +02:00
agorararmard
7496f2167d Update Latest Green Tag 2021-02-26 17:29:25 +02:00
agorararmard
a6cae5ab91 Update Latest Green Tag 2021-02-25 18:01:59 +02:00
Travis CI
96424609ea Travis update: Feb 2021 (Build 1638) update PDK 2021-02-24 16:13:12 +02:00