Skip to content

sifferman/sky130_schematics

Repository files navigation

SKY130 Schematics

This repository compiles verified visual schematics for all SKY130 High-Density Digital Standard Cells. Each schematic is validated with Layout Versus Schematic (LVS), ensuring 100% accuracy with the official SKY130 cells.

The official SKY130 cells can be found here: https://github.com/fossi-foundation/skywater-pdk-libs-sky130_fd_sc_hd/tree/main/cells

Automatically generated schematics are published here: https://github.com/sifferman/sky130_schematics/releases/latest

sky130_fd_sc_hd__dfxtp_1

See the progress here.

Contributing

Follow these steps to contribute a new schematic:

  1. Install Required Tools

  2. Set Up Your Branch

    • Clone this repository and ensure your local main branch is up to date.
    • Create a new branch off main for your work.
  3. Claim a Cell

  4. Generate A Schematic Template

    • You can generate a template schematic by running make spice2sch/{CELL/NAME}.sch where {CELL/NAME} denotes the cell name from an official SPICE file. Then, you can move that cell into "schematics/{CELL/NAME}.sch" to begin working on it.
    • The schematic names must be mirrored with the Official SKY130 SPICE file for the Makefile to function properly.
    • Example with or2/sky130_fd_sc_hd__or2_0:
  5. Edit in xschem

    • You can now open a schematic with xschem schematics/{CELL/NAME}.sch. Example: xschem schematics/or2/sky130_fd_sc_hd__or2_0.sch
    • Note that xschem must be opened from the root directory of this project to ensure xschemrc file is properly loaded.
    • Modify the schematic to make it readable, symmetrical, and aesthetically consistent.
      • PMOS should always appear above NMOS.
      • All intermediate labels should either be removed, or renamed to something more useful. (I.e. an inverted A net can be named A_N)
      • Wire length should generally be kept short, unless it significantly improves readability.
      • Prefer copying an intermediate label if it means that wires don't cross.
      • Fingers (transistors in parallel with the same port connections) should be grouped together and facing the same direction.
      • If lots of FETs appear in parallel, they should be cascaded so the schematic becomes less wide. Example:
        • nand4/sky130_fd_sc_hd__nand4_4
        • nand4b/sky130_fd_sc_hd__nand4b_4
        • nand4bb/sky130_fd_sc_hd__nand4bb_4
        • nor2/sky130_fd_sc_hd__nor2_8
        • etc...
  6. Verify with LVS

    • Run make all_lvs -j`nproc` to check your schematic.
    • If it passes, your schematic matches the official SKY130 SPICE model.
    • If it fails, review the report in "lvs/{CELL/NAME}.failed" for debugging.
  7. Polish the Design

    • Please check the existing schematics as reference.
    • You can see the generated SVG by running make all_svg -j`nproc`.
  8. Submit a Pull Request

    • Once your schematic passes LVS, submit a pull request for review.
    • Feedback will be provided to further refine your design.

Note on LVS

LVS (Layout Versus Schematic) is typically used to verify that a silicon layout matches a circuit schematic. In this project, we use LVS to ensure the schematic aligns with the official SKY130 SPICE model.