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 = (