当前位置: 首页 > news >正文

数字ic后端设计从入门到精通5(含fusion compiler, tcl教学)def详解


📄 DEF 文件结构详解表

语句/部分基础术语解释说明可选/必选示例
VERSION定义DEF版本指定当前 DEF 文件使用的语法版本,如 5.8、5.7 等。可选VERSION 5.8 ;
DIVIDERCHAR层次分隔符指定模块层次之间的分隔字符,默认是 /,例如 u_cpu/u_alu/adder可选DIVIDERCHAR "/" ;
BUSBITCHARS总线位号符号定义总线命名中使用的括号形式,如 [ ]{ }可选BUSBITCHARS "[]" ;
DESIGN设计名称指定当前设计的顶层模块名,必须与 RTL 中一致。必选DESIGN chip_top ;
TECHNOLOGY工艺库引用指定所用工艺库的名称,需与 LEF 文件一致。可选TECHNOLOGY tsmc28nm ;
UNITS单位定义定义数据库中的单位换算关系,通常为微米(MICRONS)或纳米(NANO)。可选UNITS DISTANCE MICRONS 1000 ;
HISTORY修改历史记录记录该 DEF 文件的生成或修改信息,常由工具自动生成。可选HISTORY "Created by Innovus on 2023-01-01" ;
PROPERTYDEFINITIONS自定义属性定义允许用户为组件、网络等定义额外属性类型。可选PROPERTYDEFINITIONS COMPONENTS LEF58_TYPE STRING ;
DIEAREA芯片边界区域定义芯片的物理边界,通常以两个对角坐标表示矩形区域。必选DIEAREA ( 0 0 ) ( 100000 100000 ) ;
ROWS标准单元行布局定义标准单元摆放的“行”位置和方向,用于放置逻辑单元。必选ROW core_row1 core_site 0 0 N DO 100 STEP 2000 0 ;
TRACKS布线轨道定义定义全局布线器使用的轨道分布(按层和方向),指导布线路径规划。必选TRACKS X 1000 DO 50 STEP 2000 ;
GCELLGRID全局布线网格定义用于全局布线的网格划分,有助于优化长线资源分配。可选GCELLGRID X 1000 DO 101 STEP 100 ;
VIAS通孔定义定义设计中使用的通孔结构,包含不同金属层之间的连接形状。可选VIA via1_wide RECT metal1 ( 0 0 10 10 ) metal2 ( 5 5 15 15 ) ;
STYLES图形样式定义定义特殊图形模板,如接触孔阵列、多边形等。可选STYLES 1 RECTANGLES ( 0 0 5 5 ) ( 10 10 15 15 ) ;
NONDEFAULTRULES非默认布线规则定义特定网络或区域的布线规则,如宽线、多通孔等。可选NONDEFAULTRULES numRules ; ... END NONDEFAULTRULES
REGIONS区域约束定义定义设计中的物理区域(如电压域、布局限制),可设为硬性(FENCE)或软性(GUIDE)约束。可选REGIONS 1 - regionA ( 0 0 ) ( 1000 1000 ) + TYPE FENCE ;
COMPONENTMASKSHIFT掩模偏移定义在多重曝光光刻中指定掩模偏移值,用于避免图案冲突。可选COMPONENTMASKSHIFT 1 ;
COMPONENTS组件定义列出所有实例化单元(标准单元、宏、填充单元等),并指定其位置和方向。必选COMPONENTS 1 INVX1 + PLACED ( 1000 1000 ) N ;
PINS引脚定义定义顶层引脚的位置、方向、电气属性及几何形状。可选PINS 1 clk + DIRECTION INPUT + LAYER metal3 ( 0 0 10 10 ) ;
PINPROPERTIES引脚属性扩展为引脚添加附加属性,如表达式、用途等。可选PINPROPERTIES 1 clk + NETEXPR "clock" ;
BLOCKAGES布局阻挡区域定义不允许放置或布线的区域,防止某些区域被占用。可选BLOCKAGES 1 LAYER metal1 RECT ( 0 0 100 100 ) ;
SLOTS金属槽定义定义金属槽(Slotted Metal),防止热应力导致金属变形。可选SLOTS 1 LAYER metal1 RECT ( 0 0 10 10 ) ;
FILLS填充单元定义定义填充单元(如 dummy metal 或 poly),满足制造密度要求。可选FILLS 1 LAYER metal1 RECT ( 0 0 50 50 ) ;
SPECIALNETS特殊网络定义定义电源、地、时钟等特殊网络及其布线方式。可选SPECIALNETS 1 VDD + ROUTED metal1 ( 0 0 1000 20 ) ;
NETS网络定义定义信号网络及其布线路径,包括线段、通孔等信息。必选NETS 1 data + ROUTED metal1 ( 100 100 200 200 ) VIA via1 ( 150 150 ) ;
SCANCHAINS扫描链定义定义 DFT(可测性设计)中的扫描链结构,用于测试目的。可选SCANCHAINS chain1 + START PIN scan_in + STOP PIN scan_out ;
GROUPS分组定义将组件按功能或区域进行分组,便于管理和约束。可选GROUPS 1 analog_blocks + COMPONENTS opamp1 opamp2 ;
BEGINEXT / ENDEXT扩展语法块提供工具自定义内容插入点,用于保留非标准语法。可选BEGINEXT my_tool + OPTION "high_speed" ;
END DESIGN结束标志表示 DEF 文件结束,并再次声明顶层模块名,确保一致性。必选END DESIGN chip_top ;

🧠 基础术语补充说明

术语含义
DEFDesign Exchange Format,一种用于集成电路物理设计的数据交换格式,主要用于从综合到布局布线的数据传递。
LEFLibrary Exchange Format,描述标准单元、宏单元的物理信息,DEF 文件需要与其配合使用。
Standard Cell标准单元,构成数字电路的基本逻辑门(如 AND、OR、FF 等)。
Macro大型模块,如 RAM、DSP、PLL 等,通常有固定的尺寸和引脚定义。
Filler Cell填充单元,在标准单元之间填充空隙,满足制造规则要求。
Track布线轨道,布线器按照这些轨道来安排信号线的走向。
Via通孔,连接不同金属层之间的导电通道。
Region区域,将某些模块限定在一个区域内,分为硬约束(Fence)和软约束(Guide)。
Special Net特殊网络,如电源(Power)、地(Ground)、时钟(Clock)等,需要特别处理。
Scan Chain扫描链,用于 DFT 测试的一种结构,把触发器串联起来以便测试。

✅ 总结一句话:

DEF 是一个描述芯片物理设计结构的标准格式,它包含了从芯片边界、标准单元、引脚、布线规则到特殊网络等完整信息,是后端流程中非常关键的中间数据文件。



📌 DEF 中的 BLOCKAGES 详解

