Files
Mohamed Gaber 315e8a220f The Override Overhaul (#482)
## 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
2024-07-02 09:06:53 +00:00
..