Commit Graph

23 Commits

Author SHA1 Message Date
Mohamed Gaber
d8e399d55d Update Klayout Scripts + Klayout (#1462)
\+ Add klayoutrc to OL images
\+ Made klayout scripts launchable as commands
\+ Add new quit_on_xor_error checker
\+ Add `KLAYOUT_XOR_THREADS`
\~ Rewrite XOR script to be more readable
\~ klayout -> 8bed8bcc3ca19f7e1a810815541977fd16bc1db5
\- Remove KLAYOUT_XOR_GDS, KLAYOUT_XOR_XML: XML only now
\- Remove mv_shapes: unused


Co-authored-by: Kareem Farid <karimmhany@gmail.com>
2023-01-06 19:28:15 +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
Sean Cross
9b2c5683ba Improve PL_BASIC_PLACEMENT Documentation (#1576) 2022-12-26 19:37:18 +02:00
Johan Euphrosine
5101c11280 docs/reference/cli: fix typo in expose_env example (#1586) 2022-12-26 17:01:33 +02:00
Kareem Farid
f734f9ec13 Update Antenna Violation Reports (#1585)
\~ document the right report file for `run_or_antenna_check` 
\~ fetch the correct report/log file for openroad antenna reports
\~ capture pin violations and net violations
\~ fetch the correct report file for magic antenna report
2022-12-26 15:37:52 +02:00
Kareem Farid
d20c7b4746 Expose magic polygon subcells (#1566)
through MAGIC_GDS_POLYGON_SUBCELLS
minor formatting changes to other variables' documentation
2022-12-13 12:32:13 +02:00
Kareem Farid
95c7cd1944 magic updates (#1540)
~ fix cell name in `user_proj_example2.gds` in `caravel_upw` testcase. the cell name was incorrectly set to `user_proj_example`
~ update magic version.
+ add configuration variable `MAGIC_GDS_ALLOW_ABSTRACT` to allow abstract view of macros during magic gds generation which was previously allowed in magic. The new default is set to disallowed as usually having abstract view is caused by an error in configuration.
2022-12-01 17:23:19 +02:00
Kareem Farid
c98a290f70 Fix variables for setting pin thickness and multiplier (#1539)
~ check the right flags while setting pin thickness and multiplier
~ change default values of FP_IO_*EXTEND to 0

Co-authored-by: Donn <me@donn.website>
2022-12-01 14:22:16 +02:00
Mohamed Gaber
d4d4a3191c Add test for #1506, Isolated Installation in Docs (#1536)
+ Add test for JSON config files
~ Updated various `rm` execs to `file delete -force`
~ Test script now outputs to stdout as well as a log file
~ Moved post-run hook runner to `all.tcl`
~ Moved installation docs to their own subcategory
~ Fix security bug
2022-11-30 20:04:43 +02:00
Mohamed Gaber
ff85171cfb Document Error in JSON Config Files (#1509) 2022-11-21 11:23:51 +02:00
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
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