Synopsys 工艺文件(通常简称 "Tech File")是连接半导体制造工艺与 Synopsys EDA 工具(如 IC Compiler、Zroute、PrimeTime 等)的核心配置文件,它将晶圆厂提供的工艺规则(如布线、间距、层属性等)转化为 EDA 工具可识别的语法,是物理设计(布局、布线、DRC 检查)的 "工艺字典"。
1. 工艺文件的核心作用
-
统一工艺规则:将晶圆厂的制造约束(如金属最小线宽、过孔间距、光刻规则等)标准化为 EDA 工具可执行的参数;
-
工具适配:为布线器(Zroute / 经典布线器)、布局工具、DRC 验证工具提供统一的规则依据,确保设计符合工艺要求;
-
跨层级兼容:支撑从前端物理设计到后端验证的全流程,保证不同工具使用相同的工艺约束。
2. 工艺文件的核心结构
工艺文件采用分段式语法,核心段(Section)及作用如下,结合我们此前讨论的布线规则举例说明:
2.1 顶层 Technology 段
全局配置,作用于所有金属层 / 过孔层,通常定义工具通用规则、版本兼容、全局模式等。
Technology {
# 全局规则模式:如最小长度检查模式(对应此前的最小长度规则)
minLengthMode = 1
# 特殊最小面积规则启用(仅经典布线器需要)
minAreaMode = 1
# 短边规则检查模式(对应最小边缘规则)
minEdgeMode = 1
# 工具版本兼容
version = "S-2021.06-SP3"
}
2.2 Layer 段(核心)
每个金属层 / 过孔层独立配置,是布线设计规则的主要承载部分,我们此前讨论的 90% 以上的规则都配置在此段。
基础结构示例(结合此前规则):
# 定义Metal1层的所有工艺规则
Layer "Metal1" {
# 1. 层类型标识(工具识别用)
type = metal
# 2. 布线模式规则
nonPreferredRouteMode = 1 # 禁止非优先方向布线
onWireTrack = 1 # 强制栅格上布线
hasRectangleOnly = 1 # 仅限矩形规则
# 3. 最小面积/长度规则
minLength = 0.08 # 最小长度(单位:μm,依工艺而定)
minArea = 0.0064 # 通用最小面积
minAreaEdgeThreshold = 0.1 # 二级特殊最小面积的边缘阈值
specialMinArea = 0.01 # 特殊最小面积
# 4. 最小边缘规则
minEdgeLength = 0.07 # 短边长度阈值
maxNumMinEdge = 3 # 连续短边最大数量
maxTotalMinEdgeLength = 0.21 # 连续短边总长度上限
# 5. 金属间距规则
minSpacing = 0.08 # 基础最小间距
sameNetMinSpacing = 0.06 # 同网络最小间距
stubParallelLengthMaxThreshold = 0.1 # 短截线平行重叠阈值
stubMinSpacing = 0.07 # 短截线最小间距
# 6. 金属线宽规则
minWidth = 0.08 # 最小线宽
defaultWidth = 0.08 # 默认线宽
signalRouteMaxWidth = 0.5 # 信号布线最大线宽
}
# 定义Via1层(Metal1-Metal2过孔)的规则
Layer "Via1" {
type = via
onWireTrack = 1 # 过孔中心栅格对齐
minEnclosedArea = 0.01 # 过孔包围最小面积
}
2.3 其他关键段
| 段名 | 作用 |
|---|---|
ViaLayer |
专门定义过孔的层叠关系(如 Via1 连接 Metal1 和 Metal2)、过孔尺寸等 |
SpacingTable |
复杂间距规则的表格配置(如电压相关间距、多级最小面积的阈值表) |
Unit |
定义单位(如微米、纳米)、栅格精度(如 0.001μm) |
3. 工艺文件与布线设计规则的关联
我们此前讨论的所有布线规则(最小边缘、金属间距、线宽、面积等),本质上都是工艺文件中Layer段的属性配置:
-
规则的 "开关":部分规则需在
Technology段启用(如minAreaMode = 1启用特殊最小面积规则); -
规则的 "参数":规则的阈值(如
minSpacing = 0.08)直接配置在对应金属层的Layer段; -
工具适配:部分规则仅 Zroute 支持(如
hasRectangleOnly、convexConvexMinEdgeLengthTbl),需注意属性的工具兼容性。
4. 完整的 Synopsys® Technology File
这是一个面向先进工艺(如 7nm/5nm)的完整 Synopsys 工艺文件模板,整合了所有核心语法段与布线设计规则,适配 Zroute 与经典布线器,可直接用于 IC Compiler/IC Compiler II/Fusion Compiler 工具链。文件名建议保存为tech_7nm.tf。
/*
* Synopsys Technology File Template (S-2021.06-SP3兼容)
* 工艺: 7nm FinFET (示例参数,实际使用需替换为晶圆厂数据)
* 用途: 支持Zroute与经典布线器,包含完整布线设计规则
* 创建日期: 2026-01-15
*/
/******************************************************************************
* 1. 全局技术配置 (Technology Section)
* 定义单位、精度、全局规则模式,影响所有层的设计规则检查
******************************************************************************/
Technology {
name = "tech7nm_ff" // 工艺名称,get_techs命令返回值
/* 单位定义 (用户单位: 微米,精度: 1000 → 0.001μm分辨率) */
unitLengthName = "micron"
lengthPrecision = 1000
gridResolution = 50 // 制造栅格分辨率(0.05μm)
unitTimeName = "ns"
timePrecision = 100
unitCapacitanceName = "pf"
capacitancePrecision = 10000
unitResistanceName = "kohm"
resistancePrecision = 10
/* 全局规则模式 (影响所有金属层) */
minLengthMode = 1 // 最小长度检查包含过孔段
minAreaMode = 1 // 启用特殊最小面积规则(经典布线器)
minEdgeMode = 1 // 短边规则触发无需凹角
cornerSpacingMode = 0 // 过孔对角间距测量(对角线)
fatTblSpacingMode = 0 // Fat线间距索引降级模式
maxStackLevelMode = 1 // 过孔阵列最大堆叠层数检查
fixedColor = 0 // 多图案技术支持掩模交换
metalAboveMiMCap = "M9" // MiM电容插入在M9下方
}
/******************************************************************************
* 2. 基础颜色定义 (PrimaryColor Section)
* 定义GUI显示的6个基础颜色(2种强度的红、绿、蓝)
******************************************************************************/
PrimaryColor {
lightRed = 90
mediumRed = 180
lightGreen = 80
mediumGreen = 175
lightBlue = 100
mediumBlue = 190
}
/******************************************************************************
* 3. 自定义显示颜色 (Color Section)
* 覆盖默认颜色,用于层显示配置
******************************************************************************/
Color 62 {
name = "owhite"
rgbDefined = 1
redIntensity = 255
greenIntensity = 255
blueIntensity = 230
}
Color 3 {
name = "custom_blue"
rgbDefined = 1
redIntensity = 0
greenIntensity = 128
blueIntensity = 255
}
/******************************************************************************
* 4. 线型定义 (LineStyle Section)
* 定义层显示的线型样式
******************************************************************************/
LineStyle "boundary" {
width = 10
height = 1
pattern = (1, 0, 0, 1, 1, 1, 1, 1, 0, 0)
}
LineStyle "dashed" {
width = 4
height = 1
pattern = (1, 1, 0, 0)
}
/******************************************************************************
* 5. 单元Tile定义 (Tile Section)
* 标准单元行的基本单元尺寸,影响布线轨道生成
******************************************************************************/
Tile "unit" {
width = 16 // Tile宽度(单位: 微米)
height = 168 // Tile高度(单位: 微米)
}
/******************************************************************************
* 6. 层定义 (Layer Section)
* 核心部分: 定义各金属层、过孔层的物理/显示/设计规则/寄生参数
* 示例包含: 多晶硅、M1-M3金属层、Via1-Via2过孔层
******************************************************************************/
/* 6.1 多晶硅层 (Poly) */
Layer "POLY" {
/* 布局属性 */
layerNumber = 1
maskName = "poly"
pitch = 0.14
isDefaultLayer = 1
isMarkerLayer = 0
/* 显示属性 */
color = "custom_blue"
lineStyle = "solid"
pattern = "dot"
blink = 0
visible = 1
selectable = 1
/* 设计规则属性 */
minWidth = 0.07
minLength = 0.07
minArea = 0.0049
minSpacing = 0.07
sameNetMinSpacing = 0.06
/* 寄生属性 */
unitNomResistance = 0.01 // 方块电阻(千欧)
unitNomCapacitance = 0.001 // 单位面积电容(pF)
/* 物理属性 */
unitNomHeightFromSub = 0.01 // 距衬底高度(微米)
unitNomThickness = 0.005 // 厚度(微米)
}
/* 6.2 金属层1 (M1) - 优先方向: 水平 */
Layer "M1" {
/* 布局属性 */
layerNumber = 8
maskName = "metal1"
pitch = 0.22 // 线间距(0.22μm)
isDefaultLayer = 1
/* 显示属性 */
color = "blue"
lineStyle = "solid"
pattern = "solid"
blink = 0
visible = 1
selectable = 1
/* 设计规则属性 - 核心规则 */
minWidth = 0.08 // 最小线宽
nonPreferredWidth = 0.09 // 非优先方向最小线宽
defaultWidth = 0.08 // 默认线宽
signalRouteMaxWidth = 0.5 // 信号最大线宽
minLength = 0.14 // 最小长度
minArea = 0.0112 // 通用最小面积
minEdgeLength = 0.07 // 短边长度阈值
maxNumMinEdge = 3 // 连续短边最大数量
maxTotalMinEdgeLength = 0.21 // 连续短边总长度上限
minSpacing = 0.08 // 基础最小间距
stubParallelLengthMaxThreshold = 0.1 // 短截线平行重叠阈值
stubMinSpacing = 0.07 // 短截线最小间距
/* 高级规则 - 最小边缘 */
convexConcaveMinEdgeLength = 0.1 // 凸-凹连接边最小长度
convexMinEdgeLength = 0.08 // 相邻凸边最小长度
minEdgeLength2 = 0.08 // 特殊缺口最小宽度
minEdgeLength3 = 0.07 // 特殊缺口相邻边阈值
/* 高级规则 - 面积规则 */
minAreaEdgeThreshold = 0.1 // 二级特殊面积边缘阈值
specialMinArea = 0.015 // 特殊最小面积
specialMinAreaTblSize = 1 // 特殊面积表大小
minAreaEdgeThresholdTbl = (0.1)
minAreaFillMinLengthTbl = (0.1)
minAreaFillMinWidthTbl = (0.08)
specialMinAreaTbl = (0.015)
/* 高级规则 - 间距规则 */
concaveCornerKeepoutWidth = 0.1
concaveCornerKeepoutLength = 0.1
concaveCornerKeepoutMinEdgeLengthThreshold = 0.08
/* Zroute专属规则 */
hasRectangleOnly = 1 // 仅限矩形
onWireTrack = 1 // 强制栅格布线
nonPreferredRouteMode = 0 // 允许非优先方向布线
/* 寄生属性 */
unitNomResistance = 0.001 // 方块电阻(千欧)
unitNomCapacitance = 0.002 // 单位面积电容(pF)
maxCurrDensity = 5.0 // 最大电流密度(MA/cm²)
/* 物理属性 */
unitNomHeightFromSub = 0.1 // 距衬底高度(微米)
unitNomThickness = 0.01 // 厚度(微米)
}
/* 6.3 金属层2 (M2) - 优先方向: 垂直 */
Layer "M2" {
/* 布局属性 */
layerNumber = 9
maskName = "metal2"
pitch = 0.22
isDefaultLayer = 1
/* 显示属性 */
color = "red"
lineStyle = "solid"
pattern = "solid"
blink = 0
visible = 1
selectable = 1
/* 设计规则属性 */
minWidth = 0.08
minLength = 0.14
minArea = 0.0112
minSpacing = 0.08
sameNetMinSpacing = 0.07
/* Zroute专属规则 */
xLegalDimTblSize = 4 // 离散尺寸规则
xLegalDimTbl = (0.08, 0.1, 0.12, 0.14)
yLegalDimTblSize = 4
yLegalDimTbl = (0.08, 0.1, 0.12, 0.14)
/* 寄生与物理属性 */
unitNomResistance = 0.0008
unitNomCapacitance = 0.0018
unitNomHeightFromSub = 0.2
unitNomThickness = 0.012
}
/* 6.4 金属层3 (M3) - 优先方向: 水平 */
Layer "M3" {
layerNumber = 10
maskName = "metal3"
pitch = 0.24
isDefaultLayer = 1
color = "green"
lineStyle = "solid"
pattern = "solid"
minWidth = 0.09
minLength = 0.15
minArea = 0.0135
minSpacing = 0.09
}
/* 6.5 过孔层1 (Via1) - 连接M1与M2 */
Layer "Via1" {
/* 布局属性 */
layerNumber = 18
maskName = "via1"
isDefaultLayer = 1
/* 显示属性 */
color = "yellow"
lineStyle = "solid"
pattern = "rectangleX"
blink = 0
visible = 1
selectable = 1
/* 设计规则属性 */
minEnclosedArea = 0.0064
minSpacing = 0.1
onWireTrack = 1
}
/******************************************************************************
* 7. 层数据类型定义 (LayerDataType Section)
* 定义层的不同数据类型(如引脚文本、障碍物)
******************************************************************************/
LayerDataType "M1_PIN" {
layerNumber = 8
dataTypeNumber = 1
nonMask = 1 // 不参与掩模生成
visible = 1
selectable = 1
color = "red"
lineStyle = "solid"
pattern = "dot"
}
LayerDataType "M1_OBS" {
layerNumber = 8
dataTypeNumber = 2
nonMask = 1
visible = 1
selectable = 0
color = "gray"
lineStyle = "dashed"
pattern = "hatch"
}
/******************************************************************************
* 8. 过孔定义 (ContactCode Section)
* 定义过孔的物理结构、寄生参数、设计规则
******************************************************************************/
/* 8.1 默认过孔 (M1-M2) */
ContactCode "VIA1_DEFAULT" {
contactCodeNumber = 1
contactSourceType = 0 // 单切割固定过孔
cutLayer = "Via1"
lowerLayer = "M1"
upperLayer = "M2"
isDefaultContact = 1 // 默认过孔
/* 物理属性 */
cutWidth = 0.07
cutHeight = 0.07
minNumRows = 1
minNumCols = 1
/* 设计规则属性 */
upperLayerEncWidth = 0.03
upperLayerEncHeight = 0.03
lowerLayerEncWidth = 0.03
lowerLayerEncHeight = 0.03
minCutSpacing = 0.14
/* 寄生属性 */
unitNomResistance = 0.00025 // 过孔电阻(千欧)
unitNomCapacitance = 0.0004 // 过孔电容(pF)
temperatureCoeff = 2.5e-06 // 温度系数
}
/* 8.2 Fat过孔 (M1-M2,宽线专用) */
ContactCode "VIA1_FAT" {
contactCodeNumber = 2
contactSourceType = 0
cutLayer = "Via1"
lowerLayer = "M1"
upperLayer = "M2"
isFatContact = 1 // Fat过孔标记
/* 物理属性 */
cutWidth = 0.14
cutHeight = 0.14
minNumRows = 2
minNumCols = 2
/* 设计规则属性 */
upperLayerEncWidth = 0.05
upperLayerEncHeight = 0.05
lowerLayerEncWidth = 0.05
lowerLayerEncHeight = 0.05
minCutSpacing = 0.2
/* 寄生属性 */
unitNomResistance = 0.0001 // 更低电阻
unitNomCapacitance = 0.0008
}
/******************************************************************************
* 9. 层间设计规则 (DesignRule Section)
* 定义跨层设计规则,如层间间距、包围规则
******************************************************************************/
DesignRule {
layer1 = "M1"
layer2 = "M2"
minSpacing = 0.08
minEnclosure = 0.03
endOfLineEnclosure = 0.04
stackable = 1 // 允许过孔堆叠
}
DesignRule {
layer1 = "M1"
layer2 = "Via1"
minSpacing = 0.05
cornerMinSpacing = 0.04
}
/******************************************************************************
* 10. 密度规则 (DensityRule Section)
* 定义金属填充密度要求,用于signoff_metal_fill
******************************************************************************/
DensityRule {
layer = "M1"
windowSize = 200 // 检查窗口尺寸(微米)
minDensity = 20 // 最小密度(%)
maxDensity = 80 // 最大密度(%)
maxGradientDensity = 10 // 相邻窗口密度差(%)
}
DensityRule {
layer = "M2"
windowSize = 200
minDensity = 20
maxDensity = 80
}
/******************************************************************************
* 11. 开槽规则 (SlotRule Section)
* 定义宽金属开槽规则,用于IC Compiler的slot_wire命令
******************************************************************************/
SlotRule "" {
layerNumber = 8 // M1层
lengthThreshold = 5.0 // 长度阈值(微米)
widthThreshold = 0.5 // 宽度阈值(微米)
minSlotWidth = 0.1
maxSlotWidth = 0.2
minSlotLength = 1.0
maxSlotLength = 4.0
minSideSpace = 0.1
maxSideSpace = 0.2
}
/******************************************************************************
* 12. 边缘电容规则 (FringeCap Section)
* 定义层间/层内耦合电容,用于时序驱动布局
******************************************************************************/
/* 12.1 M1-M2层间耦合电容 */
FringeCap 1 {
number = 1
layer1 = "M1"
layer2 = "M2"
minFringeCap = 0.00022
nomFringeCap = 0.00022
maxFringeCap = 0.00022
}
/* 12.2 M1层内耦合电容 */
FringeCap 2 {
number = 2
layer1 = "M1"
layer2 = "M1"
minFringeCap = 0.00017
nomFringeCap = 0.00017
maxFringeCap = 0.00017
}
/******************************************************************************
* 13. 电容模型 (CapModel & CapTable Section)
* 定义层材料、厚度、介电常数,用于寄生参数计算
******************************************************************************/
CapModel "M1_Cap_Model" {
refLayer = "M1"
groundPlaneBelow = "POLY"
groundPlaneAbove = "M2"
bottomCapType = "Table"
bottomCapDataMin = "M1_C_BOTTOM"
bottomCapDataNom = "M1_C_BOTTOM"
bottomCapDataMax = "M1_C_BOTTOM"
topCapType = "Table"
topCapDataMin = "M1_C_TOP"
topCapDataNom = "M1_C_TOP"
topCapDataMax = "M1_C_TOP"
}
CapTable "M1_C_BOTTOM" {
wireWidthSize = 3
wireSpacingSize = 3
wireWidth = (0.08, 0.1, 0.12)
wireSpacing = (0.08, 0.1, 0.12)
capValue = (
2.4798e-05, 3.05934e-05, 3.5548e-05,
3.1404e-05, 3.74482e-05, 4.2877e-05,
3.87834e-05, 4.50642e-05, 5.07664e-05
)
}
/******************************************************************************
* 14. 电阻模型 (ResModel Section)
* 定义线宽相关的电阻与温度系数,覆盖Layer段的电阻参数
******************************************************************************/
ResModel "M1_Res_Model" {
layerNumber = 8 // 对应M1层
size = 3
wireWidth = (0.08, 0.1, 0.12)
tempCoeff = (0.001, 0.001, 0.001)
minRes = (0.001, 0.0009, 0.0008)
nomRes = (0.001, 0.0009, 0.0008)
maxRes = (0.0012, 0.0011, 0.001)
}
/******************************************************************************
* 15. 过孔规则 (ViaRule Section)
* 定义特殊过孔结构,如自对准过孔(SAV)
******************************************************************************/
ViaRule "SAV_Via1" {
viaName = "Via1"
isSelfAligned = 1 // 自对准过孔
minEnclosure = 0.02
maxMisalignment = 0.01
}
/******************************************************************************
* 16. PR规则 (PRRule Section)
* 定义单元行间距规则,用于布局
******************************************************************************/
PRRule {
rowSpacingTopBot = 2.8 // 非双回折单元行间距
abuttableTopBot = 0 // 不允许边缘对接
rowSpacingTopTop = 2.8 // 双回折单元行间距
rowSpacingBotBot = 1.4
abuttableTopTop = 1
abuttableBotBot = 1
}
1. 工具适配
- Fusion Compiler/IC Compiler II : 使用
write_tech_file tech7nm.tf导出,read_tech_file tech7nm.tf导入 - IC Compiler : 使用
write_mw_lib_files -technology -output tech7nm.tf导出,read_mw_lib_files -technology tech7nm.tf导入
2. 关键参数替换
| 参数类别 | 替换说明 |
|---|---|
| 单位与精度 | 根据晶圆厂要求调整lengthPrecision、gridResolution |
| 设计规则 | 替换minWidth、minSpacing等为工艺节点实际值 |
| 寄生参数 | 从 TLUPlus 文件或晶圆厂提供的 RC 参数中获取准确值 |
| 物理属性 | 更新unitNomHeightFromSub、unitNomThickness为实际层叠结构 |
3. 规则检查
- 使用
check_tech_file tech7nm.tf验证语法正确性 - 布线后通过
signoff_drc检查规则遵守情况 - 对 Zroute 专属规则,使用
zroute -check_design_rules专项检查
5. Synopsys® Technology File 和innovus以及virtuoso的techfile 区别
Synopsys® Technology File、Cadence Innovus Tech File 与 Cadence Virtuoso Tech File 的核心区别在于归属的 EDA 工具链不同、承载的规则范围不同、应用阶段不同,三者均是连接半导体制造工艺与 EDA 工具的桥梁,但针对的设计环节和工具特性做了差异化适配。
以下是三者的详细对比:
| 特性维度 | Synopsys® Technology File | Cadence Innovus Tech File | Cadence Virtuoso Tech File |
|---|---|---|---|
| 归属工具链 | Synopsys 数字后端工具链(IC Compiler II、Fusion Compiler、Zroute、PrimeTime) | Cadence 数字后端工具链(Innovus、Tempus、Voltus) | Cadence 定制 / 模拟 / 全定制设计工具链(Virtuoso Layout Suite) |
| 核心应用阶段 | 数字 IC 后端物理实现(布局、布线、时序签核、物理验证) | 数字 IC 后端物理实现(布局规划、详细布线、CTS、物理验证签核) | 模拟 / 全定制 IC 版图设计(器件绘制、单元版图设计、模块布局布线) |
| 承载的核心规则 | 1. 数字布线规则(最小边缘、金属间距、线宽、过孔堆叠、密度填充)2. 时序相关寄生参数(电阻、电容模型)3. 工具全局模式(栅格精度、双重图形光刻规则)4. 面向布线器的约束(优先方向、离散尺寸规则) | 1. 数字后端物理实现规则(布局密度、单元摆放约束、CTS 规则)2. 布线规则(同 Synopsys,但语法不同)3. 物理验证接口规则(与 Calibre DRC/LVS 对接)4. 功耗相关规则(电源网格设计约束) | 1. 工艺层物理属性 (层厚度、介电常数、光刻掩模信息)2. 器件模型关联(MOS 管、电阻、电容的版图与工艺参数映射)3. 版图编辑规则(层可见性、颜色配置、栅格捕捉)4. 基础 DRC 规则(最小线宽、间距,供版图实时检查) |
| 语法与格式 | 采用 Synopsys 专属的分段式语法(Technology/Layer/ContactCode/DensityRule 段),后缀通常为 .tf |
采用 Cadence 数字后端专属语法,与 Synopsys 规则参数一致但关键字不同(如 min_width 对应 Synopsys 的 minWidth),后缀多为 .tf 或 .tech |
分为两类格式:1. 工艺文件(Tech File) :描述层属性,后缀 .tf2. 工艺库(PDK):包含器件模型、版图规则、符号库,是 Virtuoso 的核心,通常为晶圆厂提供的完整包 |
| 与 PDK 的关系 | 依赖晶圆厂提供的 PDK 提取规则参数,但自身不包含器件模型,仅聚焦数字后端布线与物理约束 | 同样依赖 PDK 提取参数,与 Innovus 工具的物理实现流程深度绑定,支持电源网格、时钟树的定制化约束 | 本身就是 PDK 的核心组成部分,Virtuoso 的 Tech File + 器件模型 + DRC/LVS 规则 = 完整的工艺设计包(PDK),直接支撑版图绘制 |
| 规则侧重点 | 面向数字大规模布线,强调规则的自动化执行(如 Zroute 专属的矩形图形约束、离散线宽规则) | 面向数字后端全流程,兼顾布局、布线、功耗、时序的协同优化,支持更多物理实现策略(如 hierarchical 设计) | 面向手工 / 半手工版图设计,强调层的物理属性和器件的版图匹配,规则用于版图绘制时的实时校验 |
| 兼容性 | 仅能被 Synopsys 数字后端工具识别,无法直接导入 Virtuoso/Innovus | 仅能被 Cadence 数字后端工具识别,与 Synopsys Tech File 语法不兼容,需通过转换工具(如 Cadence 的 tech2innovus)适配 |
可被 Virtuoso 系列工具识别,数字后端工具无法直接使用,需从中提取层规则后转换为后端 Tech File |
-
面向的设计类型不同
-
Synopsys Tech File 和 Innovus Tech File 是数字 IC 专属 ,针对的是由标准单元、IP 核组成的大规模数字电路,规则的核心目标是支持自动化布局布线。
-
Virtuoso Tech File 是模拟 / 全定制 IC 专属 ,针对的是晶体管级的手工版图设计,规则的核心目标是保证器件版图与工艺的一致性,以及版图绘制的规范性。
-
-
是否包含器件模型的区别
-
Synopsys 和 Innovus 的 Tech File 不包含任何器件模型,它们只关注金属、过孔等布线层的物理规则,器件模型由单独的时序库(.lib)、寄生参数库(TLUPlus)提供。
-
Virtuoso 的 Tech File 与器件模型深度绑定 ,例如 MOS 管的栅极对应
POLY层、源漏对应DIFF层,这些层的属性直接决定器件的电学特性,是模拟版图设计的基础。
-
-
规则的可移植性 三者的规则参数(如
minWidth/minSpacing的数值)来源于同一晶圆厂 PDK,但语法和组织形式完全不同,无法直接互相导入使用。- 若要在 Synopsys 和 Cadence 工具间迁移规则,需通过工艺转换工具 (如 Synopsys 的
tech_convert、Cadence 的pdk2tech)将 PDK 中的原始规则转换为对应工具的 Tech File 格式。
- 若要在 Synopsys 和 Cadence 工具间迁移规则,需通过工艺转换工具 (如 Synopsys 的
-
规则兼容性 两者的工艺参数数值 (如
minWidth=0.08μm、minSpacing=0.08μm)均来源于同一晶圆厂 PDK,但语法和组织形式完全不兼容 ,无法直接互相导入。需通过专用转换工具(如 Synopsystech_convert、Cadencepdk2tech)将 PDK 原始规则转换为对应工具的工艺文件格式。 -
布线器专属规则 Synopsys 工艺文件包含大量布线器专属约束 (如 Zroute 的
hasRectangleOnly、onWireTrack规则),专为自动化高密度布线优化;Cadence Innovus 工艺文件则更侧重布局与布线的协同约束(如单元行间距、电源网格间距)。
6. PDK 规则到 Synopsys/Cadence 工艺文件的转换步骤清单
晶圆厂提供的 PDK(Process Design Kit) 是工艺规则的原始载体,包含层属性、设计规则、器件模型、DRC/LVS 脚本等全量数据。将 PDK 转换为 Synopsys/Cadence 工艺文件的核心目标,是提取 PDK 中与工具适配的规则,转化为对应工具链可识别的语法格式 ,具体步骤分三大阶段:PDK 预处理 、Synopsys 工艺文件转换 、Cadence 工艺文件转换。
阶段 1:PDK 预处理(通用步骤,所有工具链必需)
此阶段的核心是从 PDK 中提取关键数据,确保规则的完整性和一致性,为后续转换打基础。
-
获取并解压晶圆厂 PDK 包
-
确认 PDK 版本与目标工艺节点匹配(如 7nm/5nm FinFET)。
-
解压 PDK 包,查看核心文件:
-
工艺规则文档(
*.pdf):包含金属 / 过孔的最小线宽、间距、面积等关键参数; -
层属性文件(
*.tf/*.layermap):定义层名称、编号、光刻掩模信息; -
寄生参数文件(
*.tlup/*.cim):电阻、电容、过孔寄生模型; -
DRC/LVS 脚本(
*.rule/*.cal):物理验证规则,用于交叉核对转换后的数据。
-
-
-
提取核心规则参数 整理 PDK 中的关键参数,形成规则对照表 ,避免转换时遗漏,示例如下:
规则类型 关键参数 提取来源 金属层规则 层名、优先方向、minWidth、minSpacing、minArea、minLength 工艺规则文档 + DRC 脚本 过孔层规则 过孔名、上下金属层、cutSize、minEnclosure、minSpacing 工艺规则文档 + 层属性文件 寄生参数 方块电阻、单位面积电容、过孔电阻 / 电容 寄生参数文件 密度规则 金属填充的 minDensity、maxDensity、窗口尺寸 DRC 脚本 -
校验参数一致性
-
对比工艺规则文档与 DRC 脚本中的参数,确保数值一致(如
minWidth在文档和脚本中均为 0.08μm)。 -
确认寄生参数与层属性匹配(如 M1 层的方块电阻对应正确的层编号)。
-
阶段 2:转换为 Synopsys 工艺文件(适配 IC Compiler/Zroute)
目标是生成 Synopsys 工具链可识别的 .tf 文件,核心工具为 Synopsys 自带的 tech_prep 或手动编写。
-
选择转换方式:自动转换 vs 手动编写
-
自动转换(推荐,适合大规模规则)
-
启动 Synopsys
tech_prep工具,加载 PDK 的层属性文件和规则对照表。 -
配置全局参数:单位(微米)、长度精度(如 1000 → 0.001μm)、栅格分辨率。
-
执行命令:
tech_prep -pdk [PDK_PATH] -output [SYNOPSYS_TF_PATH],生成初始.tf文件。
-
-
手动编写(适合小规模定制,或自动转换后优化)
-
新建文本文件,命名为
tech_synopsys.tf。 -
按 Synopsys 工艺文件语法,依次编写
Technology段、Layer段、ContactCode段等,直接填入阶段 1 提取的参数。 -
绑定寄生参数:通过
ResModel/CapModel段,关联 PDK 中的TLUPlus文件。
-
-
-
配置工具专属规则根据 Synopsys 布线器特性,添加专属约束:
-
Zroute 专属规则:
hasRectangleOnly = 1、onWireTrack = 1; -
双重图形规则:
dpMode = 1、dpMaskCount = 2; -
全局模式开关:
minLengthMode = 1、minAreaMode = 1。
-
-
验证 Synopsys 工艺文件
-
使用 Synopsys 工具命令校验语法正确性:
check_tech_file tech_synopsys.tf -
若有语法错误,根据报错信息修正(如缺失段、参数类型错误)。
-
导入 IC Compiler 工具,加载标准单元库,执行小型布线测试,确认规则生效(如布线未出现 minWidth 违规)。
-
阶段 3:转换为 Cadence 工艺文件(分数字后端 / 模拟全定制两类)
Cadence 工艺文件分两种,分别适配数字后端工具(Innovus)和模拟全定制工具(Virtuoso),转换流程不同。
子阶段 3.1:转换为 Cadence Innovus 数字后端工艺文件
目标是生成 Innovus 可识别的 .tf/.tech 文件,核心是语法转换(驼峰→下划线)+ 工具专属规则配置。
-
自动转换(推荐工具:Cadence
pdk2tech)-
启动 Cadence Innovus 工具,加载 PDK 的规则对照表。
-
执行
pdk2tech命令,指定 PDK 路径和输出路径:pdk2tech -pdk [PDK_PATH] -tech [INNOVUS_TECH_PATH] -format innovus -
工具自动完成语法映射 :将 Synopsys 驼峰命名(如
minWidth)转换为 Cadence 下划线命名(如min_width)。
-
-
手动调整工具专属规则自动转换后,需添加 Innovus 特有的物理实现规则:
-
布局规则:配置单元行间距(
row_spacing)、Tile 尺寸; -
电源网格规则:定义电源条宽度(
pg_strap_width)、间距(pg_strap_spacing); -
CTS 规则:设置时钟树缓冲器的摆放约束(
cts_buffer_spacing)。
-
-
验证 Innovus 工艺文件
-
执行命令校验语法:
innovus -batch -command "read_tech [INNOVUS_TECH_FILE]; check_tech; exit" -
导入 Innovus,加载标准单元库,执行布局规划测试,确认电源网格和单元摆放符合规则。
-
子阶段 3.2:转换为 Cadence Virtuoso 模拟全定制工艺文件
Virtuoso 的工艺文件是 PDK 的核心组成部分 ,转换的核心是层属性配置 + 器件模型绑定,与数字后端完全不同。
-
配置 Virtuoso 层属性文件(
.tf)-
新建层属性文件
tech_virtuoso.tf,编写层定义,示例:Layer POLY { layerNumber: 1; maskName: "poly"; color: 3; lineStyle: "solid"; minWidth: 0.06; minSpacing: 0.06; } -
绑定光刻掩模信息:为每层指定
maskNumber,匹配 PDK 的光刻要求。
-
-
导入器件模型库(
.oa/.model)-
将 PDK 中的器件模型(MOS 管、电阻、电容)导入 Virtuoso 的
Library Manager。 -
建立器件 - 版图映射关系 :如 MOS 管的栅极对应
POLY层,源漏对应DIFF层。
-
-
集成 DRC/LVS 脚本
-
将 PDK 的 DRC/LVS 脚本(
*.cal)复制到 Virtuoso 的rule目录。 -
在 Virtuoso 中配置脚本路径:
Setup → DRC/LVS → Rule File,关联对应的脚本。
-
-
验证 Virtuoso 工艺文件
-
在 Virtuoso 中绘制测试器件(如 NMOS 管),执行实时 DRC 检查,确认 minWidth、minSpacing 规则生效。
-
对测试器件执行 LVS 检查,确认器件版图与模型匹配。
-
7. 关键注意事项
-
参数一致性转换后的工艺文件参数必须与 PDK 完全一致,否则会导致设计违规(如 minWidth 设为 0.09μm 会引发 DRC 错误)。
-
工具版本兼容
-
Synopsys 工艺文件需匹配 IC Compiler 版本(如 S-2021.06-SP3);
-
Cadence 工艺文件需匹配 Innovus/Virtuoso 版本(如 Innovus 21.1)。
-
-
交叉验证 转换完成后,分别在 Synopsys/Cadence 工具中进行小范围设计验证,对比 DRC 结果,确保规则无偏差。