- Dec 25, 2023
-
-
Kareem Farid authored
Co-authored-by:
Mohamed Gaber <donn@efabless.com>
-
Mohamed Gaber authored
~ 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)
-
- Sep 05, 2023
-
-
Kareem Farid authored
+ 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
-
- Aug 31, 2023
-
-
Kareem Farid authored
+ 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>
-
- Aug 10, 2023
-
-
Kareem Farid authored
+ 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
- Jul 12, 2023
-
-
Mohamed Gaber authored
~ Classified PDK variables by user modifiability ~ `SYNTH_MAX_FANOUT` -> Moved into PDK as `MAX_FANOUT_CONSTRAINT` ~ `SYNTH_MAX_TRAN` -> Moved into PDK as `MAX_TRANSITION_CONSTRAINT` ~ `SYNTH_CAP_LOAD` -> `OUTPUT_CAP_LOAD` - Removed `DEFAULT_MAX_TRAN` from PDK (unused)
-
- May 02, 2023
-
-
Mohamed Gaber authored
+ `scripts/config/tcl.py:escape_quoted_string` escapes strings for placement inside quotes for Tcl ~ Generated Tcl files now use quotes instead of {} for strings, using above ~ `Tcl.py` no longer ruins variables via overzealous escaping ~ `set_log` renamed to `set_and_log`, stupid arguments removed ~ `save_state` rewritten to rely on initial copy of `::env` array instead of spaghetti mess ~ Make 1506 test more comprehensive
-
- Apr 16, 2023
-
-
Mohamed Gaber authored
~ Add reports for timing multi-corner STA across all process corners ~ Sort min/max report outputs by slack ~ Combine Slew, Fanout, Capacitance and Annotation Checks into one `_sta.checks.rpt` ~ Combine TNS, WNS, Worst_Slack into one `_sta.summary.rpt` ~ Fix regression in #1675 where logs were renamed and reports were not getting generated for some steps ~ Update documentation \- Remove UMich ECO timing report vestiges --- Based on feedback from @shalan, Fixes #875
-
- Apr 10, 2023
-
-
Kareem Farid authored
+ add wrapper.tcl to capture magic errors ported from openlane2 ~ use lef/def or gds instead of mag to write a lef through MAGIC_LEF_WRITE_USE_GDS ~ print lef write log file path
-
- Apr 05, 2023
-
-
Kareem Farid authored
\+ Add `EXTRA_SPEFS` \+ Use `VERILOG_FILES_BLACKBOX` in sta. Allow skipping a file by adding a comment `/// sta-blackbox` \+ Detect blackboxed modules in typical-corner STA during sign off and warn the user about it \+ Add `run_sta_script` used in multicorner sta \+ Support sta in `or_issue.py` \+ Support sta in `run_tcl_script` \+ Check if regex defined in `FP_PDN_MACRO_HOOKS` has a match. Fixes https://github.com/The-OpenROAD-Project/OpenLane/issues/1599 \~ Wrap `set_global_connections` around a flag since it is not supported by opensta \~ Run multicorner sta using standalone sta application for hierarchical sta support \~ Move `sta_multi_corner.tcl` to `scripts/openroad/sta/multi_corner.tcl` \~ Don't delete target directory of `-save` for multicorner spef files \~ Merge multi_corner sta and single corner into one script. \~ Split `RUN_STANDALONE` embedded inside openroad steps, which calls sta after, to another sta step run after said openroad step \- Remove `report_design_area` in `multi_corner.tcl` since it is not supported by standalone OpenSTA \- Remove `scripts/openroad/sta.tcl`
-
- Mar 27, 2023
-
-
Kareem Farid authored
- Deprecate DIODE_INSERTION_STRATEGY. - Remove DIODE_INSERTION_STRATEGY 2, 1, and 5 + Add GRT_REPAIR_ANTENNAS + Add HEURISTIC_ANTENNA_THRESHOLD + Add RUN_HEURISTIC_DIODE_INSERTION + Add DIODE_ON_PORTS + Add HEURISITIC_ANTENNA_INSERTION_MODE ~ Update benchmark results for SW_HD ~ Apply DIODE_PADDING in dpl_cell_pad which also runs after RUN_HEURISTIC_DIODE_INSERTION run_designs.py: ~ Change default config to `config` instead of `config.json` to allow for designs with tcl default config ~ Change logging format + Print SUCCESS when a design is finished ~ Use extra parameters `params.keys()` instead of `ConfigHandler.get_header()` to build report csv header. This fixes inconsistencies between csv header and values reported compare_regression_design.py: ~ Change metric name antenna_violations -> pin_antenna_violations ~ Handle "bad" encoding of csv report files ~ Quit when a report is perceived as invalid ~ Don't print output file name to stderr compare_regression_reports.py: ~ Change metric name antenna_violations -> pin_antenna_violation ~ Handle "bad" encoding of csv report files config.py: ~ Sort result from get_config_for_run and configuration_values for consistency ~ All get_config_for_run to get the full config ~ Fix antenna violations net extraction in `extract_antenna_violators.py` ~ Fix fetching antenna violation count in `generate_reports.py` report.py: ~ Split "metric" antenna_violations to pin_antenna_violations and net_antenna_violations as reported by openroad antenna checker ~ Add Non-phyCells ~ Add TotalCells ~ Rename cell_count to synth_cell_count to avoid confusion with TotalCells ~ Calculate cells_per_mm based on Non-phyCells instead of synth_cell_count ~ Rename
-
- Mar 21, 2023
-
-
Mohamed Gaber authored
~ Move `QUIT_ON` variables outside of checker functions ~ Move final timing checks to a flow step: `run_timing_check_step` ~ Replace a couple of loose `file exists` with `assert_files_exist` calls ~ Replace all `flow_fail` across the flow with `throw_error`, which behaves accordingly: * If running an interactive script, `flow_fail` is called * Else, the errors are propagated upwards, where `flow.tcl` is to catch it ~ Rename `try_catch` to `try_exec` as it now propagates the error, with translation behavior - Remove UMich experimental ECO flow
-
- Feb 26, 2023
-
-
Sean Cross authored
-
- Feb 22, 2023
-
-
Kareem Farid authored
\+ Add `QUIT_ON_SYNTH_CHECKS` (perhaps needs a better name?) \~ `run_tcl_script` now logs warnings to `.warnings` file \~ `run_tcl_script` now logs errors to `.errors` file \~ Rename `CHECK_ASSIGN_STATEMENTS` to `QUIT_ON_ASSIGN_STATEMENTS` \~ Rename `CHECK_UNMAPPED_CELLS` to `QUIT_ON_UNMAPPED_CELLS` \~ Fix implementation of `QUIT_ON_UNMAPPED_CELLS` by inspecting the correct yosys stat file \~ Run `QUIT_ON_UNMAPPED_CELLS` and `QUIT_ON_ASSIGN_STATEMENTS` directly after synthesis before sta
-
- Feb 18, 2023
-
-
Johan Euphrosine authored
-
- Jan 23, 2023
-
-
Kareem Farid authored
~ Fix `IO_READ_DEF` unsetting ~ Print `CURRENT_ODB` instead of `CURRENT_DEF` when resuming runs
-
- Jan 18, 2023
-
-
Kareem Farid authored
+ Allow `write_verilog` to have an input def file + Allow reading in DEF/LEF as an option for OpenROAD scripts Co-authored-by:
Donn <me@donn.website>
-
- Nov 10, 2022
-
-
Mohamed Gaber authored
+ 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
-
- Nov 01, 2022
-
-
Mohamed Gaber authored
\+ 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
-
- Oct 17, 2022
-
-
Johan Euphrosine authored
+ Add `-exit` to all `openroad -python` invocations, which otherwise causes hangs when stdin is hooked up ~ openroad_app -> 389a1f09821c0f57e3bf8e88f4ab43c76ec5f5c4 ~ update tests to use DEFs as input files once again Co-authored-by:
Mohamed Gaber <donn@efabless.com>
-
- Oct 09, 2022
-
-
Mohamed Gaber authored
+ 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
-
- Sep 28, 2022
-
-
Mohamed Gaber authored
+ Add function to generate lib files based on OpenSTA's new `write_timing_model` command + Implement lib saving for both single and multi-corner STA + Add multi-corner SDF saving ~ Arrange RCX extraction and STA outputs under folders Note: https://github.com/The-OpenROAD-Project/OpenLane/pull/1395#issuecomment-1258277689
-
- Sep 19, 2022
-
-
Mohamed Gaber authored
=== 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)
-
- Jul 20, 2022
-
-
Mohamed Gaber authored
+ 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`
-
- Jun 21, 2022
-
-
Mohamed Gaber authored
+ `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
-
- Jun 10, 2022
-
-
Mohamed Gaber authored
+ Function now called on all successes and `flow_fail`s ~ Function moved to all.tcl so it can be used by custom flow scripts - Removed `SAVE_FINAL_VIEWS` variable
-
- Jun 07, 2022
-
-
Mohamed Gaber authored
+ 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.
-
- Apr 26, 2022
-
-
Kareem Farid authored
- Change 'Running Resizer ..' to 'Running Placement Resizer..' and other equivalent changes - add the piping part to run_openroad_script function allowing for logging the log file of the openroad script in openlane's run cmds.log - report the relative log file path on openroad script crash - adjust "skipping" messages
-
- Apr 07, 2022
-
-
Mohamed Gaber authored
+ 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
-
- Mar 28, 2022
-
-
Donn authored
+ Enable insert_buffer to be used outside of the ECO flow + Added ability to use interactive.tcl in issue regression flow ~ Made the ECO flow far less chatty ~ Other non-functional ECO flow tweaks ~ Merged apply_fix.tcl and eco.tcl into eco.tcl ~ Added `cat` command to utils.tcl
-
- Mar 14, 2022
-
-
Donn authored
+ `-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)
-
- Mar 01, 2022
-
-
Donn authored
-
- Feb 18, 2022
-
-
Matt Liberty authored
-
- Jan 12, 2022
-
-
Donn authored
+ 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
-
- Jan 09, 2022
-
-
Mehdi Saligane authored
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>
-
- Dec 16, 2021
-
-
Donn authored
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.
-
- Dec 15, 2021
-
-
Donn authored
-
- Dec 09, 2021
-
-
Kareem Farid authored
+ Add RUN_MAGIC_DRC flag to control running DRC with magic + Add RUN_LVS flag to control running LVS ~ replace grepCount.sh with something sane
-
- Nov 24, 2021
-
-
Kareem Farid authored
-