Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Technology Refactor (Sourcery refactored) #1042

Closed
wants to merge 37 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
9ed8198
simplify klayout_tech and fix yaml output
thomasdorch Dec 17, 2022
f3bce35
separate klayout_tech from LayerDisplayProperties
thomasdorch Dec 18, 2022
ae195a5
rename LayerDisplayProperties to LayerViews
thomasdorch Dec 18, 2022
8f41696
fix 'append_file_extension' type hint
thomasdorch Dec 18, 2022
5e41996
use yaml sequence output for layer tuples
thomasdorch Dec 18, 2022
df260d4
separate line_styles and dither_patterns
thomasdorch Dec 19, 2022
8ae958c
remove default string style in yaml
thomasdorch Dec 19, 2022
c6f4a93
add layers.yaml
thomasdorch Dec 19, 2022
4191416
use Pydantic Color for validating
thomasdorch Dec 23, 2022
af73ba8
cleanup
thomasdorch Dec 24, 2022
8200080
make color representation more consistent
thomasdorch Dec 24, 2022
fac3a69
use name in LayerView
thomasdorch Dec 24, 2022
c8fb6f5
move xml imports
thomasdorch Dec 24, 2022
fa83a8f
create utils submodule and refactor
thomasdorch Dec 24, 2022
3cffa0d
add alpha to LayerView
thomasdorch Dec 24, 2022
b2a6736
replace LayerColors with LayerViews
thomasdorch Jan 2, 2023
52f40a9
first pass at technology refactor
thomasdorch Jan 2, 2023
fd7e921
simplify to_stl
thomasdorch Jan 2, 2023
98be6db
rename generic to generic_tech
thomasdorch Jan 2, 2023
33fb668
finish technology refactor
thomasdorch Jan 2, 2023
31dcdc6
subclass LayerStack in get_layer_stack_generic
thomasdorch Jan 2, 2023
70a44a5
replace matplotlib.color with pydantic color for to_3d
thomasdorch Jan 2, 2023
f83b4e7
make it clear when the generic technology is being used
thomasdorch Jan 2, 2023
5c494d7
cleanup layer_views, move LayerMap generator to its own module
thomasdorch Jan 2, 2023
c3c9f4e
cleanup generic_tech
thomasdorch Jan 3, 2023
dc89460
automatically import LayerViews from a file if given (instead of Laye…
thomasdorch Jan 3, 2023
9f0061e
add simulation_settings to generic_tech, cleanup
thomasdorch Jan 3, 2023
f35c4d1
allow gds_layer and gds_datatype arguments for LayerView
thomasdorch Jan 3, 2023
160c2c9
add option for specifying layer_map in LayerViews
thomasdorch Jan 3, 2023
bdf7c65
separate LayerView fill and frame colors and refactor
thomasdorch Jan 3, 2023
64d2393
update docs for pdk creation
thomasdorch Jan 3, 2023
a68508b
fix holoviews ploth
thomasdorch Jan 3, 2023
ded353d
fix layer_views docs
thomasdorch Jan 3, 2023
61cdcc7
remove unnecessary types from layer_views
thomasdorch Jan 4, 2023
ac32dd1
make LayerView fields more generic
thomasdorch Jan 4, 2023
f277c21
fix import in klayout_tech test
thomasdorch Jan 4, 2023
8b79117
'Refactored by Sourcery'
Jan 7, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Expand Up @@ -289,5 +289,5 @@ venv.bak/
# lumerical interconnect
*.ich
docs/notebooks/plugins/sax/fdtd_vs_model.png
gdsfactory/klayout/tech/layers.py
gdsfactory/technology/generic/klayout/tech/layers.py
/gdslib
148 changes: 73 additions & 75 deletions docs/notebooks/03_layer_stack.ipynb
Expand Up @@ -57,7 +57,7 @@
"metadata": {},
"outputs": [],
"source": [
"c = gf.layers.LAYER_COLORS.preview()\n",
"c = gf.generic_tech.LAYER_VIEWS.preview_layerset()\n",
"c"
]
},
Expand Down Expand Up @@ -159,7 +159,7 @@
"metadata": {},
"outputs": [],
"source": [
"c = gf.layers.LAYER_COLORS.preview()\n",
"c = gf.generic_tech.LAYER_VIEWS.preview_layerset()\n",
"c"
]
},
Expand All @@ -169,7 +169,8 @@
"metadata": {},
"outputs": [],
"source": [
"from gdsfactory.tech import LayerStack, LayerLevel, LAYER\n",
"from gdsfactory.technology import LayerStack, LayerLevel\n",
"from gdsfactory.generic_tech import LAYER\n",
"\n",
"\n",
"def get_layer_stack_generic(\n",
Expand All @@ -178,76 +179,74 @@
" \"\"\"Returns generic LayerStack.\n",
" based on paper https://www.degruyter.com/document/doi/10.1515/nanoph-2013-0034/html\n",
" \"\"\"\n",
" return LayerStack(\n",
" layers=dict(\n",
" core=LayerLevel(\n",
" layer=LAYER.WG,\n",
" thickness=thickness_silicon_core,\n",
" zmin=0.0,\n",
" material=\"si\",\n",
" ),\n",
" clad=LayerLevel(\n",
" layer=LAYER.WGCLAD,\n",
" thickness=thickness_cladding,\n",
" zmin=0.0,\n",
" material=\"sio2\",\n",
" ),\n",
" slab150=LayerLevel(\n",
" layer=LAYER.SLAB150,\n",
" thickness=150e-3,\n",
" zmin=0,\n",
" material=\"si\",\n",
" ),\n",
" slab90=LayerLevel(\n",
" layer=LAYER.SLAB90,\n",
" thickness=90e-3,\n",
" zmin=0.0,\n",
" material=\"si\",\n",
" ),\n",
" nitride=LayerLevel(\n",
" layer=LAYER.WGN,\n",
" thickness=350e-3,\n",
" zmin=220e-3 + 100e-3,\n",
" material=\"sin\",\n",
" ),\n",
" ge=LayerLevel(\n",
" layer=LAYER.GE,\n",
" thickness=500e-3,\n",
" zmin=thickness_silicon_core,\n",
" material=\"ge\",\n",
" ),\n",
" via_contact=LayerLevel(\n",
" layer=LAYER.VIAC,\n",
" thickness=1100e-3,\n",
" zmin=90e-3,\n",
" material=\"Aluminum\",\n",
" ),\n",
" metal1=LayerLevel(\n",
" layer=LAYER.M1,\n",
" thickness=750e-3,\n",
" zmin=thickness_silicon_core + 1100e-3,\n",
" material=\"Aluminum\",\n",
" ),\n",
" heater=LayerLevel(\n",
" layer=LAYER.HEATER,\n",
" thickness=750e-3,\n",
" zmin=thickness_silicon_core + 1100e-3,\n",
" material=\"TiN\",\n",
" ),\n",
" viac=LayerLevel(\n",
" layer=LAYER.VIA1,\n",
" thickness=1500e-3,\n",
" zmin=thickness_silicon_core + 1100e-3 + 750e-3,\n",
" material=\"Aluminum\",\n",
" ),\n",
" metal2=LayerLevel(\n",
" layer=LAYER.M2,\n",
" thickness=2000e-3,\n",
" zmin=thickness_silicon_core + 1100e-3 + 750e-3 + 1.5,\n",
" material=\"Aluminum\",\n",
" ),\n",
" class GenericLayerStack(LayerStack):\n",
" core = LayerLevel(\n",
" layer=LAYER.WG,\n",
" thickness=thickness_silicon_core,\n",
" zmin=0.0,\n",
" material=\"si\",\n",
" )\n",
" )\n",
" clad = LayerLevel(\n",
" layer=LAYER.WGCLAD,\n",
" thickness=thickness_cladding,\n",
" zmin=0.0,\n",
" material=\"sio2\",\n",
" )\n",
" slab150=LayerLevel(\n",
" layer=LAYER.SLAB150,\n",
" thickness=150e-3,\n",
" zmin=0,\n",
" material=\"si\",\n",
" )\n",
" slab90=LayerLevel(\n",
" layer=LAYER.SLAB90,\n",
" thickness=90e-3,\n",
" zmin=0.0,\n",
" material=\"si\",\n",
" )\n",
" nitride=LayerLevel(\n",
" layer=LAYER.WGN,\n",
" thickness=350e-3,\n",
" zmin=220e-3 + 100e-3,\n",
" material=\"sin\",\n",
" )\n",
" ge=LayerLevel(\n",
" layer=LAYER.GE,\n",
" thickness=500e-3,\n",
" zmin=thickness_silicon_core,\n",
" material=\"ge\",\n",
" )\n",
" via_contact=LayerLevel(\n",
" layer=LAYER.VIAC,\n",
" thickness=1100e-3,\n",
" zmin=90e-3,\n",
" material=\"Aluminum\",\n",
" )\n",
" metal1=LayerLevel(\n",
" layer=LAYER.M1,\n",
" thickness=750e-3,\n",
" zmin=thickness_silicon_core + 1100e-3,\n",
" material=\"Aluminum\",\n",
" )\n",
" heater=LayerLevel(\n",
" layer=LAYER.HEATER,\n",
" thickness=750e-3,\n",
" zmin=thickness_silicon_core + 1100e-3,\n",
" material=\"TiN\",\n",
" )\n",
" viac=LayerLevel(\n",
" layer=LAYER.VIA1,\n",
" thickness=1500e-3,\n",
" zmin=thickness_silicon_core + 1100e-3 + 750e-3,\n",
" material=\"Aluminum\",\n",
" )\n",
" metal2=LayerLevel(\n",
" layer=LAYER.M2,\n",
" thickness=2000e-3,\n",
" zmin=thickness_silicon_core + 1100e-3 + 750e-3 + 1.5,\n",
" material=\"Aluminum\",\n",
" )\n",
" return GenericLayerStack()\n",
"\n",
"\n",
"layer_stack220 = get_layer_stack_generic(thickness_silicon_core=0.220)\n",
Expand Down Expand Up @@ -325,7 +324,7 @@
"metadata": {},
"outputs": [],
"source": [
"from gdsfactory.tech import LAYER_STACK\n",
"from gdsfactory.generic_tech import LAYER_STACK\n",
"\n",
"LAYER_STACK.get_klayout_3d_script()"
]
Expand Down Expand Up @@ -370,9 +369,8 @@
},
"outputs": [],
"source": [
"import pathlib\n",
"from gdsfactory.geometry.get_xsection_script import get_xsection_script\n",
"from gdsfactory.tech import LAYER\n",
"from gdsfactory.generic_tech import LAYER\n",
"\n",
"\n",
"nm = 1e-3\n",
Expand Down
20 changes: 10 additions & 10 deletions docs/notebooks/04_components_.ipynb
Expand Up @@ -1247,9 +1247,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## LayerColors\n",
"## LayerViews\n",
"\n",
"The `LayerColors` class allows you to predefine a collection of layers and specify their properties including: gds layer/datatype, name, and color. It also comes with a handy preview function called `gf.layers.preview_layerset()`"
"The `LayerViews` class allows you to predefine a collection of layers and specify their properties including: gds layer/datatype, name, and color. It also comes with a handy preview function called `LayerViews.preview_layerset()`"
]
},
{
Expand All @@ -1260,14 +1260,14 @@
"source": [
"import gdsfactory as gf\n",
"\n",
"lys = gf.layers.LayerColors()\n",
"lys.add_layer(\"p\", color=\"lightblue\", gds_layer=21, gds_datatype=0)\n",
"lys.add_layer(\"p+\", color=\"blue\", gds_layer=23, gds_datatype=0)\n",
"lys.add_layer(\"p++\", color=\"darkblue\", gds_layer=25, gds_datatype=0)\n",
"lys.add_layer(\"n\", color=\"lightgreen\", gds_layer=20, gds_datatype=0)\n",
"lys.add_layer(\"n+\", color=\"green\", gds_layer=22, gds_datatype=0)\n",
"lys.add_layer(\"n++\", color=\"darkgreen\", gds_layer=24, gds_datatype=0)\n",
"D = gf.layers.preview_layerset(lys, size=100, spacing=100)\n",
"lys = gf.technology.LayerViews()\n",
"lys.add_layer_view(\"p\", color=\"lightblue\", gds_layer=21, gds_datatype=0)\n",
"lys.add_layer_view(\"p+\", color=\"blue\", gds_layer=23, gds_datatype=0)\n",
"lys.add_layer_view(\"p++\", color=\"darkblue\", gds_layer=25, gds_datatype=0)\n",
"lys.add_layer_view(\"n\", color=\"lightgreen\", gds_layer=20, gds_datatype=0)\n",
"lys.add_layer_view(\"n+\", color=\"green\", gds_layer=22, gds_datatype=0)\n",
"lys.add_layer_view(\"n++\", color=\"darkgreen\", gds_layer=24, gds_datatype=0)\n",
"D = lys.preview_layerset(size=100, spacing=100)\n",
"D"
]
},
Expand Down