110 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
70581ea9d3 Change Versioning Strategy (master) (#2154)
~ use tclmodules (`.tm`) files instead of pkgIndex.tcl for openlane and openlane_utils
~ change tagging to use the version from the `.tm` files instead of the day of the release
~ include superstable branch in tagging efforts (even though this doesn't mean much in `master`…)
2024-09-22 13:27:10 +03:00
Kareem Farid
53aed7c7fb ci: Bump upload-artifact and download-artifact versions (#2149)
Signed-off-by: Kareem Farid <kareefardi@users.noreply.github.com>
2024-09-04 11:55:31 +03:00
Kareem Farid
cdf98f3571 Propagate the clock in some STA reports (#2134)
+ Add conditional `set_propagated_clocks` for all clocks in `base.sdc`
  ~ Condition is true for:
    ~ CTS STA
    ~ Global routing STA
    ~ Global routing optimizations STA
    ~ Multicorner(signoff) STA
+ Add conditional `set_propagated_clocks` for all clocks after reading an sdc file depending on whether the statement is used in the sdc file for not. Idea is to be backwards compatible with the default behavior of OpenLane of propagating clocks _outside_ the sdc file
+ Add a report for non-propagated clocks
+ Add a report for information regarding clocks
2024-07-18 14:28:46 +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
77eb5ffc00 remove thread count from volare 2024-05-13 09:25:58 +03:00
Mohamed Gaber
36d357c929 ci: replace volare enable_or_build with just enable 2024-05-13 09:24:35 +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
8bea8c5199 Update OpenROAD (#2062)
~ openroad_app -> `75f2f32`

## CI
~ Always compare regression and create reproducibles
~ Always escape design name
+ Add tests for attached crashes by adding issues reproducibles in designs submodules and symlink them to interactive scripts under ./tests
+ Fix failing designs in extended test:
  * salsa20: setup violations
  * y_huff: routing congestion
  * aes_core: pin antenna violations benchmark mismatch
2023-12-26 13:17:21 +02:00
Mohamed Gaber
dbcc8252e9 Ameliorate Warnings, PDN Generation, and the default design (#2066)
~ Reimplemented the default serial/parallel multiplier to be a bit less cryptic and eliminate linter warnings; and added a proper testbench
~ Reimplemented deprecated variable translation behavior to account for the situation where a deprecated variable's value does not match the default for the new value, which causes a crash
~ Slightly improved warning for designs having been black-boxed during STA
~ PDN Generation Updates
    ~ Renamed `DESIGN_IS_CORE` to `FP_PDN_MULTILAYER` with translation behavior
    ~ PDN generation will now always attempt to extend to core ring (which is inert if core rings do not exist)
    ~ Fixed bug where `FP_PDN_MULTILAYER` being set to `0` would attempt to create a core-ring on two layers anyway
~ IR drop now prints a warning if `VSRC_LOC_FILE` is not provided
- Removed deprecation behavior for `GLB_RT` variables - it's been over a year (>=6 mo as promised)
2023-12-25 20:48:46 +02:00
Darryl Miles
f691c8c071 yosys/synth.tcl: migrate to newer supported drw & drf commands (#2051)
+ Add tt05-i2c-bert (https://github.com/dlmiles/tt05-i2c-bert) to CI
~ Replace instances of ABC command `rewrite` with `drw -l` with `SYNTH_ABC_LEGACY_REWRITE` being set to `1` restoring the older functionality (`0` by default)
~ Replace instances of ABC command `refactor` with `drf -l` with `SYNTH_ABC_LEGACY_REFACTOR` being set to `1` restoring the older functionality (`0` by default)
~ Added `delete t:\$print` to `synth.tcl` to fix designs such as PPU with synthesized prints (as in https://github.com/efabless/openlane2/pull/189)

---------

Co-authored-by: Mohamed Gaber <donn@efabless.com>
2023-11-22 15:45:53 +02: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
5fb033caa0 SDC Behavior Overhaul (#1944)
+ Add PNR_SDC_FILE
+ Warn when (PNR|SIGNOFF)_SDC_FILE are not overwritten by the user.
+ Add SDC_IN and DEFAULT_SDC_FILE to ignore list in CI
+ Add per corner max slew/fanout/cap count to sta report
+ Add per corner worst hold and setup value to sta report 
~ Rename RCX_SDC_FILE to SIGNOFF_SDC_FILE.
~ Always use PNR_SDC_FILE instead of CURRENT_SDC except during signoff stage, where SIGNOFF_SDC_FILE is used instead
~ Enable DIODE_ON_PORTS and RUN_HEURISTIC_DIODE_INSERTION for APU which fails after SDC updates.
~ Adjust timing checkers according to the new reported values
2023-09-05 16:25:24 +03:00
Kareem Farid
3376e5f897 Overhaul Linter Handling of Black-boxed Verilog Models (#1929)
+ add `generate_blackbox_verilog` that generates a black-boxed header file from a list of Verilog models
+ add `scripts/synth/blackbox.tcl` for `generate_blackbox_verilog`
+ use `generate_blackbox_verilog` with `VERILOG_FILES_BLACKBOX` and PDK verilog models
+ disable `UNDRIVEN` and `UNUSEDSIGNAL` for PDK verilog files
+ add `YOSYS_IN`, `YOSYS_OUT`, `YOSYS_DEFINES` which are used in blackbox.tcl
 to internal variables in ci variables documentation workflow 
~ enable `LINTER_INCLUDE_PDK_MODELS`

Co-authored-by: Donn <me@donn.website>
2023-08-31 12:24:48 +03:00
Mohamed Gaber
17559fa562 CI Tweaks (#1951)
~ Fixed issue where token set for Volare may cause authentication issues by falling back to secrets.GITHUB_TOKEN
~ Update documentation version constraints to accommodate furo bug
2023-08-22 18:54:25 +03:00
Donn
b1fb228e31 Revert "Enhancements to variables related to SDC files (#1931)"
This reverts commit 7a5857a595.
2023-08-10 17:44:18 +03:00
Kareem Farid
7a5857a595 Enhancements to variables related to SDC files (#1931)
+ Warn when IMPLEMENTATION_SDC_FILE is not overwritten by the user.
+ Add SDC_IN and IMPLEMENTATION_SDC_FILE_DEFAULT to ignore list in ci Check Variables flow
~ Rename RCX_SDC_FILE to SIGNOFF_SDC_FILE.
~ Rename BASE_SDC_FILE to IMPLEMENTATION_SDC_FILE.
~ Always use IMPLMEMENTATION_SDC_FILE instead of CURRENT_SDC except during signoff stage
2023-08-10 16:47:52 +03:00
Mohamed Gaber
157a650587 Update Documentation (#1917)
+ Added `make docs` target to primary Makefile to generate documentation
~ Update documentation dependencies
~ Updated `tcl.py` to handle JSON lists of elements including whitespace by joining them with a comma (unless one of the elements already contains a comma), resolving odd JSON syntax
~ Re-organized and re-order configuration variables and edited descriptions for general consistency as well as adding anchors
~ Update all documentation dependencies
~ Fixed a number of broken links
- Remove dependency on `docutils` and `sphinx-autobuild` (both unused)
- Remove two of the custom documentation extensions
2023-07-25 13:02:39 +03:00
Kareem Farid
c43cd3cbae Move CI designs to a separate repository (#1867)
~ Move test designs to a separate repository and add it as a submodule.
~ Adjust test set to refer to designs in submodule.
~ Change design_dir in `run_tests.py` for artifact upload in the CI.
~ Fix fail condition on design name mismatch in `compare_regression_reports.py`
~ Print a better error message for design name mismatch mentioned previously. 
~ Change regression benchmark to point reflect submodule change. 
~ Change documentation to reflect new paths of designs.
+ Add aes_user_project_wrapper to ci designs to test EXTRA_SPEFS.
+ Add a step in CI workflow to replace `/` with `_` in design name for artifact upload.
2023-07-13 12:39:52 +03:00
Kareem Farid
ed5647b8c8 Undocumented Variable CI Workflow
Script uses regular expressions to create a set of documents variables and a set of used variables and compare them against each other. Some variables are internal, unexposed and others. These variables are whitelisted. See https://github.com/The-OpenROAD-Project/OpenLane/issues/1889

\+ Add documentation for `QUIT_ON_XOR_ERROR`
2023-07-12 14:38:52 +03:00
Kareem Farid
5998726ef1 Always raise an exception when a design fails in the CI (#1879)
An exit code of 2 is bypassed. It seems that an exit code that is not 2 is a failure of the python script itself not OpenLane flow. This exception is raised and propagated to the CI. However an exit code of 2 should be propagated as well after a reproducible is made. The CI flow shouldn't attempt to run benchmark when the flow failed.
2023-07-06 18:25: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
63986e23d3 Update CI to build magic when building the PDK (#1745)
+ Add --build-magic to all volare build commands in the CI
- Update PDK commit
2023-04-13 10:07:06 +02:00
Kareem Farid
cb634fd5f6 Fix ci go package install (#1722)
Replace `go get` with `go install`
2023-04-06 13:41:52 +02:00
Mohamed Gaber
d70884942e CI Updates (#1690)
~ Change various Secrets to new Variables feature
~ Rename regression results by PDK and SCL
~ Test sets and the CI now incorporate the SCL
~ Minor adjustments to flow scripts
- Removed outdated regression results
2023-03-27 22:28:50 +02:00
Mohamed Gaber
e5a7a09769 Rework Placement (#1684)
+ Add warning when attempting to run Sylvain's script without `DPL_CELL_PADDING` >= 0
+ Add warning when DPL_CELL_PADDING is set to greater than GPL_CELL_PADDING
~ Update PDK, changing the default values of GPL/DPL cell padding to `0`
~ **Use $HOME/.volare as the default PDK location**
~ `PL_TARGET_DENSITY` incorporates value of `GPL_CELL_PADDING` in calculation
~ Updated various config files to handle new default padding options
~ CI bugfixes + support for Volare 0.7.1
2023-03-22 15:29:01 +02:00
Mohamed Gaber
2857b632bb Fix Make Test Sets (#1683)
+ Add an option for `get_test_matrix` to return plaintext
~ Fix `Makefile` to use `get_test_matrix`
2023-03-16 16:06:06 +02:00
habibayassin
1c3c4726c9 Add upload size warning in issue form (#1620)
Co-authored-by: Mohamed Gaber <me@donn.website>
2023-01-24 16:37:22 +02:00
Mohamed Gaber
06b2681346 Fix Netlist STA Reproducible + Update Docs (#1610)
+ Update reproducible uploading docs
+ Documented a number of missing configuration variables
~ Fix an issue where netlist STA reproducibles would attempt to use `CURRENT_ODB` and crash
- Removed a number of unused configuration variables
2023-01-11 17:40:47 +02:00
Mohamed Gaber
e570a6a5b4 run_designs fixes (#1597)
+ Add JSON support to "matrix" mode
~ Rename "regression mode" to "matrix", as it more accurately reflects a combination of variables
~ Replace bizzare "regression script" with a JSON file achieving basically the same thing
~ `run_designs` now clears run paths before it starts
~ `run_designs` no longer attempts to generated reports for runs that fail at startup
~ `verify_versions` no longer attempts to check the PDK if the environment variable PDK is not set
~ `scripts/config/config.py:get_config` -> `get_config_for_run` (more accurate)
~ `scripts/config/tcl.py:read_tcl_env` no longer exits unilaterally, raises an exception normally
- Remove Test #892 
- Remove `Tcl` support from matrix mode: not tenable
- Remove Tcl extraction shell script
---
Resolves #1458
2023-01-02 15:10:43 +02:00
Mohamed Gaber
ef013375f4 Update CI to include GF180MCU (#1480)
+ Add PDK matrix to `pdk_build` step 
~ Redo how test_sets are written
~ Redo design matrix to include PDK
~ Update deprecated Node.js-based GitHub Actions
~ Unify gf180mcuC config keys as "pdk::gf180mcu*"
2022-11-11 19:55:54 +02:00
Mohamed Gaber
8b391c09ae Change Issue Templates to Issue Forms (#1476) 2022-11-09 04:19:46 +02:00
Mohamed Gaber
cfb7ee91a6 Changes Requested by Caravel Team (#1414)
+ Add flag to enable/disable timing model generation after STA
+ Add both powered and unpowered netlists to `save_views`
+ Add multi-corner SDF and SPEF files to `save_views`
~ Fix #1413 and add regression test
~ Move `./run_issue_regressions.py` inside `tests` as a modular main function
2022-10-09 18:31:11 +02:00
Mohamed Gaber
37faafee20 Startup Fixes (#1344)
+ Added new script to import certain variables from `STD_CELL_LIBRARY_OPT` postfixed with `_OPT`
+ Added validation for `DIE_AREA` and `CORE_AREA`
~ Fixed `-init_design_config` by adjusting the location of the DESIGN_DIR check
2022-09-12 14:58:32 +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
4654b461c4 Fix Tool Updater CI (Again)
Signed-off-by: Mohamed Gaber <me@donn.website>
2022-09-01 08:52:21 +02:00
Mohamed Gaber
c91abed14f Streamlined PDK/SCL Configuration (#1297)
+ Add new feature  to extract just the PDK and SCL info from config files and `-override_env`
~ Reshuffle `scripts/tcl_commands/all.tcl:prep`:
    verify_versions is now one of the first things to run
    config load order documented and more guardrails added
~ Update bug report template
- Remove `CURRENT_STAGE` environment variable: nothing used it
2022-08-31 13:14:54 +02:00
Mohamed Gaber
ae089d8da8 Update OpenROAD, Magic + DEF DRC Enhancement (#1296)
~ Added `-noblockage` to magic DEF read during DRC
~ Fixed automatic tool update CI
~ magic -> 5d51e10fb969b31e6e95b5fb78d21efeccc73c14
~ openroad_app -> 4174c3ad802d2ac1d04d387d2c4b883903f6647e
2022-08-31 11:38:39 +02:00
Mohamed Gaber
57f3f21d6e Add Very Early support for GF180MCU + open_pdks Tweaks (#1251)
+ Add gf180mcuC configs for {APU, PPU, SPM}
~ Clean up some leftover variables
~ STD_CELL_LIBRARY now an optional environment variable- open_pdks config files are now responsible for setting the default
~ `to_tcl.py` updated to reflect that ^
~ Add ability to just set `METAL_LAYER_NAMES` in open_pdks
~ `open_pdks` -> 44a43c23c81b45b8e774ae7a84899a5a778b6b0b
2022-08-18 13:38:05 +02:00
Mohamed Gaber
4f63c8ca19 Various CI Fixes (#1235)
~ Updated documentation
~ Make it so the commits created by the bot are actually created by the bot and not Jeffrey DiCorpo
~ Fix `picorv32a` design in the extended test set
2022-07-27 17:26:27 +02:00
Mohamed Gaber
2f942308ed New Tagging Scheme + Issue Features (#1216)
+ Tagging scheme is now YYYY.MM.DD, postfixed with rX for multiple releases on the same day to match internal Efabless utilities
+ Add git remotes to environment survey
+ Add feature to force reproducibles to be created for a specific script regardless of failure: see `docs/source/using_or_issue.md` for more info
~ Fix `generate_tag.py`
- Remove debugging vestiges from `all.tcl`
2022-07-20 14:53:36 +02:00
Mohamed Gaber
ebbb579d17 PDK Installation Fixes and Documentation Updates (#1212)
+ Added PDK build instructions using Volare
~ Git requirement for general use (but not building) dropped from 2.35 -> 2.22
~ Fixed `override_env`'s inconsistent behavior (thanks, Tcl)
- Removed conda pdk installation vestiges
- Removed some useless and confusing under-the-hood sections
2022-07-18 16:51:03 +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
0034aa860d Add Caravel User Project Wrapper to Fastest Test Set (#1072)
+ Add caravel_upw as a design, included in the fastest_test_set
~ Alter the clean options in the makefile
~ Improve LVS mismatch message
2022-04-27 14:43:41 +02:00
Mohamed Gaber
251acb3b0d Quick CI Fix 2022-04-15 14:19:06 +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
b737086576 Multi-Process Corner RCX (#978)
+ Added optional multiple **process corner** technology lef support (min/max/nom), in addition to the already existing multiple **timing corner** support (ss/tt/ff). This will also be our nomenclature going fwd.
+ Parasitics extraction now run at all process corners, and multi-corner analysis is run at all three process corners
~ `finishing` -> `signoff`
~ Parasitics extraction and STA are now an independent step instead of being lumped in routing, as part of the signoff block
~ Update OpenROAD
~ Update Open_PDKs, Sky130, and Magic
~ PDK verification made more PDK agnostic outside of env.py
~ Made RCX use LEF files instead of multiple configuration variables/set_rc.tcl
~ `prep_lefs` more or less rewritten
- Removed redundant RCX variables
- Removed `-order_wires` from various `read_def`s in OpenROAD- deprecated, apparently
2022-04-07 20:59:37 +02:00