Layout Knowledge Base

Layers

What a layer is for: layer numbers, purposes, and hiding sheets

A layer is a sheet the factory spends a process step on. GDS layer/datatype pairs with real SKY130 numbers, drawn vs derived layers, and why hiding a layer is a filter, not a delete.

Last edited: October 10, 2026

A small stack with every sheet visible: a navy metal strap across the top, a gold gate strip crossing a teal conductor, contact squares at both ends, and two separate teal bars below.

A layer is a named sheet of geometry that the factory will spend a process step on. One step deposits and patterns metal, another etches contact holes, another defines the transistor gate. All of those steps share one coordinate system, and the layers are how a drawing keeps them apart. Every shape lives on exactly one layer. The factory does not build "the picture"; it builds one sheet at a time.

The picture at the top of this page is a small stack with every sheet visible: a navy metal strap across the top, a gold gate strip crossing a teal conductor, contact squares at both ends, and two separate teal bars below. Where sheets cross, the screen goes dark because two inks overlap. Nothing has merged there. It is two shapes on two sheets at the same coordinates.

Numbers, names, and purposes

In the file the factory reads, a layer is not a word. GDSII stores every shape with two small integers, a layer number and a datatype, written together as layer/datatype. The original GDSII format allowed values from 0 to 255 for each; OASIS keeps the same pair. The name you see in the editor ("met1", "poly") comes from a layer map the process kit provides.

The open SKY130 kit is a good example of how the two numbers split the work:

Sheet Drawing Pin Label
nwell 64/20 — —
diff (active) 65/20 — —
poly 66/20 66/16 66/5
li1 (local interconnect) 67/20 67/16 67/5
met1 68/20 68/16 68/5

The layer number is the physical film; the datatype is the purpose. Datatype 20 is the geometry that becomes the mask, 16 marks pin areas for extraction and routing tools, and 5 carries text labels that name nets. Cut layers get their own numbers: the contact from diffusion and poly to local interconnect is licon at 66/44, and the cut from local interconnect to metal 1 is mcon at 67/44. Purposes go further than drawing, pin, and label: 68/10 is a metal 1 blockage used when integrating IP blocks. The drawn sheets are also not the mask files themselves. The fab's mask data for metal 1, cmm1, lives at its own number (36/0) and is generated from what you drew. A shape on 68/5 never reaches the mask, even though it sits on the metal 1 film number. The names are local: your editor can say "poly" while a colleague's says "gate", and both point at 66/20. The shapes only know their numbers. See reading a layer map and GDS layer and datatype for how those maps are written.

Drawn layers and derived layers

Not every mask is drawn corner by corner. Many sheets are computed by recipes from the drawn ones. A transistor gate is not a drawn layer at all; it is the overlap of poly and active, which the SKY130 layer reference defines as "poly AND diff" and a KLayout DRC or LVS script writes as gate = input(66, 20) & input(65, 20). Implant masks, fill, and well extensions are often generated the same way, by growing, combining, or subtracting drawn sheets. A derived layer is still a layer, but if you edit it by hand and keep the recipe, the next run rebuilds it and your edit disappears. If a recipe owns a sheet, leave that sheet to the recipe. The split between what you draw and what the fab builds is covered in process layers vs drawing layers.

Hiding is a filter, not a delete

The full stack: navy metal strap, black and red gate stack crossing purple and green device regions, teal pads and bars, and green squares, all visible at once

The second picture is a denser cell with every sheet on. At this point the drawing is close to illegible: purple, green, black, red, and teal shapes stack on each other, and you cannot tell which strap you are following. Experienced designers spend most of their time with most sheets switched off.

Two panels at the same scale: on the left the full stack, on the right only the teal metal sheet with its pads, bar, and two red contact squares left visible

The third picture shows the same coordinates twice. On the left, every sheet; on the right, only the teal conductor, its pads and bars, and the small red contact squares. The teal shapes have not moved. The device sheets are not on the screen, but they are still in the file. In KLayout this is the visibility checkbox in the layer panel, and the panel's context menu can show only the selected layers or hide all of them.

Hiding is how you audit a sheet. Turn everything off except the contact sheet, and you should see only the contact squares. If the squares vanish with the contact sheet, they were contacts. If they stay when only metal is visible, they were drawn on the metal sheet by mistake. That error is common and expensive: the contact mask goes out empty, the metal mask carries extra squares that are not holes, and the gate never connects to the metal.

The order of sheets in the layer list changes which color paints last on screen. It does not change coordinates, and the fab ignores it.

Two mistakes hiding causes

A short you cannot see. A reviewer hides the gate sheet to check the metal, the metal looks finished, and the cell is signed off. Two gate fingers on the hidden sheet still touch, off to the side. A design-rule check run on the whole file reports the short anyway, because checks read every layer in the file, not the pixels on the screen. The fix is a small gap on the gate sheet; the metal never needed to change. A review of pixels is not a review of the file.

A delete that reaches hidden sheets. Editors differ in whether a region delete also removes shapes on hidden or non-selectable layers. Never use a filtered view as a deletion guide unless you have confirmed how your editor behaves. Clearing "extra metal" in a box can also erase contacts you could not see.

The hide test before you ship

Before calling a cell done:

  1. Turn every sheet on and compare with the full stack you started from. Nothing should have moved.
  2. Solo each cut layer (contacts, vias) and count the squares. They should be exactly the cuts you meant, and nothing on the metal sheets should appear.
  3. Solo the pin and label purposes and check that each label sits on the conductor it names. Extraction attaches a label to the shape under it on the matching film.
  4. Run DRC with a layer map that includes every sheet, hidden or not.

Layers are how one drawing tells the factory dozens of separate jobs. Keep each shape on the sheet whose job it is, check by hiding, and ship the full stack.

Continue exploring