Preface
Who this is for
You’re publishing a process for other people to write layouts against. Maybe it’s your foundry’s PDK, your in-house process for a research group, an open-source PDK port, or a vertical-specific layer set you want to share publicly. Either way, you’re the layer between the process spec and the end user, and you want their experience to feel polished.
You should already be comfortable with lumicron as an end user. If not, read the Lumicron API User Guide first - this guide assumes you know what c.Route(...), @pcell, and the placement chain do.
What’s covered
- Anatomy (Chapter 1): the four parts of a PDK and how they relate.
- Building blocks (Chapters 2–6): layers and rules, the physical stack, route profiles, components, and transitions - one chapter each.
- Packaging (Chapter 7): the
.lumpdkformat and how the app installs it. - Publishing (Chapter 8): versioning, Python distribution, local
.lumpdkrelease, and the boundary between today’s installer and a future marketplace. - Cookbook (Chapter 9): a complete minimal PDK in one file you can adapt.
- Appendices: manifest schema, glossary.
A quick orientation
Compared to other layout DSLs:
- The route profile is
lumicron’s answer to gdsfactory’scross_section. The mental model is similar but the implementation differs in two ways relevant to PDK authors. (1) Periodic features (gratings, distributed taps, slot-mode rails) are first-class viap.tooth(...), not bolted on after. (2) Profiles attach to ports, so a route inherits the cross-section from its endpoints rather than being recomputed at every call site. @pcellPCells behave like IPKISS PCells: the same parameters produce the same cell name and GDS cell definition. The differences from IPKISS / KFactory are mostly cosmetic (decorator vs class, kwargs vs param objects).- Layer transitions are explicit and named. Each
(layer_a, layer_b)pair has at most one factory in the registry. The router doesn’t try to guess; if a pair isn’t registered, it errors.
Conventions
The same callout styles as the User Guide:
Note
A clarification about why something is the way it is.
Tip
A pattern that pays back consistently as your PDK grows.
Watch out
A trap to know about before you hit it.