-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #92 from daquintero/latest_pdk
🚧 Automatic compilation of raw efabless PDKs into a gdsfactory-compatible PDK
- Loading branch information
Showing
1,670 changed files
with
6,981 additions
and
46,839 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -144,3 +144,4 @@ cython_debug/ | |
*.DS_Store | ||
.DS_Store | ||
*Thumbs.db | ||
.idea/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
[submodule "sky130/src/sky130_fd_pr"] | ||
path = sky130/src/sky130_fd_pr | ||
url = https://github.com/efabless/skywater-pdk-libs-sky130_fd_pr.git | ||
[submodule "sky130/src/sky130_fd_sc_hd"] | ||
path = sky130/src/sky130_fd_sc_hd | ||
url = https://github.com/efabless/skywater-pdk-libs-sky130_fd_sc_hd.git |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
sky130 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,282 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"id": "0", | ||
"metadata": {}, | ||
"source": [ | ||
"# Layout\n", | ||
"\n", | ||
"## Layout driven flow\n", | ||
"\n", | ||
"You can import the PDK and layout any of the standard cells" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "1", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"import gdsfactory as gf" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "2", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"import sky130\n", | ||
"import sky130.components as sc\n", | ||
"import sky130.tech as st" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "3", | ||
"metadata": {}, | ||
"source": [ | ||
"If you want to see what are the cells available:" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "4", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# sky130.cross_sections" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "5", | ||
"metadata": {}, | ||
"source": [ | ||
"Let's explore the available layers:" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "6", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# help(gf.pdk)\n", | ||
"# help(gf.get_active_pdk().get_layer_stack)\n", | ||
"# gf.pdk.get_layer_stack()" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "7", | ||
"metadata": {}, | ||
"source": [ | ||
"You can also verify this is the active PDK on `gdsfactory`:" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "8", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"gf.pdk.get_active_pdk().name" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "9", | ||
"metadata": {}, | ||
"source": [ | ||
"Now, let's explore available symbols for the components:" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "10", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# dir(sky130)\n", | ||
"sky130" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "11", | ||
"metadata": {}, | ||
"source": [ | ||
"Let's try exploring an example basic `nfet`:" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "12", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"c = sc.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15()\n", | ||
"c" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "13", | ||
"metadata": {}, | ||
"source": [ | ||
"Explore it's ports:" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "14", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"c.ports" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "15", | ||
"metadata": {}, | ||
"source": [ | ||
"We can also explore the digital cells:" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "16", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"c = sc.sky130_fd_sc_hd__a2111o_1()\n", | ||
"c" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "17", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"scene = c.to_3d()\n", | ||
"scene.show()" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "18", | ||
"metadata": {}, | ||
"source": [ | ||
"TODO: add Parametric cells natively into gdsfactory `sky130` pdk." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "19", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"c = gf.Component()\n", | ||
"g1 = c << sc.sky130_fd_sc_hd__a2111o_1()\n", | ||
"g2 = c << sc.sky130_fd_sc_hd__a311oi_4()\n", | ||
"g2.move((15, 10))\n", | ||
"c" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "20", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"c = gf.Component(\"demo_connect\")\n", | ||
"g1 = c << sc.sky130_fd_sc_hd__a2111o_1()\n", | ||
"g2 = c << sc.sky130_fd_sc_hd__a311oi_4()\n", | ||
"g2.move((15, 10))\n", | ||
"route = gf.routing.get_route_electrical(\n", | ||
" g1.ports[\"VPWR\"], g2.ports[\"VPWR\"], cross_section=st.xs_metal1\n", | ||
")\n", | ||
"c.add(route.references)\n", | ||
"c" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "21", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"scene = c.to_3d()\n", | ||
"scene.show()" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "22", | ||
"metadata": {}, | ||
"source": [ | ||
"## Netlist driven flow\n", | ||
"\n", | ||
"For netlist driven flow you can define circuits for place and route. You have two options:\n", | ||
"\n", | ||
"1. in python\n", | ||
"2. in YAML" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "23", | ||
"metadata": {}, | ||
"source": [ | ||
"## Spice simulations\n", | ||
"\n", | ||
"You can use `PySpice` for running simulations.\n", | ||
"\n", | ||
"gdsfactory can extract the netlist and simulate the circuit.\n", | ||
"\n", | ||
"TODO: add some relevant examples." | ||
] | ||
} | ||
], | ||
"metadata": { | ||
"jupytext": { | ||
"custom_cell_magics": "kql" | ||
}, | ||
"kernelspec": { | ||
"display_name": "Python 3 (ipykernel)", | ||
"language": "python", | ||
"name": "python3" | ||
}, | ||
"language_info": { | ||
"codemirror_mode": { | ||
"name": "ipython", | ||
"version": 3 | ||
}, | ||
"file_extension": ".py", | ||
"mimetype": "text/x-python", | ||
"name": "python", | ||
"nbconvert_exporter": "python", | ||
"pygments_lexer": "ipython3", | ||
"version": "3.11.5" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 5 | ||
} |
Oops, something went wrong.