关键字语法示例作用说明
BLOCKAGES numBlockages ;BLOCKAGES 7;声明本节中将定义的 blockage 数量。必须以数字开头,表示 blockage 总数。用于预分配内存或检查完整性。
- LAYER layerName- LAYER metal1指定该 blockage 所在的层名,如 metal1, metal2, via1 等。通常用于布线层或通孔层,限制在该层上某些图形的插入。
+ SLOTS+ SLOTS在指定层上创建槽位(block),阻止插入 slot 类型图形(如金属槽)。适用于多重曝光工艺中的槽形设计规则。
+ FILLS+ FILLS在指定层上创建填充块(block),阻止插入 fill 类型图形(如 dummy metal 或 dummy poly)。用于避免制造时的过度填充。
+ PUSHDOWN+ PUSHDOWN表示该 blockage 是从顶层推入到模块中的,常用于 hierarchical 设计中,确保子模块不会放置或布线到被父级 blockage 覆盖的区域。
+ EXCEPTPGNET+ EXCEPTPGNET表示该 blockage 不影响电源/地网络(Power/Ground)的布线,仅限制信号网络。可用于防止干扰电源网络的自动连接,比如 VDD/VSS 的绕行。
+ COMPONENT compName+ COMPONENT u_cpu将 blockage 绑定到特定组件(宏、标准单元等)上。当组件移动时,blockage 也会随之移动,用于动态约束。
+ SPACING minSpacing+ SPACING 0.2设定该 blockage 与其他形状之间的最小间距,单位为 DEF 数据库单位。此值会覆盖默认的 spacing 规则,用于特殊避让需求。
+ DESIGNRULEWIDTH effectiveWidth+ DESIGNRULEWIDTH 0.15设定 blockage 的有效宽度用于 spacing 计算。注意:不适用于 20nm 及以下工艺节点。不能与 SPACING 同时使用。
+ MASK maskNum+ MASK 1指定用于多重曝光工艺的掩膜编号(如 1、2 或 3),用于 double/triple patterning,确保不同颜色的图形不会冲突。
RECT pt ptRECT ( -300 -310 ) ( 320 330 )定义矩形区域的坐标对,格式为左下角和右上角坐标。绝对坐标,非相对坐标。用于简单 blockage 区域定义。
POLYGON pt pt pt ...POLYGON (0 0) (100 0) (100 100)定义多边形区域,至少三个点。支持 45 度角边缘。每个 POLYGON 语句定义一个封闭图形。适用于复杂形状的 blockage。
- PLACEMENT- PLACEMENT定义放置 blockage(placement blockage),限制标准单元或其他元件的放置位置。与 routing blockage 不同,它只影响 placement 阶段。
+ SOFT+ SOFT软性 blockage,初始布局阶段不可用,但后续优化阶段(如 buffer 插入)可以使用该区域。适合用于临时保留空间。
+ PARTIAL maxDensity+ PARTIAL 60.0设置局部密度上限(百分比),限制该 blockage 区域内标准单元的最大占用比例。用于缓解拥塞区域,允许部分放置。
+ COMPONENT compName {RECT pt pt}...+ COMPONENT u_pll {RECT (0 0)(100 100)}将 blockage 绑定到具体组件上,并为其指定额外的 blockage 区域。用于保护该组件周围的布线或布局空间。

🧩 使用场景分类总结

场景对应关键字说明
布线阻挡(Routing Blockage)LAYER, SLOTS, FILLS, EXCEPTPGNET控制某一层上是否允许插入特定图形,例如禁止在某个区域布线或打孔。
布局阻挡(Placement Blockage)PLACEMENT, SOFT, PARTIAL控制标准单元或宏的放置行为,软性或硬性限制。
绑定组件(Component-bound Blockage)COMPONENT, PUSHDOWNblockage 与组件绑定,随组件一起移动或复制。
多重曝光控制MASK, SLOTS, FILLS控制不同掩膜层上的图形分布,满足先进工艺要求。
间距控制SPACING, DESIGNRULEWIDTH定义 blockage 与周围图形的最小间距,用于特殊避让需求。

✅ 示例完整 BLOCKAGE 定义

BLOCKAGES 2 ;
- LAYER metal1+ SLOTS+ SPACING 0.2RECT ( 1000 1000 ) ( 2000 2000 ) ;- PLACEMENT+ PARTIAL 50.0RECT ( 3000 3000 ) ( 4000 4000 ) ;
END BLOCKAGES

上述例子中:

  • 第一个 blockage 阻止在 metal1 层插入 slot 图形,并设定间距;
  • 第二个 blockage 是一个布局 blockage,限制区域内最多只能放 50% 的标准单元。


📌 DEF 中的 COMPONENTS 详解

关键字语法示例作用说明
COMPONENTS numComps ;COMPONENTS 10;声明本节中将定义的组件总数。必须以数字开头,用于预分配内存或验证完整性。
- compName modelName- u1 INVX1定义一个组件实例 compName,它是模型 modelName 的一个实例。模型名需与 LEF 库中的单元名称一致(如标准单元、宏等)。
+ EEQMASTER macroName+ EEQMASTER RAM_A指定该组件在电气上等价于另一个已定义的宏 macroName。用于电等价替换,例如 clock buffer 或 dummy cell 替换。
+ SOURCE {NETLIST | DIST | USER | TIMING}+ SOURCE NETLIST指定组件来源类型:
NETLIST:来自网表
DIST:分布生成
USER:用户手动添加
TIMING:时序驱动插入(如 buffer)
+ FIXED pt orient+ FIXED (100 200) N表示该组件为固定状态,不能被自动布局工具移动,但可以手动调整位置。需要指定坐标 (x y) 和方向(N/S/E/W 等)。
+ COVER pt orient+ COVER (300 400) S表示该组件是“COVER”类型,通常作为硬宏的一部分,不可被任何自动或手动工具移动。常用于封装宏模块。
+ PLACED pt orient+ PLACED (500 600) W表示该组件已经放置,可被后续优化工具修改位置。需提供坐标 (x y) 和方向(N/S/E/W/NE/NW 等)。
+ UNPLACED+ UNPLACED表示该组件尚未放置,默认状态下所有组件都是 UNPLACED
+ MASKSHIFT shiftLayerMasks+ MASKSHIFT 12A3用于多重曝光工艺,指定某些层的掩膜偏移值。值为十六进制编码,每一位代表一层掩膜编号(如用于 14nm 及以下先进工艺)。
+ HALO [SOFT] left bottom right top+ HALO SOFT 100 50 100 50在组件周围创建一个 placement blockage 区域,防止其他元件靠近。单位为 DEF 数据库单位。
– 若加 SOFT,后期优化阶段可忽略此区域;
– 若不加,则始终保留避让空间。
+ ROUTEHALO haloDist minLayer maxLayer+ ROUTEHALO 200 metal1 metal5在指定范围内创建布线避让区(route halo),防止布线靠近组件。
haloDist 是距离(单位为 DEF 单位)
minLayermaxLayer 是起止金属层范围
+ WEIGHT weight+ WEIGHT 2设置组件权重,在布局优化时影响其优先级。数值越大,越倾向于先放置。可用于控制关键路径单元的布局优先级。
+ REGION regionName+ REGION REG0将组件绑定到特定区域(REGION),限制其只能放置在该区域内。区域需在 REGIONS 部分预先定义。
+ PROPERTY {propName propVal}...+ PROPERTY IS_SOFT TRUE为组件添加自定义属性,可用于后续流程中的识别或处理。例如标记某个组件是否为 soft macro、clock cell 等。

