Session #4:Layout & Fabrication¶
Homework¶
-
Block diagram: Sketch your project’s architecture showing major modules and data flow (e.g., Pocket Synth: button inputs → tone selector → oscillator → PWM output)
-
Explore a standard cell: Open the sky130 standard cell library in KLayout and find an inverter (sky130_fd_sc_hd__inv_1). Identify metal, poly, and diffusion layers.
- In the container:
- klayout /foss/pdks/sky130A/libs.ref/sky130_fd_sc_hd/gds/sky130_fd_sc_hd.gds Tip: Use Edit → Find (Ctrl+F) to search for “inv_1”
-
Connect the dots: Pick one block from your diagram — what standard cells might implement it? (e.g., “counter” needs flip-flops, “tone selector” needs muxes)
Block Diagram of Project’s Architecture¶
No clue how to proceed - block diagram verify Digital block run the test bench
I would like to generate a PWM signal to a DC motor with a button.
PWM Button: Block Diagram
Possible-resource

I got excited that I found a block diagram of the motor driver to see if I could do something like this for the final project. I do not know how much work this would be. I started digging into each piece of the flow chart an quickly realized this would be too much for me at this point. With-that-said, I have decied to build one of the components. I think this will give me a more doable challenge for this class.
Could I do a SAR ADC for this class? I don’t know if this is too much or too little. Understanding SAR ADCs: Their Architecture and Comparison with Other ADCs
After speaking with Alex before class he mentioned a button and out to a signal for the stepper motor.
Explore a standard Cell¶
To run KLayout
This is what KLayout starting configuration looks like.

Find the inverter
Scrolled down the left column with all the cells. right clicked thean “Show as New Top”

Shows the invterter, now to see the layers.

Metal

While looking at the layers I found out some are highlighted while most are not. After this I tested to turn off the layers one at a time and realized the layers on the inverter are the ones highlighted. Good moment for me.

Besided the Metal5.mask the rest were a set of numbers, which I did not understand. Time to look around.
Here’s what ChatGPT said
In KLayout, 65/4 means “GDS layer 65, datatype 4.” In the SKY130 PDK, 65:4 is the tap boundary layer (often shown as tap.boundary).
What it’s for
It’s a marker/boundary used by the PDK for verification/recognition (DRC/LVS extraction and layer bookkeeping).
It’s associated with tap regions (substrate/well ties) rather than being “metal/poly/diffusion drawing” you route like signal layers.
How to confirm in KLayout
Open the Layers panel → find the entry with source 65/4.
If you’re using a SKY130 KLayout tech file (.lyt/.lyp), it will typically show the human name (e.g., tap.boundary) for that layer mapping.
If you tell me whether you’re viewing the standard-cell GDS (sky130_fd_sc_hd.gds) with the SKY130 .lyp loaded, I can tell you exactly what that layer will look like in the inverter and what other layers to toggle (diff/poly/li/met1) to “read” the transistor.
OK, therefore I assum the other numbers mean something as well. I decided to search google for sky130 .lyp to see if there is a table and founda github sky 130 table KLayout which was in xml format.
OK, new treasure. I was looking for .lyp file in KLayout and found a .mag format “Don’t know what this is yet.” and opened it. Here is what came up.

I hide all but metal. I believe this is the ground layer.

OK, I still want to know what the numbers represent.
Not yet. Found some layout properties saying the database unit is in .001 micron which means 1 nm? An iron atom is about 5 nm is dimensions. How can this be possible?
I was incorrect, shame on me
A Iron’s atomic radius is about .126 nm, I was 5 x an order magnitude off. So what we are looking at is about on order magnitude in size than an iron atom. COOL!!
Still need to find out what the numbers represent, then I realized in class about RTL Design a couple of students mapped this out. so I went looking.
Found a new trick to hide all empty layers “https://class.academany.org/futures/microelectronics/2026/labs/skylab/students/tsuchiya-yosuke/assignments/session04/”
Alright, alright, alright!! Found what I was looking for here. - According to the GDS documentation
ChatGPT Prompt: Take this information from this site. https://skywater-pdk.readthedocs.io/en/main/rules/layers.html#gds-layers-information then create a markdown table for just the numbers in the image.

