Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/dev' into pnr-corners
Browse files Browse the repository at this point in the history
Signed-off-by: Kareem Farid <kareefardi@users.noreply.github.com>
  • Loading branch information
kareefardi committed Jan 2, 2025
2 parents 9449d6d + 39a17eb commit a6f7ef8
Show file tree
Hide file tree
Showing 40 changed files with 1,079 additions and 421 deletions.
132 changes: 132 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,138 @@
## Documentation
-->

# 3.0.0

## Steps

* `OpenROAD.CTS`
* Added flags `CTS_OBSTRUCTION_AWARE` and `CTS_BALANCE_LEVELS`
* Added `CTS_SINK_BUFFER_MAX_CAP_DERATE_PCT`
* Added `CTS_DELAY_BUFFER_DERATE_PCT`

* `OpenROAD.DetailedRouting`
* Added `DRT_SAVE_SNAPSHOTS` which enables saving snapshots of the layout each detalied routing iteration.
* Added `DRT_SAVE_DRC_REPORT_ITERS`


## Tool Updates

* Updated nix-eda
* Updated nixpkgs to nixos-24.11 (@ `3c53b4b`)
* Updated KLayout to `0.29.9`
* Updated Magic to `8.3.503`
* Updated Netgen to `1.5.287`
* Updated ioplace-parser to`0.4.0`
* Updated OpenROAD to `1d61007`
* Updated OpenSTA to `aa598a2`

## Misc. Enhancements/Bugfixes

* `openlane.state`
* `DesignFormat`
* Now a dataclass encapsulating the information about the DesignFormat
directly.
* `.factory` is a factory for retrieval of DesignFormats by ID
* `DesignFormats` may be registered to the factory using `.register()`
* Registrations for previously included `DesignFormat`s now moved to
appropriate files.
* Renamed `POWERED_NETLIST_NO_PHYSICAL_CELLS` to
`LOGICAL_POWERED_NETLIST`
* Renamed `POWERED_NETLIST_SDF_FRIENDLY` to
`SDF_FRIENDLY_POWERED_NETLIST`
* `State`
* States initialized with keys that have values that are `None` now remove
said keys.

## API Breaks

* `openlane.steps`

* `TclStep` now uses the IDs uppercased for `CURRENT_` and `SAVE_`.

* `openlane.state`

* `State` no longer includes all `DesignFormat`s as guaranteed keys and `.get`
must be used to avoide `KeyErrors`
* `DesignFormat` is no longer an enumeration and is not iterable. However, to
avoid massive codebase changes, you can still access `DesignFormat`s
registered to the factory using the dot notation (e.g.
`DesignFormat.NETLIST`), using either their `id` or any of their `alts`.
* Removed `DesignFormatObject`: the DesignFormat class itself is now a
dataclass incorporating these fields, except `name`, which has been renamed
to `full_name`. The enumeration's name has been added to `alts`, while
`.name` is now an alias for `.id`.

# 2.3.0

## Steps

* `OpenROAD.GlobalPlacement`

* Exposed `-routability_check_overflow` argument as new variable
`PL_ROUTABILITY_OVERFLOW_THRESHOLD`.

* `Yosys.*Synthesis`

* Created new variable `SYNTH_HIERARCHY_MODE`, replacing `SYNTH_NO_FLAT`.
There are three options, `flatten`, `deferred_flatten` and `keep`. The first
two correspond to `SYNTH_NO_FLAT` being false and true respectively. The
third keeps the hierarchy in the final netlist.
* Created new variable `SYNTH_TIE_UNDEFINED` to customize whether undefined
and undriven values are tied low, high, or left as-is.
* Created new variable `SYNTH_WRITE_NOATTR` to allow attributes to be
propagated to the final netlist.

* Created `Yosys.Resynthesis`

* Like `Yosys.Synthesis`, but uses the current input state netlist as an input
instead of RTL files

## CLI

* Added new option: `-e`/`--initial-state-element-override`: allows an element
in the initial state to be overridden straight from the commandline.

# 2.2.9

## Steps

* `Yosys.JsonHeader`, `Yosys.Synthesis`

* Fixed `VERILOG_INCLUDE_DIRS` being a list of strings instead of a list of
`Path`s.

