Commit Graph

111 Commits

Author SHA1 Message Date
Mohamed Gaber
68898e6584 Move flow control from atomic functions to flow functions (#1453)
~ Move `RUN_FILL_INSERTION`, `RUN_TAP_DECAP_INSERTION`, `RUN_DRT` to the larger flow functions
~ `FILL_INSERTION` -> `RUN_FILL_INSERTION` w/ translation behavior
~ `TAP_DECAP_INSERTION` -> `RUN_TAP_DECAP_INSERTION` w/ translation behavior
~ Update docs
2022-11-10 14:39:22 +02:00
Mohamed Gaber
86615f8def Yosys Script Enhancements (#1446)
+ Add yosys to `run_tcl_script`, enabling the automatic production of reproducibles
~ yosys -> f109fa3d4c56fe33bc626c298e04d45ae510dd0e
~ Cleaned up LEC script a bit (thanks @emjunaid for initial work)
~ Fix bug where cell_count was not extracted properly
- Removed `get_yosys_bin`: It's been deprecated forever
2022-11-10 14:28:56 +02:00
Mohamed Gaber
a0b19fa68b Add Wire Length Checker (#1463)
\+ Add PDK variable `WIRE_LENGTH_THRESHOLD` which wires with lengths >= said value are flagged
\+ Add `QUIT_ON_LONG_WIRE` which fails the flow if any wires are flagged for length
~ Update all `$::env(OPENROAD_BIN) -exit -python` invocations to include `-no_init` to suppress message about rc file
~ Replace ill-fitting `$::env(OPENROAD_BIN) -exit -python` invocations with just `python3`
~ Replace local install check with a simple git directory check
2022-11-01 19:09:25 +02:00
Liu Yihua
9197534034 fix usage command in docs (#1449) 2022-10-25 09:36:14 +02:00
Mohamed Gaber
5c58d413a3 Various Abstractions for config.json (#1445)
+ Formalized concept of "exposed variables", environment variables that are exposed to `config.json` during processing
+ `dir::` is no longer a special case: all `ref::` prefices referencing a path now have the ability to glob inside said path
+ Made `dir::`, `pdk_dir::` and `scl_dir::` short-hands for various `ref::`s
2022-10-24 22:58:28 +02:00
Mohamed Gaber
60e9417385 Diode Insertion Strategy 6 (#1448)
+ Add Diode Insertion Strategy 6 that combines strategies 3 and 4
~ Tweak docs
2022-10-24 17:31:26 +02:00
Mitch Bailey
3809309b8c Renamed cvc to cvc_rv to avoid conflict (#1440)
~ `cvc` -> `cvc_rv` + updated filenames and invocations
~ `run_lef_cvc` -> `run_erc` with translation behavior 

Co-authored-by: Donn <me@donn.website>
2022-10-24 11:36:00 +02:00
Mohamed Gaber
32da932761 Organize Magic Scripts (#1418)
+ Add `proc erase_box` to OpenLane
+ Add two new config variables for magic def reads: `MAGIC_DEF_NO_BLOCKAGES` and `MAGIC_DEF_LABELS`
~ Magic scripts hierachically organized by input format
~ `erase_box.sh` deprecated
~ More decisively separate LVS logs from reports
2022-10-12 09:12:55 +00: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
5abc5f749d Elaboration, Signoff SDC Configuration Variables (#1406)
+ Create `RCX_SDC_FILE` as an optional SDC file to be used only for parasitics extraction (and consequent STA)
+ Document `SYNTH_ELABORATE_ONLY`, which only elaborates structured netlists without an attempt at logic mapping ~ Add translation behavior from previous, ambiguously named `SYNTH_TOP_LEVEL` to `SYNTH_ELABORATE_ONLY`
~ `scripts/yosys/synth_top.tcl` -> `elaborate.tcl`
~ Documentation consistency fixes
~ Fix wildcard in `docker/Makefile`
2022-10-03 16:44:13 +02:00
Mohamed Gaber
04d86db91a Support OpenROAD set_dont_touch (#1398)
+ Add calls to `set_dont_touch` and then `unset_dont_touch` at the beginning and end of every resizer script respectively ~ Reorganize config variables
+ Added undocumented variable `RSZ_USE_OLD_REMOVER` to continue to use the old `remove_buffers.py` script instead
~ `LIB_RESIZER_OPT` -> `RSZ_LIB` (with translation behavior)
~ `UNBUFFER_NETS` -> `RSZ_DONT_TOUCH_RX` (with translation behavior)
~ Made timing models only get written after CTS by checking for `STA_PRE_CTS` as well
2022-10-02 22:40:02 +02:00
Kareem Farid
b1289b8748 Expose pdngen -skip_trim through FP_PDN_SKIPTRIM (#1397)
+ Add config variable `FP_PDN_SKIPTRIM` that passes the `-skip_trim` variable to `pdngen`
2022-09-28 08:01:11 +02:00
Mohamed Gaber
3ee8cf0da0 Use OpenDB as the Primary Layout Format (#1244)
===
Flow Scripts
===
+ Support OpenROAD ODB format as the primary format in which data is stored after placement
+ Create `manipulate_layout` to centralize calling odbpy scripts
+ Add `CURRENT_POWERED_NETLIST` to list of "current" variables, separate from 
`CURRENT_NETLIST` to avoid confusion
~ Update `scripts/odbpy/reader.py:OdbReader` and *all dependent scripts* now to use `odb` inputs and outputs. Add new `--output-def` flag to continue saving a DEF layout of the result.
~ Verbosity now a global variable, not an environment variable
~ Streamline saving using `scripts/utils/utils.tcl:run_openroad_script`: new `-save` option added that will automatically handle setting and unsetting `SAVE_` variables and `CURRENT_` variables
~ Rewrite Diode Insertion Strategy 3 iterations to be readable by human beings
~ `scripts/tcl_commands/all.tcl:heal_antenna_violators` now only uses `CURRENT_DEF`
~ `scripts/tcl_commands/all.tcl:set_netlist` updated to support flags and arguments properly, `-lec` now only works if `LEC_ENABLE` is set to `1`. Invocations updated
~ Usage of `scripts/tcl_commands/all.tcl:trim_lib` updated: no longer has any optional arguments. Documentation updated.
~ `scripts/tcl_commands/all.tcl:write_verilog` now uses `write_views.tcl` with the `-save` option. Documentation updated to reflect the fact it no longer calls `set_netlist`.
~ Fix various python invocations
~ Move `scripts/tcl_commands/routing.tcl:gen_pdn` to `floorplan`
~ Update `scripts/or_issue.py` to handle `odb` inputs and outputs
~ Update `scripts/tcl_commands/lvs.tcl:write_powered_verilog`, `scripts/tcl_commands/routing.tcl:power_routing` to use `-odb` as an input instead of `-def` (and, if applicable, `-output_odb` *alongside* `-output_def`)
- Remove various scripts that rely on text manipulation (incl. `scripts/simple_cts.py`- thank you for your service)
- Remove vestiges of site widening
- Remove `-canonical` optional from `scripts/tcl_commands/all.tcl:write_verilog` (dubious/undocumented utility)
- Remove `verilog_to_verilogPower` (unused)
- Remove `zeroize_origin_lef`
- Remove `PREV_NETLIST` variable
- Remove various invocations of `scripts/tcl_commands/utils.tcl:write_verilog`, replace with `-save` arguments

## OpenROAD Scripts
+ Create OpenROAD script `common` folder, isolating common code into a folder instead of the preceding chaos
+ OpenROAD scripts now use a unified script for reading and writing views: `scripts/openroad/common/io.tcl`: `read` reads the `.odb` database + relevant liberty and sdc files and `write` writes any views specified as `SAVE_` variables: see the file for documentation
~ Update Copyright & Licensing for all OpenROAD scripts
~ Rewrite `scripts/odbpy/defutil.py:merge_components` to use odb
~ `scripts/odbpy/defutil.py:replace_pins` -> `relocate_pins`, with a partial rewrite and re-documentation.
~ `scripts/odbpy/defutil.py:add_def_obstructions` -> `add_obstructions`
~ `scripts/openroad/write_verilog.tcl` -> `write_view.tcl`, since it is literally just a "read" and a "write" call now
~ Partially rewrite `scripts/odbpy/power_utils.py:write_powered_def`, the most disgusting function in the codebase
- Remove `scripts/odbpy/defutil.py:merge_pins` (unused)
2022-09-19 20:38:28 +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
Mohamed Gaber
63b5966c28 Documentation Fixes (#1333)
+ Local installer re-documented, volare integrated
+ Create new "Macros/Chip Integration" section in `configuration.md`, document EXTRA_LIBS
+ Document `CVC_SCRIPTS_DIR` in PDK variables ~ Replace broken links with permalinks in `chip_integration.md`
~ `SYNTH_CLOCK_UNCERTAINITY` -> `SYNTH_CLOCK_UNCERTAINTY` (with translation behavior)
- Remove unused `FP_CORE_MARGIN` variable
2022-09-07 14:06:24 +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
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
4476a58407 Sky130 Enhancements (#1240)
+ Add feature to match PDK names using Python `fnmatch`, allowing wildcards in `config.json` `pdk::` statements
~ open_pdks -> `e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066`
- Remove "dependencies" field from tool_metadata.yml
- Removed sky130 version from tool_metadata.yml, tracked through the open_pdks "sky130.json" file instead
- Removed CVC scripts, placed in the PDK
2022-07-29 16:03:10 +02:00
Mohamed Gaber
b50b4d03ab Tie Cells at FP Stage, Improved Cell Padding (#1226)
+ Added "logging to" information for long-running steps (CTS and Routing)
+ Added variable `GPL_CELL_PADDING` for global placement, with a default value of 0 (value divided by 2 and applied to both the left and right of the cell)
+ Add feature to also print mounted scripts' version if the container version does not match
+ Add `insert_tiecells` after floorplanning
~ `replace.tcl`, `opendp.tcl` -> `gpl.tcl`, `dpl.tcl`
~ `CELL_PAD` renamed `DPL_CELL_PADDING` for detailed placement, default value still 4, value divided by 2 and applied to both the left and right of the cell
~ DONT_BUFFER_PORTS given a default value (empty)
~ `remove_buffers` -> `remove_buffers_from_ports` (to more explicitly state what it does)
~ Renamed `RUN_ROUTING_DETAILED` to `RUN_DRT` (with translation behavior)
~ Cleanup OR antenna check
- Removed `CELL_PAD` from metrics and comparison
- Removed `widen_site_width`, `use_widened_lefs` and `use_original_lefs`: I don't know who used site widening
- Removed `MERGED_LEF_UNPADDED`: `MERGED_LEF` can be used for all places where the "unpadded" one was used
2022-07-25 16:52:54 +02:00
Mohamed Gaber
610a3296a3 RTD Fixes (#1228)
~ RecommonMark, Sphinx Markdown Tables replaced with MyST Parser
~ All package versions pinned
~ Updated various broken links
2022-07-22 15:50:48 +02:00
Mohamed Gaber
23ab827bac GLB_RT -> GRT + Remove older deprecated variables (#1217)
~ For consistency's sake, all variables previously starting with GLB_RT have been changed to ones starting with GRT (except for PDK variable `GLB_RT_LAYER_ADJUSTMENTS`)
~ GLB_RT-prefixed variables deprecated, automatically translated to equivalents by OpenLane (for now)
- Removed of `GLB_RT_LX_ADJUSTMENT` deprecated variables translation behavior
- Removed GLB_RT_[CLOCK_]{MIN/MAX}LAYER deprecated variables translation behavior
- Removed ROUTING_OPT_ITERS deprecated variable translation behavior
2022-07-20 14:57:39 +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
c38101ea8a JSON Config Overhaul (#1134)
+ JSON Configs now support per-PDK and per-SCL options
+ JSON Configs now have a limited expression engine and a way to specify the current working directory and glob inside of it
+ Created script to help migrate tcl configs to json configs
+ `-init_design_config` rewritten, now creates an `openlane` folder inside the design's directory. New flag `-add_to_designs` restores the previous behavior
+ `docs/source/configuration_files.md` created with a focus on documenting how the configuration files work, including the JSON configuration files
~ Update `picorv32` design
~ Most `config.tcl`s replaced with `config.json` alternatives
~ Global configuration files now loaded in a specific order with no glob
~ Changed default values for PL_TARGET_DENSITY
~ Documentation updates to support the use of configuration JSON files as a first class citizen
~ Update author list
~ Replicate override_env after second design source
~ Move verify_mismatches to before most preparation
~ flow.tcl no longer requires `-design`, is happy to use the current working directory as a default
~ replicate.py rewritten
~ update.py not rewritten, but uses click now (and an improved --help)
- Removed "flag documentation" for some python scripts, just use `--help`
2022-07-13 16:43:23 +03:00
Mohamed Gaber
ebad315d1d Fix Antenna Checkers, Magic Script Enhancements (#1154)
+ `run_magic_script` added, replacing all individual magic invocations and supporting `or_issue`
~ Fix max capacitance/fanout violations being misreported as slew violations
~ `extract_antenna_violators.py`, `or_issue.py` rewritten in click
~ Fix issue where `diodes.py` doesn't expose `replace_fake`
~ Fix various odbpy script invocations broken by #864
~ Fix issue where entire run folder was not deleted on overwrite (again, #864)
~ `spice_extract.tcl`, `antenna_check.tcl` both now attempt their own extraction to avoid maglef/mag confusion scenarios
~ Fix long-standing issue with diode insertion strategy 3
~ Rewrite diode insertion strategy 5
2022-06-21 19:56:21 +02:00
Mohamed Gaber
a9883335a1 Enhancements + Bugfixes to Multi-PDK Support (#1138)
+ Added two new PDK-specific variables: SYNTH_CLK_DRIVING_CELL, SYNTH_DRIVING_CELL_PIN, which are used in the sdc file so clocks specifically can be driven by a different cell
~ NO_PG now also generated for the excluded cells
~ Document PDK-specific variables in their right place
~ Magic -> 085131b
~ Fix verify_versions.py
2022-06-18 11:53:39 +02:00
Mohamed Gaber
b29b71536b Python Cleanup (#864)
+ Consolidated all existing DRC conversion functions into `drc_rosetta.py`
+ Consolidated fake_diode_replace and place_diode into `diode.py`
+ Consolidated and/or rewrote most def manipulation functions into `defutil.py` and other files under `odbpy/`.
+ Consolidated and/or rewrote most lef manipulation functions into `lefutil.py`
~ Moved all files using odb to a new folder, `odbpy/`
~ Move replicate/update config scripts to `scripts/config` folder
~ Move all in-line magic spells into proper files
~ Tcl formatting (4 space-indents on all modified files)
- Removed many unused files, all consolidated files
---
API Breaks

* Care was taken to ensure all OpenLane tcl commands have the same API presuming the API in question was not stupid.
    * Speaking of, `manual_macro_placement_test f` has been updated to `manual_macro_placement_test -f` to be consistent with literally every other command.
* All individual files that may be used by third party projects likely have a different CLI and are thus entirely broken.
2022-06-07 08:43:35 +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
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
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
4076f3ef9e Synthesis Exploration Tweaks (#973) 2022-03-02 01:24:37 +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
Anton Blanchard
8fea3c1cb7 Fix typo in ECO flow docs (#941) 2022-02-28 13:54:01 +02:00
Anton Blanchard
ec2b7b9554 Fix some STA clock issues (#965) 2022-02-28 13:52:48 +02:00
Donn
f42a0fc549 Make Klayout an OpenLane Tool Proper, Update to Klayout 0.27.7 (#919)
+ Klayout is now a proper OpenLane tool
~ klayout -> 0.27.7
- local installer no longer includes Klayout in dependencies: bring your own klayout
2022-02-14 14:41:56 +02:00
Marwan Abbas
aac68a0ca1 Added PDN and tap halo distinction (#896)
+ Add separate variables for PDN and tap halos
~ Update relevant documentation
2022-01-31 18:03:00 +02:00
Arman Avetisyan
0a5afc3dfc Issue regression flow and apply_def_template.py fix (#891)
+ Added an issue regression flow, allowing some post-run hooks to be executed to analyze issues that may not be captured by mere flow failure or metric regressions
~ `apply_def_template.py`: fix case sensitivity of arguments and use proper `defutil` command
2022-01-28 14:54:39 +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
Mehdi Saligane
99cf10ce2f Add an ECO Flow for hold timing violations fixes (#791)
ECO flow starts from checking the report generated in the route step. As PT commands are not supported by OL, we use a python script to check the report, insert buffers, and do the resize. Inside the ECO loop, the python script, cts and route step are called sequentially. The reports are generated each time, and the loop stops until no hold time violations are found. 

The flow can be enabled using ECO_ENABLE =1.

More documentation and enhancements to come in the future.

Co-authored-by: Ke-Haur Taur <khtaur@umich.edu>
Co-authored-by: Haolin Dong <haolind@umich.edu>
2022-01-09 21:15:47 +02:00
Donn
8902f5a7b8 Restore -save Functionality (#809)
This restores `-save` functionality from previous versions of OpenLane, which was mistakenly removed.
2021-12-27 12:05:40 +02:00
Anton Blanchard
c6771612cd Update macro documentation to use RT_MAX_LAYER (#795)
The macro and power grid documentation uses the deprecated
GLB_RT_MAXLAYER option.

[skip ci]
2021-12-23 13:27:37 +02:00
Donn
86a5e29c4f Update Documentation for or_issue.py (#780)
[skip ci]
2021-12-21 20:52:09 +02:00
Donn
8c734bc051 Move some layer variables to PDK, update io_place.py (#767)
+ `RT_{MIN,MAX}_LAYER` added to the PDK, relies on layer names
+ `FP_IO_{H,V}LAYER` added to the PDK, relies on layer names
+ `DRT_{MIN,MAX}_LAYER` optional override variables added
~ Minimum layer set to `met1` in the PDK, you have to enable `li1` manually
~ `GLB_RT_LAYER_ADJUSTMENTS` was moved to the PDK
~ io_place.py API redone in click, now also uses layer names
- `FP_IO_{H,V}METAL` removed, will be translated to the new ones on-the-fly if they're in a user's config (for now.)
- `GLB_RT_{MIN,MAX}LAYER` and its clock equivalents deprecated, will automatically be changed to the new ones on the fly
2021-12-18 03:32:48 +02:00
Donn
c1083b5910 Centralize Calling OpenROAD + Automatic Reproducibles (#764)
All OpenROAD scripts are now called with `run_openroad_script`, a variant of `try_catch`, that upon detecting a failure will automatically invoke ./scripts/or_issue.py and create a reproducible within the run directory.

Also tweaks to how yosys is invoked.
2021-12-16 18:35:04 +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
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
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
92f1274352 Non-fixed layer count for GLB RT adjustments (#721)
* Non-fixed layer count for GLB RT adjustments

Remember this kids, nothing is more permanent than a temporary solution.

* GLB_RT_LX_ADJUSTMENT variables consolidated into GLB_RT_LAYER_ADJUSTMENTS, a comma-delimited set of values

* GLB_RT_LX_ADJUSTMENT will continue to be accepted but display a deprecation warning, and will be removed in a later version of OpenLane.

* GLB_RT_L1_ADJUSTMENT value from the PDK is now ignored.

* Bashrc fix (Line wrap problem), or_issue fix
2021-11-18 12:06:02 +02:00
Donn
bdb1b56f58 or_issue, sta.tcl updates (#715)
* Only `read_verilog` if there's no CURRENT_DEF: see https://github.com/The-OpenROAD-Project/OpenROAD/issues/1305#issuecomment-968336079 (Practically didn't cause an issue as all DEFs are used without the standalone flag)
    * or_issue now supports netlist inputs and no longer generates tarballs: encourages inspecting and running the code before uploading a tarball
    * or_issue now also creates tcl, gdb and lldb files
    * OpenROAD commit now sedded in instead of GITDIR-NOTFOUND: See last paragraph of https://github.com/Cloud-V/DFFRAM/issues/115
2021-11-16 14:44:55 +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