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. Only schematic symbols imported from an Xschem source are available and have seen minimal testing. Layout support, parametric cells, and complete layer definitions 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 (many devices already imported)
- Instance callback classes for automatic electrical parameter computation
- Schematic and symbol layer definitions for front‑end drawing
- Layout layer definitions (initially empty) and skeleton for future GDS mapping
- Process technology parameters (grid, units, etc.)
- Placeholder directories for pcells, models and DRC decks
Technology Details:
- Process Node: GF 180‑nm MCU
- PDK Status: Alpha / development
- License: Commons Clause / MPL‑2.0 (see headers in source files)
What’s Implemented
1. Symbol Library & Callbacks
A set of device symbols has been imported from Xschem; 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 (partial list):
- MOSFETs: nmos_3p3, nmos_6p0, nmos_3p3_sab, nmos_6p0_nat, etc.
- Resistors: dnwpw (diff‑nwell poly‑resistor) with area/ perimeter parameters
- Capacitors: mim_2p0fF, nmoscap_3p3, nmoscap_6p0
- Additional variants with multiple fingers and implant options
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)
Basic 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)
Currently empty; reserved for future definitions of GDS layer/datatype mappings when layout support is added.
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
This information is queried by Revolution EDA at runtime to maintain consistent geometry and snapping.
4. Project Skeleton
Several directories are present but not yet populated:
pcells/– placeholder for future parametric layout cells (currently onlybase.py)models/– contains a couple of example.xycefiles for simulationdrc/– intended location for KLayout rule decksstipples/– 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). You could also use - 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.
⚠️ Layout support is not yet implemented. The layout editor currently will accept imported GDS or blank cells only; parametric cells and layer mappings will be provided in a future update.
Running Simulations
The project contains a couple of simple Xyce netlists in models/. When you
export a netlist from a schematic, callbacks automatically generate appropriate
parameter values, but be aware that the GF180 model library is not yet integrated
with Revolution EDA’s netlisting engine. You may need to manually include
models/*.xyce or translate them to .lib format.
Project Structure
gf180_pdk/
├── README.md # This file
├── __init__.py # Package initialization (empty)
├── config.json # PDK metadata used by menu system
├── callbacks.py # Instance parameter callbacks (≃370 lines)
├── process.py # Grid and GDS unit definitions
├── gf180_mcu_tech.py # Technology class exposing techParams
├── gf180_mcu_tech.json # Node definition JSON
├── schLayers.py # Schematic layer definitions
├── symLayers.py # Symbol layer definitions
├── layoutLayers.py # Layout layer definitions (currently stub)
├── pcells/ # Parametric cells (base.py only)
│ └── base.py # Base cell classes / helpers
├── models/ # Example simulation files (*.xyce)
├── drc/ # DRC rule decks (empty placeholder)
└── 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 other PDKs (e.g. IH PDK). - Define layout layers with proper GDS mappings in
layoutLayers.py. - Create callback classes for new devices as symbols are added.
- Populate
models/with SPICE or Xyce model libraries and connect them through the netlisting system. - Develop DRC rule decks for GF180 and integrate with
klayoutDRC.py.
The existing callbacks.py file already demonstrates how to compute geometry-related
parameters using Quantity objects; new classes should follow the same approach.
License
Apache 2.0 license.
Last Updated: February 2026
Status: Alpha / development