+ `-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)
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.
+ 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>
* 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]
+ 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
+ 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
+ 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`
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]
* 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
* 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
* 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.
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.
+ ./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>
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
* `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)
~ 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
+ 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
* 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
* 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>
* 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>