Skip to content

Session #4:Layout & Fabrication

Notes from Lecture

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

alt text

Possible-resource

alt text

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

alt text

This is what KLayout starting configuration looks like.

alt text

alt text

alt text

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

alt text

Shows the invterter, now to see the layers. alt text

Metal alt text

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.

alt text

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.

alt text

alt text

alt text

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

alt text

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/”

alt text

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.

alt text

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.

alt text

FOund IT!!! Activate the list. alt text

Show more comprehensive diagram alt text

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

Poly Layer

alt text

Diffusion Layer

alt text

Connect the dots

Resources:

  1. https://ngspice.sourceforge.io/osdi.html
  2. https://en.wikipedia.org/wiki/Verilog-A
  3. https://github.com/mabrains/sky130_klayout_tech/blob/main/SKY130.lyp
  4. https://skywater-pdk.readthedocs.io/en/main/rules/layers.html#gds-layers-information