Skip to content

Technology Knowledge · PDK semantics & process capabilities

Centralized semantics for LEF/Liberty/RC tech/rule deck/layer purpose. Tools no longer parse process files individually—query capabilities, coverage, and constraints via unified TechContext.

Agent Service · D0/DRAFT · Wave 0 Planned · D0 iEDA.ai L4
tech — context — capability
# unified tech context for all tools
$ tech.load("sky130", format="open_pdk")
[layers] 22 metal + 5 via types
[rules]  min_width=0.15um spacing=0.17um
→ single TechContext,  zero per-tool parsers
iMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout modeliMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout model

Core capabilities

1. TechContext

Unified process context aggregating LEF (physical), Liberty (timing/power), RC tech (extraction), and rule deck (DRC/LVS). Every tool queries via a single TechContext with lazy-load and per-layer/per-corner incremental updates.

2. Capability Query

Query supported layers, vias, and rules for a process node. E.g. available_layers() returns metal layers with pitch/width; supported_vias(from_layer, to_layer) returns via types; max_routing_capacity(net_class) returns routing capacity cap.

3. Semantic Mapping

Unified semantic mapping for layer purpose (drawing/pin/obstruction/blockage), via type (square/bar/stack), and units (microns/db_units). Resolves PDK naming ambiguity—SKY130 li1 and Nangate45 metal1 map to semantic m1.

4. Qualification

PDK qualification and data integrity checks. Verify LEF/Liberty/RC tech consistency (e.g., LEF layers have RC models), missing files, version mismatch, out-of-range parameters. Produces qualification_report.

5. PDK Adapter

Unified adapters for PDK formats: OpenPDK (SKY130/GF180), ASAP7, Nangate45, and commercial PDKs (custom parser plugins). Adapters convert native formats to internal TechContext representation.

Agent calling patterns

from ieda.agent import TechKnowledge, TechContext

tech = TechKnowledge()

# Load process and get unified context
ctx = tech.load(
    pdk="sky130",
    format="open_pdk",
    corner="typical"
)

# Capability query
layers = ctx.available_layers()
# layers: [{name: "m1", pitch: 0.30, width: 0.15, purpose: "drawing"}, ...]

vias = ctx.supported_vias("m2", "m3")
# vias: ["via2", "via2_stack"]

# Semantic mapping—unify PDK naming
mapped = ctx.semantic_map("li1")  # sky130 local interconnect
# → canonical: "m0", purpose: "drawing"

# Qualification
report = tech.qualify(ctx)
# report: {"consistency": "pass", "missing_files": [], "warnings": 3}

# PDK adapters
ctx_asap7 = tech.load("asap7", format="asap7")
ctx_nangate = tech.load("nangate45", format="nangate")

Input / output contract

DirectionFieldTypeDescription
InputpdkstrPDK identifier (sky130/gf180/asap7/nangate45)
InputformatstrPDK format (open_pdk/asap7/nangate/custom)
InputcornerstrTiming corner (typical/slow/fast)
InputqueryTechQueryCapability query object
OutputcontextTechContextUnified process context
Outputquery_resultdictCapability query result
Outputqualification_reportdictIntegrity/consistency check report