Commit Graph

138 Commits

Author SHA1 Message Date
Anton Blanchard
8a3ef4ca74 Always call set_propagated_clock after CTS (#946)
+ Always call set_propagated_clock after CTS
- Remove unused or_rpt.tcl script
2022-02-25 13:36:38 +02:00
Matt Liberty
f01acb5c2e Add scripts/pdk-linker.py for ORFS/OL integration and ioplacer update (#897)
* Add scripts/pdk-linker.py for ORFS/OL integration

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

* Add *~ to .gitignore

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

* Update ioplacer.tcl to use proper tcl commands

Also allow skipping the calls

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

* black format pdk-linker.py

Signed-off-by: Matt Liberty <mliberty@eng.ucsd.edu>
2022-02-02 16:44:10 -08: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
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
fc1e687960 PDK-Genericity Fixes (#883)
+ PDK now overridable via `override_env` and environment
+ Added mergeLib.py to merge liberty files for PDKs that require multiple liberty files
~ Make FP_IO_MIN_DISTANCE optional
- Removed legacy OpenPhySyn variables
2022-01-25 17:04:13 +02:00
Anton Blanchard
8ad16ce75c Move reading SDC file earlier (#871)
I noticed that global routing reports 0 clock nets:

[INFO GRT-0019] Found 0 clock nets.

Moving the reading of the SDC file earlier fixes it:

[INFO GRT-0019] Found 980 clock nets.
2022-01-20 13:08:19 +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
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
Marwan Abbas
6fd977042e DEF File Manipulation Fixes (#843) 2022-01-05 02:05:39 +02:00
Donn
0d9df0972d Add Macro Placement Configuration Variables (#841) 2022-01-03 18:53:54 +02:00
Donn
956d740084 Fix Multicorner Analysis (#822)
(Based on comments by James Cherry: see #781)
2021-12-29 13:25:06 +02:00
Donn
857a2838da Remove clk_nets, already obtained from SDC (#823) 2021-12-29 11:24:49 +02:00
Donn
74421b577f Add Placement Padding To Global Placement As Well (#811) 2021-12-29 06:17:46 +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
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
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
Manar
a0948761b7 Update write_sdf (#748) 2021-12-13 23:59:54 +02:00
Matt Liberty
412fcf0d46 Update OpenROAD version + Updates for OpenDB API changes (#756) 2021-12-13 23:20:05 +02:00
Manar
537e432987 Add variable for enabling -post_cts_disable option (#749) 2021-12-07 07:23:25 +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
520f2f136a Update OpenROAD, Magic and CVC (#734)
CVC now also points at master instead of @donn's fork
2021-11-24 14:59:08 +02:00
Anton Blanchard
65da365962 Fix typos in PL_RESIZER_REPAIR_TIE_FANOUT option (#732)
[skip ci]
2021-11-24 14:50:31 +02:00
Harald Pretl
fe42719460 Fix reading multiple liberty files during STA (#728)
Resolves #727
2021-11-23 20:08:24 +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
Manar
e1883edfbc Update resizer (#726) 2021-11-22 15:59:18 +02:00
Manar
e0e6fbc1bd Add option for enabling/disabling repair_tie_fanout (#722)
* Add option for enabling/disabling repair_tie_fanout

* add escape characters

* Add option for enabling sta report power
2021-11-19 20:30:08 +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
f77d85eb21 Replace internal grt:: calls (#719)
Also:
* create layer_adjustments file that's source by the other two files
* use lindex TECH_METAL_LAYERS instead of findRoutingLayer
2021-11-17 20:29:51 +02:00
Anton Blanchard
46a0287190 Fix a few typos (#717)
[skip ci]
2021-11-17 19:20:42 +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
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
Manar
9d2c4de07e Bring back FP_IO_MIN_DISTANCE (#705)
* Bring back FP_IO_MIN_DISTANCE

* Set io min distance default to 3
2021-11-12 23:14:54 +02:00
Manar
665626bb1f Fix typo in clock routing layer variables (#703)
* Fix typo in clock routing layer variables

* Expose max_wire_length option for the repiar_clock_nets command
2021-11-12 14:54: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
Anton Blanchard
b41737e609 Disable timing and routability driven modes when not wanted (#700)
In global placement, OpenLane assumes timing and routability driven modes
are disabled. This is not the case when calling the OpenROAD APIs
directly, so explicitly disable them.
2021-11-11 03:47:33 +02:00
Manar
8c55f4d9f0 Read additional .lib files for macros (#687) 2021-11-01 14:04:40 +02:00
Manar
db8505acbc Update set_wire_rc command (#682) 2021-11-01 13:47:44 +02:00
Manar
ff6eec246a Unify the way we are running STA (#681)
* Fix genericfir timing vios

* Run sta inside the step script
2021-10-28 18:06:49 +02:00
Manar
8d686c081c Update openroad + add multi-corner timing analysis (#680)
* Update OR App

* Fix overflow iterations

* Fix repair_tie_fanout command

* Update design config

* Add multi-corner analysis
2021-10-27 15:12:35 +02:00
Manar
354a25f774 Update resizer options (#678)
* Update design configuration to address timing violations

* update resizer scripts

- added repair_tie_fanout command
- added catch to the repair_timing commands to prevent exiting when the utilization limit is reached

* Reset routing_cores to 2
2021-10-26 16:57:47 +02:00
Donn
e8f4a88f66 Last Minute Fixes for MPW3 (#675) 2021-10-25 20:32:41 +02:00
Manar
003992ec39 Update timing signoff methodology (#674)
- Removed the `-min/-max` options from read_liberty since they shouldn't be used for modeling different process corners (https://github.com/The-OpenROAD-Project/OpenLane/issues/671). 
- Updated the base SDC file to include information about clock uncertainty, clock transition, and timing derate.
- Updated the timing/design optimizations to be done at the typical corner.
- Updated the STA script to generate the SDF file after the routing is concluded. 
- Updated the STA script to report more information like clock skew, worst slack, power, area.
- Added some fixes to the report generation to retain the log file index so that we can easily keep track of when the reports are generated.
2021-10-25 16:44:59 +02:00
Manar
4e158a77ef Quit on timing violations at the typical corner (#659)
* Report clock skew in or_sta.tcl

* Error on timing violations at the typical corner and warn on timing violations at the typical corner

* Reset or_sta.tcl

* Timing Report Fixes + Only warnings on slew by default

~ Tweaks to PDK version verification (broken on some platforms)
~ Resizer default value changes
~ Tweaks to report generation, report.sh removed
~ Run folders now use a full timestamp
- Empty timing reports no longer generated

* Warn on max slew violations

* Fix odd 'exceptional failure' issue

Co-authored-by: Mohamed Gaber <me@donn.website>
2021-10-21 16:41:08 +02:00
Manar
23b9177502 Move pdn configuration to openlane (#653) 2021-10-20 11:59:29 +02:00
manarabdelaty
1a4720f1ca Expose repair_timing/repair_design options as env variables 2021-10-18 13:41:28 +02:00
manarabdelaty
c26f22c615 Update rsz scripts to read min/max liberty files 2021-10-14 14:26:44 +02:00
Manar
3e22ba971d Propagate clock after CTS (#645) 2021-10-13 14:14:43 +02:00
Manar
be255aaf79 Set resistance & capacitence before running estimate_parasitics (#637) 2021-10-07 14:43:02 +02:00
Manar
291139ee4f Update SDC file carry over (#635)
- SDC file is carried across the stages with two variables SAVE_SDC and CURRENT_SDC to avoid having conditional statements on whether a stage is enabled/disabled 
- Moved the `sta.tcl` script under the openroad script directory 
- PDK commit is updated to propagate the new changes made to the `DEFAULT_MAX_TRAN` value https://github.com/RTimothyEdwards/open_pdks/pull/164
- Add base.sdc file to the manual_macro_placement test
  - The general sdc file doesn't support multiple clock ports so a custom one is needed for this design
  - This previously passed through the flow because sdc carry-over was conditioned on clock tree synthesis which is disabled for this design
2021-10-07 12:41:12 +02:00