Synopsys Technology File and Routing Rules Reference Manual (1)

目录

[1. 创建技术文件](#1. 创建技术文件)

[2. 基本语法规则](#2. 基本语法规则)

[3. 技术文件内容](#3. 技术文件内容)

[4. Technology 节](#4. Technology 节)

[4.1 工艺名称](#4.1 工艺名称)

[4.2 单位定义](#4.2 单位定义)

[4.3 定义布线规则模式](#4.3 定义布线规则模式)

[5. PrimaryColor 节](#5. PrimaryColor 节)

[5.1 计算机显示器的显色原理](#5.1 计算机显示器的显色原理)

[5.2 GUI 中的颜色](#5.2 GUI 中的颜色)

[6. Color 节](#6. Color 节)

[7. LineStyle 节](#7. LineStyle 节)

[8. Tile 节](#8. Tile 节)

[9. Layer 节](#9. Layer 节)

[9.1 版图属性](#9.1 版图属性)

[9.2 显示属性](#9.2 显示属性)

[9.3 设计规则属性](#9.3 设计规则属性)


技术文件(technology file)是一种ASCII 文件,用于提供特定工艺的相关信息,例如各金属层的名称、物理与电气特性以及布线设计规则。创建技术文件后,需将其与 Fusion Compiler、IC Compiler II 或 IC Compiler 工具中的某一库相关联。

技术文件(.tf)是定义半导体工艺参数的标准ASCII文件,包含金属层特性、设计规则和显示属性等关键信息。该文件采用分节结构,主要包含:

1.全局参数(Technology节)定义单位、工艺名称和布线规则模式;

2.显示属性(PrimaryColor/Color/LineStyle节)配置图形界面显示效果;

3.物理层定义(Layer节)设置金属/过孔层的版图、电学特性和设计规则;

4.设计规则(DesignRule等节)规定层间布线约束。

技术文件通过write_tech_file命令导出,需与设计库关联使用,支持FusionCompiler/ICCompiler等EDA工具。文件语法严格区分大小写,采用{属性=值}的键值对格式,支持注释和表格定义。

1. 创建技术文件

可以依据本章所述的语法规则创建技术文件,也可以通过编辑现有技术文件来生成新文件。

若要导出与某一设计库相关联的技术文件,操作如下:

  • 在 Fusion Compiler 或 IC Compiler II 工具中,使用 write_tech_file 命令:

    复制代码
    prompt> write_tech_file techfile.tf
  • 在 IC Compiler 工具中,使用 write_mw_lib_files -technology 命令:

    复制代码
    icc_shell> write_mw_lib_files -technology -output techfile.tf

2. 基本语法规则

技术文件的基本语法规则如下:

  1. 可编辑技术文件的扩展名统一为 .tf

  2. 技术文件由多个节(section)组成,每个节均采用如下语法结构:

    复制代码
    section_name {
        attribute_name = attribute_value...
    }
  3. 关键字(包括节名和属性名)区分大小写,必须严格按照规定的拼写和大小写形式输入。这些关键字为保留字,不得在指定上下文之外使用。

  4. 圆括号 () 需严格按照语法格式中的示例输入。

  5. 表格定义中的每一行必须至少包含一个非空值。例如,以下表格定义无效,因为紫色标注的行全部为空值:

    复制代码
    fatTblDimension         = 6
    fatTblFatContactMinCuts = (  "", "", "", "3", "", "",
                                 "", "1, 1", "", "1, 1", "",
                                 "", "", "", "", "", "",
                                 "", "", "4", "4", "", "4"  )
  6. 可在技术文件中添加注释,注释内容需以 /* 开头,以 */ 结尾。/**/ 之间的所有文本都将被工具忽略。

3. 技术文件内容

技术文件包含以下内容:

复制代码
/* 指定单位及单位数值 */
Technology {
  name
  units
  operating_conditions
  routing_rule_modes
}

/* 定义用于生成显示颜色的六种基础颜色 */
[PrimaryColor {
  primarycolor_attributes
}]

/* 定义用于显示设计内容的自定义显示颜色 */
Color color_value {
  color_attributes
}...

/* 定义用于显示设计内容的点画样式 */
Stipple "name" {
  stipple_attributes
}...

/* 定义用于显示设计内容的线型 */
LineStyle "name" {
  linestyle_attributes
}...

/* 定义单元瓦片 */
Tile "name" {
  tile_attributes
}...

/* 定义特定层的特性,包括显示特性
   以及特定层的布线设计规则 */
Layer "name" {
  layout_attributes
  display_attributes
  parasitic_attributes
  physical_attributes
  design_rule_attributes
}...

/* 定义层数据类型 */
LayerDataType "name" {
  layerdatatype_attributes
}...
/* 定义设计中使用的过孔 */
ContactCode "name" {
  contactcode_attributes
}...

/* 定义适用于设计的层间布线设计规则 */
DesignRule {
  layer_attributes
  rule_attributes
}...

/* 定义单元行间距规则 */
PRRule {
  prrule_attributes
}...

/* 定义密度规则 */
DensityRule {
  densityrule_attributes
}...

/* 定义过孔规则 */
ViaRule "name" {
  viarule_attributes
}...

/* 定义开槽规则 */
SlotRule {
  slotrule_attributes
}...

/* 定义互连层的电容信息 */
FringeCap value {
  fringecap_attributes
}...

/* 定义时序信息 */
CapModel {
  capmodel_attributes
}

/* 定义时序信息 */
CapTable {
  captable_attributes
}

/* 定义某一层的电阻和温度系数,
   该参数为线宽的函数 */
ResModel {
  resmodel_attributes
}

4. Technology 节

技术文件的 Technology 节用于指定全局属性,例如单位和布线规则模式,示例如下:

复制代码
Technology {
 /* 定义工艺名称 */
 name = tech32hvt
 /* 定义单位 */
 unitLengthName = "micron"
 lengthPrecision = 1000
 gridResolution = 50
 unitTimeName = "ns"
 timePrecision = 100
 unitCapacitanceName = "pf"
 capacitancePrecision = 10000
 unitResistanceName = "kohm"
 resistancePrecision = 10
 unitInductanceName = "nh"
 inductancePrecision = 1000
 unitPowerName = "mw"
 powerPrecision = 10000
 unitVoltageName = "V"
 voltagePrecision = 1000
 unitCurrentName = "mA"
 currentPrecision = 1000000
 dielectric = 0.000000e+00
 /* 定义工作条件 */
 minBaselineTemperature = 25
 nomBaselineTemperature = 25
 maxBaselineTemperature = 25
   /* 定义布线规则模式 */
 cornerSpacingMode = 0
 fatTblMinEnclosedAreaMode = 0
 fatTblSpacingMode = 0
 fatWireExtensionMode = 0
 fixedColor = 0
 maxStackLevelMode = 1
 metalAboveMiMCap = 'M9'
 minAreaMode = 0
 minEdgeMode = 0
 minLengthMode = 0
 parallelLengthMode = 0
 stubMode = 0
}

4.1 工艺名称

Technology 节中的 name 属性用于为 Fusion Compiler 和 IC Compiler II 工具指定工艺名称。例如,get_techs 命令将返回该工艺名称。此属性在 IC Compiler 工具中不生效。

4.2 单位定义

Technology 节中定义了各物理量(长度、电阻、电容等)的单位大小和精度。单位数值以 32 位整数形式存储,因此指定的单位大小和精度决定了设计中该物理量的最大动态范围。

32 位整数的存储范围为 −231 至 231−1(即 -2147483648 至 +2147483647)。例如,若将长度单位设为微米(micron),长度精度设为 1000,则最大动态范围为 -2147483.648 微米至 +2147483.647 微米。

若需将电容测量精度精确到 0.0001 皮法(pF),则需将电容单位设为皮法,并将电容精度设为 10000。此时,可测量的最大电容值为 214748 皮法。

可通过以下属性在 Technology 节中定义单位:

  1. unitLengthName该属性用于定义线性距离单位,有效值为微米(micron)和密耳(mil)。

  2. lengthPrecision 该属性用于设置每个用户单位对应的数据库单位数量,从而定义数据库中存储的距离测量精度。例如,若 unitLengthName 设为微米,lengthPrecision 设为 1000,则数据库单位为 0.001 微米。所有距离测量值都将四舍五入到最接近的 0.001 微米。

  3. gridResolution 该属性用于设置制造栅格分辨率,单位为数据库单位。例如,若 unitLengthName 为微米、lengthPrecision 为 1000,则数据库单位为 0.001 微米;若制造工艺的最小栅格分辨率为 0.1 微米,则 gridResolution 应设为 100。放置对象时,对象的原点将落在栅格点上。

  4. unitTimeName该属性用于定义时间单位,有效值如表 1 所示。

    表 1 unitTimeName 的有效值

    单位值 说明
    fs 1×10−15 秒
    ps 1×10−12 秒
    ns 1×10−9 秒
    us 1×10−6 秒
    ms 1×10−3 秒
    s
  5. timePrecision 该属性用于定义数据库中存储的时间测量精度。例如,若 unitTimeName 设为纳秒(ns),timePrecision 设为 100,则数据库单位为 0.01 纳秒。所有时间测量值都将四舍五入到最接近的 0.01 纳秒。

  6. unitCapacitanceName该属性用于定义电容单位,有效值如表 2 所示。

  7. capacitancePrecision 该属性用于定义数据库中存储的电容测量精度。例如,若 unitCapacitanceName 设为皮法(pf),capacitancePrecision 设为 10000,则数据库单位为 0.0001 皮法(即 0.1 飞法)。所有电容测量值都将四舍五入到最接近的 0.1 飞法。

  8. unitResistanceName该属性用于定义电阻单位,有效值如表 3 所示。

  9. 表 2 unitCapacitanceName 的有效值

    单位值 说明
    ff 1×10−15 法
    pf 1×10−12 法
    nf 1×10−9 法
    uf 1×10−6 法
    mf 1×10−3 法
    f
  10. 表 3 unitResistanceName 的有效值

    单位值 说明
    mohm 1×10−3 欧
    ohm
    kohm 1×103 欧
    Mohm 1×106 欧
  11. resistancePrecision 该属性用于定义数据库中存储的电阻测量精度。例如,若 unitResistanceName 设为欧姆(ohm),resistancePrecision 设为 1000,则数据库单位为 0.001 欧姆。所有电阻测量值都将四舍五入到最接近的 0.001 欧姆。

  12. unitInductanceName该属性用于定义电感单位,有效值如表 4 所示。

    表 4 unitInductanceName 的有效值

    单位值 说明
    fH 1×10−15 亨
    pH 1×10−12 亨
    nH 1×10−9 亨

表 4 unitInductanceName 的有效值(续)

单位值 说明
uH 1×10−6 亨
mH 1×10−3 亨
H
  1. inductancePrecision 该属性用于定义数据库中存储的电感测量精度。例如,若 unitInductanceName 设为纳亨(nH),inductancePrecision 设为 1000,则数据库单位为 0.001 纳亨。所有电感测量值都将四舍五入到最接近的 0.001 纳亨。

  2. unitPowerName该属性用于定义功率单位,有效值如表 5 所示。

    表 5 unitPowerName 的有效值

    单位值 说明
    fw 1×10−15 瓦
    pw 1×10−12 瓦
    nw 1×10−9 瓦
    uw 1×10−6 瓦
    mw 1×10−3 瓦
    w
  3. powerPrecision 该属性用于定义数据库中存储的功率测量精度。例如,若 unitPowerName 设为毫瓦(mw),powerPrecision 设为 1000,则数据库单位为 0.001 毫瓦。所有功率测量值都将四舍五入到最接近的 0.001 毫瓦。

  4. unitVoltageName该属性用于定义电压单位,有效值如表 6 所示。

    表 6 unitVoltageName 的有效值

    单位值 说明
    fV 1×10−15 伏
    pV 1×10−12 伏
    nV 1×10−9 伏
    uV 1×10−6 伏
    mV 1×10−3 伏
    V
  5. voltagePrecision 该属性用于定义数据库中存储的电压测量精度。例如,若 unitVoltageName 设为毫伏(mV),voltagePrecision 设为 1000,则数据库单位为 0.001 毫伏。所有电压测量值都将四舍五入到最接近的 0.001 毫伏。

  6. unitCurrentName该属性用于定义电流单位,有效值如表 7 所示。

  7. currentPrecision 该属性用于定义数据库中存储的电流测量精度。例如,若 unitCurrentName 设为毫安(mA),currentPrecision 设为 1000,则数据库单位为 0.001 毫安。所有电流测量值都将四舍五入到最接近的 0.001 毫安。

  8. dielectric该属性用于指定二氧化硅(SiO₂)的介电常数。Fusion Compiler、IC Compiler II 和 IC Compiler 工具均不使用此属性。

  9. 表 7 unitCurrentName 的有效值

    单位值 说明
    fA 1×10−15 安
    pA 1×10−12 安
    nA 1×10−9 安
    uA 1×10−6 安
    mA 1×10−3 安
    A

4.3 定义布线规则模式

可通过以下属性在 Technology 节中定义布线规则模式:

  1. cornerSpacingMode 该属性用于指定过孔间距采用对角线测量方式还是直角坐标测量方式。若设为 0,采用对角线测量,过孔对角间距需满足过孔最小间距要求;若设为 1,采用直角坐标测量,x 方向或 y 方向的间距至少需满足过孔最小间距要求。表 8 列出了 cornerSpacingMode 的有效值。

    表 8 cornerSpacingMode 的有效值

    模式 说明
    0(默认值) 过孔对角间距采用对角线距离测量
    1 过孔对角间距采用曼哈顿(直角坐标)距离测量
  2. fatTblSpacingMode 该属性用于确定平行长度(由 fatTblParallelLength 属性定义)对 fatTblSpacing 属性索引的影响。表 9 列出了 fatTblSpacingMode 的有效值。

    表 9 fatTblSpacingMode 的有效值

    模式 说明
    0(默认值) 根据 fatTblParallelLength 属性的值降低 fatTblSpacing 索引
    1 fatTblSpacing 索引最多降低 1 级
  3. fatTblMinEnclosedAreaMode 该属性用于确定最小包围面积规则的应用方式。表 10 列出了 fatTblMinEnclosedAreaMode 的有效值。

    表 10 fatTblMinEnclosedAreaMode 的有效值

    模式 说明
    0(默认值) 当周围任意金属满足宽度要求时,触发宽金属最小包围面积模式
    1 仅当周围所有金属均满足宽度要求时,触发宽金属最小包围面积模式
  4. fatWireExtensionMode 该属性用于控制宽金属延伸间距规则的应用。表 11 列出了 fatWireExtensionMode 的有效值。

表 11 fatWireExtensionMode 的有效值

模式 说明
0(默认值) 仅对连接到宽金属、且位于宽金属边缘和拐角延伸范围内的延伸线进行宽间距检查,检查任意两条线之间的间距,不检查投影长度
1 对位于宽金属边缘延伸范围内(不包括宽金属拐角)的所有连接线和非连接线进行宽间距检查,检查重叠和非重叠线对之间的间距,同时检查投影长度
2 对位于宽金属边缘延伸范围内(不包括宽金属拐角)的所有连接线和非连接线进行宽间距检查,仅检查非重叠线对之间的间距,不检查投影长度
3 对位于宽金属边缘延伸范围内(不包括宽金属拐角)的所有连接线和非连接线进行宽间距检查,仅检查重叠线对之间的间距,同时检查这些线的投影长度
4 仅对位于宽金属边缘延伸范围内(不包括宽金属拐角)的连接线进行宽间距检查,检查这些线与其他所有线之间的间距,不检查投影长度
  1. fixedColor该属性用于在多重图形技术的物理设计数据流出版本中,启用或禁用单元级掩膜交换功能。若要启用掩膜交换功能,将该属性设为 0(或从技术文件中省略该属性);若要禁用,将该属性设为 1。

  2. maxStackLevelMode 该属性用于控制过孔阵列最大堆叠层级规则的适用范围。表 12 列出了 maxStackLevelMode 的有效值。

表 12 maxStackLevelMode 的有效值

模式 说明
0(默认值) 当所有堆叠过孔均为过孔阵列时,忽略最大堆叠层级规则检查
1 对堆叠过孔阵列执行最大堆叠层级规则检查
2 当堆叠过孔中至少有一个为过孔阵列时,忽略最大堆叠层级规则检查
3 当所有堆叠过孔均为对齐过孔阵列(至少有两个切口重叠)时,忽略最大堆叠层级规则检查
  1. metalAboveMiMCap该属性用于指定插入金属 - 绝缘体 - 金属(MiM)电容的常规金属层。MiM 电容插入在该常规金属层下方、相邻下一层常规金属层上方。

  2. minAreaMode 该属性用于确定在应用最小面积规则时是否考虑图形的形状。表 13 列出了 minAreaMode 的有效值。

表 13 minAreaMode 的有效值

模式 说明
0(默认值) 忽略 specialMinArea 数值,遵循 minArea 规则
1 若多边形非矩形,则遵循 specialMinArea 数值
  1. minEdgeMode 该属性用于控制最小边缘规则检查的适用范围。表 14 列出了 minEdgeMode 的有效值。

表 14 minEdgeMode 的有效值

模式 说明
0(默认值) 需存在凹角才会触发违规。当两条相邻边的长度均小于最小长度时,形成凹角图 1 展示了凸角和凹角的示例
1 若连续最小长度边的总数超过 maxNumMinEdge 指定值,或总边长超过 maxTotalMinEdgeLength,则违反最小边缘长度规则

图 1 凸角与凹角

  1. minLengthMode 该属性用于确定在应用最小长度规则时是否将过孔切口纳入考量。表 15 列出了 minLengthMode 的有效值。

表 15 minLengthMode 的有效值

模式 说明
0(默认值) 工具使用导线总长度检查最小长度规则
1 工具使用包含过孔切口的导线段检查最小长度规则
  1. parallelLengthMode 该属性用于控制基于平行长度规则的导线段合并操作。表 16 列出了 parallelLengthMode 的有效值。

    表 16 parallelLengthMode 的有效值

    模式 说明
    0(默认值) 仅与相邻宽金属图形合并导线段
    1 与所有相邻图形合并导线段
  2. stubMode 该属性用于指定何时应用短截线间距规则,而非最小间距规则。表 17 列出了 stubMode 的有效值。

    表 17 stubMode 的有效值

    模式 说明
    0(默认值) 当两个对象的平行走线距离小于或等于 stubThreshold 时,采用短截线间距
    1 当导线末端段的边缘宽度小于或等于 stubThreshold 时,采用短截线间距
    2 当宽度小于或等于 stubThreshold 的金属段,在两条相邻边或任意一条距离相邻边拐角小于 stubThreshold 的边上存在相邻金属图形时,采用短截线间距
    3 当宽度小于或等于 stubThreshold 的金属段,在三条相邻边上存在相邻金属,且在两条相邻边的 stubThreshold 范围内存在相邻金属图形时,采用短截线间距

表 17 stubMode 的有效值(续)

模式 说明
4 当宽度小于 stubThreshold 的金属段,在最小宽度范围内无连接金属,且在两条相邻边或任意一条距离相邻边拐角小于 stubThreshold 的边上存在相邻金属图形时,采用短截线间距

5. PrimaryColor 节

技术文件的 PrimaryColor 节用于定义图形用户界面(GUI)工具生成显示颜色所需的六种基础颜色。

要理解系统如何混合基础颜色生成显示颜色,需先了解计算机显示器的显色原理。

5.1 计算机显示器的显色原理

在任意色彩系统中,基础色指用于调配其他所有颜色的颜色。计算机显示器采用三基色模式,而 GUI 工具采用六基色模式。

计算机显示器上的所有颜色均由红、绿、蓝三种光混合而成。光的混色效果与颜料混色效果截然不同。在调整颜色前,需注意光的混色规律:

  • 绿色 + 红色 = 黄色
  • 绿色 + 蓝色 = 青色
  • 蓝色 + 红色 = 品红色

计算机显示器上任意一种基色的亮度范围为 0 至 255,数值 255 代表该颜色的最亮状态。

5.2 GUI 中的颜色

技术文件的 PrimaryColor 节定义六种基础颜色:两种亮度的红色(亮红 lightRed 和中红 mediumRed)、两种亮度的绿色(亮绿 lightGreen 和中绿 mediumGreen)以及两种亮度的蓝色(亮蓝 lightBlue 和中蓝 mediumBlue)。亮度值为 0 至 255 之间的整数。

GUI 工具通过混合这六种基础颜色,生成在版图窗口中显示单元时所用的显示颜色。若技术文件中未包含 PrimaryColor 节,工具将使用示例 1 所示的默认值。

示例 1 定义基础颜色

复制代码
PrimaryColor {
 lightRed = 90
 mediumRed = 180
 lightGreen = 80
 mediumGreen = 175
 lightBlue = 100
 mediumBlue = 190
}

6. Color 节

PrimaryColor 节中定义的基础颜色(或技术文件不含 PrimaryColor 节时的默认基础颜色)决定了默认显示颜色。系统共提供 64 种显示颜色,以 6 位二进制数形式存储。每一位对应一种基础颜色,对应关系如下:

以颜色编号 51 为例,其对应的二进制数为 110011,包含的基础颜色为二进制位取值为 1 所对应的颜色,即:

  • 中红
  • 亮红
  • 中蓝
  • 亮蓝

红色的两种亮度值分别为:

  • 亮红:90
  • 中红:180

两者相加的结果为 270。但由于显示器的最大亮度值为 255,因此混合亮红与中红后,显示的红色亮度为 255。

同理,颜色编号 51 中,中蓝与亮蓝的亮度值相加也超过了显示器的最大亮度限制,最终显示的蓝色亮度为 255。因此,颜色编号 51 实际显示为亮度均为 255 的红色与蓝色的混合色。

若需修改任意颜色编号对应的默认显示颜色,可在技术文件的 Color 节中定义自定义显示颜色。

显示颜色决定了工具在库中显示设计内容时所用的颜色。Layer 节通过调用显示颜色,指定各层的显示样式。

注意当两种显示颜色重叠时,最终显示的颜色为两种颜色编号执行 "或" 运算的结果。例如,颜色编号 51(二进制 110011)与颜色编号 56(二进制 111000)重叠,最终显示颜色编号为 59(二进制 111011)。

可通过在 Color 节中定义以下属性,创建自定义显示颜色:

  1. name指定颜色名称。该名称为用户自定义字符串,长度不超过 31 个字符。

  2. rgbDefined指示该颜色是否为基于 RGB 模型定义的颜色。有效值为 1(是)或 0(否)。

  3. redIntensity指定颜色的红色亮度值,有效值为 0 至 255 之间的整数。

  4. greenIntensity指定颜色的绿色亮度值,有效值为 0 至 255 之间的整数。

  5. blueIntensity指定颜色的蓝色亮度值,有效值为 0 至 255 之间的整数。

示例 2 展示了一个定义颜色编号 62(名称为 "owhite")的 Color 节。

示例 2 定义颜色

复制代码
Color 62 {
 name = "owhite"
 rgbDefined = 1
 redIntensity = 255
 greenIntensity = 255
 blueIntensity = 230
}

7. LineStyle 节

技术文件的 LineStyle 节用于定义工具在库中显示设计内容时所用的线型。Layer 节通过调用线型,确定各层的显示样式。

可通过在 LineStyle 节中定义以下属性,创建线型:

  1. name指定用于标识线型的名称。该名称为用户自定义字符串,长度不超过 15 个字符。

  2. width指定线型图案的水平尺寸,单位为像素。

  3. height指定线型图案的垂直尺寸,单位为像素。

  4. pattern定义线型图案,其中数字 1 代表使用图层分配的颜色绘制像素,数字 0 代表像素无颜色(透明)。图案需用圆括号括起。

注意 由于线型为预定义内容,技术文件中并非必须包含 LineStyle 节。

示例 3 展示了一个名为 "boundary" 的线型定义。

示例 3 指定线型

复制代码
LineStyle "boundary" {
 width = 10
 height = 1
 pattern = (1, 0, 0, 1, 1, 1, 1, 1, 0, 0)
}

8. Tile 节

Tile 节用于定义标准单元在行中放置时所用的矩形单元尺寸。

  • 在 Fusion Compiler 和 IC Compiler II 工具中:

    • 此类单元被称为站点定义(site definition)

    • 可通过 create_site_def 命令创建更多站点定义

  • 在 IC Compiler 工具中:

    • 此类单元被称为单位瓦片(unit tile)

可通过在 Tile 节中定义以下属性,创建站点定义或单位瓦片:

  1. name单位瓦片或站点定义的名称,为长度不超过 31 个字符的字符串。

  2. width单元宽度,单位为技术文件中定义的长度单位。

  3. height单元高度,单位为技术文件中定义的长度单位。

注意Fusion Compiler 和 IC Compiler II 工具采用单高度站点定义,同时适配单高度和多高度单元。因此,针对这两款工具,只需定义单高度站点定义即可。库中每个单元的高度必须为站点定义高度的整数倍(如单高度、双高度等)。

示例 4 展示了一个典型的单位瓦片定义。

示例 4 技术文件的 Tile 节

复制代码
Tile "unit" {
 width = 16
 height = 168
}

9. Layer 节

Layer 节通过指定层属性来定义金属层或过孔层。在 IC Compiler II 工具中,可通过 create_layer 命令创建更多图层。

层属性分为以下几类:

  1. **版图属性(Layout Attributes)**将版图中的物理层与显示层相关联。

  2. **显示属性(Display Attributes)**指定图层上对象的显示方式。

  3. **设计规则属性(Design Rule Attributes)**定义与图层上对象相关的特定层设计规则。

  4. **寄生参数属性(Parasitic Attributes)**定义金属层的寄生参数。

    注意 过孔层的寄生参数属性需在 ContactCode 节中定义。

  5. **物理属性(Physical Attributes)**定义图层的物理特性,在进行时序驱动布局时必须指定该属性。

以下为 Layer 节中可使用的部分属性示例:

复制代码
Layer "MET1" {
 /* 版图属性 */
 layerNumber = 8
 isDefaultLayer = 0
 isMarkerLayer = 0
 maskName = "metal1"
 pitch = 2.2
   /* 显示属性 */
 color = "blue"
 lineStyle = "solid"
 pattern = "dot"
 blink = 0
 visible = 1
 selectable = 1
 panelNumber = 0
   /* 设计规则属性 */
 maxWidth = 1.0
 minWidth = 1.0
 nonPreferredWidth = 1.0
 defaultWidth = 1.0
 xDefaultWidth = 1.0
 yDefaultWidth = 1.0
 minLength = 1.4
 maxLength = 1.4
 minArea = 1.0
 specialMinArea = 1.0
 minAreaEdgeThreshold = 1.0
 specialMinAreaTblSize = 0
 minSpacing = 1.0
 jointJointWireMinSpacing = 0
 endJointWireMinSpacing = 0
 jointEndWireMinSpacing = 0
 ... 等等 ...
   /* 寄生参数属性 */
 unitMinResistance = 0
 unitNomResistance = 0
 unitMaxResistance = 0
 unitMinCapacitance = 0
 unitNomCapacitance = 0
 unitMaxCapacitance = 0
 unitMinInductance = 0
 unitNomInductance = 0
 unitMaxInductance = 0
 unitMinSideWallCap = 0
 unitNomSideWallCap = 0
 unitMaxSideWallCap = 0
 unitMinChannelCap = 0
 unitNomChannelCap = 0
 unitMaxChannelCap = 0
 unitMinChannelSideCap = 0
 unitNomChannelSideCap = 0
 unitMaxChannelSideCap = 0
 maxCurrDensity = 0
 maxIntraCapDistRatio = 0
 maxSegLenForRC = 0
   /* 物理属性 */
 unitMinHeightFromSub = 0
 unitNomHeightFromSub = 0
 unitMaxHeightFromSub = 0
 unitMinThickness = 0
 unitNomThickness = 0
 unitMaxThickness = 0
}

9.1 版图属性

版图属性用于将版图中的物理层与显示层相关联,具体包括:

  1. layerNumber定义用于标识图层的编号。

    • 在 Fusion Compiler 和 IC Compiler II 工具中,用户自定义图层编号范围为 1--32767,无系统预定义图层编号。工具最多支持 31 个布线层。

    • 在 IC Compiler 工具中,默认图层模式下,用户自定义图层编号范围为 1--187,系统预定义图层编号范围为 188--255;扩展图层模式下,用户自定义图层编号范围为 1--4000,系统预定义图层编号范围为 4001--4095。

  2. isDefaultLayer 当存在多个具有相同 maskName 值的图层时,指定其中用于布线的默认图层。有效值为 0 或 1。同一掩膜对应的多个图层中,只能有一个被指定为默认图层。

  3. isMarkerLayer指定该图层是否为标记层。标记层上的图形被视为障碍物,且始终显示在框架视图中。有效值为 0 或 1。

  4. maskName定义与显示层相关联的物理层名称。物理实现工具可识别的标准掩膜名称包括:

    • polypolyCont
    • metal1metal2......metal31
    • cutMetal1cutMetal2......cutMetal15切割金属层与具有相同掩膜编号的金属层相对应。例如,cutMetal1 对应 metal1
    • via1via2......via30
    • nwellpwelldeepNwelldeepPwell
    • mimtopmimbottomviaMimtopviaMimbottom(详情请参考《定义 MiM 层》)
    • passivation(用于键合焊盘引脚)
    • tsv(用于硅通孔)
    • bmetal1bmetal2bmetal3(用于背面金属层)
    • bvia1bvia2(用于背面过孔)

    除上述标准掩膜名称外,也可使用任意长度不超过 31 个字符的字符串作为掩膜名称。

  5. pitch定义图层上对象中心之间的典型间距。

    注意 IC Compiler 工具中的 Milkyway 环境工具会利用指定的间距,在单位瓦片中生成导线轨迹。库数据准备完成后,不得修改 metal2 的间距,因为 Milkyway 环境工具在进行障碍物、引脚和过孔(BPV)提取时会用到该参数。

9.2 显示属性

显示属性用于指定图层上对象的显示方式。

注意也可在物理实现工具中设置图层显示属性,详情请参考《Fusion Compiler 图形用户界面用户指南》《IC Compiler II 图形用户界面用户指南》和《IC Compiler 实现用户指南》。

显示属性具体包括:

  1. color 定义用于显示图层的颜色名称或编号。有效值为 0--63 之间的任意整数,或 Color 节中定义的颜色名称。若指定的是颜色编号,则无需在 Color 节中预先定义该颜色(详情请参考《GUI 中的颜色》)。图 2 展示了标准颜色及其预定义名称。

    图 2 图层显示颜色

    具有预定义名称的颜色,可通过名称或编号两种方式引用(例如 "blue" 或 "3");无预定义名称的颜色,只能通过编号引用。

  2. lineStyle 为图层上的对象设置预定义线型。有效值为 LineStyle 节中定义的线型名称。图 3 展示了标准线型及其预定义名称。

    图 3 图层显示线型

  3. pattern 设置图层几何图形内部显示的填充图案。图 4 展示了标准填充图案及其预定义名称。

    图 4 图层显示填充图案

  4. blink设置图层是否闪烁。有效值为 1(闪烁)或 0(不闪烁)。

  5. visible设置图层的可见性。有效值为 1(可见)或 0(不可见)。

  6. selectable设置图层的可选择性。有效值为 1(可选择)或 0(不可选择)。

  7. panelNumber针对 IC Compiler 工具,指定图层所属的分组。有效值为 0--3 之间的整数,分别对应以下图层分组:

    • 0 -- 用户组 A,为用户自定义图层的默认分组
    • 1 -- 用户组 B,为用户自定义图层的备用分组
    • 2 -- 布局布线组,用于放置障碍物、布线通道等对象
    • 3 -- 系统组,为系统预定义图层分组

    该属性在 IC Compiler II 工具中不生效。

9.3 设计规则属性

Layer 节中的设计规则属性用于定义特定于该图层的设计规则,且仅对该图层生效。本节中所有测量值的单位,均为技术文件 Technology 节中指定的用户单位。

注意 层间设计规则在 DesignRule 节中定义。

Layer 节中常用的部分设计规则属性如下:

  1. adjacentCutRange用于定义相邻过孔的距离范围。

  2. checkManhattanSpacing指定进行 DRC 违规分析时采用的距离测量方式。若设为 0,采用对角线测量,实际间距(对角线距离)需满足最小间距要求;若设为 1,采用曼哈顿(直角坐标)测量,x 方向或 y 方向的间距至少需满足最小间距要求。

  3. cornerMinSpacing 两个金属图形或过孔之间的最小对角间距,该值小于 minSpacing

  4. cornerSpacingCheckManhattan指定进行对角间距分析时采用的距离测量方式。若设为 0,采用对角线测量,实际对角间距需满足最小对角间距要求;若设为 1,采用曼哈顿测量,x 方向或 y 方向的间距至少需满足最小对角间距要求。该属性仅适用于金属层。

  5. cutDataTypeTblcutNameTbl 中定义的名称列表相对应的数据类型列表。

  6. cutHeightTblcutNameTbl 中定义的名称列表相对应的切口高度列表。

  7. cutMetalExtension 切割金属图形在金属图形两侧的垂直延伸距离。切割金属图形的总高度等于金属图形的宽度加上两倍的 cutMetalExtension 值。图 5 展示了 cutMetalExtension 的测量方式。

    该属性仅适用于切割金属层,且与 cutMetalHeight 属性互斥,两者只能选择其一进行设置。

    图 5 cutMetalExtension

  8. cutMetalHeight切割金属图形的高度,如图 6 所示。

    该属性仅适用于切割金属层,且与 cutMetalExtension 属性互斥,两者只能选择其一进行设置。

    图 6 cutMetalHeight

  9. cutMetalWidth切割金属图形的宽度。该属性为切割金属层的必填属性。

  10. cutNameTbl为通用切口间距规则中不同尺寸的切口分配的名称列表。

  11. cutTblSize通用切口间距规则对应的切口表大小。

  12. cutWidthTblcutNameTbl 中定义的名称列表相对应的切口宽度列表。

  13. defaultWidth图层上对象任意维度的默认宽度。该默认宽度适用于除设计规则检查器(DRC)之外的所有操作,DRC 检查采用的是最小宽度。

  14. enclosedCutMinSpacing两个包围过孔之间的最小间距。

  15. enclosedCutNeighborRange用于定义包围过孔的相邻过孔距离范围。

  16. enclosedCutNumNeighbor定义包围过孔所需的最小相邻过孔数量。

  17. enclosedCutToNeighborMinSpacing包围过孔与其相邻过孔之间的最小间距。

  18. maxLength图层上对象(矩形或多边形)的最大长度。该规则仅适用于传统布线器,不适用于 Zroute 布线器。若该属性设为 0,则表示该图层未指定此规则,布线器将不执行相关检查。

  19. maxLengthDataTypeTbl 最大水平长度约束对应的数据类型编号列表。列表中的元素数量必须与 maxLengthTblSize 属性指定的值一致。

    注意 仅当 maskName 属性设为 metal0 时,才能指定该属性。

  20. maxLengthTblmaxLengthDataTypeTbl 中定义的数据类型列表相对应的浮点型距离值列表。列表中的元素数量必须与 maxLengthTblSize 属性指定的值一致。

    注意 仅当 maskName 属性设为 metal0 时,才能指定该属性。

  21. maxLengthTblSize最大水平长度约束数据对应的表格大小。

  22. maxNumAdjacentCut允许的最大相邻过孔数量。

  23. maxWidth 用于标识需要开槽的宽金属的宽度阈值,同时支持 signoff_drc 命令检查 slot_wire 命令的执行结果。

    注意该属性仅用于 IC Compiler 工具的宽导线开槽操作,Fusion Compiler、IC Compiler II 以及 IC Compiler 信号布线器均忽略此属性。

  24. minArea图层上任意对象的最小面积。

  25. minEdgeLength短边的长度阈值。

  26. minEnclosedArea环形导线或过孔包围区域的最小面积。

  27. minEnclosedWidth图层上包围区域任意维度的最小宽度。

  28. minLength图层上允许的最小导线长度。

  29. minSpacing图层上对象边缘之间的最小间距。

  30. minWidth图层上对象任意维度的最小宽度。

  31. onWireTrack指定导线和过孔是否放置在导线

相关推荐
@PHARAOH1 小时前
WHAT - Vercel react-best-practices 系列(四)
前端·react.js·前端框架
今天也要晒太阳4732 小时前
对el-upload的上传文件显示名做长度限制
前端
Coder_Boy_2 小时前
基于SpringAI的在线考试系统-AI智能化拓展
java·大数据·人工智能·spring boot
Thomas游戏开发2 小时前
分享一个好玩的:一次提示词让AI同时开发双引擎框架
前端·javascript·后端
n***33352 小时前
TCP/IP协议栈深度解析技术文章大纲
java·spring boot
NEXT062 小时前
别再折磨自己了!放弃 Redux 后,我用 Zustand + TS 爽到起飞
前端·react.js
lph0092 小时前
mqtt broker (mosquitto)创建服务器、订阅与发布
运维·服务器
donecoding2 小时前
Sass 模块化革命:告别 @import,拥抱 @use 和 @forward
前端·css·代码规范
m0_748252382 小时前
Angular 2 数据显示方法
前端·javascript·angular.js