🧩 使用场景分类总结

场景对应关键字说明
组件放置状态管理FIXED, PLACED, COVER, UNPLACED控制组件在布局阶段的状态,决定其是否可以被移动。
组件来源标识SOURCE标识组件的来源,便于工具判断是否可被优化或删除。
组件等效替换EEQMASTER指定电气等效宏,用于物理替换(如 dummy cell 替换为真实 cell)。
布局约束控制HALO, REGION控制组件周围的布局避让区域和放置区域限制。
布线避让控制ROUTEHALO控制组件周围的布线避让区域,避免信号线过于靠近敏感电路。
制造工艺支持MASKSHIFT支持多重曝光工艺,确保不同颜色图形不会冲突。
优先级设置WEIGHT设置组件布局优先级,影响自动布局器的决策顺序。
元数据扩展PROPERTY添加任意自定义属性,用于流程中识别或分类组件用途。

✅ 示例完整 COMPONENT 定义

COMPONENTS 2 ;
- u_cpu cpu_top + PLACED ( 1000 1000 ) N + REGION CORE_REGION + PROPERTY IS_CRITICAL TRUE ;
- u_pll pll_module + FIXED ( 2000 2000 ) E + HALO 100 100 100 100 + ROUTEHALO 200 metal1 metal4 ;
END COMPONENTS

上述例子中:

  • u_cpu 已经放置,位于 CORE_REGION 区域内,且是一个关键组件;
  • u_pll 固定放置,周围有布局避让区和布线避让区,防止干扰 PLL 模块。


📌 DEF 中的 ROW 详解

关键字语法示例作用说明
ROW rowName siteName origX origY siteOrientROW row_0 siteA 1000 1000 N定义一个 ROW(标准单元行),指定其名称、使用的 SITE 类型、起始坐标、方向等基本信息。是 ROW 定义的开头部分。
rowNamerow_0该行的唯一标识名,用于布局工具识别和引用。通常以 row_*core_row* 命名。
siteNamesiteA引用 LEF 中定义的 SITE 名称,表示每个单元放置的位置模板。SITE 定义了尺寸、类型和方向规则。
origX origY1000 1000ROW 起始点的坐标,单位为 DEF 数据库单位(dbu)。所有后续 SITE 都从此点开始排列。
siteOrientN, S, E, W, FN, FS, FE, FWROW 中所有 SITE 的方向:
N = 北向(正常)
S = 南向(上下翻转)
E = 东向(右旋转90°)
W = 西向(左旋转90°)
FN = 镜像北向(左右翻转)
FS = 镜像南向
FE = 镜像东向
FW = 镜像西向
DO numX BY numYDO 10 BY 1定义重复 SITE 的数量:
numX 表示横向数量
numY 表示纵向数量
其中必须有一个为 1:
– 若 numY = 1 → 横向排布(水平行)
– 若 numX = 1 → 纵向排布(垂直列)
STEP stepX stepYSTEP 200 0定义 SITE 之间的间距:
stepX 为水平间距
stepY 为垂直间距
单位为 dbu。若不指定,默认使用 SITE 在 LEF 中定义的宽度或高度。
PROPERTY propName propVal+ PROPERTY IS_POWER TRUE为 ROW 添加自定义属性,需在 PROPERTYDEFINITIONS 中预先定义。可用于标记电源行、特殊用途等。

🔍 示例完整 ROW 定义

ROW ROW_1 TS05_DST -12848889 -15864240 N DO 251939 BY 1 STEP 102 0 ;

✅ 各部分含义解析:

部分含义
ROW ROW_1定义了一个名为 ROW_1 的行
TS05_DST使用的 site 类型(site type),通常在 LEF 文件中定义过,表示单元放置的基本单位
-12848889 -15864240行的起始坐标(x, y)——这个点是该行第一个 site 的位置
N方向(North),即单元从左到右水平放置,面向北(正Y方向)
其他可能值有:S(南)、E(东)、W(西)、FN(镜像北)、FS(镜像南)等
DO 251939 BY 1DO 是 “do count”,表示重复的次数
BY 1 表示只有一列(垂直方向上不重复)
所以这一行有 251939 个 site,排成一行
STEP 102 0每个 site 之间的步长(x 和 y 方向)。这里是 x 增加 102 单位,y 不变,说明这行是 水平排列

🧩 使用场景分类总结

场景对应关键字说明
标准单元行布局ROW, SITE, ORIGIN, STEP用于定义标准单元摆放的“行”结构,是数字逻辑区域的基础布局方式。
方向控制siteOrient控制整个行内所有单元的方向,用于绕开宏模块、优化布线长度等。
大规模行定义DO ... BY ...可快速生成大量标准单元的布局行,尤其适用于大芯片核心区域。
特殊属性定义PROPERTY标记某些行为电源域、测试路径、时钟区域等,便于后续流程识别和处理。

✅ 其他典型 ROW 定义示例

示例 1:垂直方向的 ROW(纵向列)

