4. 输入文件准备
StarRC 作为业界领先的寄生参数提取工具,其输入数据的完整性与规范性直接决定了提取结果的准确性和签核(Sign-off)的可信度。在实际工程中,因输入文件格式错误、版本不匹配或数据缺失导致的提取失败或精度偏差,占据了所有 StarRC 问题的一半以上。本章将系统梳理 StarRC 所需的四类核心输入文件——版图文件、工艺文件、约束文件与网表文件,深入解析其标准格式、准备流程、关键校验点及常见工程误区,帮助您建立一套稳健、可复用的输入数据准备方法论。
上图展示了 StarRC 提取流程中四类输入文件的角色与数据流向。版图文件提供物理几何信息,工艺文件提供制造参数,约束文件定义提取边界与精度要求,网表文件则提供逻辑连接关系。四者缺一不可,且必须保持高度一致,任何一处的偏差都可能导致提取结果失真。下面我们将逐一深入剖析每种文件的格式规范与准备要点。
4.1 版图文件(GDS/OASIS):物理几何的基石
核心原理:版图文件是芯片物理设计的最终表达,包含了所有掩膜层的几何图形、器件层次和单元摆放信息。StarRC 通过解析版图文件中的多边形、路径和文本标签,结合工艺文件中的层次映射关系,重建三维寄生结构。GDSII(Graphic Data System II)是传统标准,采用二进制流格式,以 16 位或 32 位整数存储坐标;OASIS(Open Artwork System Interchange Standard)是新一代压缩格式,文件体积更小、解析速度更快,支持更复杂的数据类型。
准备方法与操作流程:
- 数据导出:从版图编辑工具(如 Virtuoso Layout Suite、ICV)或物理验证平台导出最终版图。导出时需确认以下选项:
- 导出格式:优先选择 GDSII 或 OASIS,避免使用中间转换格式。
- 层次完整性:确保所有需要提取的金属层、通孔层、器件层均包含在内。
- 坐标精度:GDS 数据库单位建议设为 0.001μm 或 0.0005μm,避免坐标舍入误差。
- 层次映射表(Layer Map):创建 GDS 层次号与工艺文件层次名的映射文件(如
layermap.map)。该文件是 StarRC 识别版图层次的关键,格式示例如下:# GDS层号 GDS数据类型 工艺层次名 metal1 0 M1 metal2 0 M2 via1 0 V1 poly 0 POLY1 - 版图验证:在运行 StarRC 前,使用
gds2itf或gdscheck工具检查版图文件完整性,确认无缺失层次、无孤立图形、无非法多边形。
| 检查项 | GDSII | OASIS | 推荐选择 |
|---|---|---|---|
| 文件大小 | 较大(未压缩) | 较小(压缩率约 30%-50%) | OASIS(大设计) |
| 解析速度 | 较慢 | 较快 | OASIS |
| 兼容性 | 所有工具支持 | 主流工具支持 | GDSII(保守) |
| 数据精度 | 整数坐标 | 支持实数坐标 | OASIS(高精度) |
4.2 工艺文件(ITF/ICT):物理参数的权威来源
核心原理:工艺文件定义了芯片制造过程中的层叠结构、材料特性(介电常数、电阻率)、几何尺寸(厚度、宽度)以及通孔接触电阻等参数。StarRC 使用两种工艺文件格式:ITF(Interconnect Technology Format)和 ICT(Interconnect Capacitance Table)。ITF 是文本格式,可读性强,适合调试;ICT 是二进制格式,解析速度快,适合大规模量产。两者均需由晶圆厂(Foundry)提供或由设计公司根据工艺设计套件(PDK)生成。
关键内容与准备要点:
- 层叠定义(Stackup):包括每层金属的厚度、宽度、间距、介电层厚度和介电常数(k值)。低k材料的k值通常为 2.5-3.5,传统氧化硅为 3.9-4.2。
- 通孔模型:定义通孔阵列的尺寸、电阻和电容贡献。对于 7nm 及以下节点,通孔电阻对时序影响显著,需精确建模。
- 边缘效应参数:包括金属线宽变化(CD bias)、金属厚度变化、介电层厚度变化等工艺波动参数,用于角分析(Corner Analysis)。
操作流程:
- 从晶圆厂获取官方 ITF/ICT 文件,或使用 PDK 中的
itf_gen脚本生成。 - 使用
itfcheck工具验证工艺文件语法和物理合理性(如厚度为正、k值在合理范围)。 - 将 ITF 编译为 TLU+ 模型(使用
starrc_tluplus命令),TLU+ 是 StarRC 内部使用的二进制工艺模型,提取速度更快。
-tlu_plus 选项指定。例如:
starrc -tlu_plus tluplus_tt.tluplus -itf itf_tt.itf ...
4.3 约束文件(SDC):提取边界的定义者
核心原理:SDC(Synopsys Design Constraints)文件定义了设计的时序约束,包括时钟定义、输入/输出延迟、虚假路径(False Path)和多周期路径(Multi-cycle Path)。在寄生提取中,SDC 文件主要用于以下目的:定义提取的顶层端口、识别时钟网络以进行特殊提取(如时钟树提取)、以及控制提取的精度模式(如对关键路径使用更精细的提取模式)。
准备方法与关键命令:
- 时钟定义:使用
create_clock命令定义时钟周期和波形。StarRC 会根据时钟定义识别时钟网络,并对其采用更严格的提取精度。 - 端口定义:使用
set_input_delay和set_output_delay定义端口时序,帮助 StarRC 确定哪些网络需要完整提取,哪些可以简化。 - 提取边界:通过
set_dont_touch_network或set_ideal_network指定不需要提取的网络(如测试时钟、复位信号),减少提取时间和内存消耗。
# 示例 SDC 片段
create_clock -name clk -period 2.0 [get_ports clk]
set_input_delay 0.5 -clock clk [get_ports data_in]
set_dont_touch_network [get_nets scan_enable]
check_sdc 工具验证 SDC 的完整性和一致性。
4.4 网表文件(SPEF/Verilog):逻辑连接的桥梁
核心原理:网表文件描述了设计中实例(Instance)、网络(Net)和引脚(Pin)的连接关系。StarRC 需要网表来建立版图图形与逻辑器件之间的映射关系,从而将提取的寄生参数正确关联到每个网络和实例上。Verilog 网表提供逻辑连接信息,SPEF(Standard Parasitic Exchange Format)则用于输出提取结果,但也可作为输入用于增量提取或 ECO 场景。
准备方法与格式要求:
- Verilog 网表:必须为门级网表(Gate-level Netlist),包含所有标准单元和宏单元的实例化。格式要求:
- 使用
module定义顶层,端口列表与版图顶层一致。 - 所有实例必须有唯一的例化名(Instance Name)。
- 避免使用行为级描述(如
assign语句),应全部为单元例化。
- 使用
- SPEF 文件:作为输入时,通常用于 ECO 场景或混合提取模式。SPEF 格式包含
D_NET或R_NET定义,需确保网络命名与 Verilog 网表一致。 - 映射文件:创建单元映射文件(Mapping File),将版图中的几何单元与网表中的逻辑单元对应。对于标准单元设计,通常使用 LVS 生成的映射文件。
| 文件类型 | 格式 | 主要用途 | 准备工具 |
|---|---|---|---|
| Verilog 网表 | 文本 | 逻辑连接定义 | 综合工具、LVS 工具 |
| SPEF | 文本 | 寄生参数交换 | StarRC 输出、其他 EDA 工具 |
| 映射文件 | 文本 | 几何-逻辑映射 | Calibre LVS、ICV |
4.5 案例拆解:28nm 芯片提取输入准备实战
背景与目标:某通信芯片项目采用 28nm HPC 工艺,规模约 500 万实例,工作频率 1.2GHz。需要在签核前完成全芯片寄生提取,并确保提取结果与实测时序偏差小于 3%。
初始现象与约束:项目初期使用 PV 后的 GDS 文件直接提取,发现关键路径时序报告与预期偏差达 8%。经排查,问题源于 PV 流程添加的金属填充(Metal Fill)导致耦合电容显著增加。
分析判断过程:
- 对比 PV 前后版图差异,确认填充密度约 15%,主要分布在 M3-M5 层。
- 使用 StarRC 的
-fill_mode选项,选择fill_aware模式,该模式可自动识别填充图形并排除在耦合电容计算之外。 - 同时检查工艺文件,发现 ITF 中 M5 层介电常数使用了典型值,但实际工艺角为 SS(慢-慢),需更换为 SS 角 TLU+ 模型。
实际操作步骤:
# 1. 生成 SS 角 TLU+ 模型
starrc_tluplus -itf itf_ss.itf -tlu_plus tluplus_ss.tluplus
# 2. 运行 StarRC 提取(使用填充感知模式)
starrc -tlu_plus tluplus_ss.tluplus \
-gds layout.gds -layer_map layermap.map \
-netlist top.v -mapping cellmap.map \
-sdc top.sdc -fill_mode fill_aware \
-output top.spef
结果对比与复盘:调整后,关键路径时序偏差降至 2.1%,满足签核要求。复盘经验:输入文件的准备不是简单的文件收集,而是需要结合工艺角、版图状态和设计约束进行综合判断。建议建立输入文件清单(Checklist),逐项确认版本、工艺角、填充状态等关键属性。
4.6 常见误区与总结复盘
误区一:忽视层次映射表的完整性。层次映射表遗漏某一金属层,会导致该层网络完全无法提取,且错误难以察觉。建议使用 gdscheck 工具自动比对 GDS 中实际存在的层次与映射表中的层次,生成差异报告。
误区二:ITF 文件与 PDK 版本不匹配。晶圆厂更新 PDK 后,ITF 文件中的介电常数或厚度参数可能变化。使用旧版 ITF 提取新工艺设计,会产生系统性偏差。每次 PDK 更新后,必须重新生成并验证 TLU+ 模型。
误区三:SDC 文件未同步更新。布局布线阶段可能修改了时钟树或约束,但提取时仍使用旧版 SDC,导致时钟网络提取精度不足。建议在提取前,从时序收敛工具(如 PrimeTime)导出最终 SDC。
误区四:网表与版图不一致。LVS 未完全干净时,网表中的某些实例在版图中不存在,或版图中有额外图形。StarRC 会报错或忽略不匹配部分,导致提取结果不完整。务必确保 LVS 完全通过后再进行提取。
总结:输入文件的准备是 StarRC 提取流程中最耗时但最关键的环节。建议建立标准化的输入文件检查流程,包括格式验证、版本核对、内容一致性检查三个层次。通过自动化脚本(如 Perl/Python)实现文件清单的自动校验,可显著降低人为错误风险。同时,保持与晶圆厂和 PDK 的同步更新,是确保提取精度的长期保障。