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)
~ `RUN_MAGIC` check moved to flow.tcl
~ `RUN_SPEF_EXTRACTION` now skips STA entirely
- Remove pandas (it's overkill for what we need + greatly inflates install times)
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)
+ Pin all pip versions
~ Verify versions made more PDK independent, reads .config/nodeinfo.json
~ Make `requirements_lint.txt` separate
~ Update to new Black: changes to ** operator formatting
~ Various spelling/grammar fixes
~ git:// -> https://
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>
* 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