核心能力
1. TechContext
统一的工艺上下文对象,聚合 LEF(physical)、Liberty(timing/power)、RC tech(extraction)、rule deck(DRC/LVS)的所有信息。每个工具通过单一 TechContext 查询工艺参数,不再各自解析原始文件。Context 支持lazy-load 和按层/按 corner 的增量更新。
2. Capability Query
查询某工艺节点支持的 layers、vias、rules。示例查询:available_layers() 返回金属层列表及 pitch/width;supported_vias(from_layer, to_layer) 返回可用通孔类型;max_routing_capacity(net_class) 返回布线资源上限。
3. Semantic Mapping
layer purpose(drawing/pin/obstruction/blockage)、via type(square/bar/stack)、unit(microns/db_units)的统一语义映射。消除不同 PDK 格式间的歧义:SKY130 的 li1 和 Nangate45 的 metal1 统一映射为 m1 语义层。
4. Qualification
工艺库的资格认证和数据完整性检查。验证 LEF/Liberty/RC tech 之间的一致性(如 LEF 中的 layer 是否在 RC tech 中有对应 model),检查缺失文件、版本不匹配、参数越界。生成qualification_report。
5. PDK Adapter
为不同 PDK 格式生成统一 adapter:支持 OpenPDK(SKY130/GF180)、ASAP7、Nangate45、以及商业 PDK(需自定义 parser plugin)。Adapter 将原生格式统一转换为 TechContext 内部表示。
Agent 调用方式
from ieda.agent import TechKnowledge, TechContext
tech = TechKnowledge()
# 加载工艺并获取统一 context
ctx = tech.load(
pdk="sky130",
format="open_pdk",
corner="typical"
)
# Capability 查询
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"]
# 语义映射——统一不同 PDK 的命名
mapped = ctx.semantic_map("li1") # sky130 local interconnect
# → canonical: "m0", purpose: "drawing"
# 资格认证
report = tech.qualify(ctx)
# report: {"consistency": "pass", "missing_files": [], "warnings": 3}
# 不同 PDK adapter
ctx_asap7 = tech.load("asap7", format="asap7")
ctx_nangate = tech.load("nangate45", format="nangate")
// MCP 协议:Agent 查询工艺能力
{
"method": "tools/call",
"params": {
"name": "tech.query",
"arguments": {
"pdk": "sky130",
"query_type": "layer_properties",
"layer": "m3",
"fields": ["pitch", "width", "min_spacing", "resistance_per_sq"]
}
}
}
// 返回统一语义
{
"layer": "m3",
"canonical_name": "m3",
"properties": {
"pitch": 0.30, "width": 0.15,
"min_spacing": 0.17, "resistance_per_sq": 0.125
}
}
# Tcl 接口:工艺知识查询
ieda::tech load -pdk sky130 -format open_pdk
ieda::tech query -type layers
# m1 (pitch:0.30 width:0.15 purpose:drawing)
# m2 (pitch:0.30 width:0.15 purpose:drawing)
# ...
ieda::tech query -type vias -from m2 -to m3
# via2 via2_stack
ieda::tech qualify
# qualification: PASS (consistency:ok, warnings:1)
输入/输出契约
| 方向 | 字段 | 类型 | 说明 |
|---|---|---|---|
| 输入 | pdk | str | PDK 标识(sky130/gf180/asap7/nangate45) |
| 输入 | format | str | PDK 格式(open_pdk/asap7/nangate/custom) |
| 输入 | corner | str | 时序 corner(typical/slow/fast) |
| 输入 | query | TechQuery | capability 查询对象 |
| 输出 | context | TechContext | 统一的工艺上下文 |
| 输出 | query_result | dict | capability 查询结果 |
| 输出 | qualification_report | dict | 完整性/一致性检查报告 |