Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
26 changes: 26 additions & 0 deletions src/glayout/pdk/gf180_mapped/gf180_mapped.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@
"lvpwell": (204, 0),
"dnwell": (12, 0),
"CAP_MK": (117, 5),
# BJT layers
"drc_bjt": (127, 5),
"lvs_bjt": (118, 5),
# _Label Layer Definations
"metal5_label": (81,10),
"metal4_label": (46,10),
Expand Down Expand Up @@ -60,6 +63,9 @@
"pwell": "lvpwell",
"dnwell": "dnwell",
"capmet": "CAP_MK",
# bjt layer
"drc_bjt": "drc_bjt",
"lvs_bjt": "lvs_bjt",
# _pin layer ampping
"met5_pin": "metal5_label",
"met4_pin": "metal4_label",
Expand All @@ -78,6 +84,25 @@
"active_diff_label": "comp_label",
}

# Add valid BJT sizes

gf180_valid_bjt_sizes = {
"npn" : [
(0.54, 2.0),
(0.54, 4.0),
(0.54, 8.0),
(0.54, 16.0),
(5.0, 5.0),
(10.0, 10.0),
],
"pnp" : [
(5.0, 0.42),
(5.0, 5.0),
(10.0, 0.42),
(10.0, 10.0),
],
}

# note for DRC, there is mim_option 'A'. This is the one configured for use

gf180_lydrc_file_path = Path(__file__).resolve().parent / "gf180mcu_drc.lydrc"
Expand Down Expand Up @@ -111,6 +136,7 @@
layers=LAYER,
pdk_files=pdk_files,
grules=grulesobj,
valid_bjt_sizes=gf180_valid_bjt_sizes
)

# configure the grid size and other settings
Expand Down
8 changes: 8 additions & 0 deletions src/glayout/pdk/ihp130_mapped/ihp130_mapped.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,13 @@
"active_diff_label": "activ_pin",
}

# Add valid BJT sizes

ip130_valid_bjt_sizes = {
"npn" : [ ],
"pnp" : [ ],
}

ip130_lydrc_file_path = Path(__file__).resolve().parent / "ihp130_drc.lydrc"

if os.getenv('PDK_ROOT') is None:
Expand Down Expand Up @@ -139,6 +146,7 @@
layers=LAYER,
pdk_files=pdk_files,
grules=grulesobj,
valid_bjt_sizes=ip130_valid_bjt_sizes
)

# Configure GDS write precision and cell decorator cache
Expand Down
4 changes: 4 additions & 0 deletions src/glayout/pdk/mappedpdk.py
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,8 @@ class MappedPDK(Pdk):
"via4",
"met5",
"capmet",
"lvs_bjt",
"drc_bjt",
# _pin layers
"met5_pin",
"met4_pin",
Expand Down Expand Up @@ -292,6 +294,8 @@ class MappedPDK(Pdk):
grules: dict[StrictStr, dict[StrictStr, Optional[dict[StrictStr, Any]]]]
pdk_files: dict[StrictStr, Union[PathType, None]]

valid_bjt_sizes: dict[StrictStr, list[tuple[float,float]]]

@validator("models")
def models_check(cls, models_obj: dict[StrictStr, StrictStr]):
for model in models_obj.keys():
Expand Down
10 changes: 9 additions & 1 deletion src/glayout/pdk/sky130_mapped/sky130_mapped.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,13 @@

}

# Add valid BJT sizes

sky130_valid_bjt_sizes = {
"npn" : [ ],
"pnp" : [ ],
}

# openfasoc_dir = Path(__file__).resolve().parent.parent.parent.parent.parent.parent.parent

klayout_drc_file = Path(__file__).resolve().parent / "sky130.lydrc"
Expand Down Expand Up @@ -139,7 +146,8 @@
layers=LAYER,
grules=grulesobj,
pdk_files=pdk_files,
default_decorator=sky130_add_npc
default_decorator=sky130_add_npc,
valid_bjt_sizes=sky130_valid_bjt_sizes
)
# set the grid size
sky130_mapped_pdk.gds_write_settings.precision = 5*10**-9
Expand Down
Loading