本文始于2025年3月,主要讲解techfile中相关语句含义。旨在让读者可以了解techfile中的相关语句基本的用法和基本含义,对后续自定义custom techfile打下一定的基础。文章仅做参考使用。
创作声明:借AI协助,对本文有疑问的地方,请以ascitechfile.pdf原文为准。
1. Technology File Structure
Technology File 包含以下 statements(语句)和 sections(章节):
Statements(语句)
- include:用于包含其他 technology 文件的数据。
- comment:用于添加注释,在编译和转储过程中保持不变。
Sections(章节)
- controls(控制部分)
processNode
:设定工艺节点值。techVersion
:定义 technology 文件版本。techParams
:定义在整个 technology 文件中使用的参数。distanceMeasure
:设置距离测量类型(欧几里得或曼哈顿)。viewTypeUnits
:定义不同视图类型的单位。mfgGridResolution
:制造网格分辨率。refTechLibs
:参考的 technology 库列表。processFamily
:工艺家族名称。fabricType
:设置技术数据库的材料类型。
- layerDefinitions(层定义)
techLayers
:定义层(Layers)。techPurposes
:定义层用途(Layer Purposes)。techLayerPurposePriorities
:设定层-用途对的优先级。techDisplays
:层的显示属性。techLayerProperties
:层的属性。techDerivedLayers
:派生层(Derived Layers)。
- layerRules(层规则)
incompatibleLayers
:定义等效的层。functions
:层的功能。analysisAttributes
:层的分析属性。mfgResolutions
:层的制造分辨率。routingDirections
:层的布线方向。currentDensity
:电流密度规则(如peakACCurrentDensity
、avgACCurrentDensity
、rmsACCurrentDensity
、avgDCCurrentDensity
)。
- constraintGroups(约束组)
constraintGroups
:定义约束组。
- siteDefs(站点定义)
scalarSiteDefs
:标量站点定义。arraySiteDefs
:数组站点定义。
- viaDefs(过孔定义)
standardViaDefs
:标准过孔定义。customViaDefs
:自定义过孔定义。viaSpecs
:过孔规格。
- devices(器件)
tcCreateCDSDeviceClass
:激活 Cadence 预定义器件类。ruleContactDevice
:定义接触器件规则。multipartPathTemplates
:多部分路径模板。waveguideTemplates
:波导模板。
- leRules(图层显示规则)
leLswLayers
:定义在 Palette 中显示的图层。
2. Technology File Statements 语句解析
2.1 include
语法
include( "t_techFileName" )
其中,t_techFileName
是要包含的 technology 文件的名称。
功能描述
include
语句用于在当前 technology 文件中引用其他 technology 文件,从而将多个文件组合成一个完整的 technology 数据库。这种方式可以提高文件的可维护性,使得不同部分的数据可以独立存储,并在需要时被引用。例如,可以将大量器件定义存储在单独的文件中,然后通过 include
语句在主 technology 文件中引用它。
示例
include("/usr1/smith/devices.def")
该语句会在 technology 文件的相应位置引入 /usr1/smith/devices.def
文件的内容。编译时,系统会检索并编译该文件,使其成为当前 technology 库的一部分。
注意事项
- 如果在 technology 文件中使用
include
语句,并随后从生成的 technology 库中导出 ASCII 文件,导出的文件将不包含include
语句,而是会直接包含被引入的文件内容。 include
语句通常用于组织大型 technology 文件,例如将器件、层定义等拆分到不同文件中,以便更好地管理和维护。
2.2 comment
语法
comment ( "t_comment" )
其中,t_comment
是注释文本,必须用双引号括起来。
功能描述
comment
语句用于在 technology 文件中添加注释,以便在文件编译和转储时保持这些注释。它的主要作用是提供文档说明,使得技术文件更具可读性,便于维护人员理解文件内容。
使用规则
comment
语句必须在 technology 文件的 section 级别 添加,不能嵌套在其他 section 之内。- 注释仅适用于其紧随其后的 section,即
comment
语句会附加到下一个 technology 文件部分。
示例
comment(
"This comment applies to the controls section."
)
controls(
techParams (
(theta 2.0)
(lambda 4.0)
)
)
在这个示例中,注释 "This comment applies to the controls section."
适用于 controls
部分。
另一种注释方式(非持久化)
除了 comment
语句外,还可以使用分号 (;
) 添加注释:
; This is a temporary comment
但 使用分号添加的注释不会在编译后的 technology 库中保留,如果从技术库中导出 ASCII 文件,这些注释会丢失。
注意事项
- 通过
comment
语句添加的注释,在编译后仍然会保留,并可在导出的 ASCII 文件中看到。 - 通过
;
方式添加的注释,仅在原始 ASCII technology 文件中存在,编译后会被丢弃。
3. Technology File Controls 语句解析
3.1 controls
语法:
controls()
controls
是 technology 文件中的一个重要部分,用于定义整个文件的全局参数和设置。该部分必须是 technology 文件中的第一个 section,所有特定的控制参数都必须放在 controls
部分内。
controls 语句包含的子部分
controls
语句包括多个子语句,每个子语句都有特定的功能。
3.2 processNode
processNode( g_processNodeValue )
- 功能:定义工艺节点(如 0.18µm、0.13µm、90nm 等)。
- 参数:
g_processNodeValue
是工艺节点值,以浮点数或整数表示,例如0.02
。 - 示例:
processNode(0.02)
这里的0.02
代表 20nm 工艺节点。
3.3 techVersion
techVersion( s_version )
- 功能:定义 technology 文件的版本。
- 参数:目前仅支持
"1.0"
。 - 示例:
techVersion("1.0")
设置文件版本为1.0
。
3.4 techParams
techParams(
( t_name g_value )
...
)
- 功能:定义全局参数,可以在技术文件的其他部分引用。
- 参数:
t_name
:参数名称(如lambda
)。g_value
:参数值(如0.3
)。
- 示例:
techParams( (lambda 0.3) )
这里lambda
设为0.3
,可以在其他地方使用techParam("lambda")
引用该值。
3.5 distanceMeasure
distanceMeasure(
( 'euclidian | 'manhattan )
)
- 功能:设置默认的距离测量方式。
- 参数:
'euclidian
:使用欧几里得距离计算(默认)。'manhattan
:使用曼哈顿距离计算(仅横纵方向)。
- 示例:
distanceMeasure('manhattan)
设定曼哈顿距离测量方式。
3.6 viewTypeUnits
viewTypeUnits(
( t_viewType t_userUnit n_dbuPerUU )
...
)
- 功能:定义不同视图类型的单位。
- 参数:
t_viewType
:视图类型(如maskLayout
)。t_userUnit
:用户单位(如"micron"
)。n_dbuPerUU
:每单位的数据库单位数(如2000
)。
- 示例:
viewTypeUnits( (maskLayout "micron" 2000) (schematic "inch" 160) )
设定maskLayout
视图使用微米为单位,schematic
视图使用英寸。
3.7 mfgGridResolution
mfgGridResolution(
( g_value )
)
- 功能:设定制造网格的分辨率,所有网格必须是该值的整数倍。
- 参数:
g_value
为分辨率值。 - 示例:
mfgGridResolution( (0.001000) )
设定制造网格分辨率为0.001µm
。
3.8 refTechLibs
refTechLibs(t_techLibName ...)
- 功能:指定该 technology 库所引用的其他技术库。
- 参数:
t_techLibName
是被引用的库名,可包含多个。 - 示例:
refTechLibs("HVStdCells" "6MP&R" "90Core")
该技术库依赖HVStdCells
、6MP&R
和90Core
三个库。
3.9 processFamily
processFamily( t_processFamilyName )
- 功能:定义工艺家族名称,帮助识别属于相同工艺的技术库。
- 参数:
t_processFamilyName
是工艺家族名称,如"CMOS90"
。 - 示例:
processFamily("CMOS90")
指定该技术库属于CMOS90
工艺家族。
3.10 fabricType
fabricType( t_fabricType )
- 功能:设定技术数据库的材料类型(Fabric Type)。
- 参数:
ic
:集成电路(默认值)。package
:封装。board
:PCB 设计。module
:模块设计。
- 示例:
fabricType("package")
设定该技术数据库用于封装设计。
总结
controls
部分定义了 technology 文件的核心全局参数,影响整个设计环境的配置,包括:
- 工艺节点 (
processNode
) - 版本管理 (
techVersion
) - 全局参数 (
techParams
) - 距离计算方式 (
distanceMeasure
) - 视图单位 (
viewTypeUnits
) - 制造网格 (
mfgGridResolution
) - 参考技术库 (
refTechLibs
) - 工艺家族 (
processFamily
) - 设计材料类型 (
fabricType
)
4. Technology File Layer Definitions(层定义)语句解析
Layer Definitions(层定义)部分用于定义在整个技术库中使用的用户定义层,以及层的用途、显示方式、属性等信息。
基本结构
layerDefinitions()
该部分包含多个子语句,每个子语句分别定义不同的层相关属性。
4.1 techLayers(层定义)
techLayers(
( t_layerName x_layerNumber t_layerAbbr [x_maskNumber] ['valid t/nil] ['allowSetToValid t/nil] )
...
)
功能
- 定义技术文件中的层,包括名称、编号、缩写等信息。
- 该定义适用于所有 CAD 工具,并提供可视化层的基本信息。
参数
参数 | 说明 |
---|---|
t_layerName | 层名称(字符串,唯一) |
x_layerNumber | 层编号(整数,0-194,256 及以上,195-255 预留) |
t_layerAbbr | 层缩写,便于界面显示 |
x_maskNumber | 可选,表示层的掩膜编号 |
'valid t/nil | 可选,指定该层是否有效(默认 nil ,如果 t ,则该层会显示在界面) |
'allowSetToValid t/nil | 可选,允许用户设置该层为有效 |
示例
techLayers(
(nimplant 39 nimplnt 'allowSetToValid nil)
)
nimplant
为层名称,编号39
,缩写nimplnt
,不允许用户设置为有效。
4.2 techPurposes(层用途定义)
techPurposes(
( t_purposeName x_purposeNum [t_purposeAbbr] ['parent x_parentPurpose] ['voltageRange (f_min f_max)] ['sigType t_sigType] ['description t_description] ['valid t/nil] ['allowSetToValid t/nil] )
)
功能
- 定义层的用途,例如
drawing
(用于布线)、fill
(填充)、annotation
(标注)等。 - 层用途与
techLayers
结合形成 Layer-Purpose Pairs(LPP),用于设计工具显示。
参数
参数 | 说明 |
---|---|
t_purposeName | 用途名称 |
x_purposeNum | 用途编号(1-128,256 及以上,129-255 预留) |
t_purposeAbbr | 用途缩写 |
'parent x_parentPurpose | 继承的用途(默认 drawing ) |
'voltageRange (f_min f_max) | 该用途的电压范围 |
'sigType t_sigType | 信号类型(如 analog 、power ) |
'description t_description | 用途的描述 |
'valid t/nil | 是否有效 |
'allowSetToValid t/nil | 是否允许设置为有效 |
示例
techPurposes(
(highvoltage 13 hvo 'sigType "analog" 'voltageRange (0.0 0.3) 'description "highvoltage range 0.0 --- 0.3.")
)
- 定义
highvoltage
层用途,编号13
,缩写hvo
,信号类型analog
,电压范围0.0~0.3V
。
4.3 techLayerPurposePriorities(层用途优先级)
techLayerPurposePriorities(
( t_layerName t_purposeName )
...
)
功能
- 设定 Layer-Purpose Pair(LPP) 的优先级,决定层的渲染顺序。
- 先定义的层用途优先级最低,后定义的优先级最高。
示例
techLayerPurposePriorities(
(Metal1 drawing)
(Metal2 drawing)
(Metal3 drawing)
(Metal4 drawing)
)
Metal1
处于最底层,Metal4
处于最高层。

4.4 techDisplays(层显示属性)
techDisplays(
( t_layerName t_purposeName t_packet g_visible g_selectable g_contToChgLay g_dragEnable g_valid ['allowSetToValid t/nil] ['description t_description] )
...
)
功能
- 设置每个 Layer-Purpose Pair(LPP) 的显示属性,例如是否可见、可选等。
参数
参数 | 说明 |
---|---|
t_layerName | 层名称 |
t_purposeName | 用途名称 |
t_packet | 显示包 |
g_visible | 是否可见 |
g_selectable | 是否可选 |
g_contToChgLay | 是否影响图层更改 |
g_dragEnable | 是否可拖动 |
g_valid | 是否有效 |
'allowSetToValid t/nil | 允许用户设置为有效 |
'description t_description | 描述信息 |
示例
techDisplays(
;(layer Purpose Packet Vis Sel chgLay drag valid attribute)
(poly1 boundary redHash_S t t t t t 'allowSetToValid nil 'description "poly boundary layer")
)
poly1
层,boundary
用途,显示包redHash_S
,所有显示属性均为t
(启用)。
4.5 techLayerProperties(层属性)
techLayerProperties
用于在技术文件中定义 层的电气与物理属性,这些属性直接影响设计工具(如仿真器、布线器)对层的电气行为建模。以下是其核心要点:
语法结构
techLayerProperties(
( t_propName t_layer1 [t_layer2] g_propValue )
...
)
t_propName
:属性名称,指定要定义的参数类型(如电容、电阻等)。t_layer1
:目标层或层-目的对(LPP),格式为(层名 目的名)
或仅层名。t_layer2
(可选):第二层,用于定义 两层之间的交互属性(如层间电容)。g_propValue
:属性的数值,支持浮点数或表达式(如techParam("lambda")
)。
支持的属性类型
属性名 | 描述 |
---|---|
areaCapacitance | 单位面积电容(皮法/平方微米)。单层定义对地电容,双层定义层间电容。 |
edgeCapacitance | 单位长度边缘电容(皮法/微米)。单层定义边缘对地电容,双层定义层间侧向电容。 |
sheetResistance | 方块电阻(欧姆/方块),用于计算导线电阻。 |
resistancePerCut | 单个通孔的电阻(欧姆/通孔)。 |
height | 层的高度(用户单位),指从地平面到互连层底部的距离。 |
thickness | 层的厚度(用户单位)。 |
shrinkage | 蚀刻收缩因子,补偿制造过程中的尺寸缩减。 |
capMultiplier | 电容倍增系数,考虑邻近导线的影响,默认值为1。 |
关键规则
- 单层 vs. 双层定义:
- 若仅指定
t_layer1
,属性作用于该层自身(如对地电容)。 - 若指定
t_layer1
和t_layer2
,属性定义两层间的关系(如层间电容)。 - 层顺序:
layerOrder
需按 工艺栈顺序 定义(从底层到顶层),而非制造顺序。 - 单位与精度:数值需与用户单位(如微米、欧姆)一致,通常使用科学计数法表示小值。
示例解析
示例1:定义金属层的方块电阻
techLayerProperties(
( sheetResistance METAL1 0.02 )
)
- 功能:设置金属层
METAL1
的方块电阻为 0.02 欧姆/方块。
示例2:定义金属1对地的面积电容
techLayerProperties(
( areaCapacitance (METAL1 drawing) 4.1e-4 )
)
- 功能:
METAL1
层(用途为drawing
)的单位面积对地电容为 0.41 皮法/平方微米。
示例3:定义金属1与金属2之间的层间电容
techLayerProperties(
( areaCapacitance METAL1 METAL2 2.36e-5 )
)
- 功能:
METAL1
和METAL2
之间的单位面积层间电容为 0.0236 皮法/平方微米。
示例4:定义通孔电阻
techLayerProperties(
( resistancePerCut VIA1 0.5 )
)
- 功能:每个
VIA1
通孔的电阻为 0.5 欧姆。
示例5:电容倍增系数
techLayerProperties(
( capMultiplier METAL1 1.2 )
)
- 功能:
METAL1
的电容值乘以 1.2,以补偿邻近导线的影响。
应用场景
- 电路仿真:提取寄生参数(如电容、电阻)用于SPICE仿真。
- 信号完整性分析:计算层间耦合电容对信号延迟的影响。
- 功耗估算:通过电阻值估算导线功耗。
- 工艺校准:根据实际测量数据调整模型参数(如
shrinkage
)。
注意事项
- 避免系统层:不要对系统保留层(如
boundary
、grid
)定义属性,这些属性会被忽略。 - 参数依赖:若使用
techParams
定义的参数(如techParam("lambda")
),需确保其在controls
部分已声明。 - 单位一致性:所有数值需与
viewTypeUnits
中定义的用户单位一致(如微米、皮法)。
通过合理配置 techLayerProperties
,可以精确描述工艺的电气特性,确保设计工具准确模拟实际硅片行为。
4.6 techDerivedLayers(派生层)
功能描述
techDerivedLayers
语句用于定义派生层(Derived Layers),这些层是通过现有层的特定操作(如缩放、逻辑运算、颜色筛选等)自动生成的。派生层在物理验证(DRC、LVS)和版图设计中非常重要,可以用于增强设计规则检查、改进布线优化等。
techDerivedLayers 的类型
techDerivedLayers
允许定义多种类型的派生层,包括:
4.6.1 基于用途的派生层(Purpose-Aware Derived Layers)
- 通过将现有层与特定用途配对,创建新层。
- 适用于 目的感知约束应用(Purpose-Aware Constraint Application)。
语法:
techDerivedLayers(
( tx_derivedLayer x_derivedLayerNum ( tx_layer 'select tx_purpose ) )
)
参数说明:
参数 | 说明 |
---|---|
tx_derivedLayer | 新生成的派生层名称 |
x_derivedLayerNum | 派生层的唯一编号 |
tx_layer | 现有层的名称 |
'select | 关键字,表示选择某一用途的形状 |
tx_purpose | 选择的用途(如 drawing , fill ) |
示例:
techDerivedLayers(
("derivedLayerPurpose1" 1000 ("metal1" 'select "drawing"))
("derivedLayerPurpose2" 1001 ("metal1" 'select "fill"))
)
这里定义了 derivedLayerPurpose1
和 derivedLayerPurpose2
,分别基于 metal1
层的 drawing
和 fill
用途创建。

4.6.2 尺寸调整派生层(Sizing-Derived Layers)
- 通过对某一层进行缩放(扩展或收缩)生成派生层。
- 适用于 电路制造公差补偿(如蚀刻补偿)。
语法:
techDerivedLayers(
( tx_derivedLayer x_derivedLayerNum ( tx_layer s_sizeOp g_value ) )
)
参数说明:
参数 | 说明 |
---|---|
tx_derivedLayer | 生成的新派生层 |
x_derivedLayerNum | 派生层的唯一编号 |
tx_layer | 现有层的名称 |
s_sizeOp | 缩放操作,'grow 表示扩展,'shrink 表示缩小 |
g_value | 变化的尺寸值(单位 µm) |
示例:
techDerivedLayers(
(metal1Sized 20001 ( "Metal1" 'grow 0.01))
)
这里创建了 metal1Sized
层,其形状比 Metal1
扩大 0.01µm
。
4.6.3 区域限制派生层(Area-Restricted Derived Layers)
- 通过定义面积阈值,筛选出大于或小于某个尺寸的形状。
- 用于版图优化和 DRC 规则定义。
语法:
techDerivedLayers(
( tx_derivedLayer ( tx_layer 'area x_area ) )
)
参数说明:
参数 | 说明 |
---|---|
tx_derivedLayer | 生成的新派生层 |
tx_layer | 现有层的名称 |
'area | 关键字,表示筛选面积 |
x_area | 面积阈值(单位 µm²) |
示例:
techDerivedLayers(
("derivedLayer1" 1000 ("metal1" 'area <5))
)
此示例创建 derivedLayer1
,仅包含 metal1
层上面积小于 5µm²
的形状。
4.6.4 颜色派生层(Color-Derived Layers)
- 基于颜色掩膜(Mask Color)和锁定状态(Locked/Unlocked)提取形状。
- 适用于 多重曝光(Multiple Patterning)。
语法:
techDerivedLayers(
( t_derivedLayerName x_derivedLayerNum ( tx_layerName 'color t_maskColor ) ['locked | 'unlocked] )
)
参数说明:
参数 | 说明 |
---|---|
t_derivedLayerName | 生成的新派生层 |
x_derivedLayerNum | 派生层编号 |
tx_layerName | 现有层名称 |
'color | 关键字,表示筛选颜色 |
t_maskColor | 掩膜颜色 |
'locked / 'unlocked | 可选参数,指定是否锁定 |
示例:
techDerivedLayers(
( metal1_RedLocked 131 ( metal1 'color mask1Color ) 'locked )
)
此示例创建 metal1_RedLocked
层,包含 metal1
层上 mask1Color
且被锁定的形状。
4.6.5 双层逻辑运算派生层(Two-Layer–Derived Layers)
- 通过两个层进行逻辑运算(如 AND、OR、XOR、NOT)生成新层。
- 适用于 DRC 规则和互连优化。
语法:
techDerivedLayers(
( t_derivedLayerName x_derivedLayerNum ( tx_layer1 s_op tx_layer2 ) [ x_count | t_rangeVal ] ['diffNet | 'sameNet ] ['exclusive] )
)
参数说明:
参数 | 说明 |
---|---|
t_derivedLayerName | 生成的新派生层 |
x_derivedLayerNum | 派生层编号 |
tx_layer1 | 第一层 |
s_op | 逻辑运算符('and , 'or , 'not , 'xor ) |
tx_layer2 | 第二层 |
x_count | t_rangeVal(可选):约束参数,如最小/最大尺寸要求。
‘diffNet | ‘sameNet(可选):指定层之间是否必须属于不同/相同的网络。
‘exclusive(可选):设置是否独占该层数据。
示例:
techDerivedLayers(
(Gate 1000 (Poly 'and Active))
(PolyInterConn 1002 (Poly 'not CutPoly))
)
Gate
层由Poly
与Active
层的交集生成。PolyInterConn
由Poly
层减去CutPoly
层生成。
4.6.6 Non-rectangular Shape Derived Layers(非矩形形状派生层)
功能:提取非矩形(如L形、T形)的形状生成派生层。
语法:
techDerivedLayers( ("derivedLayerName" derivedLayerNumber (originalLayerName 'notRect) ) )
示例:
techDerivedLayers( ("Metal1_nonRect" 6001 ("Metal1" 'notRect)) )
- 生成
Metal1_nonRect
层,仅包含非矩形的Metal1
形状。
总结
类型 | 功能 | 示例 |
---|---|---|
基于用途派生层 | 通过层和用途组合创建新层 | ("metal1" 'select "drawing") |
尺寸调整派生层 | 通过放大或缩小层形状创建新层 | ("Metal1" 'grow 0.01) |
区域限制派生层 | 通过面积筛选创建新层 | ("metal1" 'area <5) |
颜色派生层 | 通过颜色掩膜提取形状 | ("metal1" 'color mask1Color) |
双层逻辑运算派生层 | 通过两个层进行 AND/OR/XOR 计算 | ("Poly" 'and "Active") |
非矩形形状派生层 | 提取非矩形(如L形、T形)的形状生成派生层 | ("Metal1" 'notRect) |
这些派生层的定义有助于 提高版图检查效率,优化布线策略,并支持先进工艺节点的光刻规则。
关键应用场景
- DRC规则定义:
- 使用
Two-Layer-Derived Layers
检查层间间距(如Metal1 NOT Metal2
的最小距离)。 - 通过
Area-Restricted
层限制最小图形面积。
- 布线优化:
- 利用
Color-Derived Layers
区分不同颜色的布线资源。 - 使用
Sizing-Derived Layers
补偿制造误差。
- 显示控制:
- 通过
Purpose-Aware
层隐藏特定目的的图形(如fill
)。
注意事项
- 唯一性:派生层名称和编号需唯一,避免与系统层冲突。
- 操作符兼容性:部分操作符(如
touching
)不支持附加参数(如count
)。 - 性能影响:复杂派生层(如多层逻辑组合)可能增加设计工具的计算负载。
- 版本兼容性:某些功能(如颜色派生层)需特定 Virtuoso 版本或许可证支持。
通过合理定义 techDerivedLayers
,可以显著提升设计规则的可维护性和灵活性,支持先进工艺节点的复杂需求。
5. Layer Attributes 解析
Technology File Layer Attributes
主要用于定义 用户自定义层 的各种属性,包括物理、电气特性、制造约束、路由方向等。这些属性可以帮助提高设计规则的准确性,并确保版图符合制造要求。
5.1 layerRules(层规则)
layerRules(
tx_recognitionLayer
)
参数:
tx_recognitionLayer
:非物理层,用于器件参数计算(如电阻、电容)。
- 该部分包含所有与用户定义层相关的规则。
- 需要放在
layerDefinitions
部分之后。 - 重要:仅适用于用户定义层,应用于系统保留层时会被忽略。
5.2 analysisAttributeLocks(分析属性锁)
analysisAttributeLocks(
[lockAddLayers t/nil]
[lockValuesChange t/nil]
)
- 功能:锁定某些层的分析属性,防止其在设计过程中被修改。
参数说明:
lockAddLayers
:t
:禁止添加新分析属性层。nil
(默认):允许添加。
lockValuesChange
:t
:禁止修改现有属性值。nil
(默认):允许修改。
5.3 equivalentLayers(等效层)
equivalentLayers( ( lt_layer ... ) )
功能描述:
定义等效层组,简化设计规则(如重叠连接无需通孔)。
参数说明:
lt_layer
:等效层列表,可以是层名或层-目的对(LPP)。
equivalentLayers( ("metall_supply" "metall") )
示例功能解释:metall_supply
与 metall
视为等效层,允许通过重叠直接连接。
5.4 incompatibleLayers(不兼容层)
incompatibleLayers(
( lt_layer ( lt_layer1 lt_layer2 … ) )
)
- 功能:定义物理层或派生层之间的不兼容性。
- 作用:如果一个技术文件包含了不兼容的层,则在技术图中会生成警告。
参数说明:
lt_layer
:主层。lt_layer1
,lt_layer2
:与主层互斥的层列表。
示例:
incompatibleLayers(
( "metal1" ( "metal1_mid" "metal1_top") )
)
metal1
不能与metal1_mid
或metal1_top
共同存在于同一个技术数据库。
5.5 functions(层功能)
functions(
( t_layer | x_number t_function [ x_layerOrder ]
['trims ( ( t_physicalLayer t_derivedLayer ) ... )]
)
)
功能描述
functions 语句用于为版图中的各个层指定其功能属性,明确层在工艺中的作用。
除了基本的层功能(如“metal”、“diff”、“cut”等)之外,此语句还可以定义层的显示顺序以及对层进行裁剪(trimming)的关联关系,从而控制物理层与派生层之间的对应关系,便于在版图检查、DRC、LVS及仿真中准确识别各层的用途和优先级。
参数说明
- t_layer | x_number
- 说明:指定要定义功能的层标识,可以是层的名称(t_layer,字符串形式)或层号(x_number,数值形式)。
- 取值:例如
"Metal1"
或10
,表示对应的物理层。
- t_function
- 说明:描述该层的功能属性,即该层在设计和制造中的作用。
- 取值:常见值包括
"metal"
(金属层)、"diff"
(扩散层)、"cut"
(切割层)、"nwell"
、"pwell"
等,也可以为用户自定义的功能名称。
- x_layerOrder(可选)
- 说明:数值型参数,用于指定该层在显示和处理时的优先顺序。
- 取值:整数值,数值越大通常表示该层在显示时覆盖在其他层之上,或在处理顺序中具有较高优先级。
- ‘trims(可选)
- 说明:该关键字后跟一组裁剪规则,用于定义层与其派生层之间的对应关系。
- 取值:一个列表,每一项为一对括号,形式为
( t_physicalLayer t_derivedLayer )
,表示在对物理层数据进行裁剪时,生成对应的派生层。 - 用途:便于在后续操作中自动将物理层的部分内容转换或映射到派生层上,实现例如图形修整、去除边缘冗余等效果。
示例
functions(
( Metal1 "metal" 100 'trims ( ( Metal1 Metal1_trim ) ( Metal1_active Metal1_activeTrim ) ) )
( NWELL "nwell" 1 )
)
示例功能解释
- 第一行示例:
- 层标识:
Metal1
- 指定了当前功能定义适用于名称为 “Metal1” 的层。
- 功能属性:
"metal"
- 表示该层为金属层,主要用于实现互连。
- 层顺序:
100
- 表示该层在显示和处理时具有较高的优先级(通常显示在其他低序层之上)。
- 裁剪规则(’trims):
- 包含两个裁剪规则对:
( Metal1 Metal1_trim )
:指示在进行裁剪处理时,从“Metal1”层提取数据生成对应的派生层“Metal1_trim”。( Metal1_active Metal1_activeTrim )
:指示对“Metal1_active”层的数据也进行类似裁剪,生成派生层“Metal1_activeTrim”。
- 这些规则确保在设计流程中,对物理层数据进行必要的修整和转换,以满足工艺要求。
- 包含两个裁剪规则对:
- 层标识:
- 第二行示例:
- 层标识:
NWELL
- 指定当前功能定义适用于名称为 “NWELL” 的层。
- 功能属性:
"nwell"
- 表示该层为n型井区层,通常用于CMOS工艺中定义pMOS管的井区。
- 层顺序:
1
- 显示顺序较低,通常在物理显示中位于底层或按照工艺要求排列,无额外裁剪规则定义。
- 层标识:
5.6 backsideLayers
backsideLayers( tx_layer ... )
功能描述:
定义背面金属层(用于硅穿孔TSV的底部连接)。
参数说明:
tx_layer
:背面层名。
示例:
backsideLayers(MB)
定义: MB
层为背面金属层,支持TSV连接。
5.7 analysisAttributes(分析属性)
analysisAttributes(
( tx_layer
['materialName t_materialName]
['thickness f_thickness]
['conductivity f_conductivity]
['permittivity f_permittivity]
['lossTangent f_lossTangent]
)
)
- 功能:定义材料的物理、电气特性,如厚度、电导率、介电常数等。
参数说明:
tx_layer
:目标层。materialName
:材料名称(如 “Copper”)。thickness
:层厚度(μm)。conductivity
:电导率(S/m)。permittivity
:介电常数。lossTangent
:损耗角正切。
示例:
analysisAttributes(
( M1 'materialName "MX" 'thickness 23 'conductivity 6e7 )
)
定义:M1
层材料为 "MX"
,厚度 23µm
,电导率 6×10⁷ S/m
5.8 mfgResolutions(制造网格分辨率)
mfgResolutions(
( tx_layer g_value )
)
- 功能:指定层的制造网格分辨率。
参数说明:
tx_layer
:层名。g_value
:制造网格值(用户单位)。
示例:
mfgResolutions(
(metal1 0.001)
(poly1 0.0005)
)
定义:metal1
层的最小步长为 0.001µm
;poly
层的最小步长为 0.001µm
。
5.9 routingDirections(布线方向)
routingDirections(
( tx_layer g_direction )
)
- 功能:设定层的首选布线方向。
参数说明:
tx_layer
:层名。g_direction
:方向,合法值:horizontal
(水平)、vertical
(垂直)、leftDiag
(左对角线)、rightDiag
(右对角线)、none
(无方向)。
示例:
routingDirections(
("metal1" "horizontal")
("metal2" "vertical")
("diff" "none")
)
metal1
层优先水平布线,metal2
层优先垂直布线。
下面给出基于文档中 Technology File Layer Attributes 小节下 snapPatternDefs 语句的详细解析,内容格式与文档保持一致。
5.10 snapPatternDefs
snapPatternDefs(
( t_name ( tx_layer tx_purpose )
'step g_step
'stepDirection {"horizontal" | "vertical"}
['type {"local" | "global"} ]
['offset g_offset]
['snappingLayers (
( 'layer tx_snapLayer …
'enclosures f_enclosure …
['purposes tx_snapPurpose …]
['snappingMode {"multiTrackCenter" | "singleTrackCenter"}]
['exceptOverlap l_overlapLPPs]
) …
]
['trackWidth g_trackWidth]
['trackGroups ( ( 'count n_trackCount
'space x_groupSpace
) … )
]
)
)
;snapPatternDefs
功能描述
snapPatternDefs 语句用于定义版图编辑和布线过程中使用的吸附(snap)模式。
通过此语句,设计者可以预先设置一系列吸附规则,指导设计工具在移动或对齐图形对象时按照指定的步长、方向、偏移及其它约束条件进行自动吸附,从而保证对象与预定轨道、网格或相邻图形保持一致,提高版图对齐精度和设计效率。
参数说明
- t_name
- 说明:吸附模式的名称,用于唯一标识该吸附模式。
- 取值:任意合法字符串。
- ( tx_layer tx_purpose )
- 说明:指定该吸附模式适用于哪一对层与用途组合。
- tx_layer:表示目标物理层;
- tx_purpose:表示该层对应的用途,如 “drawing”、”pin” 等。
- ‘step g_step
- 说明:设定吸附步长,即对象在移动过程中每次吸附对齐的间隔距离。
- g_step:数值,单位通常与设计单位一致(例如微米)。
- ‘stepDirection {“horizontal” | “vertical”}
- 说明:定义吸附步长的方向。
- 取值:只能取 “horizontal”(水平)或 “vertical”(垂直),指明对象在该方向上进行吸附对齐。
- [‘type {“local” | “global”} ](可选)
- 说明:定义吸附模式的作用范围。
- 取值:
"local"
:表示仅在局部区域内应用吸附;"global"
:表示在整个设计中均应用该吸附模式。
- 若未指定,则采用默认值。
- [‘offset g_offset](可选)
- 说明:指定吸附时允许的偏移量或容差。
- g_offset:数值,表示在执行吸附操作时允许的最大偏移距离。
- [‘snappingLayers ( … )](可选)
- 说明:定义与吸附相关的其他层信息,用于进一步控制吸附时的对象匹配规则。
- 内部包含一个或多个括号,每个括号表示一组规则:
- ‘layer tx_snapLayer:指定参与吸附的目标层。
- ‘enclosures f_enclosure:设定围绕目标层对象的包络或扩展距离(浮点数)。
- [‘purposes tx_snapPurpose …](可选):限定参与吸附的用途列表。
- [‘snappingMode {“multiTrackCenter” | “singleTrackCenter”}](可选):定义吸附模式,
"multiTrackCenter"
表示多个轨道的中心均可作为吸附目标;"singleTrackCenter"
表示仅使用单一轨道中心。
- [‘exceptOverlap l_overlapLPPs](可选):指定在吸附过程中排除重叠的层用途对(LPPs),以避免冲突。
- [‘trackWidth g_trackWidth](可选)
- 说明:定义用于吸附的轨道宽度。
- g_trackWidth:数值,表示轨道的宽度,帮助工具判断对象是否处于吸附范围内。
- [‘trackGroups ( ( ‘count n_trackCount ‘space x_groupSpace ) … )](可选)
- 说明:定义吸附轨道的分组规则。
- 每个组包含:
- ‘count n_trackCount:该组内的轨道数量(整数)。
- ‘space x_groupSpace:组内相邻轨道之间的间隔距离(数值)。
示例
snapPatternDefs(
( "SPattern1" ( Metal1 "drawing" )
'step 0.005
'stepDirection "horizontal"
'type "global"
'offset 0.001
'snappingLayers (
( 'layer Metal1
'enclosures 0.002
'purposes ("drawing" "fill")
'snappingMode "multiTrackCenter"
'exceptOverlap ( ("Metal1" "pin") )
)
)
'trackWidth 0.010
'trackGroups (
( 'count 3 'space 0.005 )
( 'count 2 'space 0.008 )
)
)
)
;snapPatternDefs
示例功能解释
- 吸附模式名称:
"SPattern1"
表示定义的吸附模式名称为 “SPattern1”。 - 适用层与用途:
( Metal1 "drawing" )
指定此吸附模式适用于层 Metal1 的 drawing 用途。 - 步长设定:
'step 0.005
:设定吸附步长为 0.005(单位与设计文件一致,例如微米),即每次吸附对齐时的标准距离。'stepDirection "horizontal"
:表示吸附操作沿水平方向进行。
- 作用范围与偏移:
'type "global"
:定义吸附模式在全局范围内有效。'offset 0.001
:指定吸附时允许的偏移量为 0.001,作为容差值。
- snappingLayers 部分:
- 指定吸附过程中参与比对的其他层信息:
'layer Metal1
:表示吸附目标层为 Metal1。'enclosures 0.002
:设定围绕目标对象的包络距离为 0.002。'purposes ("drawing" "fill")
:限定参与吸附的用途为 drawing 和 fill。'snappingMode "multiTrackCenter"
:指定吸附模式为多轨道中心吸附,即允许多个轨道中心均作为吸附参考。'exceptOverlap ( ("Metal1" "pin") )
:排除与 Metal1 层中 pin 用途重叠的情况,避免误吸附。
- 指定吸附过程中参与比对的其他层信息:
- 轨道宽度与组:
'trackWidth 0.010
:定义吸附时所参考的轨道宽度为 0.010。'trackGroups
部分:- 第一组:
( 'count 3 'space 0.005 )
表示该组包含 3 个轨道,且相邻轨道间间隔为 0.005。 - 第二组:
( 'count 2 'space 0.008 )
表示另一组包含 2 个轨道,间隔为 0.008。
- 第一组:
该示例整体上定义了一个全局吸附模式 “SPattern1″,适用于 Metal1 层的 drawing 用途,指定了吸附步长、方向、偏移、目标层与用途、轨道宽度及轨道分组规则,从而在版图编辑和布线过程中帮助工具自动对齐对象,提高设计精度和一致性。
5.11relatedSnapPatterns
relatedSnapPatterns(
( t_name
'snapPatternDefs (
( t_snapPatternDefName
['patterns ( l_patternNames )]
['patternGroups ( l_patternNames )]
) …
)
['extraLPP ( tx_layer tx_purpose )]
['regionSnapPitchHorizontal f_snapH]
['regionSnapPitchVertical f_snapV]
)
) ;relatedSnapPatterns
功能描述
relatedSnapPatterns语句用于定义与指定吸附模式(snapPatternDefs)相关联的吸附规则。
该语句将一组吸附模式与特定的图层用途对(Layer-Purpose Pair)相关联,以便在版图编辑过程中对相邻对象进行区域性吸附。通过设置额外的吸附参数(如区域吸附间距),可以进一步优化布线和对象对齐效果,提高版图设计的准确性。
参数说明
- t_name
- 说明:定义该相关吸附规则的名称,用于唯一标识此条规则。
- 取值:任意合法字符串。
- ‘snapPatternDefs
- 说明:后跟一组括号,定义相关的吸附模式信息,每个模式对应一个已在snapPatternDefs中定义的吸附模式。
- t_snapPatternDefName
- 说明:引用的吸附模式名称,应与snapPatternDefs中定义的名称一致。
- 取值:字符串。
- [‘patterns ( l_patternNames )](可选)
- 说明:指定一组具体的吸附图案名称列表,用于精细控制该模式下的吸附行为。
- 取值:一个或多个图案名称的列表。
- [‘patternGroups ( l_patternNames )](可选)
- 说明:指定一组图案组名称,用于将多个图案组织在一起应用于吸附过程。
- 取值:一个或多个图案组名称的列表。
- [‘extraLPP ( tx_layer tx_purpose )](可选)
- 说明:定义一个额外的层用途对(Layer-Purpose Pair),该对用于扩展吸附规则的应用范围。
- 参数:
- tx_layer:层名称。
- tx_purpose:该层的用途名称。
- [‘regionSnapPitchHorizontal f_snapH](可选)
- 说明:定义水平区域吸附的间距,即在水平方向上进行区域吸附时的标准吸附间隔。
- 取值:浮点数,单位与设计文件一致(如微米)。
- [‘regionSnapPitchVertical f_snapV](可选)
- 说明:定义垂直区域吸附的间距,即在垂直方向上进行区域吸附时的标准吸附间隔。
- 取值:浮点数,单位与设计文件一致。
示例
relatedSnapPatterns(
( "RSPattern1"
'snapPatternDefs (
( "SPattern1"
'patterns ( "patternA" "patternB" )
'patternGroups ( "group1" )
)
( "SPattern2"
'patternGroups ( "group2" "group3" )
)
)
'extraLPP ( Metal1 "drawing" )
'regionSnapPitchHorizontal 0.005
'regionSnapPitchVertical 0.007
)
)
;relatedSnapPatterns
示例功能解释
- t_name:
- 此处规则名称为
"RSPattern1"
,用于标识该条相关吸附规则。
- 此处规则名称为
- ‘snapPatternDefs 部分:
- 包含两条吸附模式引用:
- 第一条引用
"SPattern1"
,并通过'patterns
指定了具体的图案"patternA"
与"patternB"
,同时通过'patternGroups
指定图案组"group1"
。 - 第二条引用
"SPattern2"
,并指定了图案组"group2"
与"group3"
。
- 第一条引用
- 这些引用表明,规则
"RSPattern1"
将与"SPattern1"
和"SPattern2"
两种吸附模式相关联,并采用各自指定的图案或图案组以控制吸附行为。
- 包含两条吸附模式引用:
- ‘extraLPP:
- 指定额外的层用途对为
( Metal1 "drawing" )
,这意味着该吸附规则不仅应用于默认指定的层,还扩展到Metal1
层的drawing
用途,有助于确保该层中的对象也参与区域吸附。
- 指定额外的层用途对为
- ‘regionSnapPitchHorizontal:
- 设置水平吸附间距为
0.005
,即在水平方向上,对象的吸附间隔为 0.005(单位,如微米)。
- 设置水平吸附间距为
- ‘regionSnapPitchVertical:
- 设置垂直吸附间距为
0.007
,即在垂直方向上,对象的吸附间隔为 0.007(单位,如微米)。
- 设置垂直吸附间距为
综上,relatedSnapPatterns语句将一组预定义的吸附模式与特定层用途和区域吸附间距关联起来,提供细化的吸附规则,帮助设计工具在布线和版图编辑时自动对齐对象,确保版图在不同方向上均能达到精确对齐的效果。
5.12 widthSpacingPatterns
widthSpacingPatterns(
( t_name
['offset g_offset ['repeatOffset]]
['startingColor g_maskColors | 'shiftColor]
['allowedRepeatMode {"any" | "none" | "steppedOnly" | "flippedOnly"}
['defaultRepeatMode {"stepped" | "flippedStartsWithOdd" | "flippedStartsWithEven"}]
]
'pattern(
( ['repeat g_repeat]
['wireTypes ( l_wireTypes )]
['colors ( g_colors … )]
['displayPackets ( l_packets )]
'spec(
( ['width g_width
'space g_space
['wireType t_wireType]
['color g_maskColors]
['displayPacket t_packet]
) … )
) ;spec
) … ;pattern
)
) ;widthSpacingPatterns
功能描述
widthSpacingPatterns语句用于定义布线时的宽度与间距模式。
通过该语句,设计者可以为特定层或层用途定义一组标准的宽度与间距组合(以及相关的显示和制造参数),从而在布线、DRC 检查及版图优化时实现一致性和规范化。该语句允许设置全局的偏移值、起始颜色、允许的重复模式及默认重复模式,同时在内部定义一系列具体的模式,每一组模式包含重复因子、适用的线型、颜色、显示包和详细的宽度/间距规格。
参数说明
- t_name
- 说明:定义此宽度间距模式的名称,用于唯一标识该模式。
- 取值:任意合法字符串。
- [‘offset g_offset [‘repeatOffset]]
- 说明:
- g_offset:设置全局的偏移值,用于调整整体模式的起始位置。
- repeatOffset(可选):指定重复时的偏移增量。
- 取值:数值(通常以微米为单位)。
- 说明:
- [‘startingColor g_maskColors | ‘shiftColor]
- 说明:
- 指定模式的起始颜色,可以直接给出一个颜色数值(g_maskColors)或使用关键字
'shiftColor
表示颜色依次偏移。
- 指定模式的起始颜色,可以直接给出一个颜色数值(g_maskColors)或使用关键字
- 取值:颜色数值或
'shiftColor
。
- 说明:
- [‘allowedRepeatMode {“any” | “none” | “steppedOnly” | “flippedOnly”} [‘defaultRepeatMode {“stepped” | “flippedStartsWithOdd” | “flippedStartsWithEven”}]]
- 说明:
- allowedRepeatMode:定义该宽度间距模式允许的重复方式。
"any"
:无特殊限制。"none"
:不允许重复。"steppedOnly"
:仅允许按照阶梯方式重复。"flippedOnly"
:仅允许翻转方式重复。
- defaultRepeatMode(可选):当重复方式未明确指定时,使用的默认重复模式,可能为
"stepped"
、"flippedStartsWithOdd"
或"flippedStartsWithEven"
。
- allowedRepeatMode:定义该宽度间距模式允许的重复方式。
- 取值:字符串类型。
- 说明:
- ‘pattern( … )
- 说明:定义一个或多个具体的宽度间距模式组,每个组描述一组布线时可采用的标准参数。
- 内部包含以下参数:
- [‘repeat g_repeat](可选)
- 说明:指定该模式组的重复因子,表示该模式可重复的次数。
- 取值:数值。
- [‘wireTypes ( l_wireTypes )](可选)
- 说明:定义适用的线型列表,限定哪些布线类型可应用此模式。
- 取值:层名称列表。
- [‘colors ( g_colors … )](可选)
- 说明:指定一组颜色值,用于布线时的色彩分配。
- 取值:一个或多个颜色数值。
- [‘displayPackets ( l_packets )](可选)
- 说明:指定显示包列表,用于在版图中显示该模式时的视觉效果。
- 取值:显示包名称列表。
- ‘spec( ( … ) … )
- 说明:定义详细的宽度和间距规格,每个规格描述一对标准值。
- 每个规格内包含以下参数:
- [‘width g_width]
- 说明:指定布线的标准宽度。
- 取值:数值(单位与工艺一致)。
- [‘space g_space]
- 说明:指定布线间的标准间距。
- 取值:数值。
- [‘wireType t_wireType](可选)
- 说明:可选地指定此规格适用的特定线型。
- 取值:字符串。
- [‘color g_maskColors](可选)
- 说明:可选地指定此规格使用的颜色。
- 取值:颜色数值。
- [‘displayPacket t_packet](可选)
- 说明:可选地指定显示包名称,用于覆盖默认显示设置。
- 取值:字符串。
- [‘width g_width]
- [‘repeat g_repeat](可选)
示例
widthSpacingPatterns(
( "WSPattern1"
'offset 0.002
'repeatOffset 0.0005
'startingColor 1.0
'allowedRepeatMode "steppedOnly"
'defaultRepeatMode "stepped"
'pattern(
( 'repeat 2
'wireTypes ( "Metal1" "Metal2" )
'colors ( 1.0 2.0 )
'displayPackets ( "dp1" "dp2" )
'spec(
( 'width 0.005 'space 0.003 )
( 'width 0.006 'space 0.004 'wireType "metal" 'color 1.0 'displayPacket "dp3" )
)
)
( 'repeat 1
'wireTypes ( "Poly" )
'colors ( 3.0 )
'spec(
( 'width 0.004 'space 0.002 )
)
)
)
)
)
;widthSpacingPatterns
示例功能解释
- 模式名称:
"WSPattern1"
为该宽度间距模式的名称。
- 全局偏移设置:
'offset 0.002
:定义整体吸附或对齐时的偏移为 0.002(单位)。'repeatOffset 0.0005
:在重复模式中,每次重复时的偏移增量为 0.0005。
- 起始颜色:
'startingColor 1.0
:设定起始颜色为 1.0(通常表示一个特定的掩膜颜色)。
- 重复模式设置:
'allowedRepeatMode "steppedOnly"
:只允许阶梯式重复,即模式只能按固定步长依次重复。'defaultRepeatMode "stepped"
:当重复模式未指定时,默认采用阶梯式重复。
- 第一组模式定义:
'repeat 2
:该模式组重复因子为 2,表示此模式在相应条件下可重复两次。'wireTypes ( "Metal1" "Metal2" )
:限定此模式仅适用于 “Metal1” 和 “Metal2” 两种布线类型。'colors ( 1.0 2.0 )
:为此模式指定了两个颜色值 1.0 和 2.0。'displayPackets ( "dp1" "dp2" )
:指定两个显示包 “dp1” 和 “dp2″,用于在版图中展示该模式。'spec
部分定义了两条规格:- 第一条规格:宽度为 0.005,间距为 0.003。
- 第二条规格:宽度为 0.006,间距为 0.004,同时覆盖默认参数,指定此规格适用于线型 “metal”,颜色设为 1.0,并使用显示包 “dp3″。
- 第二组模式定义:
'repeat 1
:该模式组只重复一次。'wireTypes ( "Poly" )
:仅适用于 “Poly”(多晶硅)布线。'colors ( 3.0 )
:指定颜色值为 3.0。'spec
部分仅定义一条规格:宽度为 0.004,间距为 0.002。
该示例综合设置了全局偏移、重复偏移、起始颜色、重复模式、以及两组具体的宽度和间距规格,从而为不同层或布线类型提供标准化的宽度间距方案,便于后续布线工具和设计规则检查的一致应用。
5.13 widthSpacingPatternGroups
widthSpacingPatternGroups(
( t_name
'members ( l_patternNames )
)
…
) ;widthSpacingPatternGroups
功能描述
widthSpacingPatternGroups 语句用于对宽度间距模式(由 widthSpacingPatterns 定义)进行分组组织。
通过将多个模式名称归为一组,可以在设计中统一管理和引用这些模式,从而简化规则应用和后续的版图布线操作。分组后,设计工具可根据组内成员的集合特性,对相应层或线型应用一致的宽度及间距标准。
参数说明
- t_name
- 说明:分组名称,用于唯一标识该宽度间距模式组。
- 取值:任意合法的字符串。
- ‘members ( l_patternNames )
- 说明:指定本组中包含的宽度间距模式的名称列表,这些模式名称应在 widthSpacingPatterns 中已定义。
- l_patternNames:一个列表,包含一个或多个模式名称(字符串)。
示例
widthSpacingPatternGroups(
( "Group1"
'members ( "WSPattern1" "WSPattern2" "WSPattern3" )
)
( "Group2"
'members ( "WSPattern4" "WSPattern5" )
)
)
;widthSpacingPatternGroups
示例功能解释
- 第一组
- 分组名称为
"Group1"
, 'members
指定该组包含的宽度间距模式为"WSPattern1"
、"WSPattern2"
和"WSPattern3"
。- 这表示在后续应用中,如果需要引用或应用这组模式,则将同时采用这三个模式定义的标准宽度与间距参数。
- 分组名称为
- 第二组
- 分组名称为
"Group2"
, 'members
指定该组包含"WSPattern4"
和"WSPattern5"
两个模式。- 表示另一组布线标准,可在需要时统一调用
"Group2"
中定义的模式设置。
- 分组名称为
通过 widthSpacingPatternGroups 语句,设计者能够对宽度间距模式进行分类管理,有利于在版图设计中实现不同层或不同区域的布线宽度与间距策略,从而确保设计规则和工艺要求得到一致且高效的应用。
5.14 widthSpacingSnapPatternDefs
语法
widthSpacingSnapPatternDefs(
( t_name ( tx_layer tx_purpose ) | tx_layer
'period g_period
'direction "vertical" | "horizontal"
['offset g_offset]
['snappingLayers(
( 'layer tx_snapLayer ['purposes l_purposes] )
…
)]
{ ['patterns ( l_patternNames )]
['patternGroups ( l_patternGroupNames )]
}
'defaultActive t_defaultActivePatternName
['orthogonalGrid g_gridType
['orthogonalGridColor "mask1Color" "mask2Color" "mask3Color" "mask4Color"]
]
)
) ;widthSpacingSnapPatternDefs
功能描述
widthSpacingSnapPatternDefs 语句用于定义布线时基于宽度与间距的吸附模式(snap pattern)的专用规则,主要针对与特定层及用途相关的吸附操作。
该语句不仅设置了吸附的周期(period)和方向(vertical 或 horizontal),还支持定义附加的偏移值、参与吸附的目标层(snappingLayers),以及预定义的图案(patterns 或 patternGroups)。此外,还指定了默认激活的吸附图案,并可选地定义正交网格(orthogonalGrid)的类型和颜色,用于进一步辅助布线对齐和规则检查。
参数说明
- t_name
- 说明:定义该吸附模式的名称,用于唯一标识此规则。
- 取值:任意合法字符串。
- ( tx_layer tx_purpose ) | tx_layer
- 说明:指定该吸附模式适用的目标层及用途。
- 取值:
- 可使用一对括号给出层名称及其用途,例如
( Metal1 "drawing" )
, - 或直接给出单一层名称,表示默认适用于该层。
- 可使用一对括号给出层名称及其用途,例如
- ‘period g_period
- 说明:设置吸附模式的周期,即定义对象在该模式下重复出现的基本间隔。
- 取值:数值(单位与设计文件一致,如微米)。
- ‘direction “vertical” | “horizontal”
- 说明:指定吸附模式应用的方向,决定对象在移动时应按垂直或水平方向对齐。
- 取值:只能为
"vertical"
或"horizontal"
。
- [‘offset g_offset](可选)
- 说明:定义在应用吸附模式时的附加偏移量,作为对齐时的容差补偿。
- 取值:数值。
- [‘snappingLayers( ( ‘layer tx_snapLayer [‘purposes l_purposes] ) … )](可选)
- 说明:指定一个或多个参与吸附操作的目标层信息。
- 参数说明:
- ‘layer tx_snapLayer:指定一个用于吸附比较的目标层名称。
- [‘purposes l_purposes](可选):可限定该目标层中参与吸附的用途列表(多个用途名称)。
- 取值:可包含多个括号,每个括号对应一组吸附目标层规则。
- { [‘patterns ( l_patternNames )] [‘patternGroups ( l_patternGroupNames )] }
- 说明:定义与此吸附模式相关的图案信息。
- 参数说明:
- [‘patterns ( l_patternNames )]:给出一组具体的吸附图案名称列表。
- [‘patternGroups ( l_patternGroupNames )]:给出一组图案组名称列表,用于将多个图案组织在一起。
- 取值:列表中各项均为字符串形式的图案名称。
- ‘defaultActive t_defaultActivePatternName
- 说明:指定默认激活的吸附图案名称,当没有其它指定时,工具将采用该图案进行吸附处理。
- 取值:字符串,必须与前面定义的图案名称之一一致。
- [‘orthogonalGrid g_gridType [‘orthogonalGridColor “mask1Color” “mask2Color” “mask3Color” “mask4Color”]](可选)
- 说明:
- ‘orthogonalGrid g_gridType:定义正交网格的类型,用于吸附时的正交对齐。
- [‘orthogonalGridColor …]:可选地定义正交网格对应的颜色设置,通常指定多个颜色以对应不同的网格层级或用途。
- 取值:
- g_gridType:数值或字符串,表示网格类型;
- 后续颜色参数为字符串,可能为 “mask1Color”、”mask2Color”、”mask3Color”、”mask4Color” 等。
- 说明:
示例
widthSpacingSnapPatternDefs(
( "WSSPattern1" ( Metal1 "drawing" )
'period 0.010
'direction "horizontal"
'offset 0.002
'snappingLayers(
( 'layer Metal1 ['purposes ("drawing" "fill")] )
( 'layer Metal2 )
)
['patterns ( "patternA" "patternB" )]
['patternGroups ( "group1" )]
'defaultActive "patternA"
'orthogonalGrid 0.005
['orthogonalGridColor "mask1Color" "mask2Color" "mask3Color" "mask4Color"]
)
)
;widthSpacingSnapPatternDefs
示例功能解释
- 模式名称:
"WSSPattern1"
定义了此宽度间距吸附模式的名称。
- 适用层与用途:
( Metal1 "drawing" )
指定该吸附模式适用于 Metal1 层的 drawing 用途。
- 周期设置:
'period 0.010
:定义该模式的周期为 0.010,意味着布线或对象吸附时的基本间隔为 0.010。
- 吸附方向:
'direction "horizontal"
:指定吸附方向为水平对齐。
- 偏移设置:
'offset 0.002
:在吸附过程中允许的附加偏移量为 0.002,用于调整对齐精度。
- snappingLayers 部分:
- 定义了两个目标层规则:
- 第一条规则:
'layer Metal1
并限定其用途为("drawing" "fill")
,表示在进行吸附时,将考虑 Metal1 层中 drawing 和 fill 两种用途的对象。 - 第二条规则:
'layer Metal2
没有指定用途,表示默认适用于该层上所有对象。
- 第一条规则:
- 定义了两个目标层规则:
- 图案定义:
- [‘patterns ( “patternA” “patternB” )]:指定该吸附模式关联的具体图案为 “patternA” 与 “patternB”。
- [‘patternGroups ( “group1” )]:将此模式归入图案组 “group1″,便于后续统一调用和管理。
- 默认激活图案:
'defaultActive "patternA"
:表示在未作其它指定时,默认采用 “patternA” 作为激活的吸附图案。
- 正交网格设置:
'orthogonalGrid 0.005
:定义正交网格的类型或周期为 0.005。- [‘orthogonalGridColor “mask1Color” “mask2Color” “mask3Color” “mask4Color”]:指定正交网格使用的颜色序列,依次为 “mask1Color”、”mask2Color”、”mask3Color” 和 “mask4Color”,用于视觉上区分不同层级或功能的网格。
该示例整体上定义了一个宽度间距吸附模式 “WSSPattern1″,适用于 Metal1 层 drawing 用途,设置了吸附周期、方向、偏移、目标吸附层、相关图案及正交网格参数,从而在布线或版图编辑过程中提供精细而一致的吸附对齐方案。
5.15 peakACCurrentDensity
语法
a. 直接定义电流密度:
currentDensity(
( peakACCurrentDensity tx_layer f_value )
…
) ;currentDensity
b. 使用电流密度表定义:
currentDensityTables(
( peakACCurrentDensity tx_layer
(( "frequency" nil nil ["width" | "cutArea" nil nil] )
[f_default]
)
( g_table )
)
…
) ;currentDensityTables
功能描述
peakACCurrentDensity 用于定义某一金属层在交流条件下(AC)的峰值电流密度限制。
- 通过 currentDensity 语句,可以直接为某一层设置一个全局的峰值 AC 电流密度值;
- 通过 currentDensityTables 语句,则可以建立一张基于频率(以及可选地基于线宽或过孔面积)的详细电流密度表,以满足高频设计要求。
这些设置的目的在于防止因高频电流引起的电迁移(Electromigration, EM)等可靠性问题,确保芯片长期稳定工作。
参数说明
对于 currentDensity 语句:
- peakACCurrentDensity
- 说明:规则名称,指明此规则用于峰值交流电流密度。
- tx_layer
- 说明:指定该电流密度约束适用的金属层。
- 取值:例如
"Metal1"
、"Metal2"
等,必须为文档中定义的层名称。
- f_value
- 说明:直接指定的最大允许交流电流密度值。
- 取值:数值,单位通常为 A/µm²(安培每平方微米)。
对于 currentDensityTables 语句:
- peakACCurrentDensity
- 说明:规则名称,指明该表用于定义峰值 AC 电流密度限制。
- tx_layer
- 说明:适用的金属层名称。
- (( “frequency” nil nil [“width” | “cutArea” nil nil] ) [f_default])
- 说明:
- 该括号内首先用字符串
"frequency"
指明此表格依据频率进行分类; - 后续的
nil
参数占位(表示其它分类因子为空); - 方括号内可以选择
"width"
或"cutArea"
,表示电流密度可能依赖于线宽或过孔面积; [f_default]
表示可选的默认电流密度值,当没有明确条件时采用。
- 该括号内首先用字符串
- 说明:
- ( g_table )
- 说明:该部分包含具体的表格数据,每一行条目描述在特定频率(及线宽或过孔面积条件下)的最大允许交流电流密度。
- 取值:每个条目一般包含频率值、(可选)线宽或过孔面积参数,以及对应的电流密度值(A/µm²)。
示例
示例 1:直接定义峰值 AC 电流密度
currentDensity(
( peakACCurrentDensity Metal1 4.0 )
)
示例 2:基于频率和线宽的峰值 AC 电流密度表
currentDensityTables(
( peakACCurrentDensity Metal1
(( "frequency" nil nil "width" nil nil ) 3.8)
(
( 1.0e9 0.10 5.0 ) ; 频率 1 GHz,线宽 0.10 µm,对应最大 AC 电流密度 5.0 A/µm²
( 2.0e9 0.10 4.5 ) ; 频率 2 GHz,线宽 0.10 µm,对应最大 AC 电流密度 4.5 A/µm²
( 5.0e9 0.15 3.8 ) ; 频率 5 GHz,线宽 0.15 µm,对应最大 AC 电流密度 3.8 A/µm²
)
)
)
示例功能解释
示例 1 解析
- 此语句对 Metal1 层设置一个全局峰值交流电流密度为 4.0 A/µm²。
- 适用于设计中对 Metal1 层所有交流信号均采用相同的电流密度限制,不区分频率或线宽条件。
示例 2 解析
- 此电流密度表适用于 Metal1 层,基于不同频率和线宽条件设置不同的峰值 AC 电流密度:
- 表头部分
(( "frequency" nil nil "width" nil nil ) 3.8)
指明该表主要依据 频率 分类,且考虑 线宽 参数;同时设定默认值为 3.8 A/µm²(在没有匹配条目的情况下采用)。 - 第一行条目:当信号频率为 1.0 GHz 且线宽为 0.10 µm 时,最大允许交流电流密度为 5.0 A/µm²。
- 第二行条目:当信号频率为 2.0 GHz 且线宽为 0.10 µm 时,最大允许交流电流密度降至 4.5 A/µm²。
- 第三行条目:当信号频率为 5.0 GHz 且线宽为 0.15 µm 时,最大允许交流电流密度为 3.8 A/µm²。
- 表头部分
- 这种基于频率和线宽的细化设定能够更准确地反映器件在高频工作条件下的可靠性需求,从而在设计规则检查和电迁移分析中发挥作用。
总结
- peakACCurrentDensity 用于规定金属层在交流工作条件下的最大电流密度,防止因电流过大而引发电迁移问题。
- 可通过 currentDensity 直接设定统一的值,也可使用 currentDensityTables 根据频率(以及可选线宽或过孔面积)进行详细分类。
- 这种设定在高频设计、射频电路和高速数字电路中尤为重要,能确保芯片在不同工作条件下具有足够的电迁移裕度。
5.16 avgACCurrentDensity
请直接参考5.15中描述
5.17 rmsACCurrentDensity
请直接参考5.15中描述
5.18 avgDCCurrentDensity
请直接参考5.15中描述
5.19 stampLabelLayers
语法
stampLabelLayers(
( textLayer layers )
…
) ;stampLabelLayers
功能描述
stampLabelLayers语句用于定义文本标签在版图中的归属规则,即将出现在指定物理层或层用途中的文本标签“印章”到一个独立的标签层上。
这有助于确保版图中器件的命名和标识信息能够在电气连接和后续数据传递中正确显示,同时也便于管理和解析版图中的文本信息。
参数说明
- textLayer
- 说明:指定文本标签应归属到的目标层名称。该层通常用于保存器件名称、信号标识、端口名称等信息。
- 取值:任意合法的层名称字符串,如
"Metal1"
、"Text"
等。
- layers
- 说明:指定一个或多个物理层(或层用途对),当文本标签出现在这些层上时,将被“印章”到上面定义的 textLayer 上。
- 取值:可以为单一层名称,也可以为带有用途说明的组合(如
(Metal1 fill)
或(Metal2 pin)
),表示该规则适用于特定层及其对应用途。
示例
stampLabelLayers(
( Metal1 (Metal1 fill) )
( (Metal2 pin) Metal2 )
( Text (Metal2 pin) Metal2 (Metal1 pin) Metal1 )
) ;stampLabelLayers
示例功能解释
- 第一条规则:
- textLayer:
Metal1
表示文本标签将归入到层 Metal1 中。 - layers:
(Metal1 fill)
指定当文本标签出现在 Metal1 层的 fill 用途上时,该标签会被印章到 Metal1 标签层中。 - 功能效果:确保与 Metal1 相关的填充信息在标签处理时统一归类到 Metal1 层。
- textLayer:
- 第二条规则:
- textLayer:
Metal2
表示文本标签将归入到层 Metal2 中。 - layers:
(Metal2 pin)
指定当文本标签出现在 Metal2 层的 pin 用途上时,该标签将被印章到 Metal2 标签层中。 - 功能效果:保证与 Metal2 相关的引脚标识在标签处理时正确归类。
- textLayer:
- 第三条规则:
- textLayer:
Text
指定文本标签的目标层名称为 Text,一般用于保存器件或信号名称。 - layers:
(Metal2 pin) Metal2 (Metal1 pin) Metal1
表示当文本标签分别出现在 Metal2 层的 pin 用途以及 Metal1 层的 pin 用途时,标签均被印章到对应的 Metal2 或 Metal1 层;同时,这里也可以理解为在统一的 Text 标签层中,通过规则区分来自不同物理层的标签信息。 - 功能效果:整合不同层(如 Metal1 与 Metal2)中关于器件引脚的文本标签,便于后续在电气连接和数据传输时进行统一处理和识别。
- textLayer:
总结
- stampLabelLayers 语句用于为版图中的文本标签指定归属规则,即将特定物理层或用途中的文本信息印章到预定的标签层上。
- 通过对不同的层及用途进行组合定义,可以实现对器件名称、引脚标识等信息的精细管理,从而确保在版图导出、电气仿真和后续设计流程中,文本标签数据能够正确传递和解析。
5.20 labelLayers
语法
labelLayers(
( tx_labelLayer1 tx_conLayer1 [ tx_conLayer2 … ] )
( tx_labelLayer2 tx_conLayer … )
…
) ;labelLayers
功能描述
labelLayers 语句用于定义文本标签(label)在技术文件中的归属规则。
在版图设计中,文本标签常用于标注器件名称、信号名称、引脚编号等信息。通过该语句,可以将文本标签与一个或多个物理层(或层用途)关联起来,使得在版图导出、显示以及后续电气规则解析时,文本标签能够按照预定的层次结构正确传递。
换句话说,labelLayers 用于指定当文本标签出现在某些物理层上时,其实际归属(label的存放位置)应当归属于哪一个逻辑标签层,从而实现文本信息的统一管理。
参数说明
- tx_labelLayer
- 说明:指定文本标签实际归属的目标层名称。
- 取值:任意合法字符串,通常为用户定义的标签层名称,如
"text"
、"label"
等。
- tx_conLayer1, tx_conLayer2, …
- 说明:定义一个或多个物理层或层用途,这些层中出现的文本标签将被归类到上面指定的 tx_labelLayer 中。
- 取值:可以为单个层名称或组合形式,视具体用途而定。例如,可以直接使用物理层名称,也可以用带用途的形式如
(Metal17 drawing)
。
示例
labelLayers(
( text Metal17 Metal16 Metal15 Poly Oxide )
) ;labelLayers
示例功能解释
- 示例说明:
在该示例中,labelLayers 语句定义了一个规则,其中:- tx_labelLayer 为
text
,表示所有满足条件的文本标签都将归属到名称为text
的标签层中。 - tx_conLayer1, tx_conLayer2, … 为
Metal17
、Metal16
、Metal15
、Poly
、Oxide
。这表示当文本标签出现在上述任何一个物理层中时,均会被归类到text
标签层下。
- tx_labelLayer 为
- 功能效果:
此规则有助于在版图中对来自多个层(如不同金属层、聚合层或氧化层)的文本信息进行统一管理。例如,设计工具在导出版图或进行电气节点命名时,会将出现在Metal17
、Metal16
、Metal15
、Poly
或Oxide
层上的文本标签全部归并到text
层,从而确保文本标签的识别和处理的一致性。
总结
- labelLayers 语句用于指定文本标签在版图中的归属层,确保文本信息能在电气连接和后续设计流程中正确传递。
- 通过将多个物理层(或层用途)与一个目标标签层关联,可以统一管理散布在不同层的文本标签,实现信息整合与优化显示。
5.21 labelLayers 和 stampLabelLayers 区别
- 用途和应用场景
- labelLayers
- 主要用于定义文本标签的归属规则,即当文本标签出现在指定的物理层上时,它们被归类到某个标签层。
- 侧重于版图中标签的显示、归档和整理,通常用于标注器件名称、信号名称等描述性信息。
- stampLabelLayers
- 主要用于将文本标签“印章”到指定的层上,通常用于电气节点命名和连接信息的持久保存。
- 其定义确保在技术文件编译、加载和转储过程中,文本标签能够随设计数据一起保留,并在后续电气规则检查中正确传递。
- labelLayers
- 规则定义和格式
- labelLayers 的格式较为简单,通常形如:
labelLayers( ( tx_labelLayer tx_conLayer1 [ tx_conLayer2 … ] ) … ) ;labelLayers
它将一个目标标签层与一个或多个物理层关联,当文本出现在这些物理层上时,会归到目标标签层。 - stampLabelLayers 的规则也类似,但通常用于更专门的电气节点标识,其规则更关注于特定层用途的文本标签,确保这些信息在版图编译和转储过程中不丢失。
- labelLayers 的格式较为简单,通常形如:
- 实际效果
- 使用 labelLayers 后,文本标签主要起到展示和描述的作用,帮助设计者在版图中识别各类器件或信号,但其对电气连接的影响较小。
- 使用 stampLabelLayers 则强调文本标签在电气设计中的“印章”效果,即将标注信息固定下来,保证在技术库和仿真数据中准确传递,用于电气节点命名和关联。
总结
- labelLayers 适用于统一管理版图中散布于不同物理层的文本标签,以便于显示和数据整理。
- stampLabelLayers 则侧重于确保电气节点标识和器件名称在整个设计流程中保持一致和持久,特别是在技术文件编译和转储过程中,能正确传递这些关键信息。
5.22 cutClasses
语法
cutClasses( [t_name]
( tx_cutLayer
( t_cutClassName
['numCuts x_numCuts]
['minWidth]
['minLength]
['fixedOrientation]
['cutClassGroups l_groups]
{ f_width | ( f_width f_length ) }
) ;t_cutClassName
…
) ;tx_cutLayer
…
) ;cutClasses
功能描述
cutClasses 语句用于定义过孔(或切割)的类别及其相关参数,这些信息用于指导工艺工具在设计规则检查(DRC)及制造过程中如何处理不同类型的过孔。
通过定义 cutClasses,设计者可以为特定层的切割操作设置:
- 切割数量(numCuts);
- 最小尺寸要求(minWidth、minLength);
- 是否采用固定方向(fixedOrientation);
- 以及所属的切割类别组(cutClassGroups);
- 同时,还可以指定切割的几何尺寸(单一宽度或宽度和长度组合)。
这些参数确保在多图层互连和过孔布局时,各种切割工艺满足工艺规则和制造要求。
参数说明
- [t_name]
- 说明:可选的类别名称,用于整体标识此组 cutClasses 定义。
- 取值:任意合法字符串。
- tx_cutLayer
- 说明:指定当前 cutClasses 定义适用的层,即在哪个层上定义切割操作。
- 取值:例如
"ViaLayer1"
、"Metal1Cut"
等,必须为文档中预定义的层名称。
- t_cutClassName
- 说明:定义具体的过孔类别名称。
- 取值:任意合法字符串,用于标识该种类型的切割/过孔。
- [‘numCuts x_numCuts](可选)
- 说明:指定该切割类别要求的过孔切割数量。
- 取值:整数,表示一个过孔中包含的切割个数。
- [‘minWidth](可选)
- 说明:定义该类别过孔的最小宽度要求。
- 取值:数值,单位通常与技术文件一致(例如微米)。
- [‘minLength](可选)
- 说明:定义该类别过孔的最小长度要求。
- 取值:数值,单位与 minWidth 一致。
- [‘fixedOrientation](可选)
- 说明:指示该切割类别是否采用固定方向,通常用于某些特殊工艺要求。
- 取值:布尔值(t 或 nil)。
- [‘cutClassGroups l_groups](可选)
- 说明:指定该切割类别所属的一个或多个分组,用于对切割类别进行分类管理。
- 取值:列表形式,包含一个或多个分组名称。
- { f_width | ( f_width f_length ) }
- 说明:定义该切割类别的尺寸参数,可以仅指定单一宽度,或同时指定宽度和长度。
- 取值:
- 若只给出 f_width,则表示该切割为正方形或单一尺寸;
- 若以
( f_width f_length )
形式给出,则分别指定切割的宽度和长度,单位通常为微米。
示例
cutClasses(
"StandardVias"
( Via1
( standardVia
'numCuts 4
'minWidth 0.2
'minLength 0.2
'fixedOrientation t
'cutClassGroups ( "GroupA" "GroupB" )
( 0.15 0.15 )
)
( Via2
( highDensityVia
'numCuts 2
'minWidth 0.1
'minLength 0.1
( 0.10 )
)
)
)
)
;cutClasses
示例功能解释
- 整体说明
上述示例定义了一个切割类别组,名称为"StandardVias"
(可选部分 t_name),适用于指定的切割层(在本例中未单独给出 tx_cutLayer 名称,实际使用时应包含层名)。 - 第一条规则:Via1
- t_cutClassName:
standardVia
,表示标准过孔类别。 - ‘numCuts 4:要求该过孔由 4 个切割组成。
- ‘minWidth 0.2 和 ‘minLength 0.2:规定该过孔每个切割的最小宽度和最小长度均为 0.2。
- ‘fixedOrientation t:表示该过孔采用固定方向。
- ‘cutClassGroups ( “GroupA” “GroupB” ):将此过孔类别归入分组 “GroupA” 和 “GroupB”,便于工艺管理。
- ( 0.15 0.15 ):定义实际切割尺寸为宽度 0.15 和长度 0.15(可以理解为工艺允许的目标尺寸)。
- t_cutClassName:
- 第二条规则:Via2
- t_cutClassName:
highDensityVia
,表示高密度过孔类别。 - ‘numCuts 2:要求该过孔由 2 个切割构成。
- ‘minWidth 0.1 和 ‘minLength 0.1:规定该类别过孔的最小尺寸为 0.1。
- ( 0.10 ):仅指定了单一尺寸,表示目标切割尺寸为 0.10,通常表示正方形尺寸。
- t_cutClassName:
总结
- cutClasses 语句用于定义技术文件中各类过孔的详细参数,这些参数包括切割数量、最小尺寸、方向约束、分组信息以及实际切割尺寸。
- 通过明确设置这些参数,设计工具能够在布局布线和 DRC 检查中确保过孔满足工艺要求,从而提高芯片制造的可靠性。
- 示例中展示了如何定义不同类型的过孔(如标准过孔和高密度过孔),以及如何使用可选参数对切割尺寸、数量和分组进行精细控制。
6. Technology File Via Definitions and ViaSpecifications 语句解析
6.1 standardViaDefs
语法
standardViaDefs(
( t_viaDefName tx_layer1 tx_layer2
( tx_cutLayer n_cutWidth n_cutHeight [ n_resistancePerCut ] )
( x_cutRows x_cutCols ( l_cutSpace ) [ ( l_cutPattern ) ] )
( l_layer1Enc ) ( l_layer2Enc )
( l_layer1Offset ) ( l_layer2Offset ) ( l_origOffset )
[ tx_implant1 ( l_implant1Enc )
[ tx_implant2 ( l_implant2Enc ) [ tx_wellSubstrate ] ]
]
)
) ;standardViaDefs
功能描述
standardViaDefs 语句用于定义标准过孔(via)的详细参数,它描述了如何在两层金属之间建立物理连接。
此语句包括对过孔切割区域、切割排列、封装(enclosure)要求、层偏移以及(可选的)植入区参数的定义。通过精确定义这些参数,设计工具能在布局过程中生成符合工艺规则的过孔结构,确保互连电阻、导通性及电迁移等关键指标满足工艺要求。
参数说明
- t_viaDefName
- 说明:过孔定义的名称,用于唯一标识该标准过孔类型。
- 取值:任意合法字符串,例如
"stdVia1"
。
- tx_layer1
- 说明:上层金属层名称,即过孔连接的第一层。
- 取值:例如
"Metal1"
。
- tx_layer2
- 说明:下层金属层名称,即过孔连接的第二层。
- 取值:例如
"Metal2"
。
- ( tx_cutLayer n_cutWidth n_cutHeight [ n_resistancePerCut ] )
- tx_cutLayer
- 说明:用于定义过孔切割区域的层名称。
- 取值:例如
"ViaCut"
。
- n_cutWidth
- 说明:过孔切割的宽度,规定切割区域的尺寸(单位与设计文件一致,如微米)。
- 取值:数值。
- n_cutHeight
- 说明:过孔切割的高度,规定切割区域的另一尺寸。
- 取值:数值。
- [ n_resistancePerCut ](可选)
- 说明:每个切割单元的电阻值,用于计算整体导通电阻。
- 取值:数值(单位如Ω),若未指定则采用工艺默认值。
- tx_cutLayer
- ( x_cutRows x_cutCols ( l_cutSpace ) [ ( l_cutPattern ) ] )
- x_cutRows
- 说明:过孔切割排列的行数。
- 取值:整数。
- x_cutCols
- 说明:过孔切割排列的列数。
- 取值:整数。
- ( l_cutSpace )
- 说明:定义切割单元之间的间距,可为一个或多个数值,反映横向或纵向的间距要求。
- 取值:列表形式的数值。
- [ ( l_cutPattern ) ](可选)
- 说明:可选的切割图案,用于指定特定排列或几何形状。
- 取值:列表形式,包含图案描述信息。
- x_cutRows
- ( l_layer1Enc )
- 说明:上层金属对过孔切割区域的包络(enclosure)要求,即上层金属必须超出切割边缘的最小距离。
- 取值:数值或数值列表,单位与工艺要求一致。
- ( l_layer2Enc )
- 说明:下层金属对过孔切割区域的包络要求。
- 取值:数值或数值列表。
- ( l_layer1Offset )
- 说明:上层金属与过孔相对位置的偏移值。
- 取值:数值。
- ( l_layer2Offset )
- 说明:下层金属与过孔相对位置的偏移值。
- 取值:数值。
- ( l_origOffset )
- 说明:原始偏移值,用于确定过孔初始放置位置的校正参数。
- 取值:数值。
- [ tx_implant1 ( l_implant1Enc ) [ tx_implant2 ( l_implant2Enc ) [ tx_wellSubstrate ] ] ](可选)
- tx_implant1
- 说明:第一植入层的名称,指示在过孔区域可能需要进行的植入工艺处理。
- 取值:字符串,例如
"Implant1"
。
- ( l_implant1Enc )
- 说明:第一植入层对过孔的包络要求。
- 取值:数值或列表。
- [ tx_implant2 ( l_implant2Enc ) [ tx_wellSubstrate ] ](可选)
- tx_implant2:第二植入层的名称。
- ( l_implant2Enc ):第二植入层的包络要求。
- [ tx_wellSubstrate ]:可选参数,指示所用衬底类型(well substrate),用于更复杂的工艺环境。
- tx_implant1
示例
standardViaDefs(
( "stdVia1" Metal1 Metal2
( ViaCut 0.15 0.15 0.05 )
( 2 2 ( 0.02 ) ( ( "patternA" "patternB" ) ) )
( 0.01 ) ( 0.012 )
( 0.005 ) ( 0.005 ) ( 0.0 )
[ Impl1 ( 0.003 )
[ Impl2 ( 0.004 ) "wellTypeA" ]
]
)
)
;standardViaDefs
示例功能解释
- 过孔定义名称:
"stdVia1"
定义了此标准过孔类型的名称。
- 金属层定义:
- Metal1 作为上层,Metal2 作为下层,表示该过孔连接 Metal1 与 Metal2。
- 切割区域定义:
( ViaCut 0.15 0.15 0.05 )
- 过孔切割层为
ViaCut
。 - 切割宽度和高度均为 0.15,
- 每个切割单元的电阻为 0.05(可用于后续计算导通电阻)。
- 过孔切割层为
- 切割排列:
( 2 2 ( 0.02 ) ( ( "patternA" "patternB" ) ) )
- 指定切割排列为 2 行 2 列。
- 切割间距为 0.02(单位相同)。
- 可选的切割图案为
"patternA"
和"patternB"
,用于定义具体的排列形式或优先级。
- 包络(Enclosure)参数:
( 0.01 )
表示上层 Metal1 对切割的包络要求为 0.01;( 0.012 )
表示下层 Metal2 对切割的包络要求为 0.012。
- 偏移值:
( 0.005 )
分别表示上层和下层的偏移值均为 0.005;( 0.0 )
为原始偏移值,表示无额外校正。
- 植入层参数(可选):
[ Impl1 ( 0.003 ) [ Impl2 ( 0.004 ) "wellTypeA" ] ]
- Impl1 为第一植入层,其包络要求为 0.003;
- Impl2 为第二植入层,其包络要求为 0.004,并指定衬底类型为
"wellTypeA"
。
总结
- standardViaDefs 语句用于定义标准过孔的完整参数,涵盖了过孔连接的上下层、切割层及其尺寸、切割排列、封装(enclosure)要求、各层偏移、以及可选的植入工艺信息。
- 通过详细描述这些参数,设计工具可以在版图中生成符合工艺规则的过孔结构,从而确保器件互连的可靠性和电气性能。
- 示例展示了如何为 Metal1 与 Metal2 之间定义一个标准过孔,包括切割尺寸、排列、封装要求及植入信息等。
6.2 customViaDefs
语法
customViaDefs(
( t_viaDefName
t_libName
t_cellName
t_viewName
tx_layer1
tx_layer2
n_resistancePerCut
)
) ;customViaDefs
功能描述
customViaDefs 语句用于定义用户自定义的过孔(via)类型。
与标准过孔定义(standardViaDefs)不同,customViaDefs 允许用户引用特定的库、单元(cell)和视图(view)来描述一个过孔结构,从而实现更灵活、针对性更强的过孔定义。
该语句主要用于那些需要按照自定义规则实现特殊互连或满足工艺特殊要求的场合。定义中还包括连接的两层及每个切割的电阻值,帮助工具在版图中生成对应的过孔实例。
参数说明
- t_viaDefName
- 说明:定义该自定义过孔的名称,用于唯一标识此过孔定义。
- 取值:任意合法字符串,例如
"customVia1"
。
- t_libName
- 说明:指定包含该过孔定义的库名称。
- 取值:字符串,通常为存放自定义单元的库名称,如
"MyViaLib"
。
- t_cellName
- 说明:指定包含过孔定义的单元名称。
- 取值:字符串,表示具体的 cell,例如
"viaCellA"
。
- t_viewName
- 说明:指定单元中使用的视图名称。
- 取值:字符串,常见视图包括
"layout"
、"mask"
等,如"layout"
。
- tx_layer1
- 说明:定义过孔上部连接的金属层名称。
- 取值:例如
"Metal1"
。
- tx_layer2
- 说明:定义过孔下部连接的金属层名称。
- 取值:例如
"Metal2"
。
- n_resistancePerCut
- 说明:指定每个切割单元的电阻值,用于计算整个过孔的导通电阻。
- 取值:数值,单位通常为欧姆(Ω)。
示例
customViaDefs(
( "customVia1"
"MyViaLib"
"viaCellA"
"layout"
Metal1
Metal2
0.03
)
)
;customViaDefs
示例功能解释
- t_viaDefName:
- 过孔定义名称为
"customVia1"
,表示此自定义过孔的标识符。
- 过孔定义名称为
- t_libName:
- 指定该过孔定义所属的库为
"MyViaLib"
,说明设计者在此库中管理自定义过孔单元。
- 指定该过孔定义所属的库为
- t_cellName:
- 过孔定义引用的单元名称为
"viaCellA"
,该单元内包含具体的过孔结构描述。
- 过孔定义引用的单元名称为
- t_viewName:
- 视图名称为
"layout"
,表示采用版图视图的过孔定义。
- 视图名称为
- tx_layer1 与 tx_layer2:
- 分别定义上层和下层的金属层,分别为
Metal1
和Metal2
,表示此过孔用于连接这两个层。
- 分别定义上层和下层的金属层,分别为
- n_resistancePerCut:
- 指定每个切割单元的电阻为 0.03 Ω,用于后续导通电阻计算,确保互连电气性能满足工艺要求。
综上所述,customViaDefs 语句通过引用特定库、单元及视图,允许设计者定义具有自定义结构和参数的过孔类型,适用于满足特殊互连或工艺需求的场景。
总结
- customViaDefs 用于定义自定义过孔,区别于标准过孔定义,可通过引用库、单元和视图来实现灵活定制。
- 参数中包括上/下连接层和每个切割的电阻值,从而为后续电气和制造分析提供精确数据。
- 示例展示了如何为 Metal1 与 Metal2 之间定义一个名为 “customVia1” 的自定义过孔,其导通电阻参数为 0.03 Ω。
6.3 standardViaVariants
语法
standardViaVariants(
( t_viaVariantName t_viaDefName ( tx_cutLayer f_cutWidth f_cutHeight )
( x_cutRows x_cutCol ( l_cutSpace ) )
( l_layer1Enc ) ( l_layer2Enc ) ( l_layer1Offset ) ( l_layer2Offset )
( l_origOffset )
( l_implant1Enc ) ( l_implant2Enc ) ( l_cutPattern )
)
) ;standardViaVariants
功能描述
standardViaVariants 语句用于定义同一标准过孔(standardViaDefs)下的不同变体。
通过该语句,可以在保持基本过孔定义不变的前提下,为同一过孔提供多种几何或工艺参数的变体选项,例如切割尺寸、切割排列、包络要求以及植入封装信息等。
这种灵活性有助于设计者针对不同布线密度、工艺窗口和电气性能要求选择最合适的过孔方案,从而优化互连性能并满足工艺限制。
参数说明
- t_viaVariantName
- 说明:定义该过孔变体的名称,用于唯一标识该变体。
- 取值:任意合法字符串,例如
"variant1"
。
- t_viaDefName
- 说明:引用对应的标准过孔定义名称,即该变体基于哪个标准过孔。
- 取值:必须与之前定义的标准过孔(standardViaDefs)名称一致。
- ( tx_cutLayer f_cutWidth f_cutHeight )
- tx_cutLayer
- 说明:指定用于切割的层名称,与标准过孔定义中相同或可作调整。
- f_cutWidth
- 说明:定义该变体下过孔切割的宽度。
- 取值:数值(单位与工艺一致,如微米)。
- f_cutHeight
- 说明:定义该变体下过孔切割的高度。
- 取值:数值。
- tx_cutLayer
- ( x_cutRows x_cutCol ( l_cutSpace ) )
- x_cutRows
- 说明:指定过孔切割排列的行数。
- 取值:整数。
- x_cutCol
- 说明:指定过孔切割排列的列数。
- 取值:整数。
- ( l_cutSpace )
- 说明:定义各切割单元之间的间距,可以为一个或多个数值,反映横向或纵向间距要求。
- 取值:数值列表。
- x_cutRows
- ( l_layer1Enc )
- 说明:上层金属对切割区域的包络要求,表示上层金属必须延伸超出过孔切割区域的最小距离。
- 取值:数值或数值列表。
- ( l_layer2Enc )
- 说明:下层金属对切割区域的包络要求。
- 取值:数值或数值列表。
- ( l_layer1Offset )
- 说明:上层金属与切割区域之间的偏移量,用于校正过孔在上层金属中的位置。
- 取值:数值。
- ( l_layer2Offset )
- 说明:下层金属与切割区域之间的偏移量。
- 取值:数值。
- ( l_origOffset )
- 说明:原始偏移值,用于确定过孔初始放置位置的校正参数。
- 取值:数值。
- ( l_implant1Enc )
- 说明:第一植入层对过孔的包络要求,定义植入区的边界。
- 取值:数值或数值列表。
- ( l_implant2Enc )
- 说明:第二植入层的包络要求(如果存在)。
- 取值:数值或数值列表。
- ( l_cutPattern )
- 说明:定义特定的切割图案或排列规则,用于描述过孔的几何特性。
- 取值:可为字符串或数值列表,依据文档具体定义。
示例
standardViaVariants(
( "variant1" "stdVia1"
( ViaCut 0.14 0.14 )
( 2 2 ( 0.02 ) )
( 0.01 ) ( 0.012 )
( 0.005 ) ( 0.005 ) ( 0.0 )
( 0.003 ) ( 0.004 ) ( "patternA" )
)
)
;standardViaVariants
示例功能解释
- 过孔变体名称与引用
- 变体名称
"variant1"
定义了该标准过孔的一个具体变体。 "stdVia1"
表示此变体基于标准过孔定义"stdVia1"
。
- 变体名称
- 切割区域设置
( ViaCut 0.14 0.14 )
定义了该变体下的过孔切割层为ViaCut
,切割宽度和高度均为 0.14,这可能与标准定义中稍有不同,以适应不同布线密度或电气性能要求。
- 切割排列
( 2 2 ( 0.02 ) )
指定该过孔变体采用 2 行 2 列的切割排列,切割单元之间的间距为 0.02,用于确保切割区域的均匀性和工艺兼容性。
- 包络要求
( 0.01 )
与( 0.012 )
分别定义了上层和下层金属对过孔切割区域的包络要求,确保金属层延伸满足最小封装要求。
- 偏移值设置
( 0.005 )
分别为上层和下层的偏移值,( 0.0 )
为原始偏移值,确保过孔在金属层中的精确定位。
- 植入层要求
( 0.003 )
指定第一植入层的包络要求,( 0.004 )
指定第二植入层的包络要求,为过孔提供必要的植入保护。
- 切割图案
( "patternA" )
定义了该变体下使用的特定切割图案,可用于指导工具生成特定排列或优化过孔几何形状。
总结
standardViaVariants 语句允许设计者在标准过孔定义基础上,通过调整切割尺寸、排列、包络、偏移以及植入信息,定义多种过孔变体以适应不同的工艺需求和布线环境。
- 它为同一过孔定义提供了几何和工艺参数的变体选择,满足在不同设计条件下的优化需求;
- 示例展示了如何通过调整各参数(如切割尺寸、排列、包络、偏移、植入封装和切割图案)来定义一个变体
"variant1"
,从而实现对标准过孔"stdVia1"
的定制扩展。
6.4 customViaVariants
语法
customViaVariants(
( t_viaVariantName
t_viaDefName
l_viaParams
)
) ;customViaVariants
功能描述
customViaVariants 语句用于定义自定义过孔(custom via)的变体。
在使用 customViaDefs 定义自定义过孔后,可能需要根据不同设计或工艺要求对过孔参数进行调整。通过 customViaVariants,设计者可以在保留原始自定义过孔定义的基础上,指定一组变体参数,用于修改过孔的几何尺寸、偏移、封装、植入等特性,从而满足不同场景下的互连要求或优化电气性能。
参数说明
- t_viaVariantName
- 说明:定义该自定义过孔变体的名称,用于唯一标识此变体。
- 取值:任意合法字符串,例如
"variantA"
。
- t_viaDefName
- 说明:引用基础自定义过孔定义的名称,即此变体所基于的自定义过孔。
- 取值:必须与已定义的 customViaDefs 中的名称相一致,例如
"customVia1"
。
- l_viaParams
- 说明:一个参数列表,用于描述该变体下的具体修改参数。
- 取值:该列表中包含一组数值或标识符,通常包括调整的几何尺寸(如切割宽度、高度)、偏移值、封装要求、植入层封装等。具体参数的个数和含义取决于工艺要求和设计文档的定义。
示例
customViaVariants(
( "variantA" "customVia1"
( 0.12 0.12 0.02 0.015 "patternX" )
)
)
;customViaVariants
示例功能解释
- t_viaVariantName:”variantA” 定义了该自定义过孔变体的名称,用于区分不同的变体选项。
- t_viaDefName:”customVia1″ 表示此变体是基于已定义的自定义过孔 “customVia1″。
- l_viaParams:( 0.12 0.12 0.02 0.015 “patternX” )
- 其中,前两个数值 0.12 分别可能代表变体中调整后的过孔切割宽度和高度(单位与工艺文件一致,如微米);
- 第三个数值 0.02 可能表示需要添加的偏移修正值,以便精确对齐;
- 第四个数值 0.015 则可能代表植入层封装或额外封装要求的调整值;
- 最后,”patternX” 为特定的切割图案标识,用于指导工具生成相应几何结构。
- 此变体通过调整原始自定义过孔 “customVia1” 的参数,为设计提供了一种针对特定工艺或布线条件下优化过孔结构的选项。
总结
customViaVariants 语句使设计者能够在自定义过孔定义的基础上灵活调整关键参数,以满足不同设计场景下的工艺要求和电气性能优化。通过定义变体名称、引用基础过孔定义,并提供一组调整参数,可以生成多种过孔变体,确保互连在布局和制造中达到最佳效果。
6.5 cdsFixedViaDefs
语法
cdsFixedViaDefs(
l_list
)
=> t / nil
功能描述
cdsFixedViaDefs 语句用于定义固定(hard‐coded)过孔参数,这些过孔在版图设计和互连过程中不允许自动调整或优化。
该语句主要用于指定那些预先确定、不可改变的过孔结构,其参数通常由工艺提供,确保在设计流程中直接采用固定的过孔方案。执行该语句后,如果定义正确,则返回 t,否则返回 nil。
参数说明
- l_list
- 说明:表示包含固定过孔定义的列表,每个元素对应一个固定过孔的定义。
- 取值:列表中每个元素通常由一个过孔名称和后续参数组成。
在列表元素中,各参数说明如下:
- t_viaDefName(本例中为固定过孔名称)
- 说明:定义固定过孔的名称,用于唯一标识该固定过孔结构。
- 取值:字符串,例如
"fixedVia1"
。
- ( layers … )
- 说明:定义该固定过孔连接的各层及其作用。
- 内部参数:
- ( layer1 Metal1 )
- 指定上层金属名称,此处为
"Metal1"
。
- 指定上层金属名称,此处为
- ( layer2 Metal2 )
- 指定下层金属名称,此处为
"Metal2"
。
- 指定下层金属名称,此处为
- ( cutLayer Cont )
- 指定用于过孔切割的层,此处为
"Cont"
(通常表示 contact 层)。
- 指定用于过孔切割的层,此处为
- ( layer1 Metal1 )
示例
cdsFixedViaDefs(
( fixedVia1
( layers
( layer1 Metal1 )
( layer2 Metal2 )
( cutLayer Cont )
)
)
)
示例功能解释
- 固定过孔定义名称:
"fixedVia1"
表示该固定过孔的标识符,后续设计工具可通过此名称引用固定的过孔结构。
- layers 部分:
( layer1 Metal1 )
定义上层为"Metal1"
,表示过孔连接的上层金属。( layer2 Metal2 )
定义下层为"Metal2"
,表示过孔连接的下层金属。( cutLayer Cont )
定义切割层为"Cont"
,表示用于形成过孔的 contact 层。
- 整体效果:
- 此定义规定了一个固定的过孔结构
"fixedVia1"
,其互连方式为在"Metal1"
与"Metal2"
之间通过"Cont"
层实现。 - 固定过孔的参数由工艺确定,设计工具在版图生成和验证时不会对该过孔进行自动优化或修改。
- 执行该语句后,如果定义正确,返回值为 t,否则返回 nil。
- 此定义规定了一个固定的过孔结构
总结
- cdsFixedViaDefs 用于定义不可变的、固定参数的过孔,其参数包括过孔名称及连接层的详细配置。
- 此语句确保在设计流程中,固定过孔按照预设参数生成,并且不会被后续工具自动调整。
- 示例展示了如何为过孔
"fixedVia1"
定义上层为"Metal1"
、下层为"Metal2"
、切割层为"Cont"
的固定连接方案。
6.6 cdsGenViaDefs
语法
cdsGenViaDefs(
( t_viaDefName
( layers
; ** Base Layers and extra layers **
( layer1 tx_layer1 )
( layer2 tx_layer2 )
( cutLayer tx_cutLayer )
)
[ ( extraLayers
; ** Extra layers **
[ ( layer1ExtraLayers l_layer1ExtraLayers ) ]
[ ( layer2ExtraLayers l_layer2ExtraLayers ) ]
[ ( cutExtraLayers l_cutExtraLayers ) ]
)
] ; l_extraLayers := ({tx_layer} …)
( parameters
( cutWidth f_cutWidth )
( cutHeight f_cutHeight )
; ** Other Default parameters **
[ ( layer1Purpose tx_layer1Purpose ) ]
[ ( layer1Enc l_layer1Enc ) ]
[ ( layer2Purpose tx_layer2Purpose ) ]
[ ( layer2Enc l_layer2Enc ) ]
[ ( cutPurpose tx_cutPurpose ) ]
[ ( cutSpacing x_cutSpacingX x_cutSpacingY ) ]
[ ( cutRows n_cutRows ) ]
[ ( cutColumns n_cutColumns ) ]
[ ( cutPattern l_cutPattern ) ]
[ ( alignment t_alignment ) ]
[ ( originOffset ( f_XOffset f_YOffset ) ) ]
[ ( layer1ExtraParams l_layer1ExtraParams ) ]
[ ( layer2ExtraParams l_layer2ExtraParams ) ]
[ ( cutLayerExtraParams l_cutLayerExtraParams ) ]
[ ( cutArraySpacing f_XCutArraySpacing f_YCutArraySpacing ) ]
[ ( cutArrayPatternX l_cutArrayPatternX ) ]
[ ( cutArrayPatternY l_cutArrayPatternY ) ]
[ ( version n_version ) ]
)
; l_enc := ( x_left x_right x_top x_bottom )
; l_pattern := ( ( {0|1} … ) … )
; l_extraLayerParams := ( ( [ ( enc l_enc ) ] [ ( purpose tx_purpose ) ] ) … )
; l_cutArrayPattern := ( {x_num} … )
)
…
) ;cdsGenViaDefs
功能描述
cdsGenViaDefs 语句用于定义生成型(generic)过孔的详细参数,其主要功能是描述两金属层间互连的过孔结构。
与固定过孔或自定义过孔相比,生成型过孔允许根据一组默认参数和可调参数生成标准化的过孔结构,同时支持额外层信息和数组布局参数的配置。
此定义涉及基本层(上层、下层和切割层)、可选的额外层、过孔几何参数(切割宽度、高度、排列等)、包络要求、对齐和偏移设置,以及版本控制等参数。
通过该语句,工艺工具可依据这些参数在版图中自动生成符合工艺规则的过孔。
参数说明
- t_viaDefName
- 说明:生成型过孔定义的名称,用于唯一标识该过孔类型。
- 取值:任意合法字符串,如
"genVia1"
。
- ( layers … )
- 说明:指定过孔相关的基本层信息。
- 内部参数:
- ( layer1 tx_layer1 ):
- 指定上层金属层名称,表示过孔连接的第一层。
- tx_layer1:例如
"Metal1"
。
- ( layer2 tx_layer2 ):
- 指定下层金属层名称,表示过孔连接的第二层。
- tx_layer2:例如
"Metal2"
。
- ( cutLayer tx_cutLayer ):
- 指定用于形成过孔切割的层名称。
- tx_cutLayer:例如
"Cont"
(contact层)。
- ( layer1 tx_layer1 ):
- [ ( extraLayers … ) ](可选)
- 说明:用于指定除基本层外的其他相关层信息。
- 内部参数:
- [ ( layer1ExtraLayers l_layer1ExtraLayers ) ]:
- 定义上层的额外层信息,l_layer1ExtraLayers 为一列表,可包含一个或多个层名称。
- [ ( layer2ExtraLayers l_layer2ExtraLayers ) ]:
- 定义下层的额外层信息,l_layer2ExtraLayers 同样为列表形式。
- [ ( cutExtraLayers l_cutExtraLayers ) ]:
- 定义与切割层相关的额外层信息,l_cutExtraLayers 为列表。
- [ ( layer1ExtraLayers l_layer1ExtraLayers ) ]:
- ( parameters … )
- 说明:定义生成型过孔的各项几何和工艺参数。
- 内部参数:
- ( cutWidth f_cutWidth )
- 说明:指定过孔切割区域的宽度。
- 取值:数值,单位通常为微米。
- ( cutHeight f_cutHeight )
- 说明:指定过孔切割区域的高度。
- 取值:数值。
- [ ( layer1Purpose tx_layer1Purpose ) ](可选)
- 说明:定义上层用途,标识上层在过孔连接中的功能。
- 取值:例如
"drawing"
、"pin"
等。
- [ ( layer1Enc l_layer1Enc ) ](可选)
- 说明:定义上层金属对过孔切割区域的包络要求。
- 取值:数值或数值列表,格式为 ( x_left x_right x_top x_bottom )。
- [ ( layer2Purpose tx_layer2Purpose ) ](可选)
- 说明:定义下层用途。
- 取值:字符串,如
"drawing"
等。
- [ ( layer2Enc l_layer2Enc ) ](可选)
- 说明:定义下层金属对过孔切割区域的包络要求。
- 取值:数值或数值列表。
- [ ( cutPurpose tx_cutPurpose ) ](可选)
- 说明:定义切割层的用途。
- 取值:字符串,如
"contact"
等。
- [ ( cutSpacing x_cutSpacingX x_cutSpacingY ) ](可选)
- 说明:指定切割单元之间的水平和垂直间隔。
- 取值:数值,x_cutSpacingX 为水平间距,x_cutSpacingY 为垂直间距。
- [ ( cutRows n_cutRows ) ](可选)
- 说明:指定过孔切割的行数。
- 取值:整数。
- [ ( cutColumns n_cutColumns ) ](可选)
- 说明:指定过孔切割的列数。
- 取值:整数。
- [ ( cutPattern l_cutPattern ) ](可选)
- 说明:定义切割的排列图案,描述切割的具体几何分布。
- 取值:列表形式,内部包含0或1的排列序列。
- [ ( alignment t_alignment ) ](可选)
- 说明:指定过孔在布局时的对齐方式。
- 取值:字符串,如
"center"
、"edge"
等。
- [ ( originOffset ( f_XOffset f_YOffset ) ) ](可选)
- 说明:定义过孔初始放置时的原点偏移,通常用于校正位置。
- 取值:两个数值,分别为 X 方向和 Y 方向的偏移量。
- [ ( layer1ExtraParams l_layer1ExtraParams ) ](可选)
- 说明:定义上层额外的参数设置。
- 取值:列表形式,内部参数由工艺要求决定。
- [ ( layer2ExtraParams l_layer2ExtraParams ) ](可选)
- 说明:定义下层额外的参数设置。
- 取值:列表形式。
- [ ( cutLayerExtraParams l_cutLayerExtraParams ) ](可选)
- 说明:定义切割层的额外参数。
- 取值:列表形式。
- [ ( cutArraySpacing f_XCutArraySpacing f_YCutArraySpacing ) ](可选)
- 说明:定义切割阵列中各切割单元间的间距,分别为 X 和 Y 方向。
- 取值:数值。
- [ ( cutArrayPatternX l_cutArrayPatternX ) ](可选)
- 说明:定义 X 方向上切割阵列的排列图案。
- 取值:列表形式,内部通常为一组数字。
- [ ( cutArrayPatternY l_cutArrayPatternY ) ](可选)
- 说明:定义 Y 方向上切割阵列的排列图案。
- 取值:列表形式。
- [ ( version n_version ) ](可选)
- 说明:版本号,用于区分不同的参数集或工艺版本。
- 取值:整数。
- ( cutWidth f_cutWidth )
- 注释部分:
- l_enc 表示包络参数格式,通常为 ( x_left x_right x_top x_bottom )。
- l_pattern 表示切割图案格式,通常为一组 0/1 的矩阵描述。
- l_extraLayerParams 表示额外层参数格式,每个元素可包含封装(enc)和用途(purpose)的设置。
- l_cutArrayPattern 表示切割阵列图案,其格式为一组数字序列。
示例
cdsGenViaDefs(
( "genVia1"
( layers
( layer1 Metal1 )
( layer2 Metal2 )
( cutLayer Cont )
)
( extraLayers
( layer1ExtraLayers ( Metal1_extra1 Metal1_extra2 ) )
( layer2ExtraLayers ( Metal2_extra ) )
( cutExtraLayers ( Cont_extra ) )
)
( parameters
( cutWidth 0.12 )
( cutHeight 0.12 )
( layer1Purpose "drawing" )
( layer1Enc ( 0.01 0.01 0.005 0.005 ) )
( layer2Purpose "drawing" )
( layer2Enc ( 0.012 0.012 0.006 0.006 ) )
( cutPurpose "contact" )
( cutSpacing 0.02 0.02 )
( cutRows 2 )
( cutColumns 2 )
( cutPattern ( ( 1 0 ) ( 0 1 ) ) )
( alignment "center" )
( originOffset ( 0.0 0.0 ) )
( layer1ExtraParams ( ( (enc ( 0.005 0.005 0.003 0.003 )) (purpose "aux") ) ) )
( layer2ExtraParams ( ( (enc ( 0.006 0.006 0.004 0.004 )) (purpose "aux") ) ) )
( cutLayerExtraParams ( ( (param1 0.001) ) ) )
( cutArraySpacing 0.03 0.03 )
( cutArrayPatternX ( 2 3 ) )
( cutArrayPatternY ( 3 2 ) )
( version 1 )
)
)
)
;cdsGenViaDefs
示例功能解释
- 过孔定义名称
"genVia1"
表示该生成型过孔的标识符。
- 基本层信息
- 在 layers 部分,定义了上层为
Metal1
、下层为Metal2
以及切割层为Cont
,说明过孔连接的是这三层。
- 在 layers 部分,定义了上层为
- 额外层信息
- extraLayers 部分提供了额外的层信息:
- 上层额外层包括
Metal1_extra1
和Metal1_extra2
; - 下层额外层包含
Metal2_extra
; - 切割层额外层包含
Cont_extra
。
这些信息可用于补充基本层数据,满足特殊工艺需求。
- 上层额外层包括
- extraLayers 部分提供了额外的层信息:
- 参数设置
- cutWidth 与 cutHeight 分别设为 0.12,定义过孔切割区域的尺寸。
- layer1Purpose 和 layer2Purpose 均设为
"drawing"
,表明上层和下层在互连中均以绘制为主。 - layer1Enc 与 layer2Enc 分别定义了上层和下层的包络要求,格式为 ( x_left x_right x_top x_bottom ),确保金属层对过孔切割区域的覆盖满足最小封装要求。
- cutPurpose 指定切割层的用途为
"contact"
。 - cutSpacing 设定水平和垂直间距均为 0.02。
- cutRows 和 cutColumns 分别为 2,表示过孔切割排列为 2 行 2 列。
- cutPattern 给出一个简单的 2×2 切割图案矩阵
( (1 0) (0 1) )
,用于描述具体切割的布局。 - alignment 设置为
"center"
,说明过孔对齐方式为居中。 - originOffset 设为 (0.0 0.0) 表示无额外原点偏移。
- layer1ExtraParams 与 layer2ExtraParams 提供了额外层参数,如封装(enc)和用途(purpose)设置,用于辅助优化。
- cutLayerExtraParams 指定切割层的附加参数,这里示例中设定了参数
param1
为 0.001。 - cutArraySpacing 分别设定为 0.03,定义切割阵列中各切割单元之间的间距。
- cutArrayPatternX 和 cutArrayPatternY 分别给出 X 和 Y 方向上的切割阵列图案,分别为 (2 3) 和 (3 2),用于进一步控制切割排列。
- version 参数为 1,标识此定义的版本号。
- 整体效果
- 该定义通过组合基本层、额外层以及详细参数设置,生成了一个名为
"genVia1"
的过孔结构。 - 工具在版图生成时,会依据这些参数构造出符合工艺规则的过孔,实现 Metal1 与 Metal2 之间通过 Contact 层的互连,并满足封装、排列、对齐和额外工艺参数的要求。
- 该定义通过组合基本层、额外层以及详细参数设置,生成了一个名为
总结
cdsGenViaDefs 语句为生成型过孔提供了一种灵活而全面的参数定义方式。
- 它不仅定义了过孔的基本连接层,还允许设置额外层、几何参数、排列和对齐规则,以及植入和附加参数等。
- 通过详细的参数设置,设计工具可自动生成符合工艺要求的过孔结构,提高互连的电气性能和制造可靠性。
6.7 cdsGenViaVariants
语法
cdsGenViaVariants(
( t_viaVariantName
t_viaDefName
( parameters
[ ( layer1Purpose tx_layer1Purpose ) ]
[ ( layer2Purpose tx_layer2Purpose ) ]
[ ( cutPurpose tx_cutPurpose ) ]
[ ( cutWidth f_cutWidth ) ]
[ ( cutHeight f_cutHeight ) ]
[ ( cutColumns n_cutColumns ) ]
[ ( cutRows n_cutRows ) ]
[ ( cutSpacing f_Xspacing f_Yspacing ) ]
[ ( layer1Enc l_fourEnclosures1 ) ]
[ ( layer2Enc l_fourEnclosures2 ) ]
[ ( cutPattern l_cutPattern ) ]
[ ( alignment t_alignment ) ]
[ ( originOffset ( f_Xoffset f_Yoffset ) ) ]
[ ( cutArraySpacing f_XCutArraySpacing f_YCutArraySpacing ) ]
[ ( cutArrayPatternX l_cutArrayPatternX ) ]
[ ( cutArrayPatternY l_cutArrayPatternY ) ]
[ ( version n_version ) ]
[ ( layer1ExtraParams l_layer1ExtraParams ) ]
[ ( layer2ExtraParams l_layer2ExtraParams ) ]
)
)
) ;cdsGenViaVariants
功能描述
cdsGenViaVariants 语句用于定义生成型(generic)过孔的变体参数。
在已有生成型过孔定义的基础上,通过该语句可以调整过孔在特定条件下的几何和工艺参数,例如上层与下层的用途和包络、切割尺寸、排列方式、间距、对齐方式以及其它辅助参数。
该变体的定义使得同一基本过孔可以根据不同设计要求和工艺窗口,提供多种优化方案,以便在布局、DRC(设计规则检查)以及电气仿真中达到最佳的互连性能和工艺兼容性。
参数说明
- t_viaVariantName
- 说明:定义该生成型过孔变体的名称,用于唯一标识该变体。
- 取值:任意合法字符串,如
"vv1"
。
- t_viaDefName
- 说明:引用基础生成型过孔定义的名称,即该变体基于哪个过孔定义。
- 取值:必须与先前定义的生成型过孔(cdsGenViaDefs)中的名称一致,例如
"myGenVia"
。
- ( parameters … )
- 说明:包含该变体所有可调参数,具体参数及说明如下:
- ( layer1Purpose tx_layer1Purpose )(可选)
- 说明:定义上层金属在该过孔变体中所采用的用途,如
"net"
、"drawing"
等。
- 说明:定义上层金属在该过孔变体中所采用的用途,如
- ( layer2Purpose tx_layer2Purpose )(可选)
- 说明:定义下层金属在该过孔变体中所采用的用途。
- ( cutPurpose tx_cutPurpose )(可选)
- 说明:定义切割层在该过孔变体中的用途,一般为
"contact"
或其它指定用途。
- 说明:定义切割层在该过孔变体中的用途,一般为
- ( cutWidth f_cutWidth )(可选)
- 说明:指定过孔切割区域的宽度,单位与工艺一致(如微米)。
- ( cutHeight f_cutHeight )(可选)
- 说明:指定过孔切割区域的高度。
- ( cutColumns n_cutColumns )(可选)
- 说明:指定过孔切割排列的列数。
- ( cutRows n_cutRows )(可选)
- 说明:指定过孔切割排列的行数。
- ( cutSpacing f_Xspacing f_Yspacing )(可选)
- 说明:分别定义切割单元之间的水平(X方向)和垂直(Y方向)间隔。
- ( layer1Enc l_fourEnclosures1 )(可选)
- 说明:定义上层金属对过孔切割区域的包络要求,通常为四个方向的数值 (left, right, top, bottom)。
- ( layer2Enc l_fourEnclosures2 )(可选)
- 说明:定义下层金属对过孔切割区域的包络要求。
- ( cutPattern l_cutPattern )(可选)
- 说明:定义切割排列的图案,通常以矩阵或列表形式描述每个切割单元是否存在(例如0/1序列)。
- ( alignment t_alignment )(可选)
- 说明:指定过孔的对齐方式,如
"offset"
、"center"
等。
- 说明:指定过孔的对齐方式,如
- ( originOffset ( f_Xoffset f_Yoffset ) )(可选)
- 说明:定义过孔初始放置时的原点偏移,校正其精确位置。
- ( cutArraySpacing f_XCutArraySpacing f_YCutArraySpacing )(可选)
- 说明:定义切割阵列中各切割单元之间的间距,分别为 X 方向和 Y 方向。
- ( cutArrayPatternX l_cutArrayPatternX )(可选)
- 说明:定义 X 方向上切割阵列的排列图案,以列表形式给出。
- ( cutArrayPatternY l_cutArrayPatternY )(可选)
- 说明:定义 Y 方向上切割阵列的排列图案。
- ( version n_version )(可选)
- 说明:版本号,用于标识该变体参数集的版本。
- ( layer1ExtraParams l_layer1ExtraParams )(可选)
- 说明:定义上层额外的参数设置,通常包括附加的包络或用途等信息。
- ( layer2ExtraParams l_layer2ExtraParams )(可选)
- 说明:定义下层额外的参数设置。
- ( cutArrayPatternX l_cutArrayPatternX )(可选)
- 说明:定义 X 方向上切割阵列的排列图案,通常为一组数字序列。
- ( cutArrayPatternY l_cutArrayPatternY )(可选)
- 说明:定义 Y 方向上切割阵列的排列图案。
示例
cdsGenViaVariants(
( vv1 myGenVia parameters
( layer1Purpose "net" )
( layer1Enc ( 0.0 0.0 0.1 0.1 ) )
( layer2Purpose "net" )
( layer2Enc ( 0.2 0.2 0.2 0.2 ) )
( cutPurpose "fill" )
( cutWidth 0.1 )
( cutHeight 0.1 )
( cutSpacing 0.1 0.1 )
( cutRows 8 )
( cutColumns 6 )
( cutPattern
( ( 0 1 1 1 1 1 )
( 1 0 1 1 1 1 )
( 1 1 1 1 1 1 )
( 1 1 1 1 1 1 )
( 1 1 1 1 1 1 )
( 1 1 1 1 1 1 )
( 1 1 1 1 1 1 )
( 1 1 1 1 1 1 )
)
)
( alignment "offset" )
( originOffset ( 0.1 0.1 ) )
( layer1ExtraParams
(
( ( purpose "net" ) ( enc ( 0.3 0.3 0.3 0.3 ) ) )
( ( purpose "drawing" ) ( enc ( 0.2 0.2 0.2 0.2 ) ) )
)
)
( layer2ExtraParams
( ( ( purpose "net" ) ( enc ( 0.3 0.3 0.3 0.3 ) ) ) )
)
( cutLayerExtraParams
( ( ( purpose "net" ) ( enc ( 0.3 0.3 0.3 0.3 ) ) ) )
)
( cutArraySpacing 0.1 0.2 )
( cutArrayPatternX ( 2 4 ) )
( cutArrayPatternY ( 3 5 ) )
( version 1 )
)
)
;cdsGenViaVariants
示例功能解释
- 过孔变体标识
vv1
为该生成型过孔变体的名称。myGenVia
表示此变体基于先前定义的生成型过孔定义"myGenVia"
。
- 参数部分解析:
- ( layer1Purpose “net” ) 和 ( layer2Purpose “net” )
- 指定上层和下层金属的用途均为
"net"
,表明它们在互连时主要承担信号传输功能。
- 指定上层和下层金属的用途均为
- ( layer1Enc ( 0.0 0.0 0.1 0.1 ) ) 和 ( layer2Enc ( 0.2 0.2 0.2 0.2 ) )
- 分别定义上层和下层金属对过孔切割区域的包络要求,上层包络参数为 (left, right, top, bottom) = (0.0, 0.0, 0.1, 0.1),下层为 (0.2, 0.2, 0.2, 0.2)。
- ( cutPurpose “fill” )
- 定义切割层的用途为
"fill"
,表明该过孔在特定工艺中可能作为填充用途使用。
- 定义切割层的用途为
- ( cutWidth 0.1 ) 与 ( cutHeight 0.1 )
- 分别设定过孔切割区域的宽度和高度为 0.1 µm。
- ( cutSpacing 0.1 0.1 )
- 定义切割单元之间的水平和垂直间距均为 0.1 µm。
- ( cutRows 8 ) 与 ( cutColumns 6 )
- 表示该过孔采用 8 行 × 6 列的切割排列。
- ( cutPattern (…) )
- 给出一个 8×6 的切割图案矩阵,描述各切割单元的存在情况(1 表示存在,0 表示缺失),用于定义实际的切割布局。
- ( alignment “offset” )
- 设置过孔对齐方式为
"offset"
,可能表示根据原点偏移进行对齐。
- 设置过孔对齐方式为
- ( originOffset ( 0.1 0.1 ) )
- 定义过孔初始放置时的原点偏移,X 和 Y 方向均为 0.1 µm。
- ( layer1ExtraParams … )
- 为上层额外参数提供多个设置,示例中分别为
"net"
和"drawing"
两种用途的封装(enc)参数,分别设定为 (0.3 0.3 0.3 0.3) 和 (0.2 0.2 0.2 0.2)。
- 为上层额外参数提供多个设置,示例中分别为
- ( layer2ExtraParams … )
- 为下层额外参数设定封装要求,此处设定为 (0.3 0.3 0.3 0.3)。
- ( cutLayerExtraParams … )
- 为切割层额外参数提供设置,此处同样定义了封装参数 (0.3 0.3 0.3 0.3)。
- ( cutArraySpacing 0.1 0.2 )
- 定义切割阵列中各切割单元之间的间距,X 方向为 0.1 µm,Y 方向为 0.2 µm。
- ( cutArrayPatternX ( 2 4 ) ) 与 ( cutArrayPatternY ( 3 5 ) )
- 分别为 X 和 Y 方向上切割阵列定义排列图案,以数字序列表示排列规则。
- ( version 1 )
- 定义该过孔变体的版本号为 1,便于版本控制和后续更新。
- ( layer1Purpose “net” ) 和 ( layer2Purpose “net” )
- 整体效果
- 该定义为生成型过孔变体
"vv1"
(基于"myGenVia"
)提供了一整套详细的参数,用于描述其几何尺寸、排列方式、封装要求、对齐、原点偏移、以及附加的阵列和额外层参数。 - 工具依据这些参数在版图中生成符合工艺要求的过孔结构,实现 Metal1 与 Metal2 之间通过 Contact 层的高性能互连。
- 该定义为生成型过孔变体
总结
cdsGenViaVariants 语句允许在生成型过孔定义的基础上,通过调整各项参数生成过孔变体,从而满足不同设计场景和工艺条件下的优化要求。
- 它提供了对上层、下层及切割层用途、封装、排列、对齐、阵列等细节的全面控制。
- 通过示例中对参数的具体设定,可以生成一个经过细化优化的过孔结构,以实现更可靠、更符合工艺要求的互连。
6.8 viaSpecs
语法
viaSpecs(
(
tx_layer1
tx_layer2
lt_viaDefNames
[
( n_layer1MinWidth
n_layer1MaxWidth
n_layer2MinWidth
n_layer2MaxWidth
lt_viaDefNames2
)
]
)
) ;viaSpecs
功能描述
viaSpecs 语句用于定义两层金属之间过孔(via)的规格要求。
它不仅指定了连接的上层与下层(tx_layer1 和 tx_layer2)及默认使用的过孔定义(lt_viaDefNames),还可以对过孔尺寸范围进行细化设置,即定义上层与下层金属线宽的最小和最大允许值,并可进一步指定另一组过孔定义(lt_viaDefNames2),用于不同工艺或布线情况。
通过该语句,设计工具在生成或验证过孔时会参考这些规格,确保过孔结构在各个尺寸范围内均符合工艺规则,从而实现互连的可靠性与一致性。
参数说明
- tx_layer1
- 说明:指定上层金属层名称,即过孔连接的第一层。
- 取值:如
"METAL1"
。
- tx_layer2
- 说明:指定下层金属层名称,即过孔连接的第二层。
- 取值:如
"METAL2"
。
- lt_viaDefNames
- 说明:一个列表,包含默认的过孔定义名称,适用于该金属层对的过孔。
- 取值:例如
( "Via12Array" )
。
- [ ( n_layer1MinWidth n_layer1MaxWidth n_layer2MinWidth n_layer2MaxWidth lt_viaDefNames2 ) ](可选)
- 说明:
- 此可选项用于进一步限定在特定金属线宽范围内所采用的过孔定义。
- n_layer1MinWidth 与 n_layer1MaxWidth:指定上层金属的线宽范围(最小值与最大值)。
- n_layer2MinWidth 与 n_layer2MaxWidth:指定下层金属的线宽范围。
- lt_viaDefNames2:在该尺寸范围内适用的过孔定义名称列表,通常与默认过孔定义不同,用于工艺或性能优化。
- 取值:如示例中给出一组尺寸与对应的过孔定义。
- 说明:
示例
viaSpecs(
( METAL1 METAL2 ( "Via12Array" )
(
( 0.5 0.6 0.4 0.5 ( "Via12Array_south" ) )
( 0.6 0.7 0.4 0.5 ( "Via12Array_north" ) )
)
)
) ;viaSpecs
示例功能解释
- 基本层信息
- tx_layer1 为
METAL1
,tx_layer2 为METAL2
,表明该过孔规格适用于 Metal1 与 Metal2 之间的互连。
- tx_layer1 为
- 默认过孔定义
- lt_viaDefNames 列表中包含
"Via12Array"
,表示在无特殊尺寸要求下,默认采用名称为"Via12Array"
的过孔定义。
- lt_viaDefNames 列表中包含
- 尺寸范围细化
- 可选部分中定义了两组尺寸范围及对应的过孔定义:
- 第一组:( 0.5 0.6 0.4 0.5 ( “Via12Array_south” ) )
- n_layer1MinWidth = 0.5 与 n_layer1MaxWidth = 0.6:表示当 Metal1 线宽处于 0.5 到 0.6 之间时;
- n_layer2MinWidth = 0.4 与 n_layer2MaxWidth = 0.5:表示当 Metal2 线宽处于 0.4 到 0.5 之间时;
- 对应的过孔定义为
"Via12Array_south"
,适用于此尺寸范围。
- 第二组:( 0.6 0.7 0.4 0.5 ( “Via12Array_north” ) )
- n_layer1MinWidth = 0.6 与 n_layer1MaxWidth = 0.7:表示当 Metal1 线宽处于 0.6 到 0.7 之间时;
- 下层 Metal2 的线宽范围保持为 0.4 到 0.5;
- 此时采用过孔定义
"Via12Array_north"
。
- 第一组:( 0.5 0.6 0.4 0.5 ( “Via12Array_south” ) )
- 可选部分中定义了两组尺寸范围及对应的过孔定义:
- 整体效果
- 在设计过程中,当 Metal1 与 Metal2 之间的互连采用默认条件时,使用
"Via12Array"
作为过孔定义; - 当金属线宽处于特定尺寸范围内时,将自动切换到更适合该尺寸的过孔定义(例如
"Via12Array_south"
或"Via12Array_north"
),以优化工艺和电气性能。
- 在设计过程中,当 Metal1 与 Metal2 之间的互连采用默认条件时,使用
总结
viaSpecs 语句用于定义两金属层之间过孔的规格要求,既包括默认的过孔定义,也支持基于金属线宽范围的过孔定义细化。
- 该语句确保在不同尺寸条件下,过孔能满足工艺要求和电气性能要求。
- 示例展示了如何为 Metal1 与 Metal2 之间设置默认过孔定义
"Via12Array"
,并在特定线宽范围内分别采用"Via12Array_south"
和"Via12Array_north"
过孔定义,从而实现更灵活的工艺适应性。
7. Technology File Devices语句解析
7.1 tcCreateDeviceClass
语法
tcCreateDeviceClass(
t_viewName
t_className
l_classParam
l_formalParam
geometry
) ;tcCreateDeviceClass
功能描述
tcCreateDeviceClass 语句用于创建设备类(Device Class),即定义器件在版图数据库中的表示及相关几何与电气属性。
它不仅指定了设备类所属的视图(如符号或布局视图)和设备类名称,还包含一组类参数(用于控制设备整体特性)、形式参数(用于描述设备可变参数,如宽度、长度等)以及一段几何描述代码(用于生成器件的图形结构、引脚、连线及关联的网络信息)。
该语句的执行结果会在技术文件编译过程中生成一个设备类,并在后续设计和仿真中供工具调用。
参数说明
- t_viewName
- 说明:指定设备类所属的视图名称,例如符号视图或版图视图。
- 取值:字符串,如
"symbolic"
、"layout"
等。
- t_className
- 说明:定义设备类的名称,用于唯一标识该类。
- 取值:字符串,如
"syMGEnhancement"
。
- l_classParam
- 说明:设备类的参数列表,用于设定设备类的全局属性或默认设置。
- 取值:列表形式,每个元素通常为一个参数对,例如
( (sdLayer "hilite") (gateLayer "hilite") (sdExt 0.0) (gateExt 0.0) (sdImpLayer nil) (sdImpEnc 0.0) )
。
- l_formalParam
- 说明:设备类的形式参数列表,定义设备中可变参数(如宽度、长度等),这些参数在创建设备实例时可被赋予具体值。
- 取值:列表形式,例如
( (width 0.0) (length 0.0) )
。
- geometry
- 说明:一段几何描述代码,用于生成设备的实际图形,包括器件的图形对象、引脚、网络连接等。
- 取值:包含一系列数据库函数调用,如
dbCreateDot
、dbCreateRect
、dbAddFigToNet
等,同时也可以包含局部变量计算(如宽度和长度的半值计算),用于构建设备版图。
示例
; Create "syMGEnhancement" device class
;
tcCreateDeviceClass("symbolic" "syMGEnhancement"
; class parameters
( (sdLayer "hilite") (gateLayer "hilite")
(sdExt 0.0) (gateExt 0.0)
(sdImpLayer nil) (sdImpEnc 0.0) )
; formal parameters
( (width 0.0) (length 0.0) )
; geometry
W2 = width/2 L2 = length/2
netId = dbMakeNet(tcCellView "G")
dbId = dbCreateDot(tcCellView gateLayer -W2-gateExt:0)
dbId = dbCreatePin(netId dbId "gl")
dbSetq(dbId list("left") accessDir)
dbId = dbCreateDot(tcCellView gateLayer W2+gateExt:0)
dbId = dbCreatePin(netId dbId "gr")
dbSetq(dbId list("right") accessDir)
dbId = dbCreateRect(tcCellView gateLayer
list(-W2-gateExt:-L2 W2+gateExt:L2))
dbAddFigToNet(dbId netId)
;
netId = dbMakeNet(tcCellView "S")
dbId = dbCreateDot(tcCellView sdLayer 0:L2)
dbId = dbCreatePin(netId dbId "s")
dbSetq(dbId list("top") accessDir)
dbId = dbCreateRect(tcCellView sdLayer list(-W2:0 W2:L2+sdExt))
dbAddFigToNet(dbId netId)
) ; end of syMGEnhancement
示例功能解
- 视图和设备类名称
"symbolic"
指定设备类使用符号视图。"syMGEnhancement"
是设备类的名称,表示该类为增强型器件。
- 类参数部分(l_classParam)
- 参数对
(sdLayer "hilite")
和(gateLayer "hilite")
分别指定了源极/漏极层(sdLayer)和栅极层(gateLayer)均使用"hilite"
层。 (sdExt 0.0)
与(gateExt 0.0)
分别定义扩展参数,通常用于调整器件的外围边界。(sdImpLayer nil)
表示没有植入层;(sdImpEnc 0.0)
指定植入层的包络要求为 0。
- 参数对
- 形式参数部分(l_formalParam)
( (width 0.0) (length 0.0) )
定义了设备类中可变的宽度和长度参数,初始值设为 0.0,在实际器件实例化时将赋予具体尺寸。
- 几何部分(geometry)
- 计算
W2 = width/2
与L2 = length/2
用于确定设备图形的中心区域。 - 生成栅极网络:
- 通过
dbMakeNet(tcCellView "G")
创建名为"G"
的网络,并用dbCreateDot
在gateLayer
上创建点状对象,分别放置在-W2-gateExt
与W2+gateExt
位置。 - 这些点通过
dbCreatePin
创建引脚"gl"
(左侧)和"gr"
(右侧),并设置访问方向。 - 再通过
dbCreateRect
在gateLayer
上创建矩形,范围由(-W2-gateExt:-L2)
到(W2+gateExt:L2)
定义,并将该图形加入网络"G"
。
- 通过
- 生成源极/漏极网络:
- 创建名为
"S"
的网络,并在sdLayer
上生成点状对象和引脚"s"
(上侧),同时用dbCreateRect
在sdLayer
上创建矩形,范围由(-W2:0)
到(W2:L2+sdExt)
,并将该图形加入网络"S"
。
- 创建名为
- 计算
- 整体效果
- 通过上述几何描述,设备类
"syMGEnhancement"
定义了两个网络:一个用于栅极(G),另一个用于源/漏极(S)。 - 该定义明确指定了器件各部分的图形构造、引脚位置及网络连接,保证在符号视图中设备的显示和电气连接均符合设计要求。
- 通过上述几何描述,设备类
总结
tcCreateDeviceClass 语句通过指定视图、设备类名称、类参数、形式参数以及详细的几何描述,实现了设备类的创建设定。
- 类参数部分用于设置器件的全局属性和默认参数;
- 形式参数部分定义了设备的可变参数(如宽度和长度);
- 几何部分则详细描述了器件中各个部分的图形构造、引脚定义及网络关联。
该设备类定义将在技术文件编译后,供设计工具在创建器件实例时使用,从而确保器件在版图中具有正确的几何形状和电气连接。
7.2 tcDeclareDevice
语法
tcDeclareDevice(
t_viewName t_className t_deviceName
( ( 's_classParam g_value ) … )
( ( 's_formalParam g_value ) … )
) => t / nil
功能描述
tcDeclareDevice 语句用于在技术文件中声明设备实例。
该语句通过指定设备所属的视图、设备类和设备名称,并提供一组设备类参数及形式参数,完成设备实例的声明和初始化。
声明的设备实例将继承所属设备类的属性,并根据给定参数调整器件的具体尺寸、偏移、层关联以及其它工艺或电气属性。
该函数执行成功时返回 t,否则返回 nil。
参数说明
- t_viewName
- 说明:指定设备实例所属的视图类型。
- 取值:字符串,如
"symbolic"
、"layout"
等。
- t_className
- 说明:设备类名称,表明该设备实例属于哪个设备类。
- 取值:字符串,如
"syEnhContact"
。
- t_deviceName
- 说明:设备实例的名称,用于唯一标识该设备实例。
- 取值:字符串,如
"myEnhCont"
。
- ( ( ‘s_classParam g_value ) … )
- 说明:设备类参数列表,用于提供设备实例在所属设备类中的特定参数设置。
- 取值:每个参数为一个参数对,格式为
('s_classParam g_value)
。- 例如:
(viaLayer "Via1")
表示设定器件的 via 层为"Via1"
; - 参数可以包含层名称、封装参数、扩展参数、偏移值等。
- 例如:
- ( ( ‘s_formalParam g_value ) … )
- 说明:设备实例的形式参数列表,用于指定器件几何尺寸、间距、对齐方式以及其它可变参数。
- 取值:每个参数为一个参数对,格式为
('s_formalParam g_value)
。- 例如:
(w 0.300000)
表示器件宽度为 0.3; - 此外,还可定义诸如
xPitch
、yPitch
、column
、row
等参数,用于控制器件的网格布置和对齐方式。
- 例如:
示例
tcDeclareDevice( "symbolic" "syEnhContact" "myEnhCont"
( (viaLayer "Via1")
(layer2ImpEnc 0.000000)
(layer2ImpLayer (quote nil))
(layer1ImpEnc 0.450000)
(layer1ImpLayer "Nimp")
(encByLayer2 0.350000)
(encByLayer1 0.310000)
(layer2 "Metal2")
(layer1 "Metal1")
)
( (w 0.300000)
(myProp2 "net2")
(myProp1 "net1")
(yBias "center")
(xBias "center")
(yPitch 0.800000)
(xPitch 0.700000)
(column 1)
(row 2)
(l 0.300000)
)
)
示例功能解释
- 视图与设备类
- “symbolic”:指定设备实例在符号视图中显示;
- “syEnhContact”:表明该设备实例所属的设备类名称为
"syEnhContact"
; - “myEnhCont”:为设备实例命名为
"myEnhCont"
,作为唯一标识。
- 设备类参数部分
- 参数
(viaLayer "Via1")
指定该器件使用的 via 层为"Via1"
; (layer2ImpEnc 0.000000)
设定下层植入封装(impedance enclosure)为 0;(layer2ImpLayer (quote nil))
表明下层没有指定植入层;(layer1ImpEnc 0.450000)
指定上层植入封装为 0.45;(layer1ImpLayer "Nimp")
指定上层植入层为"Nimp"
;(encByLayer2 0.350000)
和(encByLayer1 0.310000)
分别定义上、下层对过孔的封装要求;(layer2 "Metal2")
和(layer1 "Metal1")
明确指出连接器件的上、下金属层分别为"Metal1"
与"Metal2"
。
- 参数
- 形式参数部分
(w 0.300000)
指定器件的宽度为 0.3;(myProp2 "net2")
与(myProp1 "net1")
用于定义器件的其它属性,例如网络标识;(yBias "center")
与(xBias "center")
指定器件在 X、Y 方向上的对齐方式为居中;(yPitch 0.800000)
与(xPitch 0.700000)
分别定义器件在垂直和水平方向上的间距;(column 1)
与(row 2)
表示器件在阵列中的列和行数;(l 0.300000)
定义器件的长度为 0.3。
- 整体效果
- 此设备声明语句将根据给定的类参数和形式参数创建一个名为
"myEnhCont"
的设备实例。 - 设备所属的类
"syEnhContact"
在符号视图中定义了器件的结构及互连规则,几何部分和网络信息在设备声明中由参数传递,从而使得该设备实例具备正确的层次、尺寸、封装和电气连接特性。
- 此设备声明语句将根据给定的类参数和形式参数创建一个名为
总结
tcDeclareDevice 语句用于在技术文件中声明具体的设备实例。
- 通过设置视图、设备类和设备名称,并传入设备类参数(确定器件的层关系、封装、植入等全局属性)以及形式参数(确定器件的几何尺寸、对齐及布置参数),该语句将生成一个符合工艺和设计要求的器件实例。
- 示例展示了如何为设备
"myEnhCont"
声明一组详细参数,确保器件在符号视图中具有正确的图形构造和电气连接属性,从而在后续设计、仿真和版图生成中发挥作用。
7.3 tcDeleteDevice
语法
tcDeleteDevice(
t_viewName
t_className
t_deviceName
[ d_techfileID ]
)
功能描述
tcDeleteDevice 语句用于从技术文件中删除一个已声明的设备实例。
在技术文件管理中,设备实例的创建与删除是常见操作。使用该函数可以从指定视图、设备类中移除某个设备,从而更新技术数据库或清理不再需要的器件。
执行成功时返回 t,否则返回 nil。
参数说明
- t_viewName
- 说明:设备所属视图的名称,指定该设备在技术文件中的视图类型。
- 取值:例如
"symbolic"
或"layout"
。
- t_className
- 说明:设备类名称,表明要删除的设备属于哪个设备类。
- 取值:例如
"syEnhContact"
。
- t_deviceName
- 说明:设备实例名称,唯一标识要删除的设备。
- 取值:例如
"myEnhCont"
。
- [ d_techfileID ](可选)
- 说明:技术文件的标识符,用于指明从哪个技术文件中删除设备。
- 取值:通常为一个数值或符号,若未指定,则使用默认的当前技术文件。
示例
tcDeleteDevice("symbolic" "syEnhContact" "myEnhCont" 12345)
示例功能解释
- t_viewName 为
"symbolic"
,表示该设备位于符号视图中。 - t_className 为
"syEnhContact"
,说明该设备属于设备类"syEnhContact"
。 - t_deviceName 为
"myEnhCont"
,指定了要删除的设备实例名称。 - d_techfileID 为
12345
,明确指定从技术文件 ID 为 12345 的文件中删除该设备。 - 执行此语句后,如果设备删除成功,则函数返回 t;否则返回 nil。
总结
tcDeleteDevice 语句在技术文件管理中用于删除指定视图、设备类下的某个设备实例,便于技术数据库的更新与维护。通过传入设备所属视图、设备类和设备名称(以及可选的技术文件标识),可以准确删除不再需要或需更新的器件。
7.4 tfcDefineDeviceProp
语法
tfcDefineDeviceProp(
( viewName deviceName propName propValue )
…
) => t/nil
功能描述
tfcDefineDeviceProp 语句用于在技术文件中为设备定义额外的属性。
通过该语句,可以为特定视图下的设备实例设置自定义属性,如电阻、过孔类型、器件参数等。这些属性在设备仿真、布局验证以及后续的设计流程中发挥重要作用,帮助工具识别设备的特性,并确保电气和物理规则的正确应用。
执行该语句后,如果属性定义成功,则返回 t,否则返回 nil。
参数说明
- viewName
- 说明:指定属性定义所适用的视图,通常为
"symbolic"
、"layout"
等。 - 取值:字符串,例如
"symbolic"
。
- 说明:指定属性定义所适用的视图,通常为
- deviceName
- 说明:指定设备名称,即要为其定义属性的设备实例名称。
- 取值:字符串,例如
"POLYS_M1"
、"M1_M2"
、"M3_M2"
。
- propName
- 说明:属性名称,用于标识设备的某一特定属性。
- 取值:字符串,例如
"res"
表示电阻,"viaType"
表示过孔类型等。
- propValue
- 说明:属性的取值,根据属性名称的不同可以为数值、字符串或其他数据类型。
- 取值:例如
1.000000
、1.500000
或"default"
。
示例
tfcDefineDeviceProp(
( symbolic POLYS_M1 res 1.000000 )
( symbolic M1_M2 res 1.500000 )
( symbolic M3_M2 viaType "default" )
)
示例功能解释
- 第一条属性定义
- 视图:
symbolic
表示该属性适用于符号视图。 - 设备名称:
POLYS_M1
指定了要为设备POLYS_M1
定义属性。 - 属性名称:
res
表示该属性为电阻(resistance)。 - 属性值:
1.000000
指定POLYS_M1
设备的电阻值为 1.0(单位根据工艺而定,通常为欧姆)。
- 视图:
- 第二条属性定义
- 视图:
symbolic
- 设备名称:
M1_M2
为设备M1_M2
定义属性。 - 属性名称:
res
同样表示电阻。 - 属性值:
1.500000
表示M1_M2
设备的电阻值为 1.5。
- 视图:
- 第三条属性定义
- 视图:
symbolic
- 设备名称:
M3_M2
为设备M3_M2
定义属性。 - 属性名称:
viaType
表示该设备的过孔类型。 - 属性值:
"default"
指定M3_M2
设备的过孔类型为默认值。
- 视图:
通过这些属性定义,设计工具能够在符号视图中识别并使用设备的额外参数,例如在仿真或电气规则检查中利用电阻和过孔类型等信息,进而确保设备性能符合设计要求。
总结
tfcDefineDeviceProp 语句用于为设备实例定义自定义属性,这些属性扩展了设备类的默认参数,便于在后续设计、仿真和验证过程中对设备进行精细控制和识别。通过传入视图、设备名称、属性名称和属性值,可以为每个设备设置独特的电气或工艺特性,从而提高设计的灵活性和准确性。
7.5 tcCreateCDSDeviceClass
语法
tcCreateCDSDeviceClass()
功能描述
tcCreateCDSDeviceClass 语句用于创建设备类,并激活预定义的 Cadence 设备类(CDS Device Class)。
该命令在技术文件中执行后,会初始化与设备类相关的所有属性和设置,使得后续的设备声明和设备操作能够引用并使用这些预定义的设备类属性。通过该语句,设计工具可以根据预定义模板生成符合工艺和电气要求的器件数据,从而确保设备的正确实例化与后续处理。
参数说明
- 无参数
- 该语句不需要传入任何参数,其作用仅为激活或创建 CDS 设备类。
示例
tcCreateCDSDeviceClass()
示例功能解释
- 当执行 tcCreateCDSDeviceClass() 后,系统将创建并激活一个预定义的 CDS 设备类。
- 激活后的设备类包含了设备的默认属性、方法以及相关设备定义模板,这为后续通过设备声明语句(例如 tcDeclareDevice)创建器件实例提供基础。
- 如果创建设备类成功,命令通常返回 t,否则返回 nil,便于后续错误检测和处理。
总结
tcCreateCDSDeviceClass 语句用于初始化和激活预定义的 Cadence 设备类,是设备类管理的起始命令。它不需要额外参数,执行后为后续器件声明和管理提供了标准模板和默认设置,从而确保设计流程中器件数据的一致性和正确性。
7.6 cdsViaDevice
语法
cdsViaDevice(
( t_deviceName t_cutLayer t_cutPurpose
t_layer1 t_layer1Purpose
t_layer2 t_layer2Purpose
n_row n_column t_origin g_stackedVias
g_cutLayerW g_cutLayerL g_xCutSpacing g_yCutSpacing
g_layer1XDirOverride g_layer1YDirOverride
g_layer2XDirOverride g_layer2YDirOverride
t_layer1Dir t_layer2Dir
g_layer1XDefOverride g_layer1YDefOverride
g_layer2XDefOverride g_layer2YDefOverride
l_implantLayer1
l_implantLayer2
g_diffSpacing
t_abutClass
g_useEnclosurePrecision
)
…
) ;cdsViaDevice
功能描述
cdsViaDevice 语句用于定义并创建一个 Cadence 互连过孔(via device)的实例。
该命令描述了器件在两金属层之间形成互连所需的几何结构与工艺参数,包括过孔切割层、相关金属层的用途、排列(行数和列数)、原点对齐、切割尺寸、间距以及各层方向的覆盖与默认值设置。此外,还包含植入层信息、扩展参数(如间距、abutment 类别)以及是否使用精密封装计算的标识。
通过执行该语句,设计工具将在指定的器件中生成过孔结构,并将其与相关网络及设备属性关联,确保器件互连符合工艺与电气要求。
参数说明
- t_deviceName
- 说明:过孔器件的名称,用于唯一标识该 via device。
- 取值:字符串,例如
"M2_M1cds"
、"M3_M2cds"
等。
- t_cutLayer
- 说明:用于定义过孔切割区域的层名称。
- 取值:字符串,如
"Via1"
、"Via2"
等。
- t_cutPurpose
- 说明:指定切割层的用途,通常描述该层在互连中承担的角色(例如
"drawing"
)。 - 取值:字符串,如
"drawing"
。
- 说明:指定切割层的用途,通常描述该层在互连中承担的角色(例如
- t_layer1
- 说明:上层金属的名称,即过孔上部所连接的金属层。
- 取值:字符串,如
"Metal1"
。
- t_layer1Purpose
- 说明:指定上层金属的用途,如用于信号传输或供电。
- 取值:字符串,如
"drawing"
、"pin"
等。
- t_layer2
- 说明:下层金属的名称,即过孔下部所连接的金属层。
- 取值:字符串,如
"Metal2"
。
- t_layer2Purpose
- 说明:指定下层金属的用途。
- 取值:字符串,如
"drawing"
。
- n_row
- 说明:过孔切割排列的行数。
- 取值:整数,如
1
。
- n_column
- 说明:过孔切割排列的列数。
- 取值:整数,如
1
。
- t_origin
- 说明:指定过孔的原点定位方式,通常定义如何对齐器件(例如 “center”、”offset”)。
- 取值:字符串,如
"centerCenter"
。
- g_stackedVias
- 说明:标识是否为堆叠过孔,决定是否多个过孔叠加使用。
- 取值:标识符,如
t
(代表 true)或_def_
表示默认。
- g_cutLayerW
- 说明:过孔切割区域的宽度。
- 取值:数值,例如
0
表示使用默认值或具体尺寸。
- g_cutLayerL
- 说明:过孔切割区域的长度。
- 取值:数值,如
0
。
- g_xCutSpacing
- 说明:在切割阵列中,切割单元之间在 X 方向上的间距。
- 取值:数值,如
0
。
- g_yCutSpacing
- 说明:在切割阵列中,切割单元之间在 Y 方向上的间距。
- 取值:数值,如
0
。
- g_layer1XDirOverride 与 g_layer1YDirOverride
- 说明:用于覆盖上层金属在 X 和 Y 方向上的默认布线方向或偏置。
- 取值:数值或标识符,通常使用默认设置
_def_
。
- g_layer2XDirOverride 与 g_layer2YDirOverride
- 说明:用于覆盖下层金属在 X 和 Y 方向上的默认布线方向或偏置。
- 取值:数值或默认标识。
- t_layer1Dir
- 说明:指定上层金属的方向,如
"center"
、"left"
、"right"
等。 - 取值:字符串。
- 说明:指定上层金属的方向,如
- t_layer2Dir
- 说明:指定下层金属的方向。
- 取值:字符串。
- g_layer1XDefOverride 与 g_layer1YDefOverride
- 说明:用于设置上层金属默认对齐的 X 和 Y 方向上的覆盖值。
- 取值:数值或默认标识。
- g_layer2XDefOverride 与 g_layer2YDefOverride
- 说明:用于设置下层金属默认对齐的 X 和 Y 方向上的覆盖值。
- 取值:数值或默认标识。
- l_implantLayer1
- 说明:上层金属可能关联的植入层信息,用于调整器件的工艺参数。
- 取值:通常为字符串或层列表,示例中为空字符串
""
表示无植入。
- l_implantLayer2
- 说明:下层金属的植入层信息。
- 取值:同上,可能为空或具体层名称。
- g_diffSpacing
- 说明:扩散(diffusion)或其他相关层的间距参数,用于确定器件中不同结构之间的最小间距。
- 取值:数值,如
0.005
。
- t_abutClass
- 说明:指定器件的abutment(拼合)类别,用于定义器件间的紧邻关系。
- 取值:字符串,如
_def_
表示默认类别。
- g_useEnclosurePrecision
- 说明:标识是否采用精确封装计算,用于确定金属层对过孔的封装要求。
- 取值:数值或布尔值(t/nil),例如
_def_
表示默认。
示例
cdsViaDevices(
( M2_M1cds Via1 drawing Metal1 drawing Metal2 drawing
1 1 centerCenter t _def_ _def_ _def_ _def_
0 0 0 0
"" ""
0.005 _def_ 0.005 _def_
nil
nil
_def_ ""
)
( M3_M2cds Via2 drawing Metal2 drawing Metal3 drawing
1 1 centerCenter t _def_ _def_ _def_ _def_
0 0 0 0
"" ""
0.005 _def_ 0.005 _def_
nil
nil
_def_ ""
)
( M4_M3cds Via3 drawing Metal3 drawing Metal4 drawing
1 1 centerCenter t _def_ _def_ _def_ _def_
0 0 0 0
"" ""
0.005 _def_ 0.005 _def_
nil
nil
_def_ ""
)
) ;cdsViaDevices
注:以上示例中,参数值使用了 _def_
、nil
、空字符串 ""
等表示默认值或无特殊设置。
示例功能解释
以第一组定义为例:
- 设备名称:
M2_M1cds
表示该 via device 用于连接 Metal1 与 Metal2,设备名为M2_M1cds
。 - 切割层与用途:
Via1
与drawing
表示切割层为 Via1,且其用途为drawing
。- 接下来的
Metal1 drawing Metal2 drawing
指定上层为Metal1
(用途drawing
)和下层为Metal2
(用途drawing
)。
- 排列参数:
1 1 centerCenter
表示过孔排列为 1 行 1 列,并且原点对齐方式为centerCenter
,即上下居中。
- 堆叠过孔标识:
- 参数
t
表示采用堆叠过孔方式,或者使用默认值。
- 参数
- 方向与覆盖设置:
- 后续一系列参数
_def_
表示对上层和下层的方向覆盖及默认对齐设置均采用默认值。
- 后续一系列参数
- 切割层尺寸与间距:
0 0 0 0
表示切割层宽度、长度和 X、Y 间距均采用默认或未设定具体值。
- 植入层信息:
"" ""
表示上层和下层的植入层信息为空,即没有特殊植入要求。
- 扩散间距与封装精度:
0.005 _def_ 0.005 _def_
表示切割层封装宽度和长度采用 0.005 值(精度设置),其它方向参数为默认值。
- 后续参数:
nil nil
分别表示 abutment 类别和是否使用精确封装计算均未做特殊设置(或采用默认)。_def_ ""
最后部分表示默认设置和空植入层补充。
- 整体效果
- 该 via device 定义为连接 Metal1 与 Metal2 的基本互连结构,采用单一切割(1×1),中心对齐。
- 其它参数均使用默认值,表明在该设计中,过孔结构无需额外调整,满足工艺要求。
总结
cdsViaDevice(及其批量定义命令 cdsViaDevices)用于在技术文件中定义互连过孔器件,详细描述了器件在两金属层之间的连接方式、切割参数、排列、对齐、封装以及其它辅助参数。
- 通过这些详细参数,设计工具能够在版图中生成符合工艺要求的过孔结构,并确保器件电气性能与物理可靠性。
- 示例展示了如何为 Metal1–Metal2、Metal2–Metal3、Metal3–Metal4 分别定义 via device,采用相似参数,且在默认设置下实现简单的单一过孔排列。
7.7 multipartPathTemplates
语法
multipartPathTemplates(
( t_mppTemplateName
l_template
) ; end of template
…
) ; end of all multipartPathTemplates Rules
; l_template arguments
(
l_masterPathArgs
[ l_offsetSubpathArgs... ]
[ l_enclosureSubpathArgs... ]
[ l_subrectangleArgs... ]
) ; end of template argument lists
; l_masterPathArgs
(
txl_layer
[ n_width ]
[ g_choppable ]
[ t_endType ]
[ n_beginExt ]
[ n_endExt ]
[ t_justification ]
[ n_offset ]
[ l_rodConnectivityArgs for master path ]
) ; end of masterPathArgs list
; l_offsetSubpathArgs
(
(
txl_layer
[ n_width ]
[ g_choppable ]
[ n_sep ]
[ t_justification ]
[ n_beginOffset ]
[ n_endOffset ]
[ l_rodConnectivityArgs for offset subpath ]
) ; end of first offset subpath list
…
) ; end of all offset subpath lists
; l_enclosureSubpathArgs
(
(
txl_layer
[ n_enclosure ] [ g_choppable ]
[ n_beginOffset ]
[ n_endOffset ]
[ l_rodConnectivityArgs for enclosure subpath ]
) ; end of first enclosure subpath list
…
) ; end of all enclosure subpath lists
; l_subrectangleArgs
(
(
txl_layer
[ n_width ]
[ n_length ]
[ g_choppable ]
[ n_sep ]
[ t_justification ]
[ n_space ]
[ n_beginOffset ]
[ n_endOffset ]
[ n_gap ]
[ l_rodConnectivityArgs for subrectangles ]
[ n_beginSegmentOffset ]
[ n_endSegmentOffset ]
) ; end of first subrectangle list
…
) ; end of all subrectangle lists
; l_rodConnectivityArgs
(
[ t_termIOType ]
[ g_pin ]
[ tl_pinAccessDir ]
[ g_pinLabel ]
[ n_pinLabelHeight ]
[ txl_pinLabelLayer ]
[ t_pinLabelJust ]
[ t_pinLabelFont ]
[ g_pinLabelDrafting ]
[ t_pinLabelOrient ]
[ t_pinLabelRefHandle ]
[ l_pinLabelOffsetPoint ]
) ; end of ROD Connectivity Argument list
功能描述
multipartPathTemplates 语句用于定义多段路径模板,主要用于创建设备中复杂互连结构的几何描述。
在器件设计中,尤其是模拟或混合信号设计中,一个器件可能包含多个互连段、偏移子路径、包络子路径以及子矩形区域(subrectangles)。
通过该模板,设计工具可以按照预定义的模板参数,自动生成器件的几何路径(master path)及其相关偏移、包络和子矩形部分,从而满足器件的物理布局和电气互连要求。
参数说明
- t_mppTemplateName
- 说明:指定该多段路径模板的名称,用于唯一标识模板。
- 取值:任意合法字符串,例如
"Template1"
。
- l_template
- 说明:模板的参数列表,包含生成器件主路径及其它子路径(偏移、包络、子矩形)的详细参数。
- l_template 参数组成
- l_masterPathArgs
- 说明:定义主路径的参数。
- 内部参数:
- txl_layer:主路径所在的层名称。
- n_width(可选):主路径的宽度。
- g_choppable(可选):指示主路径是否可以被拆分(chopped)。
- t_endType(可选):主路径端点的类型,如尖角或圆角。
- n_beginExt 与 n_endExt(可选):主路径起始与终止的延伸长度。
- t_justification(可选):主路径的对齐方式(如居中、左对齐等)。
- n_offset(可选):主路径的偏移量。
- l_rodConnectivityArgs for master path:描述主路径连接器件引脚或端点的参数列表。
- l_offsetSubpathArgs(可选)
- 说明:定义一个或多个偏移子路径,用于描述主路径的偏移部分。
- 内部参数:
- txl_layer:子路径所在的层名称。
- n_width(可选):子路径宽度。
- g_choppable(可选):子路径是否可拆分。
- n_sep(可选):子路径与主路径之间的分隔距离。
- t_justification(可选):子路径的对齐方式。
- n_beginOffset 与 n_endOffset(可选):子路径起始与结束的偏移量。
- l_rodConnectivityArgs for offset subpath:用于描述偏移子路径端点连接参数。
- l_enclosureSubpathArgs(可选)
- 说明:定义一个或多个包络子路径,用于描述主路径周围的包络要求。
- 内部参数:
- txl_layer:包络子路径所在层。
- n_enclosure(可选):包络距离。
- g_choppable(可选):指示包络路径是否可拆分。
- n_beginOffset 与 n_endOffset:包络子路径起始与结束的偏移量。
- l_rodConnectivityArgs for enclosure subpath:描述包络子路径连接参数。
- l_subrectangleArgs(可选)
- 说明:定义一个或多个子矩形区域,用于构成复杂几何形状。
- 内部参数:
- txl_layer:子矩形所在层。
- n_width 与 n_length:子矩形的宽度与长度。
- g_choppable(可选):指示是否可拆分。
- n_sep(可选):子矩形之间的分隔。
- t_justification(可选):子矩形对齐方式。
- n_space(可选):子矩形间的间隔。
- n_beginOffset 与 n_endOffset:子矩形起始与结束的偏移量。
- n_gap(可选):子矩形之间的间隙。
- l_rodConnectivityArgs for subrectangles:描述子矩形连接参数。
- n_beginSegmentOffset 与 n_endSegmentOffset(可选):子矩形段的起始和结束偏移。
- l_rodConnectivityArgs
- 说明:定义用于连接器件引脚或端点的参数列表(ROD Connectivity),适用于主路径、偏移子路径、包络子路径或子矩形。
- 内部参数:
- t_termIOType(可选):端口 I/O 类型。
- g_pin(可选):引脚编号或标识。
- tl_pinAccessDir(可选):引脚访问方向。
- g_pinLabel(可选):引脚标签。
- n_pinLabelHeight(可选):引脚标签高度。
- txl_pinLabelLayer(可选):引脚标签所属层。
- t_pinLabelJust(可选):引脚标签对齐方式。
- t_pinLabelFont(可选):引脚标签字体。
- g_pinLabelDrafting(可选):引脚标签绘图属性。
- t_pinLabelOrient(可选):引脚标签方向。
- t_pinLabelRefHandle(可选):引脚标签参考句柄。
- l_pinLabelOffsetPoint(可选):引脚标签偏移点。
- l_masterPathArgs
总结
multipartPathTemplates 语句用于定义复杂的多段路径模板,主要针对需要由主路径、偏移子路径、包络子路径以及子矩形组成的器件互连结构。
- 模板将各部分参数(包括主路径参数、偏移、包络和子矩形参数)及其连接参数统一定义,为设备互连生成提供一套完整的几何描述。
- 该模板有助于自动生成多段互连结构,保证器件几何和连接符合工艺要求,并简化设计流程。
7.8 extractMOS
语法
extractMOS(
t_deviceName
tx_recognitionLayer
tx_gateLayer
tx_sourceDrainLayer
tx_bulkLayer
[ tx_modelName ]
) ;extractMOS
功能描述
extractMOS 语句用于在设备定义中提取 MOS 器件的版图信息。
该语句通常被放置在设备(devices)部分中,用于将器件(MOSFET)按照各功能层(识别层、栅极层、源/漏层和衬底层)的信息进行提取,并将其与对应的 SPICE 模型或工艺模型关联。
通过调用 extractMOS,设计工具能识别 MOS 器件在版图中的具体几何构成,从而在物理验证、仿真以及后续工艺处理时正确处理 MOS 器件的电气和几何属性。
参数说明
- t_deviceName
- 说明:定义 MOS 器件的名称,用于在设备库中唯一标识该 MOS 器件。
- 取值:字符串,例如
"NMOS"
或"PMOS"
。
- tx_recognitionLayer
- 说明:指定用于识别 MOS 器件轮廓的层,该层通常包含器件的识别标记或边界信息。
- 取值:层名称(如
ngate
或pgate
),一般为预定义的识别层。
- tx_gateLayer
- 说明:指定 MOS 器件的栅极层,即器件中栅极图形所在的层。
- 取值:层名称,例如
poly
表示多晶硅层。
- tx_sourceDrainLayer
- 说明:指定 MOS 器件的源极和漏极所在的层,用于形成器件的传导通道。
- 取值:层名称,例如
oxide
,在不同工艺中可能代表扩散层或其它互连层。
- tx_bulkLayer
- 说明:指定 MOS 器件的衬底层,即器件中作为体(bulk)或底部的区域。
- 取值:层名称,例如
substrate
、nwell
等,用于区分 NMOS 与 PMOS 的衬底处理。
- [ tx_modelName ](可选)
- 说明:指定与该 MOS 器件关联的 SPICE 模型名称,便于在仿真时引用对应的模型参数。
- 取值:字符串,例如
"lvn"
表示 NMOS 模型,或"lvp"
表示 PMOS 模型。 - 若未指定,则可能使用默认模型或通过其它机制进行匹配。
示例
devices(
extractMOS( "NMOS" ngate poly oxide substrate "lvn" )
extractMOS( "PMOS" pgate poly oxide nwell "lvp" )
)
示例功能解释
- 第一条 extractMOS 定义
- t_deviceName 为
"NMOS"
,表示该器件为 NMOS 型晶体管。 - tx_recognitionLayer 为
ngate
,用于识别 NMOS 器件的整体轮廓或标记。 - tx_gateLayer 为
poly
,指定器件的栅极图形在多晶硅层中。 - tx_sourceDrainLayer 为
oxide
,表明 NMOS 器件的源极/漏极图形在氧化层中(或对应扩散层,根据工艺定义)。 - tx_bulkLayer 为
substrate
,表示 NMOS 器件的衬底采用基底处理。 - tx_modelName 为
"lvn"
,关联了 NMOS 的 SPICE 模型,供仿真使用。
- t_deviceName 为
- 第二条 extractMOS 定义
- t_deviceName 为
"PMOS"
,表示该器件为 PMOS 型晶体管。 - tx_recognitionLayer 为
pgate
,用于识别 PMOS 器件的整体轮廓。 - tx_gateLayer 依然为
poly
,指定 PMOS 器件的栅极位于多晶硅层中。 - tx_sourceDrainLayer 为
oxide
,表示器件的源/漏图形在氧化层中。 - tx_bulkLayer 为
nwell
,表明 PMOS 器件通常采用 nwell 作为衬底处理。 - tx_modelName 为
"lvp"
,关联了 PMOS 的 SPICE 模型,便于仿真。
- t_deviceName 为
- 整体效果
- 通过
extractMOS
的调用,设备部分提取出 NMOS 与 PMOS 两类器件的图形信息,分别设置各自的层关联和模型。 - 这使得在设备布局与仿真过程中,设计工具能够准确识别 MOS 器件的结构、连接以及电气模型,从而确保器件性能与工艺规则的匹配。
- 通过
总结
extractMOS 语句主要用于提取 MOS 器件在版图中的关键图形信息,包括识别层、栅极层、源/漏层和衬底层。
- 它通过将器件名称与各相关层及可选的模型名称关联,实现了器件几何与电气模型的绑定。
- 示例中分别定义了 NMOS 与 PMOS 器件,并关联了相应的 SPICE 模型,使得设备在布局、物理验证及仿真过程中都能获得正确的器件数据。
8. 参考
【1】Virtuoso help—ascitechfile.pdf
9. 获取参考文档
关注【蓝色天空】博客的公众号,并在公众号里发送对应的下载关键字【KX000】获取下载链接。