# 2.2.8

## Steps

* `Checker.*Violations`

* Changed `TIMING_VIOLATION_CORNERS` to a PDK variable to avoid breaking PDKs
without `tt` in corner names.

# 2.2.7

## Steps

* `OpenROAD.WriteViews`

* Fixed step not being registered to factory object.

# 2.2.6

## Steps

* `OpenROAD.ResizerTimingPostGRT`

* Fixed `GRT_RESIZER_GATE_CLONING` incorrectly applied to hold fixing instead
of setup fixing.

* `OpenROAD.ResizerTimingPostCTS`

* Fixed `PL_RESIZER_GATE_CLONING` incorrectly applied to hold fixing instead
of setup fixing.

# 2.2.5

## Steps
Expand Down
31 changes: 15 additions & 16 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 12 additions & 7 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# limitations under the License.
{
description = "open-source infrastructure for implementing chip design flows";

nixConfig = {
extra-substituters = [
"https://openlane.cachix.org"
Expand All @@ -33,7 +33,7 @@
};

inputs.libparse.inputs.nixpkgs.follows = "nix-eda/nixpkgs";
inputs.ioplace-parser.inputs.nixpkgs.follows = "nix-eda/nixpkgs";
inputs.ioplace-parser.inputs.nix-eda.follows = "nix-eda";
inputs.volare.inputs.nixpkgs.follows = "nix-eda/nixpkgs";
inputs.devshell.inputs.nixpkgs.follows = "nix-eda/nixpkgs";

Expand All @@ -54,13 +54,17 @@
default = lib.composeManyExtensions [
(import ./nix/overlay.nix)
(nix-eda.flakesToOverlay [libparse ioplace-parser volare])
(pkgs': pkgs: {
yosys-sby = (pkgs.yosys-sby.override { sha256 = "sha256-Il2pXw2doaoZrVme2p0dSUUa8dCQtJJrmYitn1MkTD4="; });
})
(
pkgs': pkgs: let
callPackage = lib.callPackageWith pkgs';
in {
or-tools_9_11 = callPackage ./nix/or-tools_9_11.nix {
inherit (pkgs'.darwin) DarwinTools;
stdenv =
if pkgs'.system == "x86_64-darwin"
then (pkgs'.overrideSDK pkgs'.stdenv "11.0")
else pkgs'.stdenv;
};
colab-env = callPackage ./nix/colab-env.nix {};
opensta = callPackage ./nix/opensta.nix {};
openroad-abc = callPackage ./nix/openroad-abc.nix {};
Expand Down Expand Up @@ -112,8 +116,9 @@

packages = nix-eda.forAllSystems (
system: let
pkgs = (self.legacyPackages."${system}");
in {
pkgs = self.legacyPackages."${system}";
in
{
inherit (pkgs) colab-env opensta openroad-abc openroad;
inherit (pkgs.python3.pkgs) openlane;
default = pkgs.python3.pkgs.openlane;
Expand Down
15 changes: 10 additions & 5 deletions nix/create-shell.nix
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@
{
extra-packages ? [],
extra-python-packages ? [],
extra-env ? [],
openlane-plugins ? [],
include-openlane ? true
include-openlane ? true,
}: ({
lib,
git,
Expand All @@ -31,9 +32,13 @@
openlane = python3.pkgs.openlane;
openlane-env = (
python3.withPackages (pp:
(if include-openlane then [openlane] else openlane.propagatedBuildInputs)
++ extra-python-packages
++ openlane-plugins)
(
if include-openlane
then [openlane]
else openlane.propagatedBuildInputs
)
++ extra-python-packages
++ openlane-plugins)
);
openlane-env-sitepackages = "${openlane-env}/${openlane-env.sitePackages}";
pluginIncludedTools = lib.lists.flatten (map (n: n.includedTools) openlane-plugins);
Expand Down Expand Up @@ -62,7 +67,7 @@ in
name = "NIX_PYTHONPATH";
value = "${openlane-env-sitepackages}";
}
];
] ++ extra-env;
devshell.interactive.PS1 = {
text = ''PS1="${prompt}"'';
};
Expand Down
Loading

0 comments on commit a6f7ef8

Please sign in to comment.