目录
[1. 认识 Techfile 及其核心作用](#1. 认识 Techfile 及其核心作用)
[1.1 techfile通常包含以下关键信息:](#1.1 techfile通常包含以下关键信息:)
[2. Techfile 的语法与主要内容](#2. Techfile 的语法与主要内容)
[2.1 工艺文件包含以下语句和章节:](#2.1 工艺文件包含以下语句和章节:)
[2.2 . 文件头与单位定义](#2.2 . 文件头与单位定义)
[2.2.1 include(文件嵌入)](#2.2.1 include(文件嵌入))
[2.2.2 comment(注释)](#2.2.2 comment(注释))
[2.3 工艺文件控制参数](#2.3 工艺文件控制参数)
[2.3.1 controls(控制参数总段)](#2.3.1 controls(控制参数总段))
[2.3.2. processNode(工艺节点)](#2.3.2. processNode(工艺节点))
[2.3.4 techVersion(工艺文件版本)](#2.3.4 techVersion(工艺文件版本))
[2.3.5 techParams(工艺参数)](#2.3.5 techParams(工艺参数))
[2.3.6 distanceMeasure(距离测量方式)](#2.3.6 distanceMeasure(距离测量方式))
[2.3.7 viewTypeUnits(视图类型单位)](#2.3.7 viewTypeUnits(视图类型单位))
[2.3.8 mfgGridResolution(制造栅格分辨率)](#2.3.8 mfgGridResolution(制造栅格分辨率))
[2.3.9 refTechLibs(参考工艺库)](#2.3.9 refTechLibs(参考工艺库))
[2.3.10 processFamily(工艺系列)](#2.3.10 processFamily(工艺系列))
[2.4 . 图层 (Layer) 定义](#2.4 . 图层 (Layer) 定义)
[2.3.1 layerDefinitions(图层定义总段)](#2.3.1 layerDefinitions(图层定义总段))
[2.3.2 techLayers(工艺图层定义](#2.3.2 techLayers(工艺图层定义))
[2.3.4 techPurposes(工艺图层用途定义)](#2.3.4 techPurposes(工艺图层用途定义))
[1. 参数说明](#1. 参数说明)
[2. 预定义用途](#2. 预定义用途)
[3. 自定义对象属性](#3. 自定义对象属性)
[4. 版图对象](#4. 版图对象)
[5. 模拟对象](#5. 模拟对象)
[6. 动态高亮与拖拽轮廓](#6. 动态高亮与拖拽轮廓)
[示例 1](#示例 1)
[示例 2](#示例 2)
[示例 3](#示例 3)
[示例 4](#示例 4)
[示例 5](#示例 5)
[2.4.5 techLayerPurposePriorities(图层 - 用途组合优先级)](#2.4.5 techLayerPurposePriorities(图层 - 用途组合优先级))
[2.4.6 techDisplays(图层显示属性)](#2.4.6 techDisplays(图层显示属性))
[2.4.7 techLayerProperties](#2.4.7 techLayerProperties)
[2.4.8 techDerivedLayers](#2.4.8 techDerivedLayers)
[1. 关联用途的派生图层](#1. 关联用途的派生图层)
[2. 尺寸缩放派生图层](#2. 尺寸缩放派生图层)
[3. 面积限制派生图层](#3. 面积限制派生图层)
[4. 颜色筛选派生图层](#4. 颜色筛选派生图层)
[场景 1](#场景 1)
[场景 2](#场景 2)
[场景 3](#场景 3)
[场景 4](#场景 4)
[场景 5](#场景 5)
[5. 双图层运算派生图层](#5. 双图层运算派生图层)
[2.4.9 LPP Valid Functionality](#2.4.9 LPP Valid Functionality)
[LPP 有效性相关属性说明](#LPP 有效性相关属性说明)
[2.4.10 简单示例](#2.4.10 简单示例)
[2.5 层属性定义](#2.5 层属性定义)
[2.6 File Site Definitions](#2.6 File Site Definitions)
[2.7 . 通孔 (Via/ContactCode) 定义](#2.7 . 通孔 (Via/ContactCode) 定义)
[2.5 单元基底 (Tile/Unit Tile) 定义](#2.5 单元基底 (Tile/Unit Tile) 定义)
[2.6 . 设计规则 (DesignRule)](#2.6 . 设计规则 (DesignRule))
[3. Techfile 在 Virtuoso 中的应用流程](#3. Techfile 在 Virtuoso 中的应用流程)
[4、使用 Techfile 的注意事项](#4、使用 Techfile 的注意事项)
工艺文件(Techfile)是 Cadence Virtuoso 集成电路设计平台中核心的底层数据文件,它是连接芯片设计与半导体制造工艺的桥梁,定义了从晶圆制造到版图验证全流程所需的工艺规则、图层属性、物理参数等关键信息。Virtuoso 作为主流的 IC 设计与物理验证工具,对 Techfile 的完整性和准确性有极高的依赖,其质量直接决定了版图设计的合规性和可制造性。
1. 认识 Techfile 及其核心作用
-
定义版图图层体系 Techfile 明确了芯片制造涉及的所有物理图层 及属性,包括金属层(Metal1、Metal2...)、介质层、多晶硅层(Poly)、掺杂层(N+、P+)、过孔层(Via1、Via2...)等。每个图层都会被赋予唯一的标识、颜色、填充样式和显示优先级,确保设计人员在 Virtuoso 界面中能清晰区分不同工艺层级。同时,图层的用途属性也会被定义,例如区分绘图层(Drawing Layer)、掩膜层(Mask Layer)、标注层(Annotation Layer),指导 Virtuoso 识别图层的功能。对于先进封装interposer的相关设计,只需要关注金属层和via层以及DTC层即可,杂事不包含任何器件的层次;
-
承载设计规则检查(DRC)标准 这是 Techfile 最关键的功能之一,它将半导体制造厂的工艺能力转化为可被 Virtuoso DRC 工具执行的规则语句。这些规则涵盖:
-
**几何尺寸规则:**如最小线宽、最小间距、最小过孔尺寸;
-
**延伸量规则:**如金属层对过孔的覆盖延伸量(Extension)、阱区对有源区的包围延伸量;
-
**密度规则:**如金属密度(Metal Density)的上下限要求,防止芯片制造过程中出现晶圆变形、光刻偏差等问题;
-
**特殊工艺规则:**如天线效应(Antenna Effect)抑制规则、光刻友好性(Litho-Friendly Design)规则。
-
-
支撑版图与电路图一致性检查(LVS) Techfile 为 LVS 工具提供器件与图层的映射关系,定义不同图层组合对应的半导体器件。例如,多晶硅层(Poly)与 N 型有源区(N Active)的重叠区域被识别为 N 型 MOS 管栅极;金属层与接触孔(Contact)的连接被识别为器件引脚。此外,Techfile 还会定义器件的电学参数模板,如 MOS 管的阈值电压、电阻的方块电阻值等,为 LVS 提供验证基准。
-
指导物理验证与数据输出 在版图完成设计和验证后,Techfile 会指导 Virtuoso 输出符合制造厂要求的掩膜版数据(GDSII 格式)。它定义了图层与掩膜版的对应关系、数据精度、图层对齐要求等,确保输出的 GDSII 文件能被晶圆厂的光刻设备正确识别和处理。
Techfile,即 Technology 是一个包含了特定半导体制造工艺所有物理和电气规则定义的配置文件,是设计工具(如Cadence, Synopsys) 和制造厂(如TSMC, SMIC) 之间的 "翻译官"和"规则手册",只指设计者按照fab的制造需求设计die的准则,类似于基板设计中的design rule,但是二者却有非常大的差异。
1.1 techfile通常包含以下关键信息:
a) 物理设计规则
这部分定义了芯片上每一层(如金属层Mz、alpa、多晶硅层、接触孔via等,TSV等)的几何约束,确保芯片在制造过程中的良率,确保能按照工艺加工出来。
规则包括:
· 宽度:金属线或多晶硅的最小宽度。一般wafer上面的金属有明确的长度宽度和density的需求。
· 间距:同一层上两个图形之间的最小距离。
· 包围:一个图形必须完全包围另一个图形的最小值(例如,接触孔必须被金属完全包围)。
· 延伸:一个图形必须超出另一个图形的最小长度。
· 密度:金属层等需要保持的最小和最大金属填充密度。
以上内容,会有比较明确的rule deck在设计的某个阶段可以通过run drc 抓到无法满足rule的设计。
b) 电气规则
这部分定义了互连线的电气特性,用于精确计算时序、功耗和信号完整性。
· 层定义:定义每一层是布线层、阻挡层还是其他类型。
· 寄生参数提取模型:提供单位长度/面积的电阻和电容值。这是计算导线延迟的关键。
· 天线效应规则:防止在制造过程中等离子刻蚀导致栅氧击穿。
c) 显示与可视化信息
为了让工程师能够清晰地查看复杂的版图一般会配合 display file 一起使,可以手动修改。 ,Techfile还定义了:
· 层号与目的:为每一层分配一个唯一的编号和用途(如drawing, pin, label)。
· 颜色与图案:定义每一层在屏幕上显示的颜色和填充图案。
· 线型:实线、虚线等。
d) 器件定义与PDK
Techfile是工艺设计套件 的核心组成部分之一。我们参照tsmc 或者smic 的techfile 文件,techfile 一份文件包含以下内容。
2. Techfile 的语法与主要内容
工艺文件支持用户配置和定义以下内容:工艺文件控制参数;设计图层、图层属性、器件单元(Site)、过孔及器件;设计约束;以及版图编辑器面板(Palette)中的图层显示规则。此外,工艺文件还允许用户创建多个约束组来定义设计约束,后续可根据设计流程中启用的应用程序,在设计会话阶段加载这些约束组。与工艺文件其他部分定义的设计规则相比,约束组的应用具备更高的灵活性。但需注意,约束组能否被识别取决于对应的应用程序。
2.1 工艺文件包含以下语句和章节:
| 工艺文件章节 | 功能描述 | 工艺文件子章节 |
|---|---|---|
| 语句:include | 指定需嵌入到当前工艺文件中的外部文件 | 无(N/A) |
| 语句:comment | 定义注释信息,该注释在工艺文件的加载和导出过程中会被保留 | 无(N/A) |
| controls(控制参数) | 配置工艺数据库的相关控制参数 | 1. 工艺节点设置:processNode 2. 工艺文件版本:techVersion 3. 全文件通用工艺参数:techParams 4. 距离测量类型(欧几里得距离 / 曼哈顿距离):distanceMeasure 5. 视图类型单位:viewTypeUnits 6. 整体设计制造栅格分辨率:mfgGridResolution 7. 参考工艺数据库的有序列表:refTechLibs 8. 工艺数据库所属的工艺系列名称:processFamily |
| layerDefinitions(图层定义) | 定义设计图层相关属性 | 1. 工艺图层:techLayers 2. 图层用途:techPurposes 3. 图层 - 用途组合的优先级:techLayerPurposePriorities 4. 图层显示规则:techDisplays 5. 图层属性:techLayerProperties 6. 派生图层:techDerivedLayers |
| layerRules(图层规则) | 定义图层相关规则 | 1. 等效图层(不兼容图层):incompatibleLayers 2. 图层功能:functions 3. 图层制造分辨率:mfgResolutions 4. 图层布线方向:routingDirections 5. 电气特性规则(通过 currentDensity 或 currentDensityTables 规则配置): ■ 峰值交流电流密度(peakACCurrentDensity) ■ 平均交流电流密度(avgACCurrentDensity) ■ 有效值交流电流密度(rmsACCurrentDensity) ■ 平均直流电流密度(avgDCCurrentDensity) |
| constraintGroups(约束组) | 定义约束组 | 无(N/A) |
| siteDefs(器件单元定义) | 定义器件单元 | 1. 标量器件单元定义:scalarSiteDefs 2. 阵列器件单元定义:arraySiteDefs |
| viaDefs(过孔定义) | 定义过孔 | 1. 标准过孔定义:standardViaDefs 2. 自定义过孔定义:customViaDefs |
| viaSpecs(过孔规范) | 定义过孔相关规范 | 无(N/A) |
| devices(器件) | 激活 Cadence 预定义器件类、声明自定义器件、配置多段路径模板 | 1. 创建 CDS 器件类:tcCreateCDSDeviceClass 2. 接触器件规则:ruleContactDevice 3. 多段路径模板:multipartPathTemplates |
| leRules(版图编辑器规则) | 定义版图编辑器相关规则 | 1. 面板初始显示图层:leLswL |
-
**图层定义部分(Layer Definition)**包含图层名称、编号、数据类型(如多边形、路径、文本)、显示属性(颜色、线型、填充)等信息,是版图可视化和识别的基础。
-
**设计规则部分(Design Rule Section)**以 Virtuoso 专用的规则语言编写,涵盖各类 DRC 规则的数学表达式和逻辑条件,是物理验证的核心依据。
-
**器件定义部分(Device Definition)**定义 MOS 管、电阻、电容等器件的图层构成、几何参数提取规则和电学属性,支撑 LVS 检查和寄生参数提取(PEX)。
-
**工艺参数部分(Process Parameter Section)**记录工艺节点的基础参数,如晶圆尺寸、光刻分辨率、金属电阻率等,为后续的电学仿真提供数据支持。
■ 工艺文件语句
❑ include(文件嵌入)
❑ comment(注释)
■ 工艺文件控制参数
❑ controls(控制参数总段)
❑ processNode(工艺节点)
❑ techVersion(工艺文件版本)
❑ techParams(工艺参数)
❑ distanceMeasure(距离测量方式)
❑ viewTypeUnits(视图类型单位)
❑ mfgGridResolution(制造栅格分辨率)
❑ refTechLibs(参考工艺库)
❑ processFamily(工艺系列)
2.2 . 文件头与单位定义
以下两条语句的作用是提升工艺文件的开发与维护灵活性,并非提供设计数据:
■ include(文件嵌入)
■ comment(注释)
2.2.1 include(文件嵌入)
语法
include( "t_techFileName" )
其中,t_techFileName 为待嵌入的工艺文件名称。
功能描述 将另一个定义了工艺数据的文件嵌入到主工艺文件中。例如,若你的工艺数据包含大量器件定义,为便于文件维护,可将器件相关数据单独存放在一个文件中。通过 include 语句,可以将这个独立文件嵌入到主工艺文件中并进行引用。但是要注意,需要在括号里面填写需要引用的techfile 的绝对路径或者相对路径,建议选择相对路径,保证techfile 在更换路径后继续可以引用。
示例
include("/usr1/smith/devices.def")
include("/usr1/smith/devices.tlef")
将该语句放置在主工艺文件中器件章节对应的位置,即可把 /usr1/smith 路径下的 devices.def 文件嵌入到当前工艺文件中。当编译器读取到该语句时,会自动加载并编译 devices.def 文件,将其作为当前工艺库的一部分。
注意: 若编译一个包含
include语句的工艺文件,再从生成的工艺库中导出 ASCII 工艺文件,导出的文件中将不会保留include语句,而是直接包含被嵌入文件的所有数据。
2.2.2 comment(注释)
语法
comment ( "t_comment" )
其中,t_comment 为注释文本,必须用双引号包裹。
功能描述 支持在工艺文件中添加注释,且该注释会在编译及后续的文件导出过程中被保留。注释语句必须添加在章节层级,不能嵌套在其他章节内部;且注释内容仅对紧随其后的章节生效。
此外,也可以通过在文本前加分号(;)的方式添加注释,但这种注释在工艺文件编译为工艺库、再从工艺库导出 ASCII 文件的过程中不会被保留。
示例
comment(
"This comment applies to the controls section."
)
controls(
techParams (
(theta 2.0)
(lambda 4.0)
)
)
当包含上述语句的工艺文件被编译为工艺库时,该注释会被关联到紧随其后的 controls 控制参数段。后续从该工艺库导出 ASCII 文件时,注释会随 controls 段的数据一并保留;而通过分号添加的注释则会被丢弃。
2.3 工艺文件控制参数
在文件开头,会定义技术名称以及所使用的各类单位及其精度。
Technology {
name = "STD1V8"
unitTimeName = "ns"
timePrecision = 1000
unitLengthName = "micron"
lengthPrecision = 1000
gridResolution = 1
}
此例定义了工艺名称为"STD1V8",长度单位为微米(micron),精度为1000,即小数点后3位。
工艺文件控制参数用于定义可在整个工艺文件中全局调用的数据。
2.3.1 controls(控制参数总段)
语法
controls()
功能描述 若工艺文件中包含控制参数,controls 段必须作为文件的第一个章节,所有具体的控制参数子段都必须嵌套在该段内。
此外,controls 段只能被加载一次 ,即一个工艺文件中只能包含一个 controls 段。若通过 include 语句加载多个工艺文件,则 controls 段只能出现在引用其他文件的主工艺文件中。
2.3.2. processNode(工艺节点)
语法
controls(
processNode( g_processNodeValue )
)
功能描述 为工艺数据库关联对应的工艺节点参数值。 该值以用户单位指定,支持整数或浮点数格式, 系统会通过 maskLayout 视图类型对应的 dbuPerUU(每用户单位包含的数据库单位数)将其转换为数据库单位。
工艺文件编译器已更新以支持该新语法,若检测到参数冲突,编译会直接失败。当工艺数据库中配置了该本地属性时,工艺文件导出工具会自动导出该参数。
参数说明
| 参数 | 说明 |
|---|---|
| g_processNodeValue | 工艺节点值,以用户单位为单位,支持整数或浮点数,不允许设置为 0 |
示例
controls(
processNode(0.02)
)
该语句为工艺节点关联的值为 0.02。
2.3.4 techVersion(工艺文件版本)
语法
controls(
techVersion( s_version )
)
功能描述指定工艺文件的版本。
参数说明
| 参数 | 说明 |
|---|---|
| s_version | 当前支持的工艺文件语法版本为 "1.0" |
技术说明:techVersion 1.0 简介 注意 若需编译与早期 Virtuoso 版本工艺文件语法兼容的文件,请不要使用
techVersion()语句。
| Virtuoso 版本 | techVersion 版本 | 特性变更 |
|---|---|---|
| IC_6.1.5 | 1.0 | 1. cdsViaDevice 始终被创建为 cdsVia 类型 2. 约束表格中的所有条目均需显式定义 3. 不再支持 prRule() 章节 4. 不再支持 viaLayers() 章节 5. 若工艺文件中,某一约束定义和图层对应多条基于表格的约束,则必须将 techVersion 设为 1.0 |
示例
controls(
techVersion("1.0")
)
该语句仅允许设置值为 1.0。只有指定 techVersion("1.0") 时,cdsVias 相关数据才会被保留;若工艺文件中无 techVersion ,则代表该文件为传统的 IC6.1.4 版本 ASCII 工艺文件。
2.3.5 techParams(工艺参数)
语法
controls(
techParams(
( t_name g_value )
...
)
)
功能描述 定义可在整个工艺文件中全局调用的参数。通过 techParams 定义参数后,除表格索引外,可以在工艺文件的任意位置通过 techParam( paramName ) 调用该参数。
当在工艺文件任意章节中使用 techParam() 函数时,工艺文件编译器会直接引用 controls 段中的参数定义,而非计算表达式并仅存储结果值。因此,后续若需修改使用该控制参数的工艺文件函数,仅需在参数定义处修改一次即可。
导出工艺文件时,文件中会保留控制参数的原始定义,而非计算后的表达式结果。可以通过 SKILL 函数 techSetEvaluate() 反转此行为。
参数说明
| 参数 | 说明 |
|---|---|
| t_name | 参数名称 |
| g_value | 为参数分配的值 |
示例
techParams(
; (name value)
(lambda 0.3 )
)
该示例为参数 lambda 分配的值为 0.3。此后,在工艺文件的任意配置项中,你都可以通过表达式 techParam("lambda") 引用该值。例如:
spacings(minSpacing "Metal1" techParam("lambda"))
该语句会将 Metal1 层的最小间距约束设置为 0.3。
2.3.6 distanceMeasure(距离测量方式)
语法
controls(
distanceMeasure(
( 'euclidian | 'manhattan )
)
...
)
功能描述 为工艺文件中的所有约束指定默认的距离测量方式,可选欧几里得距离 或曼哈顿距离 ,无需为单个约束单独配置。系统默认测量方式为 'euclidian(欧几里得距离)。
欧几里得距离:指平面空间中两点之间的直线距离 ,是最直观的距离计算方式。计算直线的最短距离;
曼哈顿距离:也叫街区距离 ,指两点在水平和垂直方向上的绝对距离之和 ,因类似城市网格中两点间的步行路径而得名,计算水平+垂直方向的距离。
2.3.7 viewTypeUnits(视图类型单位)
语法
controls(
viewTypeUnits(
( t_viewType t_userUnit n_dbuPerUU )
...
)
)
功能描述 为指定的视图类型配置用户单位及每用户单位对应的数据库单位数 。若需使用非默认值(默认值为 1000)的 dbuPerUU,则该子段必须在工艺文件中早于 mfgGridResolution 子段进行配置。
dbuPerUU: 用于定义用户单位与数据库单位的换算比例 。例如配置 (maskLayout "micron" 2000) 时,代表 dbuPerUU = 2000,即 1 微米(用户单位)对应 2000 个数据库单位,换算比例直接决定了版图设计的精度。
mfgGridResolution: 用于定义整个设计的全局制造栅格精度 ,图形的栅格吸附值必须是该参数值的整数倍。例如在工艺文件中配置 mfgGridResolution(0.001),即表示制造栅格分辨率为 0.001 微米。
参数说明
| 参数 | 说明 |
|---|---|
| t_viewType | 视图类型,例如 maskLayout(掩膜版图)、schematic(原理图)、schematicSymbol(原理图符号)、netlist(网表)、hierDesign(层次化设计) |
| t_userUnit | 该视图类型使用的用户单位,例如 "micron"(微米)、"inch"(英寸) |
| n_dbuPerUU | 每用户单位对应的数据库单位数,默认值为 1000 |
示例
viewTypeUnits(
( maskLayout "um" 2000 ) ; 掩膜版图视图
( schematic "inch" 160 ) ; 原理图视图
( schematicSymbol "inch" 160 ) ; 原理图符号视图
( netlist "inch" 160 ) ; 网表视图
( hierDesign "_def_" 2000 ) ; 层次化设计视图
) ;viewTypeUnits (视图类型单位配置结束)
注意 在工艺数据库(TechDB)的参考关系图中,
hierDesign类型的dbuPerUU必须与maskLayout类型的dbuPerUU保持一致;同时,这两种视图类型的userUnit属性也需遵循相同规则。
警告hierDesign中存储的信息包含通常派生自工艺数据库的约束。此外,工艺数据库本身会从maskLayout视图类型中获取dbuPerUU参数。因此,若某一场景下,hierDesign视图的约束组引用了一个因继承maskLayout的 2000 dbuPerUU 而同样采用 2000 dbuPerUU 的工艺数据库规则,此时若在hierDesign中存储 1000 dbuPerUU 的数据,系统会直接报错。
2.3.8 mfgGridResolution(制造栅格分辨率)
语法
controls(
mfgGridResolution(
(g_value)
)
)
功能描述 指定制造栅格的分辨率,图形的栅格吸附值必须为该分辨率的整数倍。该参数值适用于整个设计,除非某些特定图层通过 mfgResolutions 约束配置了专属的布线栅格分辨率。该子段在工艺文件中必须位于所有 viewTypeUnits 配置之后。
参数说明
| 参数 | 说明 |
|---|---|
| g_value | 制造栅格分辨率 |
示例
mfgGridResolution(
(0.001000)
) ;mfgGridResolution
该语句将制造栅格分辨率设置为 0.001000。
2.3.9 refTechLibs(参考工艺库)
语法
controls(
refTechLibs(t_techLibName ...)
)
功能描述指定当前 ASCII 工艺文件定义的工艺库所引用的其他工艺库。该库列表为有序列表,其顺序决定了增量工艺数据库关系图中各参考工艺库的优先级。
参数说明
| 参数 | 说明 |
|---|---|
| t_techLibName | 参考工艺库的名称 |
示例
refTechLibs("HVStdCells" "6MP&R" "90Core")
该语句指定当前工艺库引用的工艺库依次为:HVStdCells、6MP&R、90Core。
2.3.10 processFamily(工艺系列)
语法
controls(
processFamily( t_processFamilyName )
)
功能描述为工艺数据库关联工艺系列名称。通过该名称可识别哪些工艺数据库属于同一关系图,反之,也可区分名称不同且不属于同一关系图的工艺数据库。未指定工艺系列的工艺数据库,可与关系图中的任意其他工艺数据库搭配使用。
参数说明
| 参数 | 说明 |
|---|---|
| t_processFamilyName | 工艺系列名称有效值:字符串、空字符串或包含空格的字符串 |
注意若在 "替换(replace)" 模式下编译工艺文件,且将工艺系列名称设为空字符串或含空格的字符串,会清除工艺数据库中已有的工艺系列配置;若在 "合并(merge)" 模式下编译,则不会改变原始工艺系列的配置。
示例
processFamily("CMOS90")
该语句指定当前工艺数据库属于 CMOS90 工艺系列,适用于 CMOS90 工艺的设计场景。
2.4 . 图层 (Layer) 定义
工艺文件的layerDefinitions用于定义用户自定义图层,这些图层可在关系图中的所有工艺数据库及设计会话中使用。
若图层或用途名称包含特殊字符,必须用双引号包裹;不含特殊字符的名称,可加双引号,也可不加。
注意请勿以任何方式重新定义系统保留的图层或用途名称,软件会丢弃此类自定义配置。关于 Cadence 或第三方工具对图层及用途名称的使用限制,请参考相应的产品文档。
图层定义包含以下主题:
■ layerDefinitions(图层定义总段)
■ techLayers(工艺图层定义)
■ techPurposes(工艺图层用途定义)
■ techLayerPurposePriorities(图层 - 用途组合优先级)
■ techDisplays(图层显示属性)
■ techLayerProperties(图层属性)
■ techDerivedLayers(派生图层)
■ LPP Valid Functionality(图层 - 用途组合有效性功能)
2.3.1 layerDefinitions(图层定义总段)
语法
layerDefinitions()
功能描述 该章节用于包含所有图层相关定义。所有指定图层定义的子章节,都必须嵌套在该章节的括号内。用于包裹所有与图层相关的配置子段,例如 techLayers(工艺图层定义)、techPurposes(图层用途定义)、techDisplays(图层显示属性)等。
在 ASCII 工艺文件中,其典型使用格式为:
layerDefinitions()
techLayers(...)
techPurposes(...)
techDisplays(...)
)
2.3.2 techLayers(工艺图层定义)
语法
techLayers(
( t_layerName x_layerNumber t_layerAbbr [x_maskNumber] ['valid t/nil] ['allowSetToValid t/nil] )
...
) ;techLayers
功能描述 定义可在整个工艺文件中使用的图层。用于定义工艺文件中所有可用的物理图层,需指定图层名称、图层编号、图层缩写等关键参数,示例如下:
techLayers(
; (图层名称 图层编号 图层缩写)
( Metal1 1 M1 )
( Poly1 2 P1 )
)
参数说明
| 参数 | 说明 |
|---|---|
| t_layerName | 图层名称有效值:任意字符串;图层名称必须唯一 |
| x_layerNumber | 图层编号有效值:唯一整数,范围为 0--194、256--2³¹-1 注意:编号 195--255 的图层为系统保留图层,~256~被virtuoso系统占用。 |
| t_layerAbbr | 图层名称的缩写有效值:长度不超过 7 个字符的任意字符串 |
| x_maskNumber | 可应用于该图层的掩膜数量 注意:默认情况下,每个图层对应 1 个掩膜。若采用多重图形曝光技术(MPT),需为启用 MPT 的图层指定掩膜数量 |
| 'valid t/nil | 布尔类型属性,默认值为 nil。仅当该属性设为 t 时,工艺文件导出工具才会导出此参数 |
| 'allowSetToValid t/nil | 布尔类型属性,默认值为 nil。仅当该属性设为 t 时,工艺文件导出工具才会导出此参数 |
示例
techLayers(
; ( 图层名称 图层编号 图层缩写 'allowSetToValid 取值 )
( nimplant 39 nimplnt 'allowSetToValid nil )
)
2.3.4 techPurposes(工艺图层用途定义)
语法
techPurposes(
( t_purposeName x_purposeNum [t_purposeAbbr] ['parent tx_parentPurpose] ['voltageRange (f_min f_max)] ['sigType t_sigType] ['description t_description] ['valid t/nil] ['allowSetToValid t/nil] )
...
) ;techPurposes
功能描述定义用于构成 ** layer -purpose 组合(LPP)** 的图层用途,这类组合会在设计会话中用于图形的显示控制。
用于定义layer purpose,与layer map中的data type对应。后续被用于组队 (layer name, purpose),本例子中的dummy 是purpose name,127是purpose number, dm是缩写,之所以有缩写,是因为virtuoso的LSW界面中经常没有那么大的空间来显示全名,此时显示的就是缩写。
- 参数说明
| 参数 | 说明 |
|---|---|
| t_purposeName | 用途名称有效值:任意非系统保留用途的字符串 |
| x_purposeNum | 用途编号有效值:唯一整数,范围为 1--128、256--2³²-65535注意:编号 129--255 的用途为系统保留用途;编号 0 同样为系统保留,定义为 "未知(unknown)" |
| t_purposeAbbr | 用途名称的缩写有效值:长度不超过 7 个字符的任意字符串 |
| 'parent tx_parentPurpose | 父用途的名称或编号默认父用途为 drawing(绘图)。drawing 用途与 'sigType 参数搭配使用时有相关限制,详情请参见下文 'sigType 的说明有效值:预定义用途,详情请参见《预定义用途》章节 |
| 'voltageRange (f_min f_max) | 电压范围的最小值与最大值组合,用于指定采用该用途创建的图形所承载的电压区间 |
| 'sigType t_sigType | 字符串类型属性,无默认值,且不能为空字符串- 若该参数值为 signal(信号)或用户自定义值,父用途可指定为任意类型- 若该参数值为除 signal 外的内置信号类型(如 power(电源)、ground(地)),父用途必须设为 drawing |
| 'description t_description | 字符串类型属性,无默认值,不能为空字符串,用于对该用途进行简要描述 |
| 'valid t/nil | 布尔类型属性,默认值为 nil。仅当该属性设为 t 时,工艺文件导出工具才会导出此参数 |
| 'allowSetToValid t/nil | 布尔类型属性,默认值为 nil。仅当该属性设为 t 时,工艺文件导出工具才会导出此参数 |
- 预定义用途
下表所列的用途名称为预定义用途(存储于 cdsDefTechLib 工艺库中),使用时必须遵循其定义的语义。在可能的情况下,应优先使用这些预定义用途,而非自定义用途名称。
| 用途名称 | 用途描述 |
|---|---|
drawing |
承载信号的图形所使用的默认用途 |
fill |
标识自动生成的填充图形,此类图形可根据需要被布局布线工具自动移除 |
slot |
标识在制造流程中需进行开槽修改的图形 |
OPCSerif |
标识由光学邻近校正(OPC)生成的衬线图形数据 |
OPCAntiSerif |
标识由光学邻近校正(OPC)生成的反衬线图形数据 |
annotation |
用于芯片标注,例如标签、Logo 等 |
gapFill |
标识用于修正 DRC 错误(如缺口、最小步长、封闭区域违规等)的填充图形 |
redundant |
标识重复放置的对象,例如布线路径上的双过孔 |
fillOPC |
标识需进行光学邻近校正的自动生成填充图形 |
customFill |
标识在自定义设计流程中手工绘制或通过参数化单元(Pcell)生成的填充图形 |
fatal |
用于标识致命错误标记 |
critical |
用于标识严重错误标记 |
soCritical |
用于标识已签核的严重错误标记 |
soError |
用于标识已签核的错误标记 |
ackWarn |
用于标识已确认的警告标记 |
info |
用于标识信息类标记 |
track |
用于标识走线轨迹图形 |
blockage |
标识与布线阻挡相关的对象 |
grid |
用于标识各类栅格,例如布局栅格、制造栅格 |
warning |
用于标识警告标记 |
tool1 |
标识运行 DRC 检查时生成的图形 |
tool0 |
标识运行 DRC 检查时生成的图形 |
label |
用于各类标签,例如引脚、实例、器件、布局布线边界标签 |
flight |
用于标识飞线 |
error |
用于标识错误标记 |
annotate |
用于标识用户生成的信息标注 |
drawing1-drawing9 |
用于各类对象,例如拥塞图(设计流程)、高亮标记、注释、栅格、器件等 |
boundary |
用于划定各类对象的边界,例如群组、单元行、布局布线边界、吸附边界、聚类边界 |
pin |
标识与引脚相关的对象 |
net |
标识与网络相关的对象 |
cell |
标识作为模块的对象 |
all |
表示该对象不绑定特定用途,适用于某一图层的所有用途 |
- 自定义对象属性
可以通过定义 ** layer-purpose pairs(LPP)** 并为每个组合分配display packet,来控制不同图层上图形的显示方式。若希望禁止在某一layer-purpose pairs上绘制图形,可将该组合的 valid 属性设为 nil。
cdsDefTechLib 工艺库中定义的图层与用途的多种组合,构成了一组系统保留的layer-purpose pairs(LPP),这类组合用于显示系统生成的内容(如标记、标尺、飞线、边界等)。
默认情况下,所有系统保留的layer-purpose pairs(LPP)的 valid 属性均为无效状态,因此不会自动显示在版图编辑器的面板(Palette)中。
- 版图对象
下表列出了常见的版图对象及其对应的图层 - 用途组合(LPP)。
| 对象 | 图层 | 用途 | 显示数据包 |
|---|---|---|---|
| 引导线、斯坦纳树 | annotate |
drawing |
annotate |
| 实例、过孔、拼接图形(包围盒) | instance |
drawing |
instance |
| 标记(警告) | marker |
warning |
markerWarn |
| 标记(错误) | marker |
error |
markerErr |
| 标记(注释) | marker |
annotate |
markerAno |
| 标记(信息) | marker |
info |
markerInf |
| 标记(已确认警告) | marker |
ackWarn |
markerAck |
| 标记(已签核错误) | marker |
soError |
markerSer |
| 标记(已签核严重错误) | marker |
soCritical |
markerScr |
| 标记(严重错误) | marker |
critical |
markerCrt |
| 标记(致命错误) | marker |
fatal |
markerFat |
| 单元行 | Row |
boundary |
RowBnd |
| 布线阻挡 | 任意物理图层 | blockage |
在显示资源编辑器(DRE)中查看 * |
| 布局阻挡 | Cannotoccupy |
Boundary |
CannotoccupyBnd |
| 布局布线边界、阻挡 | prBoundary |
boundary |
prBoundaryBnd |
| 区域边界、图形组、自定义单元行 | border |
boundary |
area |
| 聚类边界 | Group |
boundary |
GroupBnd |
| 吸附边界 | snap |
boundary |
snap |
| 走线轨迹图形 | 任意物理图层 | track |
在显示资源编辑器(DRE)中查看 * |
| 制造栅格 | 任意物理图层 | grid |
在显示资源编辑器(DRE)中查看 * |
| 布局栅格 | snap |
grid |
snap |
| 标尺 | marker |
annotate |
markerAno |
| 高亮标记 | hilite |
drawing4 |
hilite4 |
| 对称轴 | edgeLayer |
drawing |
edgeLayer |
| 选中对象高亮 | hilite |
drawing |
hilite |
| 高亮标记(命令专属) | hilite |
drawing1-drawing9 |
hilite1-hilite9 |
| 实例包围盒(在位编辑激活且鼠标指向实例时) | hilite |
drawing1 |
hilite1 |
| 实例与图形组包围盒(在位编辑时) | hilite |
drawing2 |
hilite2 |
| 参考点高亮 | hilite |
drawing3 |
hilite3 |
- 模拟对象
下表列出了常见的模拟对象及其对应的图层 - 用途组合(LPP)。
| 对象 | 图层 | 用途 | 显示数据包 |
|---|---|---|---|
模拟实例标签(cdsName()) |
annotate |
drawing7 |
annotate7 |
模拟引脚标注(cdsTerm()) |
annotate |
drawing8 |
annotate8 |
模拟器件标注(cdsParam()) |
annotate |
drawing |
annotate |
| 引脚标注(引脚网络表达式) | pin |
annotate |
pinAnt |
波形图注意 :在 ADE 中执行扫描、工艺角分析、参数化分析时,不会读取 display.drf 文件中的显示配置,详情请参见 useDisplayDrf 相关说明 |
y0-y9 |
drawing |
y0-y9 |
| 电路分析边界标注 | annotate |
boundary |
AnnotateBoundary |
- 动态高亮与拖拽轮廓
以下显示数据包用于控制动态高亮效果,以及对象被拖拽或移动时的轮廓显示效果。
| 对象 | 显示数据包 |
|---|---|
| 动态高亮 | useDynamicHilightPacket |
| 拖拽轮廓 | monoColorDragPacket |
示例 1
techPurposes(
(highvoltage 13 hvo 'sigType "analog" 'voltageRange (0.0 0.3) 'description "highvoltage range 0.0 --- 0.3.")
)
示例 2
techPurposes(
(lowvoltage 14 lvo 'parent slot 'sigType "signal" 'voltageRange (-3.3 0.0) 'description "lowvoltage range -3.3 --- 0.0")
)
示例 3
techPurposes(
(techPurpose2 2 tp2 'parent fill 'sigType "userDef2" 'description "This purpose is for user-defined signal type 2.")
)
示例 4
techPurposes(
(blockage1 1214 BLK1 'parent annotation 'valid nil )
)
示例 5
techPurposes(
(blockage1 1214 BLK1 'parent annotation 'valid nil 'allowSetToValid nil)
)
2.4.5 techLayerPurposePriorities(图层 - 用途组合优先级)
语法
techLayerPurposePriorities(
( t_layerName t_purposeName )
...
) ;techLayerPurposePriorities
功能描述 按从低到高 的顺序,列出已分配用途的图层组合。LPP 的优先级顺序决定了版图中图形的渲染层级 ------ **优先级最高的组合上的图形,会绘制在其他所有组合图形的顶层。**在版图显示时,优先级高的 LPP 图形会绘制在优先级低的图形顶层,避免重要图形被遮挡。
参数说明
| 参数 | 说明 |
|---|---|
| t_layerName | 图层名称 |
| t_purposeName | 用途名称 |
示例
techLayerPurposePriorities(
; ( 图层名称 用途名称 )
( Metal1 drawing )
( Metal2 drawing )
( Metal3 drawing )
( Metal4 drawing )
) ;techLayerPurposePriorities
该示例根据LPP的列出顺序定义优先级:排在首位的 Metal1 drawing 优先级最低,排在末尾的 Metal4 drawing 优先级最高。
下图展示了基于优先级的LPP 渲染效果,示例版图包含绘制在 Metal1 至 Metal4 图层上的图形,其中 Metal1 图层的图形位于最底层,Metal4 图层的图形位于最顶层。
2.4.6 techDisplays(图层显示属性)
语法
techDisplays(
( t_layerName t_purposeName t_packet g_visible g_selectable g_contToChgLay g_dragEnable g_valid ['allowSetToValid t/nil])
...
)
功能描述 定义图层 - 用途组合(LPP)的显示属性。核心作用是为每个图层 - 用途组合(LPP)配置具体的显示规则,直接决定版图编辑器中图形的可见性、可选性、拖拽权限等可视化行为,不影响图形的物理属性或 DRC 验证规则。
参数说明
| 参数 | 说明 |
|---|---|
| t_layerName | 图层名称 |
| t_purposeName | 用途名称 |
| t_packet | 显示资源文件中定义的数据包名称。 |
| g_visible | 布尔值,指示该图层在显示设备中是否可见 |
| g_selectable | 布尔值,指示绘制在该图层上的对象是否可被选中 |
| g_contToChgLay | 布尔值,指示该图层是否计入图层变更统计 |
| g_dragEnable | 布尔值,指示在 Virtuoso 版图套件 L 中,是否可拖拽该图层上创建的图形 |
| g_valid | 布尔值,指示该图层是否显示在面板助手(Palette Assistant)窗口中 |
| 'allowSetToValid t/nil | 布尔类型属性,默认值为 nil。仅当该属性设为 t 时,工艺文件导出工具才会导出此参数 |
示例
techDisplays(
; ( layer Purpose Packet Vis Sel chgLay drag valid
; attribute)
( poly1 boundary redHash_S t t t t t
'allowSetToValid nil)
)
该示例为 poly1 boundary 图层 - 用途组合设置显示数据包为 redHash_S,同时将可见性、可选性、计入图层变更、允许拖拽、有效性属性全部设为 t(有效),并将 'allowSetToValid 属性设为 nil。
2.4.7 techLayerProperties
techLayerProperties(
( t_propName t_layer1 [t_layer2] g_propValue )
...
) ;techLayerProperties
功能描述
存储特定用户自定义图层的属性。该配置段必须嵌套在 layerDefinitions 配置段内。该配置段是 Virtuoso 工艺文件(Techfile)layerDefinitions 章节的子段,用于为用户自定义图层或图层 - 用途组合(LPP)配置电气与物理属性,这些属性是芯片版图仿真(如寄生参数提取、后仿真)和物理验证的核心依据,不影响图层的可视化显示。
可配置的属性如下:
| 分类 | 属性名 | 说明 |
|---|---|---|
| 单层面积电容 | areaCapacitance |
每平方单位的电容值,单位为皮法 / 平方微米,浮点型; 用于建模导线对地的电容 |
| 双层面积电容 | areaCapacitance |
每平方单位的电容值,单位为皮法 / 平方微米,浮点型; 用于建模两个相对图层之间的电容 |
| 单层边缘电容 | edgeCapacitance |
周边电容值,单位为皮法 / 微米,浮点型 |
| 双层边缘电容 | edgeCapacitance |
两个图层之间的横向电容值,单位为皮法 / 微米,浮点型 |
| 图层方块电阻 | sheetResistance |
单位面积导线的电阻值,单位为欧姆 / 方块 |
| 过孔切割层电阻 | resistancePerCut |
过孔的电阻值,单位为欧姆 / 切割数 |
| 图层高度 | height |
从接地平面顶部到互连线底部的距离,单位为用户自定义单位 |
| 图层厚度 | thickness |
图层的物理厚度,单位为用户自定义单位 |
| 收缩因子 | shrinkage |
用于补偿蚀刻工艺导致的互连线收缩量,单位为用户自定义单位 |
| 电容倍增因子 | capMultiplier |
互连线电容的倍增系数,用于补偿邻近导线带来的电容增量;若未配置,工具默认取值为 1 |
参数说明
| 参数 | 说明 |
|---|---|
t_propName |
待配置的属性名称有效值:areaCapacitance、edgeCapacitance、sheetResistance、resistancePerCut、height、thickness、shrinkage、capMultiplier |
t_layer1 |
应用该属性的首个图层或图层 - 用途组合(LPP) |
t_layer2 |
应用该属性的第二个图层(仅双层属性需配置) |
g_propValue |
为属性分配的具体数值 |
配置示例
techLayerProperties(
; 单层属性:METAL1 的方块电阻为 0.02 Ω/□
( sheetResistance METAL1 0.02 )
; 单层属性:METAL1(drawing) 的对地面积电容为 4.1e-4 pF/μm²
( areaCapacitance (METAL1 drawing) 4.1e-4 )
; 双层属性:METAL1 与 METAL2 之间的层间面积电容为 2.36e-5 pF/μm²
( areaCapacitance METAL1 METAL2 2.36e-5 )
; 单层属性:METAL1 的边缘电容为 3.0e-5 pF/μm
( edgeCapacitance METAL1 3.0e-5 )
; 双层属性:METAL1 与 METAL2 之间的层间边缘电容为 5.0e-6 pF/μm
( edgeCapacitance METAL1 METAL2 5.0e-6 )
; 单层属性:POLY1 的厚度为 0.1 微米
( thickness POLY1 0.1 )
) ;techLayerProperties
2.4.8 techDerivedLayers
通过 techDerivedLayers 配置段,可以定义以下类型的派生图层:
techDerivedLayers(
; 类型1:关联用途的派生图层
( 派生图层名 派生图层编号 (源图层 'select 用途) )
; 类型2:尺寸缩放的派生图层
( 派生图层名 派生图层编号 (源图层 缩放操作符 缩放值) )
; 类型3:面积限制的派生图层
( 派生图层名 派生图层编号 (源图层 'area 面积条件) )
; 类型4:颜色筛选的派生图层(仅ICADV12.3)
( 派生图层名 派生图层编号 (源图层 'color 颜色类型) [锁定状态] )
; 类型5:双图层运算的派生图层
( 派生图层名 派生图层编号 (源图层1 逻辑操作符 源图层2) [可选参数] )
...
) ;techDerivedLayers
-
对两个图层执行运算后得到的派生图层(可通过参数限制运算范围)
-
尺寸缩放图层
-
面积限制图层
-
关联用途的派生图层
techDerivedLayers(
( tx_derivedLayer x_derivedLayerNum ( tx_layer 'select tx_purpose ) )
...
) ;techDerivedLayers
功能描述
定义通过图层与用途配对运算 得到的派生图层。关联用途的派生图层支持筛选带有指定用途的图层,以便应用与用途强相关的设计约束。用于基于已有图层通过配对、缩放、筛选、逻辑运算等方式生成新图层(即派生图层)。派生图层仅引用源图层数据,不修改源图层属性,常用于精细化的版图物理验证(DRC)、寄生参数提取(PEX)约束,以及图层可视化管理.
将源图层与指定用途配对,生成仅包含该图层 - 用途组合(LPP)图形的派生图层,用于区分同一图层的不同功能图形(如布线 vs 填充).
参数说明
| 参数 | 说明 |
|---|---|
tx_derivedLayer |
派生图层名称有效值:任意字符串;图层名称必须唯一 |
x_derivedLayerNum |
派生图层编号有效值:任意未被系统保留或未被占用的整数 |
tx_layer |
用于与用途配对的源图层有效值:图层名称或图层编号 |
'select |
运算操作符,表示将源图层与指定用途进行配对 |
tx_purpose |
用于与源图层配对的用途有效值:任意非系统保留的合法用途 |
配置示例
techDerivedLayers(
; 生成Metal1图层中用途为drawing的派生图层
("METAL1_DRAW" 1000 ("Metal1" 'select "drawing"))
; 生成Metal1图层中用途为fill的派生图层(用于金属密度检查)
("METAL1_FILL" 1001 ("Metal1" 'select "fill"))
)
该示例定义了两个派生图层:
-
派生图层
derivedLayerPurpose1(编号 1000):由metal1图层与drawing用途配对得到 -
派生图层
derivedLayerPurpose2(编号 1001):由metal1图层与fill用途配对得到
对应关系如下:layer1 drawing → (layer1 'select drawing)``layer1 fill → (layer1 'select fill)即派生图层由源图层与用途组合生成
-
尺寸缩放派生图层
techDerivedLayers(
( tx_derivedLayer x_derivedLayerNum ( tx_layer s_sizeOp g_value ) )
...
) ;techDerivedLayers
功能描述
定义通过对源图层执行尺寸缩放运算得到的派生图层。对源图层的所有图形执行放大 / 缩小操作,生成尺寸调整后的派生图层,常用于 DRC 中的 "扩展检查区域" 场景。
参数说明
| 参数 | 说明 |
|---|---|
tx_derivedLayer |
派生图层有效值:派生图层名称或编号 |
x_derivedLayerNum |
派生图层编号有效值:任意未被系统保留或未被占用的整数 |
tx_layer |
待执行缩放运算的源图层有效值:图层名称或图层编号 |
s_sizeOp |
缩放运算操作符有效值: 'growHorizontal(水平放大) 'growVertical(垂直放大) 'shrinkHorizontal(水平缩小) 'shrinkVertical(垂直缩小) 'grow(整体放大) 'shrink(整体缩小) |
g_value |
缩放尺寸有效值: 图层放大 / 缩小的距离,单位为用户自定义单位 |
配置示例
techDerivedLayers(
(metal1Sized 20001 ( "Metal1" 'grow 0.01))
)
该示例定义派生图层 metal1Sized(编号 20001),将 Metal1 图层上的所有图形整体放大 0.01 微米。
-
面积限制派生图层
techDerivedLayers(
( tx_derivedLayer ( tx_layer 'area x_area ) )
...
) ;techDerivedLayers
功能描述
定义带有面积范围限制的派生图层。筛选源图层中面积满足指定条件的图形,生成派生图层,常用于过滤微小图形(如工艺不允许的小面积金属块)。
参数说明
| 参数 | 说明 |
|---|---|
tx_derivedLayer |
派生图层有效值:派生图层名称或编号 |
tx_layer |
待执行面积限制的源图层有效值:图层名称或图层编号 |
'area |
运算操作符,表示对源图层执行面积限制 |
x_area |
面积限制条件格式:> n(面积大于 n)、< n(面积小于 n),其中 n 为面积阈值 |
配置示例
techDerivedLayers(
("derivedLayer1" 1000 ("metal1" 'area <5))
)
该示例定义派生图层 derivedLayer1(编号 1000),仅包含 metal1 图层中面积小于 5的图形。
-
颜色筛选派生图层
techDerivedLayers(
( t_derivedLayerName x_derivedLayerNum
( tx_layerName 'color t_maskColor )
['locked | 'unlocked]
)
...
) ;techDerivedLayers
功能描述
(仅适用于 ICADV12.3 版本)创建派生图层,并根据图形的掩膜颜色 和锁定状态筛选源图层中的图形进行复制。根据源图层图形的掩膜颜色和锁定状态筛选图形,生成派生图层,用于区分手动绘制 / 自动生成的图形。
参数说明
| 参数 | 说明 |
|---|---|
t_derivedLayerName |
派生图层名称有效值:任意字符串 |
x_derivedLayerNum |
派生图层编号有效值:任意未被系统保留或未被占用的整数 |
tx_layerName |
源图层有效值:图层名称或图层编号 |
'color t_maskColor |
颜色筛选条件有效值:any(任意颜色)、mask1Color(掩膜 1 颜色)、mask2Color(掩膜 2 颜色)、mask3Color(掩膜 3 颜色)、grayColor(无颜色 / 灰色图形) |
| `'locked | 'unlocked` |
应用场景示例
假设 metal1 图层包含锁定 / 未锁定的彩色图形,以及 1 个灰色图形,不同配置场景的效果如下:
场景 1
techDerivedLayers(
( metal1_RedLocked 131 ( metal1 'color mask1Color ) 'locked )
)
创建派生图层 metal1_RedLocked(编号 131),仅复制 metal1 图层中锁定且为掩膜 1 颜色的图形。
场景 2
techDerivedLayers(
( metal1_GreenUnlocked 131 ( metal1 'color mask2Color ) 'unlocked )
)
创建派生图层 metal1_GreenUnlocked(编号 131),仅复制 metal1 图层中未锁定且为掩膜 2 颜色的图形。
场景 3
techDerivedLayers(
( metal1_Gray 131 ( metal1 'color grayColor ) 'unlocked )
)
创建派生图层 metal1_Gray(编号 131),仅复制 metal1 图层中未锁定的灰色图形。
场景 4
techDerivedLayers(
( metal1_Locked 131 ( metal1 'color any ) 'locked )
)
创建派生图层 metal1_Locked(编号 131),复制 metal1 图层中所有锁定的图形(任意颜色)。
场景 5
techDerivedLayers(
( metal1_UnLocked 131 ( metal1 'color any ) 'unlocked )
)
创建派生图层 metal1_UnLocked(编号 131),复制 metal1 图层中所有未锁定的图形(任意颜色)。
-
双图层运算派生图层
techDerivedLayers(
( t_derivedLayerName x_derivedLayerNum
( tx_layer1 s_op tx_layer2 )
[ x_count | t_rangeVal ]
[ 'diffNet | 'sameNet ]
[ 'exclusive ]
)
...
) ;techDerivedLayers
功能描述
定义在整个工艺文件中生效的派生图层。此类派生图层由对两个源图层执行逻辑运算后生成。对两个源图层执行逻辑运算(如重叠、接触、包含),生成派生图层,是版图物理验证的核心配置(如检查金属与过孔的覆盖关系)。
参数说明
| 参数 | 说明 |
|---|---|
t_derivedLayerName |
派生图层名称有效值:派生图层名称或编号 |
x_derivedLayerNum |
派生图层编号有效值:派生图层名称或编号 |
tx_layer1 |
用于生成派生图层的第一个源图层有效值:图层名称或编号 |
s_op |
用于两个源图层的逻辑运算操作符(每个派生图层仅可使用一个操作符)有效值:'and、'or、'not、'xor、'butting、'buttOnly、'coincident、'coincidentOnly、'buttingOrCoincident、'overlapping、'buttingOrOverlapping、'touching、'inside、'outside、'avoiding、'straddling、'enclosing说明:'and/'or/'not/'xor 为标准逻辑运算,其他操作符的定义详见第 66 页的《操作符定义》章节 |
tx_layer2 |
用于生成派生图层的第二个源图层有效值:图层名称或编号 |
x_count |
两个源图层图形的接触次数阈值有效值:任意非负整数 |
t_rangeVal |
两个源图层图形的接触次数范围格式:< n/≤ n/> n/≥ n/[n1 n2]/(n1 n2)/[n1 n2)/(n1 n2],其中 n 为次数阈值,n1 为下限,n2 为上限;[] 表示闭区间(包含端点),() 表示开区间(不包含端点)示例:[1 5] 包含 1-5、(1 5) 包含 2-4、[1 5) 包含 1-4、(1 5] 包含 2-5 |
'diffNet |
约束条件:源图层 1 和源图层 2 的图形必须属于不同网络;若未配置,工具忽略网络关联性 |
'sameNet |
约束条件:源图层 1 和源图层 2 的图形必须属于相同网络;若未配置,工具忽略网络关联性 |
'exclusive |
约束条件:该配置必须是源图层 1 和源图层 2 图形之间唯一的派生图层关联关系 |
操作符定义
| 操作符 | 定义 |
|---|---|
'and |
需指定两个源图层;在派生图层上生成源图层 1 与源图层 2 图形的重叠区域 |
'not |
需指定两个源图层;在派生图层上生成源图层 1 图形减去源图层 2 图形的区域(即源图层 1 的补集区域) |
'or |
需指定两个源图层;在派生图层上生成源图层 1 与源图层 2 图形的并集区域 |
'xor |
需指定两个源图层;在派生图层上生成源图层 1 与源图层 2 图形的非重叠区域(排除两者的交集部分) |
'butting |
需指定两个源图层;筛选源图层 1 中与源图层 2 图形边缘接触的图形(要求边缘重合且有部分公共区域,但非完全覆盖) |
'buttOnly |
需指定两个源图层;筛选源图层 1 中与源图层 2 图形边缘接触但无重叠的图形 |
'coincident |
需指定两个源图层;筛选源图层 1 中至少有一条边缘与源图层 2 图形边缘重合的图形,且重合边缘处的图形区域存在重叠;源图层 1 图形的其他部分可与源图层 2 图形重叠 |
'coincidentOnly |
需指定两个源图层;筛选源图层 1 中至少有一条边缘与源图层 2 图形边缘重合 ,且源图层 2 图形被源图层 1 图形完全覆盖 的图形;区别于'coincident,源图层 1 图形的任何部分都不能超出源图层 2 图形范围 |
'buttingOrCoincident |
需指定两个源图层;筛选源图层 1 中与源图层 2 图形边缘接触或边缘重合的图形;接触与重合的判定标准为任意边缘重合,无论重合处图形是否重叠 |
'overlapping |
需指定两个源图层;筛选源图层 1 中与源图层 2 图形存在重叠区域的图形;重叠的定义为两个图层图形存在任意公共区域 |
'buttingOrOverlapping |
需指定两个源图层;筛选源图层 1 中与源图层 2 图形边缘接触或存在重叠区域 的图形;与'touching操作符功能相同,但该操作符支持配置可选参数 |
'touching |
需指定两个源图层;筛选源图层 1 中完全在源图层 2 图形内部、部分在源图层 2 图形内部,或与源图层 2 图形边缘接触 的图形注意:使用该操作符时,无法配置任何可选参数;若需配置参数,请使用'buttingOrOverlapping |
'inside |
需指定两个源图层;筛选源图层 1 中完全位于源图层 2 图形内部 的图形;允许边缘重合,但源图层 1 图形不得超出源图层 2 图形范围;区别于'touching,该操作符不包含边缘接触但位于外部的图形,以及部分重叠的图形 |
'outside |
需指定两个源图层;筛选源图层 1 中完全位于源图层 2 图形外部的图形;允许边缘重合 |
'avoiding |
需指定两个源图层;筛选源图层 1 中完全位于源图层 2 图形外部,且无任何边缘接触的图形 |
'straddling |
需指定两个源图层;筛选源图层 1 中部分位于源图层 2 图形内部的图形 |
'enclosing |
需指定两个源图层;筛选源图层 1 中完全覆盖至少一个源图层 2 图形的图形;此外,还可配置接触次数阈值,定义源图层 1 图形需覆盖的源图层 2 图形数量 |
2.4.9 LPP Valid Functionality
图层 - 用途组合(LPP)由工艺数据库中定义的单个图层 与单个用途对象组合而成。
控制 LPP 有效性的方式有多种:可直接将图层 - 用途标识(LPId)的 valid 属性设为 true 或 false。但 LPP 的实际有效性 取决于其父图层、父用途,以及 LPP 自身的 valid 属性取值,计算公式如下:实际有效性=图层有效 && 用途有效 && LPP 基础有效
图层的 valid 属性会影响该图层参与的所有 LPP 的有效性;同理,用途的 valid 属性会影响该用途参与的所有 LPP 的有效性。图层与用途的 valid 属性默认值均为 true。
图层、用途或 LPP 的 valid 属性的可配置性,由以下两个属性控制:
-
allowSetToValid:该属性为持久化属性 -
allowSetToValidInSession:该属性为非持久化属性,仅在当前设计会话中生效
这两个属性适用于图层、用途和 LPP 三类对象。
-
若某对象的
allowSetToValid或allowSetToValidInSession属性为false,则其valid属性无法被设为true。 -
allowSetToValid和allowSetToValidInSession属性始终可被设为false;但仅当父工艺数据库以 ** 写入(write)或 追加(append)** 模式打开时,这两个属性才可被设为true。
LPP 有效性相关属性说明
| 属性 | 说明 |
|---|---|
layerId~>valid |
读取或设置图层的 valid 属性;仅当图层的 allowSetToValid 和 allowSetToValidInSession 属性均为 true 时,该属性才可被设为 true;默认值为 true |
layerId~>allowSetToValid |
读取或设置图层的 allowSetToValid 属性;仅当对应图层的工艺数据库以追加 或写入 模式打开时,该属性才可被设为 true;该属性为持久化属性,默认值为 true |
layerId~>allowSetToValidInSession |
读取或设置图层的 allowSetToValidInSession 属性;仅当对应图层的工艺数据库以追加 或写入 模式打开时,该属性才可被设为 true;该属性为非持久化属性,默认值为 true |
purposeDefId~>valid |
读取或设置用途的 valid 属性;仅当用途的 allowSetToValid 和 allowSetToValidInSession 属性均为 true 时,该属性才可被设为 true;默认值为 true |
purposeDefId~>allowSetToValid |
读取或设置用途的 allowSetToValid 属性;仅当对应用途的工艺数据库以追加 或写入 模式打开时,该属性才可被设为 true;该属性为持久化属性,默认值为 true |
purposeDefId~>allowSetToValidInSession |
读取或设置用途的 allowSetToValidInSession 属性;仅当对应用途的工艺数据库以追加 或写入 模式打开时,该属性才可被设为 true;该属性为非持久化属性,默认值为 true |
lpId~>allowSetToValid |
读取或设置 LPP 的 allowSetToValid 属性;仅当对应 LPP 的工艺数据库以追加 或写入 模式打开时,该属性才可被设为 true;该属性为持久化属性,默认值为 true |
lpId~>allowSetToValidInSession |
读取或设置 LPP 的 allowSetToValidInSession 属性;仅当对应 LPP 的工艺数据库以追加 或写入 模式打开时,该属性才可被设为 true;该属性为非持久化属性,默认值为 true |
techIsLPValidBase(lpId) |
检查 LPP 的基础有效性属性 是否为 true |
现有函数说明
lpId~>valid
-
读取功能 :获取 LPP 的实际有效性属性 ,取值为
图层有效 && 用途有效 && LPP 基础有效的运算结果。 -
设置功能 :设置 LPP 的基础有效性属性 ;仅当满足以下所有条件时,该属性才可被设为
true:-
LPP 的
allowSetToValid和allowSetToValidInSession属性均为true -
对应图层的
allowSetToValid和allowSetToValidInSession属性均为true -
对应用途的
allowSetToValid和allowSetToValidInSession属性均为true
-
2.4.10 简单示例
这是 techfile 的核心,详细描述了每一层的属性。我们在设计开始的时候,会选择 1p9m 类似的叠层结构,每一层都要在该文件中定义layer number,颜色和填充形式等信息。
Layer "METAL1" {
layerNumber = 11
maskName = "metal1"
· "METAL1":层名称,设计工具中显示的名称
· layerNumber = 11:唯一层编号,代工厂用于标识具体加工步骤
· maskName = "metal1":制造中实际使用的掩模名称。
# 定义颜色和显示样式
Color "METAL1_Color" {
rgbDefined = 1
redIntensity = 100
greenIntensity = 150
blueIntensity = 200
}
定义在EDA工具中的显示颜色
· rgbDefined = 1:启用RGB颜色模式
· 颜色值范围通常是0-255,这里显示为浅蓝色。
# 定义物理规则
physicalRule {
minWidth = 0.1
minSpacing = 0.12
}
# 定义电气属性,如方块电阻
resistance = 0.08 /* ohms per square */
}
resistance = 0.08:方块电阻为0.08欧姆/方
· 用于后续寄生参数提取和时序分析
2.5 层属性定义
ing
2.6 File Site Definitions
ing
2.7 . 通孔 (Via/ContactCode) 定义
描述连接不同金属层之间的通孔结构。
ContactCode "VIA12" {
contactCodeNumber = 21
cutLayer = "VIA12"
lowerLayer = "METAL1"
upperLayer = "METAL2"
# 定义通孔的尺寸
rectWidth = 0.1
rectHeight = 0.1
}
2.5 单元基底 (Tile/Unit Tile) 定义
定义标准单元布局的基本格点,对自动布局布线(P&R)至关重要。
Tile "unit" {
width = 0.05 # 标准单元的最小宽度
height = 1.8 # 标准单元行的高度
}
定义了芯片布局时放置标准单元的基本"网格"。每一行标准单元的高度通常是这个 Tile 高度的整数倍。
2.6 . 设计规则 (DesignRule)
除了在图层内部定义规则,有时也会在 DesignRule 部分补充更复杂的规则。
3. Techfile 在 Virtuoso 中的应用流程
-
工艺文件导入 设计人员需从半导体制造厂获取与目标工艺节点匹配的 Techfile(通常为
.tf格式),并在 Virtuoso Library Manager 中导入该文件,建立与设计库的关联。导入后,Virtuoso 的版图编辑器(Virtuoso Layout Suite)会自动加载图层体系和设计规则。 -
版图设计阶段 设计人员基于 Techfile 定义的图层和规则进行版图绘制,Virtuoso 会实时提供在线规则检查(On-Line DRC),即时提示违反设计规则的操作,如线宽不足、间距过小等,帮助设计人员规避基础错误。
-
物理验证阶段
-
运行批量 DRC 检查:验证全版图是否符合所有工艺规则,生成详细的违规报告;
-
运行 LVS 检查:对比版图与电路图的器件连接关系,确保两者功能一致;
-
若出现违规项,需修改版图并重新验证,直至通过所有检查。
-
-
数据输出阶段验证通过后,通过 Virtuoso 的 Stream Out 功能,基于 Techfile 的映射规则将版图数据转换为 GDSII 文件,提交给晶圆厂进行流片。
4、使用 Techfile 的注意事项
-
版本匹配性 必须使用与设计工艺节点完全匹配的 Techfile 版本,不同版本的工艺文件可能存在规则差异,误用会导致验证失效或流片失败。
-
规则的可解释性若出现 DRC 违规,需结合 Techfile 中的规则描述分析原因,部分复杂规则(如密度规则)可能需要借助制造厂的技术文档解读。
-
兼容性验证在导入新的 Techfile 后,建议先对测试版图进行验证,确认 Virtuoso 版本与 Techfile 无兼容性问题,避免因软件版本不匹配导致规则无法执行。