| GDS layer:datatype | Layer name | Purpose (as listed) | What it is |
|---|---|---|---|
| 64:5 | nwell | label | N-well label (text) :contentReference[oaicite:1]{index=1} |
| 64:16 | nwell | pin | N-well pin marker :contentReference[oaicite:2]{index=2} |
| 64:20 | nwell | drawing | N-well region :contentReference[oaicite:3]{index=3} |
| 64:59 | pwell | label | P-well label (text and data type) :contentReference[oaicite:4]{index=4} |
| 65:20 | diff | drawing, text | Active (diffusion) area :contentReference[oaicite:5]{index=5} |
| 66:20 | poly | drawing, text | Polysilicon :contentReference[oaicite:6]{index=6} |
| 66:44 | licon1 | drawing | Contact to local interconnect :contentReference[oaicite:7]{index=7} |
| 67:5 | li1 | label | Local interconnect label (text) :contentReference[oaicite:8]{index=8} |
| 67:16 | li1 | pin | Local interconnect pin marker :contentReference[oaicite:9]{index=9} |
| 67:44 | mcon | drawing | Contact from local interconnect to metal1 :contentReference[oaicite:10]{index=10} |
| 68:5 | met1 | label | Metal 1 label (text) :contentReference[oaicite:11]{index=11} |
| 68:16 | met1 | pin | Metal 1 pin marker :contentReference[oaicite:12]{index=12} |
| 68:20 | met1 | drawing, text | Metal 1 :contentReference[oaicite:13]{index=13} |
| 68:44 | via | drawing | Contact from metal 1 to metal 2 :contentReference[oaicite:14]{index=14} |
| 70:20 | met3 | drawing, text | Metal 3 :contentReference[oaicite:15]{index=15} |
| 78:44 | hvtp | drawing | High-Vt LVPMOS implant :contentReference[oaicite:16]{index=16} |
| 81:4 | areaid.sc | (area id) | “standardc” area identifier :contentReference[oaicite:17]{index=17} |
| 83:44 | text | label | Generic text label layer :contentReference[oaicite:18]{index=18} |
| 93:44 | nsdm | drawing | N+ source/drain implant :contentReference[oaicite:19]{index=19} |
| 94:20 | psdm | drawing | P+ source/drain implant :contentReference[oaicite:20]{index=20} |
| 95:20 | npc | drawing | Nitride poly cut (under licon1 areas) :contentReference[oaicite:21]{index=21} |
| 122:16 | pwell | pin | P-well pin marker :contentReference[oaicite:22]{index=22} |
| 236:0 | (not found in layers.html) | — | Not listed in the Layers Reference page search results; may be defined in the downloadable gds_layers.csv/tech files instead. :contentReference[oaicite:23]{index=23} |
OK, but there is more. I was reading “https://class.academany.org/futures/microelectronics/2026/labs/isafjordur/students/hanndoddi/assignments/session04/#technology-import-and-selection” which I tried, but it did not work. I belive I read somewhere I needed to allow for me to change the layout. this may be something I need to do first. Found the below picture first and realized I found the mapping that ChatGPT gave me.

FOund IT!!!
Activate the list.

Show more comprehensive diagram

Now, I can say I found all the layers and I understand to the assignments direction. Heck Ya!!
Poly Layer

Diffusion Layer

Connect the dots¶
Resources:¶
- https://ngspice.sourceforge.io/osdi.html
- https://en.wikipedia.org/wiki/Verilog-A
- https://github.com/mabrains/sky130_klayout_tech/blob/main/SKY130.lyp
- https://skywater-pdk.readthedocs.io/en/main/rules/layers.html#gds-layers-information