diff --git a/docs/_templates/generate_configvar_docs/common_pdk_vars.md b/docs/_templates/generate_configvar_docs/common_pdk_vars.md
index 2569f7815..f026353f3 100644
--- a/docs/_templates/generate_configvar_docs/common_pdk_vars.md
+++ b/docs/_templates/generate_configvar_docs/common_pdk_vars.md
@@ -20,10 +20,10 @@ ${"##"} PDK-Level
These are variables that affect the entire PDK.
-| Variable Name | Type | Description | Units |
-| - | - | - | - |
+| Variable Name | Type | Description | Units | Deprecated Names |
+| - | - | - | - | - |
%for var in pdk_variables:
-| `${var.name}`{#${var._get_docs_identifier()}} | ${var.type_repr_md(for_document=True)} | ${var.desc_repr_md()} | ${var.units or ""} |
+| `${var.name}`{#${var._get_docs_identifier()}} | ${var.type_repr_md(for_document=True)} | ${var.desc_repr_md()} | ${var.units or ""} | ${var.get_deprecated_names_md()|join("
")} |
%endfor
(univ_flow_cvars_scl)=
@@ -31,8 +31,8 @@ ${"##"} SCL-Level
These are variables that affect a specific standard-cell library.
-| Variable Name | Type | Description | Units |
-| - | - | - | - |
+| Variable Name | Type | Description | Units | Deprecated Names |
+| - | - | - | - | - |
%for var in scl_variables:
-| `${var.name}`{#${var._get_docs_identifier()}} | ${var.type_repr_md(for_document=True)} | ${var.desc_repr_md()} | ${var.units or ""} |
+| `${var.name}`{#${var._get_docs_identifier()}} | ${var.type_repr_md(for_document=True)} | ${var.desc_repr_md()} | ${var.units or ""} | ${var.get_deprecated_names_md()|join("
")} |
%endfor
diff --git a/docs/_templates/generate_configvar_docs/common_vars.md b/docs/_templates/generate_configvar_docs/common_vars.md
index 02f2e17fc..d6395e35a 100644
--- a/docs/_templates/generate_configvar_docs/common_vars.md
+++ b/docs/_templates/generate_configvar_docs/common_vars.md
@@ -12,8 +12,8 @@ can freely override these values.
optional and behave accordingly.
```
-| Variable Name | Type | Description | Default | Units |
-| - | - | - | - | - |
+| Variable Name | Type | Description | Default | Units | Deprecated Names |
+| - | - | - | - | - | - |
%for var in option_variables:
-| [`${var.name}`]{#${var._get_docs_identifier()}} | ${var.type_repr_md(for_document=True)} | ${var.desc_repr_md()} | `${var.default}` | ${var.units or ""} |
+| [`${var.name}`]{#${var._get_docs_identifier()}} | ${var.type_repr_md(for_document=True)} | ${var.desc_repr_md()} | `${var.default}` | ${var.units or ""} | ${var.get_deprecated_names_md()|join("
")} |
%endfor
diff --git a/docs/source/faq.md b/docs/source/faq.md
index 491d1c6e7..b2f25111b 100644
--- a/docs/source/faq.md
+++ b/docs/source/faq.md
@@ -7,7 +7,7 @@
## General
-(faq-whats-openlane=)
+(faq-whats-openlane)=
### What is OpenLane?
diff --git a/openlane/config/variable.py b/openlane/config/variable.py
index ab4899fb6..29e0e85d3 100644
--- a/openlane/config/variable.py
+++ b/openlane/config/variable.py
@@ -381,6 +381,14 @@ def type_repr_md(self, for_document: bool = False) -> str: # pragma: no cover
return repr_type(self.type).replace("|", "|
")
return repr_type(self.type)
+ def get_deprecated_names_md(self) -> List[str]:
+ deprecated_names_md = []
+ for deprecated_name in self.deprecated_names:
+ if not isinstance(deprecated_name, str):
+ deprecated_name, _ = deprecated_name
+ deprecated_names_md.append(f"`{deprecated_name}`")
+ return deprecated_names_md
+
def desc_repr_md(self) -> str: # pragma: no cover
"""
:returns: The description, but with newlines escaped for Markdown.
@@ -710,7 +718,7 @@ def _get_docs_identifier(self, parent: Optional[str] = None) -> str:
return identifier
def __hash__(self) -> int:
- return hash((self.name, self.type, self.default))
+ return hash((self.name, str(self.type), str(self.default)))
def __eq__(self, rhs: object) -> bool:
if not isinstance(rhs, Variable):
diff --git a/openlane/flows/flow.py b/openlane/flows/flow.py
index 192243b1d..a39994fb1 100644
--- a/openlane/flows/flow.py
+++ b/openlane/flows/flow.py
@@ -419,14 +419,14 @@ def get_help_md(Self) -> str: # pragma: no cover
#### Flow-specific Configuration Variables
- | Variable Name | Type | Description | Default | Units |
- | - | - | - | - | - |
+ | Variable Name | Type | Description | Default | Units | Deprecated Names |
+ | - | - | - | - | - | - |
"""
)
for var in flow_config_vars:
units = var.units or ""
pdk_superscript = "PDK" if var.pdk else ""
- result += f"| `{var.name}`{{#{var._get_docs_identifier(Self.__name__)}}}{pdk_superscript} | {var.type_repr_md()} | {var.desc_repr_md()} | `{var.default}` | {units} |\n"
+ result += f"| `{var.name}`{{#{var._get_docs_identifier(Self.__name__)}}}{pdk_superscript} | {var.type_repr_md()} | {var.desc_repr_md()} | `{var.default}` | {units} | {'
'.join(var.get_deprecated_names_md())} |\n"
result += "\n"
if len(Self.Steps):
diff --git a/openlane/steps/step.py b/openlane/steps/step.py
index 15d18d575..85114a25f 100644
--- a/openlane/steps/step.py
+++ b/openlane/steps/step.py
@@ -678,14 +678,14 @@ def get_help_md(
({Self.id.lower()}-configuration-variables)=
#### Configuration Variables
- | Variable Name | Type | Description | Default | Units |
- | - | - | - | - | - |
+ | Variable Name | Type | Description | Default | Units | Deprecated Names |
+ | - | - | - | - | - | - |
"""
)
- for var in Self.config_vars:
+ for var in set(Self.config_vars):
units = var.units or ""
pdk_superscript = "PDK" if var.pdk else ""
- result += f"| `{var.name}`{{#{var._get_docs_identifier(Self.id)}}}{pdk_superscript} | {var.type_repr_md(for_document=True)} | {var.desc_repr_md()} | `{var.default}` | {units} |\n"
+ result += f"| `{var.name}`{{#{var._get_docs_identifier(Self.id)}}}{pdk_superscript} | {var.type_repr_md(for_document=True)} | {var.desc_repr_md()} | `{var.default}` | {units} | {'
'.join(var.get_deprecated_names_md())} |\n"
result += "\n"
result = (