Commit Graph

83 Commits

Author SHA1 Message Date
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
Mohamed Gaber
b76d11ac12 CI Fixes (#1022)
+ 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://
2022-03-29 15:10:54 +02:00
Donn
d49a0b6d73 Remove Unused Designs (#982) 2022-03-07 13:22:48 +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
Syndace
212fef15fe Added missing list braces (#895)
~ Fix a failure when `MACRO_BLOCKAGES_LAYER` contains an even number of elements
~ Pin versions of `black`, `flake8`
2022-01-30 15:12:11 +02:00
Matt Liberty
673a63e2ff More generic flow updates (#886)
* In run_non_interactive_mode make -no_lvs -no_drc -no_antennacheck into flags

These don't need an argument and the code was already looking in flags_map.

Signed-off-by: Matt Liberty <mliberty@eng.ucsd.edu>

* in ioplacer.tcl use proper commands rather than internals

Signed-off-by: Matt Liberty <mliberty@eng.ucsd.edu>

* Add DFF_LIB_SYNTH optional variable for dfflibmap

dfflibmap can only take a single liberty file.  If LIB_SYNTH has multiple
files then DFF_LIB_SYNTH is the one with all the sequential elements.
If unset then LIB_SYNTH will be used for backward compatability.

Needed for asap7 which uses multiple liberty files.

Signed-off-by: Matt Liberty <mliberty@eng.ucsd.edu>

* Handle multiple liberty files and empty CELL_PAD_EXCLUDE for asap7x

Signed-off-by: Matt Liberty <mliberty@eng.ucsd.edu>

* Thanks, GitHub Actions Team

Co-authored-by: Donn <me@donn.website>
2022-01-26 20:51:03 -08: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
45cb357faf Global Routing Fixes & Enhancements (#856)
+ Add GLB_RT_MACRO_EXTENSION option
+ Restore GLB_RESIZER_TIMING_OPTIMIZATIONS for five designs failing hold violations
~ Set GLB_RT_ADJUSTMENT to 0.3 across the board based on advice in #848
~ ROUTING_OPT_ITERS -> DRT_OPT_ITERS (for consistency)
- Disable `aes_cipher` in extended test set (I gave up)
2022-01-12 19:50:06 +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
af039739d4 Add info about OpenROAD tarballs (#855)
Also remove "Alternatives" from feature requests.

[skip ci]
2022-01-10 05:11:05 +02:00
Donn
664e7d2d04 Force CI PDK builds on one thread (#845)
The OpenLane CI as well, this time. See https://github.com/The-OpenROAD-Project/OpenLane/issues/806

[skip ci]
2022-01-04 13:53:42 +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
80b7292d00 Fix Tool Updater Python Invocation (#808)
[skip ci]
2021-12-27 11:24:33 +02:00
Donn
efc75133f0 Typo (#801)
[skip ci]
2021-12-24 13:08:02 +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
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
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
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
3bc6fcd3e1 Artifact Reorganization (#723)
The best thing to happen to OpenLane since OpenLane.

Variables related to output files: i.e. logs, results and reports, are becoming more uniform.

* Variables now point to folders
* Variables now called `{stage}_{type}s`
* All variables renamed to be tool-generic
   * magic, klayout, cvc and lvs all unified, renamed "finishing"
* Better flow runtime calculation
  * All step runtimes are now stored in a yaml file, which can easily be read by a human or parsed by a computer.
* Better step indexing
   * You have to increment the step index explicitly using `increment_index`.
   * Functions that take log arguments now require you to not use an indexed file, it's their responsibility to index them.
* Changed names for many logs to make more sense
* A plethora of files being moved and/or renamed
   * Yosys scripts were moved into their own folder
   * All references to OpenLANE that are not a published paper have been replaced with OpenLane
   * Copyright dates updated on some files
2021-11-23 19:40:15 +02:00
Donn
0ffb3ccd17 Update tool_updater.yml (#720)
[skip ci]
2021-11-17 19:33:43 +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
678cf7c901 Clarify whether the issue template is a suggestion or not (#672)
(its not) [skip ci]
2021-10-25 13:32:02 +02:00
Donn
3957fe303f Simple CTS Now Suboption Of Clock Tree Synthesis (#667)
~ RUN_SIMPLE_CTS no longer runs the Simple CTS if CLOCK_TREE_SYNTH is off.
~ TritonCTS will no longer run if RUN_SIMPLE_CTS is on.
- wbqspiflash was apparently duplicated between the FTS and ETS so it's been removed from the ETS.
2021-10-22 16:04:26 +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