fix(tt_tool): vary RT_MAX_LAYER per tech

Each tech has a different metal stackup, so user projects get a different top routing metal layer. tt-support-tools now handles this instead of the user having to worry about this when switching PDKs.
This commit is contained in:
Uri Shaked
2025-09-18 11:45:44 +03:00
parent 84efb79dd7
commit 305f3ecaf8
2 changed files with 4 additions and 0 deletions
+1
View File
@@ -482,6 +482,7 @@ class Project:
"VERILOG_FILES": [f"dir::{src}" for src in self.sources],
"DIE_AREA": die_area,
"FP_DEF_TEMPLATE": def_template,
"RT_MAX_LAYER": self.tech.project_top_metal_layer,
}
write_config(config, os.path.join(self.src_dir, "user_config"), ("json",))
+3
View File
@@ -18,6 +18,7 @@ class Tech(Protocol):
tt_corner: str
cell_regexp: str
netlist_type: Literal["pnl", "nl"]
project_top_metal_layer: str
""" These layers will be removed from the SVG render of the layout """
label_layers: List[Tuple[int, int]]
@@ -43,6 +44,7 @@ class Sky130Tech(Tech):
tt_corner = "nom_tt_025C_1v80"
cell_regexp = r"sky130_(?P<cell_lib>\S+)__(?P<cell_name>\S+)_(?P<cell_drive>\d+)"
netlist_type = "pnl"
project_top_metal_layer = "met4"
label_layers = [
(64, 59), # pwell.label
(64, 5), # nwell.label
@@ -94,6 +96,7 @@ class IHPTech(Tech):
tt_corner = "nom_typ_1p20V_25C"
cell_regexp = r"sg13g2_(?P<cell_name>\S+)_(?P<cell_drive>\d+)"
netlist_type = "nl"
project_top_metal_layer = "Metal5"
label_layers = [
(8, 1), # Metal1.label
(8, 25), # Metal1.text