Skip to content
Open
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
242 changes: 208 additions & 34 deletions src/glayout/backend/_gdstk.py

Large diffs are not rendered by default.

17 changes: 15 additions & 2 deletions src/glayout/pdk/gf180_mapped/gf180_mapped.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
# Actual Pin definations for GlobalFoundries 180nmMCU from the PDK manual
# Ref: https://gf180mcu-pdk.readthedocs.io/en/latest/

#LAYER["fusetop"]=(75, 0)
LAYER = {
"metal5": (81, 0),
"via4": (41, 0),
Expand All @@ -29,7 +28,19 @@
"nwell": (21, 0),
"lvpwell": (204, 0),
"dnwell": (12, 0),
# MIM capacitor, option A. The top plate is FuseTop; CAP_MK is only a
# marker that has to enclose it (rule MIM.7). Drawing the marker as if it
# were the plate leaves the cap with no dielectric at all, so the via2
# array that contacts the top plate lands on the bottom plate instead and
# shorts the two together.
"fusetop": (75, 0),
"CAP_MK": (117, 5),
# Segundo marcador del MIM. MIM.7 solo pide CAP_MK, asi que con ese solo
# el DRC pasa -- pero la extraccion de LVS hace
# fusetop.interacting(cap_mk).interacting(mim_l_mk)
# y sin este el conjunto sale vacio: el condensador es legal y a la vez
# invisible para el LVS.
"MIM_L_MK": (117, 10),
# BJT layers
"drc_bjt": (127, 5),
"lvs_bjt": (118, 5),
Expand Down Expand Up @@ -62,7 +73,9 @@
"nwell": "nwell",
"pwell": "lvpwell",
"dnwell": "dnwell",
"capmet": "CAP_MK",
"capmet": "fusetop",
"capmet_mk": "CAP_MK",
"capmet_mk2": "MIM_L_MK",
# bjt layer
"drc_bjt": "drc_bjt",
"lvs_bjt": "lvs_bjt",
Expand Down
3 changes: 3 additions & 0 deletions src/glayout/pdk/mappedpdk.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,9 @@ class MappedPDK(Pdk):
"via4",
"met5",
"capmet",
# optional marker some processes require around the cap plate
"capmet_mk",
"capmet_mk2",
"lvs_bjt",
"drc_bjt",
# _pin layers
Expand Down
7 changes: 7 additions & 0 deletions src/glayout/primitives/mimcap.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,13 @@ def mimcap(
)
bottom_met_enclosure = pdk.get_grule(capmetbottom,"capmet")["min_enclosure"]
mim_cap.add_padding(layers=(pdk.get_glayer(capmetbottom),),default=bottom_met_enclosure)
# Some processes require a marker enclosing the cap plate -- gf180 rule
# MIM.7 asks for CAP_MK around FuseTop. PDKs without such a marker just
# do not map the glayer.
for mk in ("capmet_mk", "capmet_mk2"):
if mk in pdk.glayers:
marker_enclosure = pdk.get_grule("capmet").get("mk_enclosure", bottom_met_enclosure)
mim_cap.add_padding(layers=(pdk.get_glayer(mk),), default=marker_enclosure)
# flatten and create ports
mim_cap = add_ports_perimeter(mim_cap, layer=pdk.get_glayer(capmetbottom), prefix="bottom_met_")
mim_cap.add_ports(top_met_ref.get_ports_list())
Expand Down
7 changes: 4 additions & 3 deletions tutorial/BJT_tutorials/test_bjt_gdsfactory.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,10 @@
"source": [
"from glayout import MappedPDK, sky130 , gf180\n",
"#from gdsfactory.cell import cell\n",
"from gdsfactory import Component\n",
"from gdsfactory.geometry import boolean\n",
"from gdsfactory.components import text_freetype, rectangle, array, rectangular_ring"
"from glayout.backend import Component\n",
"from glayout.backend import boolean\n",
"from glayout.backend import rectangle, rectangular_ring\n",
"from gdsfactory.components import text_freetype, array"
]
},
{
Expand Down
4 changes: 2 additions & 2 deletions tutorial/GLayout_Cmirror.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
"from glayout.util.comp_utils import move, movex, movey, align_comp_to_port, evaluate_bbox, prec_center\n",
"from glayout.routing.straight_route import straight_route\n",
"from glayout.routing.c_route import c_route\n",
"from gdsfactory import Component\n",
"from glayout.backend import Component\n",
"import gdstk\n",
"import svgutils.transform as sg\n",
"import IPython.display\n",
Expand Down Expand Up @@ -103,7 +103,7 @@
"from glayout.util.comp_utils import evaluate_bbox, prec_center\n",
"from glayout.routing.straight_route import straight_route\n",
"from glayout.routing.c_route import c_route\n",
"from gdsfactory import Component\n"
"from glayout.backend import Component\n"
]
},
{
Expand Down
4 changes: 2 additions & 2 deletions tutorial/GLayout_Introduction.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,8 @@
"metadata": {},
"outputs": [],
"source": [
"from gdsfactory import Component\n",
"from gdsfactory.components import rectangle\n",
"from glayout.backend import Component\n",
"from glayout.backend import rectangle\n",
"\n",
"def makeMet1Rectangle(pdk, length):\n",
" met1 = pdk.get_glayer(\"met1\")\n",
Expand Down
4 changes: 2 additions & 2 deletions tutorial/GLayout_Via.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -104,8 +104,8 @@
"outputs": [],
"source": [
"from glayout import sky130, gf180\n",
"from gdsfactory import Component\n",
"from gdsfactory.components import rectangle"
"from glayout.backend import Component\n",
"from glayout.backend import rectangle"
]
},
{
Expand Down
5 changes: 3 additions & 2 deletions tutorial/glayout_tutorial_5T_OTA_part1.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,9 @@
"outputs": [],
"source": [
"from glayout import MappedPDK, sky130, gf180\n",
"from gdsfactory import Component\n",
"from gdsfactory.components import text_freetype, rectangle\n",
"from glayout.backend import Component\n",
"from glayout.backend import rectangle\n",
"from gdsfactory.components import text_freetype\n",
"\n",
"from glayout import nmos, pmos\n",
"from glayout import via_stack\n",
Expand Down
10 changes: 6 additions & 4 deletions tutorial/glayout_tutorial_5T_OTA_part2.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,9 @@
"source": [
"from glayout import MappedPDK, sky130 , gf180\n",
"#from gdsfactory.cell import cell\n",
"from gdsfactory import Component\n",
"from gdsfactory.components import text_freetype, rectangle"
"from glayout.backend import Component\n",
"from glayout.backend import rectangle\n",
"from gdsfactory.components import text_freetype"
]
},
{
Expand Down Expand Up @@ -236,8 +237,9 @@
"fivet_ota_code_string = \"\"\"\n",
"from glayout import MappedPDK, sky130 , gf180\n",
"# from gdsfactory.cell import cell\n",
"from gdsfactory import Component\n",
"from gdsfactory.components import text_freetype, rectangle\n",
"from glayout.backend import Component\n",
"from glayout.backend import rectangle\n",
"from gdsfactory.components import text_freetype\n",
"\n",
"from glayout import nmos, pmos\n",
"from glayout import via_stack\n",
Expand Down
10 changes: 6 additions & 4 deletions tutorial/glayout_tutorial_FVF_part1.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,9 @@
"source": [
"from glayout import MappedPDK, sky130 , gf180\n",
"#from gdsfactory.cell import cell\n",
"from gdsfactory import Component\n",
"from gdsfactory.components import text_freetype, rectangle"
"from glayout.backend import Component\n",
"from glayout.backend import rectangle\n",
"from gdsfactory.components import text_freetype"
]
},
{
Expand Down Expand Up @@ -863,8 +864,9 @@
"fvf_code_string = \"\"\"\n",
"from glayout import MappedPDK, sky130 , gf180\n",
"# from gdsfactory.cell import cell\n",
"from gdsfactory import Component\n",
"from gdsfactory.components import text_freetype, rectangle\n",
"from glayout.backend import Component\n",
"from glayout.backend import rectangle\n",
"from gdsfactory.components import text_freetype\n",
"\n",
"from glayout import nmos, pmos\n",
"from glayout import via_stack\n",
Expand Down
5 changes: 3 additions & 2 deletions tutorial/glayout_tutorial_FVF_part2.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,9 @@
"source": [
"from glayout import MappedPDK, sky130 , gf180\n",
"#from gdsfactory.cell import cell\n",
"from gdsfactory import Component\n",
"from gdsfactory.components import text_freetype, rectangle"
"from glayout.backend import Component\n",
"from glayout.backend import rectangle\n",
"from gdsfactory.components import text_freetype"
]
},
{
Expand Down
12 changes: 7 additions & 5 deletions tutorial/glayout_tutorial_INV_part1.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -164,8 +164,9 @@
"source": [
"from glayout import MappedPDK, sky130 , gf180\n",
"#from gdsfactory.cell import cell\n",
"from gdsfactory import Component\n",
"from gdsfactory.components import text_freetype, rectangle"
"from glayout.backend import Component\n",
"from glayout.backend import rectangle\n",
"from gdsfactory.components import text_freetype"
]
},
{
Expand Down Expand Up @@ -803,9 +804,10 @@
"source": [
"inv_code_string = \"\"\"\n",
"from glayout import MappedPDK, sky130 , gf180\n",
"from gdsfactory.cell import cell\n",
"from gdsfactory import Component\n",
"from gdsfactory.components import text_freetype, rectangle\n",
"from glayout.backend import cell\n",
"from glayout.backend import Component\n",
"from glayout.backend import rectangle\n",
"from gdsfactory.components import text_freetype\n",
"\n",
"from glayout import nmos, pmos\n",
"from glayout import via_stack\n",
Expand Down
5 changes: 3 additions & 2 deletions tutorial/glayout_tutorial_INV_part2.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,9 @@
"outputs": [],
"source": [
"from glayout import MappedPDK, sky130 , gf180\n",
"from gdsfactory import Component\n",
"from gdsfactory.components import text_freetype, rectangle\n",
"from glayout.backend import Component\n",
"from glayout.backend import rectangle\n",
"from gdsfactory.components import text_freetype\n",
"\n",
"import gdsfactory as gf\n",
"gf.clear_cache()"
Expand Down
Loading