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
272 changes: 236 additions & 36 deletions src/glayout/backend/_gdstk.py

Large diffs are not rendered by default.

22 changes: 22 additions & 0 deletions tests/test_gdstk_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,28 @@ def test_component_api(self):
c.add_port(name="p1", center=(0, 0), width=1, orientation=0, layer=(1, 0))
self.assertIn("p1", c.ports)

def test_add_ref_array(self):
"""add_ref(columns=, rows=, spacing=) lays out a repeated reference.

`test_bjt_gdsfactory` builds its contact rings this way. Without it
the notebook dies on a TypeError halfway through.
"""
from glayout.backend import Component, rectangle
c = Component("array_probe")
unit = rectangle(size=(1, 1), layer=(1, 0))
ref = c.add_ref(unit, columns=3, rows=2, spacing=(2, 2))
self.assertIsNotNone(ref)
# 3 columns at pitch 2 span 1 + 2*2 = 5; 2 rows span 1 + 2 = 3.
(x0, y0), (x1, y1) = c.bbox
self.assertAlmostEqual(x1 - x0, 5.0)
self.assertAlmostEqual(y1 - y0, 3.0)

def test_add_ref_array_needs_spacing(self):
from glayout.backend import Component, rectangle
c = Component("array_probe_nospacing")
with self.assertRaises(ValueError):
c.add_ref(rectangle(size=(1, 1), layer=(1, 0)), columns=2)

def test_primitives_build(self):
from glayout.pdk.sky130_mapped.sky130_mapped import sky130_mapped_pdk as pdk
from glayout.primitives.via_gen import via_stack, via_array
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