Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/dev' into flip_sites
Browse files Browse the repository at this point in the history
  • Loading branch information
donn committed Feb 17, 2025
2 parents 87a58af + 02c4b58 commit c29179d
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 21 deletions.
7 changes: 5 additions & 2 deletions Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,13 @@

* All variables prefixed `FP_IO_` have been renamed, now prefixed `IO_PIN_`.

* `Odb.DiodesOnPorts`, `Odb.PortDiodePlacement`, `Odb.FuzzyDiodePlacement`,
`Odb.HeuristicDiodeInsertion`
* `Odb.DiodesOnPorts`, `Odb.PortDiodePlacement`
* Steps no longer assume `DIODE_CELL` exists and fall back to doing nothing.

* `Odb.FuzzyDiodePlacement`, `Odb.HeuristicDiodeInsertion`
* Steps no longer assume `DIODE_CELL` exists and fall back to doing nothing.
* `HEURISTIC_ANTENNA_THRESHOLD` has been made optional, steps do nothing if
it is unset.

* `OpenROAD.*`

Expand Down
4 changes: 2 additions & 2 deletions openlane/scripts/odbpy/diodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -330,8 +330,8 @@ def execute(self):
"--threshold",
"threshold_microns",
type=Decimal,
default=None,
help="Minimum Manhattan distance of a net to be considered an antenna risk requiring a diode. By default, the value used is 200 * the minimum site width.",
required=True,
help="Minimum Manhattan distance of a net to be considered an antenna risk requiring a diode.",
)
@click_odb
def place(
Expand Down
32 changes: 17 additions & 15 deletions openlane/steps/odb.py
Original file line number Diff line number Diff line change
Expand Up @@ -768,7 +768,7 @@ class FuzzyDiodePlacement(OdbpyStep):
config_vars = [
Variable(
"HEURISTIC_ANTENNA_THRESHOLD",
Decimal,
Optional[Decimal],
"A Manhattan distance above which a diode is recommended to be inserted by the heuristic inserter. If not specified, the heuristic algorithm.",
units="µm",
pdk=True,
Expand All @@ -791,20 +791,14 @@ def get_subcommand(self) -> List[str]:
def get_command(self) -> List[str]:
cell, pin = self.config["DIODE_CELL"].split("/")

threshold_opts = []
if threshold := self.config["HEURISTIC_ANTENNA_THRESHOLD"]:
threshold_opts = ["--threshold", threshold]

return (
super().get_command()
+ [
"--diode-cell",
cell,
"--diode-pin",
pin,
]
+ threshold_opts
)
return super().get_command() + [
"--diode-cell",
cell,
"--diode-pin",
pin,
"--threshold",
str(self.config["HEURISTIC_ANTENNA_THRESHOLD"]),
]

def run(self, state_in: State, **kwargs) -> Tuple[ViewsUpdate, MetricsUpdate]:
if self.config["GPL_CELL_PADDING"] == 0:
Expand All @@ -816,6 +810,10 @@ def run(self, state_in: State, **kwargs) -> Tuple[ViewsUpdate, MetricsUpdate]:
info(f"'DIODE_CELL' not set. Skipping '{self.id}'…")
return {}, {}

if self.config["HEURISTIC_ANTENNA_THRESHOLD"] is None:
info(f"'HEURISTIC_ANTENNA_THRESHOLD' not set. Skipping '{self.id}'…")
return {}, {}

return super().run(state_in, **kwargs)


Expand Down Expand Up @@ -854,6 +852,10 @@ def run(self, state_in: State, **kwargs) -> Tuple[ViewsUpdate, MetricsUpdate]:
if self.config["DIODE_CELL"] is None:
info(f"'DIODE_CELL' not set. Skipping '{self.id}'…")
return {}, {}
if self.config["HEURISTIC_ANTENNA_THRESHOLD"] is None:
info(f"'HEURISTIC_ANTENNA_THRESHOLD' not set. Skipping '{self.id}'…")
return {}, {}

return super().run(state_in, **kwargs)


Expand Down
2 changes: 1 addition & 1 deletion openlane/steps/openroad.py
Original file line number Diff line number Diff line change
Expand Up @@ -977,7 +977,7 @@ class Floorplan(OpenROADStep):
Variable(
"FP_FLIP_SITES",
Optional[List[str]],
"Flip this site vertically. Useful in niche alignment scenarios where single-height cells have ground at the south side and double-height cells have power at the south side, causing a short. In that situation, flipping the sites for single-height cells resolves the issue.",
"Flip these sites vertically. Useful in niche alignment scenarios where single-height cells have ground at the south side and double-height cells have power at the south side, causing a short. In that situation, flipping the sites for single-height cells resolves the issue.",
pdk=True,
),
Variable(
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "openlane"
version = "3.0.0.dev17"
version = "3.0.0.dev18"
description = "An infrastructure for implementing chip design flows"
authors = ["Efabless Corporation and Contributors <donn@efabless.com>"]
readme = "Readme.md"
Expand Down

0 comments on commit c29179d

Please sign in to comment.