mirror of
https://github.com/efabless/openlane2.git
synced 2026-05-30 00:03:47 +08:00
## CLI
* Overhauled how the PDK commandline options work, using a decorator instead of doing everything in a callback
* `--smoke-test/--run-example` are now no longer callbacks, and `--run-example` now supports more options (e.g. another PDK, another flow, etc.)
## Steps
* Created `OpenROAD.DEFtoODB`
* Useful for custom flows, where the DEF is modified but the ODB needs to be updated to reflect these modifications
## Flows
* `VHDLClassic` is now `Classic` with appropriate Substitutions, see Misc.
## Misc Enhancements/Updates
* `SequentialFlow`
* Substitutions can now
* be done at the class level by assigning to `Substitutions`
* be done in `config.json` files using a dictionary in the field `.meta.substituting_steps`
* emplace steps before or after existing steps, e.g. `+STEP`, `-STEP`
* Step names for `from`, `to`, `skip` and `only` are now fuzzy-matched using `rapidfuzz` to give suggestions in error messages
* If the environment variable `_i_want_openlane_to_fuzzy_match_steps_and_im_willing_to_accept_the_risks` is set to `1`, the suggestions are used automatically (not recommended)
* Gating config vars are now simply removed if they do not target a valid step (so removed steps in a substituted flow do not cause a FlowException)
## Documentation
* Updated the architecture document to reflect changes and clarify some elements.
* Updated Usage/Writing Custom Flows to document step substitution
* Created a new document on writing plugins
## Tool Updates
* Upgrade `nix-eda`
* `forAllSystems` now composes overlays for nixpkgs based on the `withInputs` field, allowing for easier overriding
* `nixpkgs` -> 24.05
* `klayout` -> `0.29.1`
* `ioplace_parser` -> `0.3.0`
* Python build tool changed from `setuptools` to `poetry`, which properly verifies that all version ranges are within constraints
* Updated wrong Python package version ranges that all happen to work
* Nix devshells now use [numtide/devshell](https://github.com/numtide/devshell), which creates an executable to enter the environment, allowing for easy repacking