GF180 MCU Process Design Kit (PDK) for Revolution EDA
An early‑stage Python‑based PDK targeting the GlobalFoundries 180‑nm MCU process integrated with the Revolution EDA schematic‑to‑GDS IC design environment.
⚠️ This PDK is currently in development. A 22‑device schematic symbol library imported from an Xschem source, matching instance callbacks, and a full layout layer map are available and have seen limited testing. Parametric cells, via definitions, and DRC decks are still works in progress. Please contact your GlobalFoundries office to request a full PDK compatible with Revolution EDA.
Overview
The end goal of gf180_pdk is to provide a fully functional design kit for the GF180 MCU technology, including:
- Symbol library for schematic capture (22 devices already imported)
- Instance callback classes for automatic electrical parameter computation
- Schematic and symbol layer definitions for front‑end drawing
- Layout layer definitions with GDS layer/datatype mappings (auto‑generated from a KLayout LYP file)
- Process technology parameters (grid, units, layer and device constants)
- Xyce model‑library settings for simulation
- Placeholder packages for pcells and DRC decks
Technology Details:
- Process Node: GF 180‑nm MCU
- PDK Status: Alpha / development
- License: MPL‑2.0 with Commons Clause (see headers in source files)
What’s Implemented
1. Symbol Library & Callbacks
A set of 22 device symbols has been imported from Xschem into the gf180_mcu library; each
symbol is accompanied by a callback class in callbacks.py that reads label values and
calculates parameters used for netlisting and annotation.
Supported Device Families:
- MOSFETs: nmos_3p3, nmos_3p3_sab, nmos_6p0, nmos_6p0_nat, pmos_3p3, pmos_3p3_sab, pmos_6p0
- MOS capacitors: nmoscap_3p3, nmoscap_6p0, pmoscap_3p3, pmoscap_6p0
- Resistors: dnwpw (diff‑nwell poly resistor) with area/perimeter parameters, rm1 (metal resistor), nplus_u, pplus_u, npolyf_u, ppolyf_u, nwell
- Capacitors: mim_2p0fF
- Diodes: np_3p3
- Bipolar transistors: vnpn_10x10, vpnp_10x10
Callbacks automatically compute device dimensions, area, perimeter, and source/drain
resistance using quantiphy.Quantity objects. See callbacks.py for the full list of
classes and formulae.
2. Layer Definitions
Schematic & Symbol Layers (schLayers.py / symLayers.py)
Drawing layers for wires, pins, annotations and device outlines. These modules follow the Revolution EDA dataclass conventions, defining colours, line styles and z‑order for schematic rendering.
Layout Layers (layoutLayers.py)
A full set of 119 layout layers auto‑generated from a KLayout .lyp layer‑properties
file. Each layLayer carries colour, fill stipple, z‑order, visibility, and the GDS
layer/datatype pair, so the layout editor can draw on GF180 layers and read/write GDS
with the correct mapping. Complementary data lives in gf180_mcu_tech.json (174 named
layer entries plus 32 technology parameters such as resistor and metal dimensions).
3. Process Parameters (process.py & gf180_mcu_tech.py)
Defines grid settings and GDS units used by the layout editor:
- DBU: 1000 (1 µm = 1000 DBU)
- Snap grid: 50 nm
- Major grid: 100 nm
- GDS unit: 1 µm with 1 nm precision
Via and path definitions (processVias / processPaths) are not yet defined for this
process.
4. Project Skeleton
Several packages are present but not yet populated:
pcells/– contains only thebaseCellfoundation class; no parametric cells are registered yetmodels/– Xyce model files (sm141064.xyce,smbb000149.xyce,design.xyce)stipples/– fill patterns used by layout rendering
How to Use with Revolution EDA
Installation
- Clone or copy the
gf180_pdkfolder into your Revolution EDA workspace:cd /path/to/revolution-eda git clone <gf180_pdk_repo> gf180_pdk - Configure the PDK path either by setting the
REVEDA_PDK_PATHenvironment variable or by adding it to the.envfile in the root of Revolution EDA (relative or absolute path). - Restart Revolution EDA to load the new PDK.
- Add the library directory (
gf180_mcu) in the Library Browser via the Options dialog or menu, so that schematic symbols appear in the component list.
Creating Schematics
- Launch the Revolution EDA schematic editor.
- Select GF180 MCU from the PDK selector (if applicable).
- Add instances via Right‑click → Add Instance and choose from the
gf180_mculibrary. - Double‑click an instance to edit parameters; values should use Quantiphy units
(e.g.
10u,180n,4e-3). - Connect pins and build your circuit as usual.
Creating Layouts
The layout editor loads the full GF180 layer map, so you can draw shapes on the correct GDS layers and import/export GDS. Parametric cells are not yet available — layout is manual, and there are no via definitions yet, so interconnect must be drawn with explicit shapes.
Running Simulations
modelLibSettings.json already wires the models/ Xyce files into the RevedaSim
simulation configuration (Ngspice and VACASK sections are present but empty). When you
export a netlist, callbacks generate the parameter values; verify the generated model
includes against the Xyce decks in models/ before trusting simulation results.
Project Structure
gf180_pdk/
├── README.md # This file
├── __init__.py # Package initialization
├── config.json # PDK metadata used by menu system
├── callbacks.py # Instance parameter callbacks
├── process.py # Grid and GDS unit definitions
├── gf180_mcu_tech.py # Technology class exposing techParams
├── gf180_mcu_tech.json # Node definition JSON (params + layer map)
├── modelLibSettings.json # Preconfigured Xyce model libraries
├── schLayers.py # Schematic layer definitions
├── symLayers.py # Symbol layer definitions
├── layoutLayers.py # Layout layer/GDS mappings (auto-generated)
├── gf180_mcu/ # Device symbol library (22 cells + reveda.lib)
├── pcells/ # Parametric cells (base.py only)
│ └── base.py # Base cell classes / helpers
├── models/ # Xyce model files
└── stipples/ # Fill pattern files used by layout
Development & Contribution
Contributors are encouraged to expand the PDK by implementing the missing pieces:
- Add parametric cells in
pcells/following the patterns in the IHP PDK. - Define via and path defaults in
process.pyfor the GF180 stack. - Create callback classes for new devices as symbols are added.
- Populate
models/with additional SPICE/Xyce libraries and extendmodelLibSettings.jsonto Ngspice and VACASK. - Develop DRC rule decks for GF180 and integrate them with
klayoutDRC-style menu actions.
The existing callbacks.py file already demonstrates how to compute geometry-related
parameters using Quantity objects; new classes should follow the same approach.
License
The core PDK files are provided under the Mozilla Public License 2.0 with the Commons Clause condition. See the license headers at the top of each Python file for full details.
Last Updated: October 2026 Status: Alpha / development