ROW col_0 siteA 0 0 E DO 1 BY 100 STEP 0 200 ;
  • 这是一个 垂直列(因为 DO 1 BY 100
  • 所有 SITE 按东方向(E)排列
  • 用于创建竖直方向的标准单元列,常见于异构设计或特定模块边界。

示例 2:带属性的 ROW

ROW power_row_0 siteB 0 10000 N DO 200 BY 1 STEP 100 0 + PROPERTY IS_POWER TRUE;
  • 定义了一个电源相关的标准单元行
  • 属性 IS_POWER 可用于后端工具识别并做特殊处理

📝 小贴士

  • SITE 是 LEF 中定义的最小放置单位,通常是标准单元的宽度。
  • STEP 通常等于 SITE 的宽度或高度,但也可以根据设计需求调整。
  • DO ... BY ... 中如果设置不当(如两个都大于1),可能导致非法 ROW 定义,工具会报错。
  • 大多数先进工艺设计中,ROW 主要用于标准单元区域;宏模块通常不通过 ROW 来定义。


📌 DEF 中的 TRACKS 详解

关键字语法示例作用说明
TRACKSTRACKS X 0 DO 20 STEP 5 LAYER M1;定义布线轨道(tracks),用于指定标准单元设计中的布线网格。是布局布线工具进行自动布线时的重要参考依据。
{X | Y}XY表示轨道方向:
X: 垂直轨道(vertical tracks),即竖直线
Y: 水平轨道(horizontal tracks),即水平线
startX 0Y 100表示第一个轨道的起始坐标(X 或 Y 轴上的位置)。例如:X 0 表示从 x=0 开始画垂直线。单位为 DEF 数据库单位(dbu)。
DO numTracksDO 20指定生成多少条轨道。不能为 0。
例如:DO 20 表示生成 20 条轨道,从起始点开始依次排列。
STEP spaceSTEP 5相邻轨道之间的间距,单位是 DEF 数据库单位(dbu)。
例如:STEP 5 表示每 5 dbu 画一条线。通常与 LEF 中定义的最小线宽/间距匹配。
MASK maskNum [SAMEMASK]MASK 2 SAMEMASK指定多重曝光工艺中使用的掩膜编号(mask number):
maskNum 是正整数,如 1、2、3
– 如果不加 SAMEMASK,则会循环使用所有掩膜(如 1, 2, 3, 1, 2…)
– 加上 SAMEMASK 后,所有轨道都使用同一个掩膜编号(与第一条轨道相同)
LAYER layerName ...LAYER M1 M2指定该轨道所使用的布线层名称(来自 LEF 文件定义)。可以指定多个层,每个层都会应用相同的轨道配置。
常用层名包括:M1, M2, …, V1, V2 等。

🔍 示例完整 TRACKS 定义

TRACKS X 0 DO 20 STEP 10 MASK 1 SAMEMASK LAYER M1 ;

✅ 各部分含义解析:

部分含义
TRACKS定义一组布线轨道
X 0轨道方向为 X(垂直线),起始于 x=0
DO 20总共生成 20 条轨道
STEP 10每条轨道间隔 10 dbu
MASK 1 SAMEMASK所有轨道都使用掩膜编号 1,不切换其他掩膜
LAYER M1仅适用于金属层 M1 上的布线轨道

🧩 使用场景分类总结

场景对应关键字说明
布线轨道定义TRACKS, X/Y, START, STEP, DO为全局布线器提供布线路径参考,确保布线符合物理规则。
多层统一轨道规划LAYER M1 M2 M3多个金属层共享同一组轨道,有助于优化长线资源分配。
多重曝光支持MASK, SAMEMASK在先进工艺(如 7nm 及以下)中,用于控制不同颜色的轨道分配,满足多重曝光规则。
电源网络专用轨道TRACKS Y ...有时为电源网络单独定义水平轨道,便于电源网络的布线。

✅ 其他典型 TRACKS 定义示例

示例 1:定义多个金属层的轨道

TRACKS Y 0 DO 25 STEP 8 LAYER M2 M3 M4;
  • 定义了在 Y 方向(水平线)上,从 y=0 开始,每隔 8 dbu 画一条线,总共 25 条轨道。
  • 应用于 M2、M3、M4 三层。

示例 2:定义垂直轨道并应用于多个层

TRACKS X 500 DO 100 STEP 20 LAYER M1 M2;
  • 从 x=500 开始,每隔 20 dbu 画一条垂直轨道,共 100 条
  • 应用于 M1 和 M2 层

📝 小贴士

  • TRACKS 是后端布局布线阶段非常关键的数据结构,直接影响自动布线器如何安排信号线走向。
  • 轨道必须覆盖整个 DIEAREA,否则可能报错或出现无法布线区域。
  • 轨道方向应与标准单元行(ROW)方向配合,以保证最优布线效率。
  • 多重曝光工艺中,建议使用 MASK + SAMEMASK 明确指定轨道所属掩膜,避免违反 DP 规则。


📌 DEF 中的 SPECIALNETS 详解

关键字语法示例作用说明
SPECIALNETS numNets ;SPECIALNETS 10;声明本节中将定义的特殊网络(special net)总数。必须以数字开头,用于预分配内存或验证完整性。
- netName- vdd_ring定义一个特殊网络名称。每个 special net 可以包含多个组件引脚或 I/O 引脚,如电源、地、时钟等。
( compName pinName )( u1 vdd ) ( u2 vdd )列出属于该 special net 的所有引脚连接。例如:标准单元实例 u1vdd 引脚连接到这个特殊网络。
+ VOLTAGE volts+ VOLTAGE 1.0指定该 net 的电压值(单位通常是伏特),用于电源网络。便于工具识别电压域、进行 IR 分析等。
specialWiringNEW metal1 50 ( 200 100 ) VIAGEN21_2 DO 10 BY 20 STEP 1000 2000 ( 200 200 )描述该特殊网络的物理布线路径,通常由“特殊布线器”手动创建或固定布线。工具不应修改这些路径。常用于电源环、主干电源网络等。
+ SOURCE {DIST | NETLIST | TIMING | USER}+ SOURCE NETLIST指定该 net 的来源类型:
NETLIST:来自原始网表
DIST:分布生成(如 filler cells, tie-high/low 等)
TIMING:时序驱动插入
USER:用户手动添加
+ FIXEDBUMP+ FIXEDBUMP表示该 net 是一个固定 Bump(凸块)网络,不能被重新分配到其他引脚。常用于 Flip-Chip 设计中的 bump net,确保 bump 不被自动优化工具移动或删除。
+ ORIGINAL netName+ ORIGINAL vdd_main指明该 net 是从哪个原始 net 分裂而来的。用于分区或层次化设计中,帮助工具理解 net 的继承关系。
+ USE {ANALOG | CLOCK | GROUND | POWER | RESET | SCAN | SIGNAL | TIEOFF}+ USE POWER指定该 net 的用途类型,影响后续工具处理方式:
POWER: 电源网络,需特殊布线规则
GROUND: 地网络
CLOCK: 时钟网络,影响时钟树综合
SCAN: 扫描链相关网络
TIEOFF: 固定电平网络(如 tie-high/tie-low)
SIGNAL: 一般信号网络
RESET: 复位网络
ANALOG: 模拟信号网络
+ PATTERN {BALANCED | STEINER | TRUNK | WIREDLOGIC}+ PATTERN BALANCED指定该 net 的布线模式:
BALANCED:最小化延迟差异(适合时钟)
STEINER:最短路径布线(默认)
TRUNK:全局布线优化
WIREDLOGIC:ECL 设计专用
+ ESTCAP wireCapacitance+ ESTCAP 0.12预估该 net 的寄生电容(单位 pF 或 fF),用于时序驱动布局。可提高时序预测准确性。
+ WEIGHT weight+ WEIGHT 5设置该 net 的权重,在布线优先级中起作用。数值越大越优先。可用于控制关键路径、电源网络等的布线优先级。
+ PROPERTY {propName propVal}...+ PROPERTY IS_POWER TRUE为 net 添加自定义属性,需在 PROPERTYDEFINITIONS 中预先定义。可用于标记某些网络的用途或特征,便于后续流程识别和处理。

🔍 示例完整 SPECIALNET 定义

SPECIALNETS 2 ;
- VDD + USE POWER + VOLTAGE 1.0 + SOURCE NETLIST( u_cpu vdd )( u_pll vdd )NEW metal1 50 ( 0 0 ) ( 1000 0 ) VIA via1 ( 500 0 ) ;- CLK + USE CLOCK + PATTERN BALANCED + WEIGHT 10( u_ff0 clk )( u_ff1 clk )NEW metal3 10 ( 0 100 ) ( 800 100 ) ;
END SPECIALNETS

✅ 各部分含义解析:

部分含义
SPECIALNETS 2 ;声明接下来要定义两个特殊网络
- VDD ...定义一个名为 VDD 的特殊网络
+ USE POWER标识为电源网络
+ VOLTAGE 1.0电压为 1.0V
+ SOURCE NETLIST来源于原始网表
( u_cpu vdd ) ...连接了两个模块的 vdd 引脚
NEW metal1 ...指定了该电源网络的物理布线路径
- CLK ...定义另一个名为 CLK 的特殊网络
+ USE CLOCK标识为时钟网络
+ PATTERN BALANCED使用平衡布线模式,减少延迟差异
+ WEIGHT 10设置较高布线优先级
NEW metal3 ...指定时钟网络的布线路径

🧩 使用场景分类总结

场景对应关键字说明
电源网络定义USE POWER, VOLTAGE, SPECIALWIRING定义电源网络(如 VDD/VSS)及其布线路径,用于电源规划、IR 分析等。
时钟网络定义USE CLOCK, PATTERN BALANCED定义时钟网络,使用平衡布线策略,确保 clock skew 最小。
扫描链网络定义USE SCAN标记扫描链相关的网络,便于 DFT 工具识别并进行测试插入。
固定凸块网络FIXEDBUMP在 Flip-Chip 设计中锁定某些 Bump 的网络连接,防止被误删或重连。
布线优先级控制WEIGHT控制某些重要网络的布线优先级,如电源、时钟等。
寄生建模支持ESTCAP提供寄生电容估计,用于更精确的时序分析和优化。

📝 小贴士

  • SPECIALNETS 主要用于描述电源、地、时钟等需要特殊处理的网络。
  • SPECIALWIRING 中的布线路径是静态指定的,通常不会被自动布线器修改。
  • USE 字段非常重要,它决定了后续工具如何处理该网络(如是否做时钟树综合、是否做 IR drop 分析等)。
  • 如果你正在做先进封装(Flip-Chip)、多电源域(Power Domain)或 Clock Tree Synthesis(CTS),SPECIALNETS 是必不可少的一部分。

Special Wiring Statement 详解

在集成电路设计中,Special Wiring Statement 是用于定义特殊布线规则和路径的重要部分。这些规则通常应用于电源网络、地网络、时钟网络等需要特别处理的信号线。下面是对 Special Wiring Statement 中各个语法元素的详细解释:


📝 关键字与语法说明

1. 固定布线类型

+ COVER
  • 含义:表示这段布线是固定的,不能被自动布局工具或手动命令移动。
  • 用途:适用于电源网络、地网络等需要固定位置的布线。
  • 示例
    + COVER metal1 50 ( 0 0 ) ( 1000 0 )
    
+ FIXED
  • 含义:表示这段布线不能被自动布局工具移动,但可以被手动调整。
  • 用途:用于某些希望保留手动布线结果的情况。
  • 示例
    + FIXED metal2 30 ( 200 200 ) ( 800 200 )
    
+ ROUTED
  • 含义:表示这段布线是自动布线的,可以被后续优化移动。
  • 用途:用于普通信号线的定义。
  • 示例
    + ROUTED metal3 20 ( 300 300 ) ( 700 300 )
    

2. 屏蔽网络

+ SHIELD shieldNetName
  • 含义:表示这段布线是为名为 shieldNetName 的屏蔽网络服务的。
  • 用途:用于屏蔽敏感信号线,防止串扰。
  • 示例
    + SHIELD vdd_shield
    

3. 布线形状

+ SHAPE shapeType
  • 含义:指定布线形状类型。
  • 可选值
    • RING: 环形布线
    • PADRING: 垫环布线
    • BLOCKRING: 区块环布线
    • STRIPE: 条带布线
    • FOLLOWPIN: 跟随引脚布线
    • IOWIRE: I/O 线布线
    • COREWIRE: 核心区域布线
    • BLOCKWIRE: 区块布线
    • BLOCKAGEWIRE: 阻塞布线
    • FILLWIRE: 填充布线
    • FILLWIREOPC: 带有 OPC(光学邻近校正)的填充布线
    • DRCFILL: DRC(设计规则检查)填充布线
  • 示例
    + SHAPE RING
    

4. 光刻掩膜编号

+ MASK maskNum
  • 含义:指定该段布线使用的光刻掩膜编号(用于多重曝光工艺)。
  • 用途maskNum 通常为 1~3。未指定则表示未上色。
  • 示例
    + MASK 2
    

5. 多边形布线区域

+ POLYGON layerName pt pt pt …
  • 含义:在指定层 layerName 上绘制一个多边形布线区域。
  • 要求:至少三个点,支持45度斜角。
  • 示例
    + POLYGON metal1 ( 0 0 ) ( 100 100 ) ( 200 0 )
    

6. 矩形布线区域

+ RECT layerName pt pt
  • 含义:在指定层 layerName 上绘制一个矩形布线区域。
  • 要求:两个对角坐标定义矩形,不可为零面积。
  • 示例
    + RECT metal2 ( 50 50 ) ( 150 150 )
    

7. 通孔插入

+ VIA viaName [orient] pt …
  • 含义:在指定坐标插入通孔 viaName,并可指定方向 orient(如 N, S, E, W)。
  • 用途:改变当前布线层到通孔连接的另一层。
  • 示例
    + VIA via1 N ( 100 100 )
    

🧩 使用场景分类总结

场景对应关键字说明
固定布线COVER, FIXED适用于电源网络、地网络等需要固定位置的布线,确保关键网络不受自动布局影响。
自动布线ROUTED用于普通信号线的定义,允许后续优化和调整。
屏蔽网络SHIELD用于保护敏感信号线,防止串扰,提高信号完整性。
复杂布线形状SHAPE定义不同类型的布线形状,满足特定设计需求,如环形、条带、跟随引脚等。
光刻掩膜控制MASK在多重曝光工艺中指定不同的掩膜编号,实现精细控制。
多边形/矩形布线POLYGON, RECT绘制复杂几何图形的布线区域,适用于特殊设计需求。
通孔管理VIA插入通孔并指定方向,实现层间连接,确保信号连续性。

📝 示例完整 Special Wiring 定义

SPECIALNETS 1 ;
- VDD + USE POWER + VOLTAGE 1.0 + SOURCE NETLIST( u_cpu vdd )( u_pll vdd )+ COVER metal1 50 ( 0 0 ) ( 1000 0 )+ SHAPE RING+ VIA via1 N ( 500 0 )NEW metal1 50 ( 0 0 ) ( 1000 0 ) VIA via1 ( 500 0 ) ;END SPECIALNETS

✅ 各部分含义解析:

部分含义
+ COVER metal1 ...定义一段固定布线,位于 metal1 层,宽度为 50,从 (0,0)(1000,0)
+ SHAPE RING指定布线形状为环形
+ VIA via1 N ...(500,0) 处插入通孔 via1,方向为北(N)
NEW metal1 ...新增一段布线,同样位于 metal1 层,宽度为 50,从 (0,0)(1000,0),并在 (500,0) 处插入通孔 via1

🧪 实践应用建议

  • 电源/地网络:使用 COVERFIXED 确保电源和地网络的稳定性,避免自动布局工具的干扰。
  • 时钟网络:结合 SHAPESTYLE 定义时钟树的布线样式,如环形 (RING) 或条带 (STRIPE)。
  • 敏感信号线:利用 SHIELD 为敏感信号线提供屏蔽,减少串扰影响。
  • 复杂几何布线:使用 POLYGONRECT 绘制复杂形状的布线区域,满足特殊设计需求。

📌 DEF 中的 NETS 详解

关键字语法示例作用说明
NETS numNets ;NETS 10;声明本节中将定义的 net 数量。必须以数字开头,用于预分配内存或验证完整性。
- netName- clk_net定义一个 net 名称。每个 net 可以包含多个组件引脚(compName pinName)或 I/O 引脚(PIN pinName)。
( compName pinName )( u1 in ) ( u2 out)列出属于该 net 的所有引脚连接。例如:标准单元实例 u1in 引脚连接到这个 net。
MUSTJOIN ( compName pinName )MUSTJOIN ( ram_a data_in )用于定义“必须连接”的引脚组。这些引脚必须连在一起,系统会自动生成对应的 net 名称。通常在 LEF 中已定义,常用于宏模块接口。
+ SHIELDNET shieldNetName+ SHIELDNET vdd_ring指定该 net 被另一个特殊 net(如电源)屏蔽,用于减少串扰干扰。shieldNetName 必须已在 SPECIALNETS 中定义。
+ VPIN vpinName [LAYER layerName] pt pt<br>[PLACED pt orient | FIXED pt orient | COVER pt orient]+ VPIN vpin_1 LAYER M2 (100 200) (150 250) FIXED (300 400) N定义虚拟引脚(virtual pin),用于连接非标准逻辑单元(如 bump、pad、bonding wire 等)。可以指定位置和方向。
+ SUBNET subnetName<br>[ ( {compName pinName | PIN pinName | VPIN vpinName} ) ] ...<br>[NONDEFAULTRULE rulename]<br>[regularWiring] ...+ SUBNET sub_clk ( u1 clk ) ( u2 clk ) + NONDEFAULTRULE clock_rule + ROUTED M2 (100 200) (300 200)定义子网(subnet),用于将 net 划分为更小的路由区域。可指定非默认布线规则和具体布线路径。适用于复杂网络拓扑管理。
+ XTALK class+ XTALK high指定该 net 的串扰等级(class),用于分析或优化。值由用户定义,如 low, medium, high。用于 ECO 或时序修复流程。
+ NONDEFAULTRULE ruleName+ NONDEFAULTRULE clock_ndr指定使用非默认布线规则(Non-Default Rule),常用于时钟、电源等特殊网络。规则在 LEF 中定义。
+ SOURCE {DIST | NETLIST | TEST | TIMING | USER}+ SOURCE NETLIST指定 net 的来源类型:
NETLIST: 来自原始网表
DIST: 分布生成(如 filler cells)
TEST: 测试插入
TIMING: 时序驱动插入
USER: 用户手动添加
+ FIXEDBUMP+ FIXEDBUMP表示该 net 是一个固定 Bump(凸块)网络,不能被重新分配到其他引脚。常用于 Flip-Chip 设计中的 bump net。
+ FREQUENCY frequency+ FREQUENCY 100e6指定该 net 的频率(单位 Hz),用于 AC 电流密度检查或 via 数量选择。适用于高频信号线。
+ ORIGINAL netName+ ORIGINAL clk_div指明该 net 是从哪个原始 net 分裂而来的。用于分区或层次化设计中,帮助工具理解 net 的继承关系。
+ USE {ANALOG | CLOCK | GROUND | POWER | RESET | SCAN | SIGNAL | TIEOFF}+ USE CLOCK指定该 net 的用途类型,影响后续工具处理方式:
POWER: 电源网络,需特殊布线规则
GROUND: 地网络
CLOCK: 时钟网络,影响时钟树综合
SCAN: 扫描链相关网络
TIEOFF: 固定电平网络(如 tie-high/tie-low)
SIGNAL: 一般信号网络
RESET: 复位网络
ANALOG: 模拟信号网络
+ PATTERN {BALANCED | STEINER | TRUNK | WIREDLOGIC}+ PATTERN BALANCED指定该 net 的布线模式:
BALANCED: 最小化延迟差异(适合时钟)
STEINER: 最短路径布线(默认)
TRUNK: 全局布线优化
WIREDLOGIC: ECL 设计专用
+ ESTCAP wireCapacitance+ ESTCAP 0.12预估该 net 的寄生电容(单位 pF 或 fF),用于时序驱动布局。提高时序预测准确性。
+ WEIGHT weight+ WEIGHT 5设置该 net 的权重,在布线优先级中起作用。数值越大越优先。可用于控制关键路径、电源网络等的布线优先级。
+ PROPERTY {propName propVal}...+ PROPERTY IS_CLOCK TRUE为 net 添加自定义属性,需在 PROPERTYDEFINITIONS 中预先定义。可用于标记某些网络的用途或特征,便于后续流程识别和处理。

🔍 示例完整 NET 定义

NETS 2 ;
- CLK + USE CLOCK + PATTERN BALANCED + WEIGHT 10( u_ff0 clk )( u_ff1 clk )+ NONDEFAULTRULE clock_ndr+ ESTCAP 0.08 ;- DATA_BUS + USE SIGNAL + XTALK medium( u_cpu data[0] )( u_ram data_in )+ SUBNET data_subnet( u_mux0 out )( u_reg0 in )+ ROUTED M2 ( 0 0 ) ( 500 0 ) ;
END NETS

✅ 各部分含义解析:

部分含义
NETS 2 ;声明接下来要定义两个普通网络
- CLK ...定义一个名为 CLK 的时钟网络
+ USE CLOCK标识为时钟网络
+ PATTERN BALANCED使用平衡布线模式,减少延迟差异
+ WEIGHT 10设置较高布线优先级
( u_ff0 clk ) ...连接了两个触发器的 clk 引脚
+ NONDEFAULTRULE clock_ndr使用自定义的非默认布线规则
+ ESTCAP 0.08设置预估寄生电容
- DATA_BUS ...定义另一个名为 DATA_BUS 的普通信号网络
+ USE SIGNAL标识为一般信号网络
+ XTALK medium设置中等串扰等级
+ SUBNET data_subnet ...定义子网并指定布线路径

🧩 使用场景分类总结

场景对应关键字说明
时钟网络定义USE CLOCK, PATTERN BALANCED定义时钟网络,使用平衡布线策略,确保 clock skew 最小。
电源/地网络引用SHIELDNET引用电源网络作为屏蔽层,减少敏感信号线的串扰。
虚拟引脚定义VPIN用于封装设计中的 bump、pad、bonding wire 等非标准逻辑单元连接。
子网划分SUBNET将大型网络拆分成子网,便于局部布线优化和规则应用。
布线优先级控制WEIGHT控制某些重要网络的布线优先级,如时钟、关键路径等。
寄生建模支持ESTCAP提供寄生电容估计,用于更精确的时序分析和优化。
非默认布线规则NONDEFAULTRULE应用于特定网络(如时钟、电源),使用 LEF 中定义的高级布线规则。
串扰分析与优化XTALK根据设定的串扰等级,辅助 ECO 或时序修复流程。

📝 小贴士

  • NETS 主要用于描述普通信号网络的连接关系和布线约束。
  • USE 字段非常重要,它决定了后续工具如何处理该网络(如是否做时钟树综合、是否做 IR drop 分析等)。
  • 如果你正在做先进封装(Flip-Chip)、多电源域(Power Domain)或 Clock Tree Synthesis(CTS),NETS 是必不可少的一部分。


📌 DEF 中的 PINS 详解

关键字是否必须描述示例
- pinName✅ 必须引脚名称- clk
+ NET netName✅ 必须引脚连接的内部网络名+ NET vdd
+ SPECIAL❌ 可选表示这是一个特殊引脚(如电源、时钟等)+ SPECIAL
+ DIRECTION {INPUT | OUTPUT | INOUT | FEEDTHRU}❌ 可选引脚方向:
INPUT: 输入
OUTPUT: 输出
INOUT: 双向
FEEDTHRU: 穿通引脚(仅用于模块定义)
+ DIRECTION INPUT
+ NETEXPR "netExprPropName defaultNetName"❌ 可选网络表达式属性,用于动态网络命名或默认网络指定+ NETEXPR "clock" "clk"
+ SUPPLYSENSITIVITY powerPinName❌ 可选敏感于某个电源引脚,表示该引脚依赖于特定电源+ SUPPLYSENSITIVITY vdd_pin
+ GROUNDSENSITIVITY groundPinName❌ 可选敏感于某个地引脚,表示该引脚依赖于特定地+ GROUNDSENSITIVITY gnd_pin
+ USE {SIGNAL | POWER | GROUND | CLOCK | TIEOFF | ANALOG | SCAN | RESET}❌ 可选引脚用途类型,影响后续工具处理方式:
POWER: 电源引脚
GROUND: 地引脚
CLOCK: 时钟引脚
TIEOFF: 固定电平信号
SIGNAL: 一般信号引脚
ANALOG: 模拟信号引脚
SCAN: 扫描链引脚
RESET: 复位引脚
+ USE POWER
+ ANTENNAMODEL {OXIDE1 | OXIDE2 | OXIDE3 | OXIDE4}❌ 可选天线模型类型,用于天线效应分析与修复+ ANTENNAMODEL OXIDE2
+ ANTENNAPINGATEAREA value [LAYER layerName]❌ 可选引脚连接的栅极面积,用于天线规则检查+ ANTENNAPINGATEAREA 1000 LAYER m1
+ ANTENNAPINPARTIALMETALAREA value [LAYER layerName]❌ 可选引脚连接的部分金属面积,用于天线效应分析+ ANTENNAPINPARTIALMETALAREA 500 LAYER m2
+ ANTENNAPINDIFFAREA value [LAYER layerName]❌ 可选扩散区面积,用于天线规则计算+ ANTENNAPINDIFFAREA 300 LAYER m1
+ ANTENNAPINMAXAREACAR value LAYER layerName❌ 可选最大累积天线比(基于金属面积),用于天线效应控制+ ANTENNAPINMAXAREACAR 200 LAYER m1
+ ANTENNAPINMAXSIDEAREACAR value LAYER layerName❌ 可选基于侧壁面积的最大 CAR(Cumulative Antenna Ratio)+ ANTENNAPINMAXSIDEAREACAR 150 LAYER m1
+ ANTENNAPINMAXCUTCAR value LAYER layerName❌ 可选基于通孔面积的最大 CAR,用于天线效应优化+ ANTENNAPINMAXCUTCAR 180 LAYER via1
+ PORT❌ 可选定义该引脚的多个端口形状,用于物理描述(如 I/O pad 的多层覆盖)+ PORT ...
+ LAYER layerName [MASK maskNum] [SPACING minSpacing | DESIGNRULEWIDTH effectiveWidth] pt pt❌ 可选定义金属层,用于描述引脚的物理布局+ LAYER metal3 (0 0) (10 10)
+ POLYGON layerName [MASK maskNum] pt pt pt ...❌ 可选定义多边形形状,用于复杂几何图形+ POLYGON metal3 (0 0 10 0 10 10 0 10)
+ VIA viaName [MASK viaMaskNum] pt❌ 可选定义通孔形状,用于连接不同金属层+ VIA via1 (100 100)
+ COVER pt orient❌ 可选引脚固定位置且不可被移动,常用于电源/地引脚锁定+ COVER (100 200) N
+ FIXED pt orient❌ 可选引脚固定位置但可交互修改,适用于手动布线结果保留+ FIXED (100 200) S
+ PLACED pt orient❌ 可选引脚已放置位置,表示该引脚已经过自动或手动摆放+ PLACED (100 200) E

🔍 示例完整 PIN 定义

PINS 3 ;
- CLK + NET clk_in + DIRECTION INPUT + USE CLOCK + PLACED ( 100 200 ) E
- VDD + NET vdd + DIRECTION INOUT + USE POWER + SPECIAL + COVER ( 0 0 ) N+ LAYER M1 ( -50 -50 ) ( 50 50 )
- GND + NET gnd + DIRECTION INOUT + USE GROUND + SPECIAL + COVER ( 0 0 ) S+ LAYER M1 ( -50 -50 ) ( 50 50 )
END PINS

✅ 各部分含义解析:

部分含义
- CLK ...定义一个名为 CLK 的输入引脚,连接到 clk_in 网络
+ DIRECTION INPUT设置为输入方向
+ USE CLOCK标识为时钟引脚
+ PLACED ( 100 200 ) E已放置在 (100, 200),方向为东
- VDD ...定义一个电源引脚,连接到 vdd 网络
+ USE POWER标识为电源引脚
+ SPECIAL特殊引脚,通常用于电源/地
+ COVER ...位置固定,不能移动
+ LAYER M1 ...使用 M1 层绘制物理区域
- GND ...定义一个地引脚,连接到 gnd 网络

🧩 使用场景分类总结

场景对应关键字说明
标准引脚定义pinName, NET, DIRECTION, USE用于定义基本的输入输出引脚,适用于大多数数字逻辑单元。
电源/地引脚USE POWER/GROUND, SPECIAL, COVER定义固定电源/地引脚,防止被自动工具移动。
天线规则支持ANTENNAMODEL, ANTENNAPINGATEAREA, ANTENNAPINMAXAREACAR用于先进工艺下的天线效应分析与修复,确保制造可靠性。
I/O Pad 引脚定义PORT, LAYER, POLYGON, VIA定义复杂的 I/O 引脚结构,包括多层金属、通孔等。
时钟引脚USE CLOCK, PLACED/FIXED用于定义关键时钟路径,通常需要精确放置并避免干扰。
复用引脚配置NETEXPR动态指定网络名,便于支持多模式或多配置设计。
电源敏感性定义SUPPLYSENSITIVITY, GROUNDSENSITIVITY用于模拟电路或低功耗设计中,表示某些引脚依赖于特定电源/地。

📝 小贴士

  • PINS 是芯片级或模块级接口定义的关键部分,直接影响顶层布线、封装设计和测试流程。
  • USE 字段非常重要,它决定了后续工具如何处理该引脚(如是否做时钟树综合、是否做 IR drop 分析等)。
  • 如果你正在做先进封装(Flip-Chip)、多电源域(Power Domain)或 Clock Tree Synthesis(CTS),PINS 是必不可少的一部分。


📌 DEF 中的 SCANCHAINS 详解

关键字是否必须描述示例
- chainName✅ 必须扫描链的名称- chain1_clock1
+ PARTITION partitionName❌ 可选定义该链所属的分区组,用于链间兼容性判断(如时钟域一致)+ PARTITION clock1
+ MAXBITS maxbits❌ 可选(若使用 PARTITION 则推荐设置)设置该链在分区内的最大比特数限制,防止扫描链过长MAXBITS 1000
+ COMMONSCANPINS ( IN pin ) ( OUT pin )❌ 可选定义所有组件共用的扫描入/出引脚,简化链定义+ COMMONSCANPINS (IN SI) (OUT SO)
+ START {fixedInComp | PIN} [outPin]✅ 必须定义扫描链的起点,可以是组件或 I/O 引脚+ START block1/reg_0 Q
+ STOP {fixedOutComp | PIN} [inPin]✅ 必须定义扫描链的终点+ STOP block1/reg_end SD
+ FLOATING {floatingComp [( IN pin )] [( OUT pin )] [( BITS numBits )]}❌ 可选定义浮动组件列表,工具可自由排序其顺序block1/regA (IN SD) (OUT QZ)
+ ORDERED {fixedComp [( IN pin )] [( OUT pin )] [( BITS numBits )]}❌ 可选定义有序组件列表,顺序不可改变block1/mux1 (IN A) (OUT X)
( IN pin )❌ 可选组件上的扫描输入引脚(IN SD)
( OUT pin )❌ 可选组件上的扫描输出引脚(OUT QZ)
( BITS numBits )❌ 可选组件的位宽(如寄存器数组为4位)(BITS 4)

🔍 示例完整 SCANCHAIN 定义

SCANCHAINS 2 ;
- scan_chain_cpu+ COMMONSCANPINS (IN SI) (OUT SO)+ START PIN SI+ STOP PIN SO+ ORDERED {cpu_reg0 (IN SD) (OUT Q),cpu_reg1 (IN Q) (OUT Q),cpu_reg2 (IN Q) (OUT Q)}+ FLOATING {cpu_mux0 (IN A) (OUT Z),cpu_latch0 (IN D) (OUT Q)}- scan_chain_dma+ PARTITION clock_dma+ MAXBITS 512+ START dma_reg0 Q+ STOP dma_reg_end SD+ ORDERED {dma_reg0 (IN SD) (OUT Q),dma_reg1 (IN Q) (OUT Q)}
END SCANCHAINS

✅ 各部分含义解析:

部分含义
- scan_chain_cpu ...定义一个名为 scan_chain_cpu 的扫描链
+ COMMONSCANPINS ...使用统一的扫描入(SI)和扫描出(SO)引脚
+ START PIN SI起始点为芯片级输入引脚 SI
+ STOP PIN SO结束点为芯片级输出引脚 SO
+ ORDERED { ... }定义一组顺序固定的寄存器
+ FLOATING { ... }定义一组工具可自由排序的组件(如 multiplexer、latch 等)
- scan_chain_dma ...定义另一个名为 scan_chain_dma 的扫描链
+ PARTITION clock_dma归属于 clock_dma 分区,确保时钟一致性
+ MAXBITS 512最大允许 512 个扫描位
+ START dma_reg0 Q起始于模块 dma_reg0Q 输出端
+ STOP dma_reg_end SD结束于模块 dma_reg_endSD 输入端

🧩 使用场景分类总结

场景对应关键字说明
基本扫描链定义START, STOP, ORDERED, FLOATING定义扫描链的起止点与内部组件连接关系,适用于大多数数字逻辑单元。
共享扫描引脚COMMONSCANPINS用于减少引脚数量,多个寄存器共享统一的扫描入/出引脚。
扫描链分区管理PARTITION, MAXBITS用于将不同时钟域或功能块的扫描链隔离管理,便于测试调度和优化。
固定顺序扫描链ORDERED某些设计要求扫描顺序不能被自动调整,例如带反馈路径的设计。
浮动顺序扫描链FLOATING允许工具根据布局布线情况进行优化排序,提升物理实现效率。
扫描链长度控制MAXBITS控制单条扫描链的最大位数,避免测试时间过长或功耗过高。

📝 小贴士

  • SCANCHAINSDFT(Design for Testability) 流程中的核心内容之一。
  • 合理划分扫描链结构,有助于:
    • 缩短测试时间
    • 减少测试向量复杂度
    • 提高故障覆盖率
    • 降低功耗
  • 如果你正在做 Scan Insertion、ATPG(自动测试模式生成) 或 Scan ReorderingSCANCHAINS 的定义至关重要。
  • 在先进工艺节点中,扫描链的长度、分区、电源域匹配等都需要严格控制。

http://www.xdnf.cn/news/656785.html

相关文章:

  • 什么是BFC,如何触发BFC,BFC有什么特性?
  • Linux系统平均负载与top、uptime命令详解
  • 液体散货装卸管理人员备考指南
  • 对话魔数智擎CEO柴磊:昇腾AI赋能,大小模型融合开启金融风控新范式
  • 【区间dp】-----例题4【凸多边形的划分】
  • python_入门基础语法(2)
  • OpenHarmony平台驱动使用(二),CLOCK
  • 2.BS版使用说明
  • leetcode700.二叉搜索树中的搜索:迭代法下二叉搜索树性质的高效应用
  • 阿里云国际版注册邮箱格式详解
  • ⭐️⭐️⭐️ 模拟题及答案 ⭐️⭐️⭐️ 大模型Clouder认证:RAG应用构建及优化
  • leetcode 3559. Number of Ways to Assign Edge Weights II
  • Leetcode 3557. Find Maximum Number of Non Intersecting Substrings
  • OpenGL: Transform知识
  • 8.1.2 商品信息动态网站 - JSP+Servlet实现动态网站
  • 基于DDD的企业团餐订餐平台微服务架构设计与实现
  • 使用 Cannonballs 进行实用导体粗糙度建模
  • IP动态伪装开关
  • C#实现SSE通信方式的MCP Server
  • 十三: 神经网络的学习
  • 集星云推短视频矩阵系统的定制化与私有化部署方案
  • 将YOLO格式的数据集转换为mmdetection格式
  • 【密码学——基础理论与应用】李子臣编著 第十三章 数字签名 课后习题
  • 数据保护在Web3应用中的重要性及其实现
  • vue+ThreeJs 创建过渡圆圈效果
  • 行为型:状态模式
  • SmartSoftHelp 图片资源技术保护可执行添加水印方案---深度优化版:SmartSoftHelp DeepCore XSuite
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit(4)
  • 第二十章:数据治理之数据指标(二):数据指标和数据指标体系
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(29):ので