Source code for fabulous.fabric_generator.gds_generator.steps.custom_pdn
"""FABulous GDS Generator - Custom PDN Generation Step."""
from importlib import resources
from pathlib import Path
from typing import Optional
from librelane.config.variable import Variable
from librelane.steps.common_variables import pdn_variables
from librelane.steps.openroad import OpenROADStep
from librelane.steps.step import (
Step,
)
@Step.factory.register()
[docs]
class CustomGeneratePDN(OpenROADStep):
"""Creates a power distribution network on a floorplanned ODB file."""
id = "FABulous.GeneratePDN"
name = "Generate PDN"
long_name = "Power Distribution Network Generation"
config_vars = (
OpenROADStep.config_vars
+ pdn_variables
+ [
Variable(
"PDN_CFG",
Optional[Path], # librelane limitation # noqa: UP045
"A custom PDN configuration file. If not provided, "
"the default PDN config will be used. This default config is a custom "
"config that differ from the librelane default.",
default=str(
resources.files("fabulous.fabric_generator.gds_generator.script")
/ "pdn_config.tcl"
),
)
]
)
[docs]
def get_script_path(self) -> str:
"""Get the path to the PDN generation script."""
return str(
resources.files("fabulous.fabric_generator.gds_generator.script")
/ "pdn.tcl"
)