4. 输入文件准备

StarRC 作为业界领先的寄生参数提取工具,其输入数据的完整性与规范性直接决定了提取结果的准确性和签核(Sign-off)的可信度。在实际工程中,因输入文件格式错误、版本不匹配或数据缺失导致的提取失败或精度偏差,占据了所有 StarRC 问题的一半以上。本章将系统梳理 StarRC 所需的四类核心输入文件——版图文件、工艺文件、约束文件与网表文件,深入解析其标准格式、准备流程、关键校验点及常见工程误区,帮助您建立一套稳健、可复用的输入数据准备方法论。

StarRC 输入文件准备与数据流关系 版图文件 GDSII / OASIS 几何图形 + 层次 工艺文件 ITF / ICT 层叠 + 介电常数 + 厚度 约束文件 SDC 时钟定义 + 时序约束 网表文件 SPEF / Verilog 连接关系 + 实例 StarRC 提取引擎 TLU+ 模型生成 → 寄生提取 → SPEF 输出 输出 SPEF / DSPF 用于时序签核 / 功耗分析 几何数据 时序约束 版图 工艺 约束 网表

上图展示了 StarRC 提取流程中四类输入文件的角色与数据流向。版图文件提供物理几何信息,工艺文件提供制造参数,约束文件定义提取边界与精度要求,网表文件则提供逻辑连接关系。四者缺一不可,且必须保持高度一致,任何一处的偏差都可能导致提取结果失真。下面我们将逐一深入剖析每种文件的格式规范与准备要点。

4.1 版图文件(GDS/OASIS):物理几何的基石

核心原理:版图文件是芯片物理设计的最终表达,包含了所有掩膜层的几何图形、器件层次和单元摆放信息。StarRC 通过解析版图文件中的多边形、路径和文本标签,结合工艺文件中的层次映射关系,重建三维寄生结构。GDSII(Graphic Data System II)是传统标准,采用二进制流格式,以 16 位或 32 位整数存储坐标;OASIS(Open Artwork System Interchange Standard)是新一代压缩格式,文件体积更小、解析速度更快,支持更复杂的数据类型。

准备方法与操作流程:

  1. 数据导出:从版图编辑工具(如 Virtuoso Layout Suite、ICV)或物理验证平台导出最终版图。导出时需确认以下选项:
    • 导出格式:优先选择 GDSII 或 OASIS,避免使用中间转换格式。
    • 层次完整性:确保所有需要提取的金属层、通孔层、器件层均包含在内。
    • 坐标精度:GDS 数据库单位建议设为 0.001μm 或 0.0005μm,避免坐标舍入误差。
  2. 层次映射表(Layer Map):创建 GDS 层次号与工艺文件层次名的映射文件(如 layermap.map)。该文件是 StarRC 识别版图层次的关键,格式示例如下:
    # GDS层号  GDS数据类型  工艺层次名
       metal1   0           M1
       metal2   0           M2
       via1     0           V1
       poly     0           POLY1
  3. 版图验证:在运行 StarRC 前,使用 gds2itf 或 gdscheck 工具检查版图文件完整性,确认无缺失层次、无孤立图形、无非法多边形。
检查项GDSIIOASIS推荐选择
文件大小较大(未压缩)较小(压缩率约 30%-50%)OASIS(大设计)
解析速度较慢较快OASIS
兼容性所有工具支持主流工具支持GDSII(保守)
数据精度整数坐标支持实数坐标OASIS(高精度)
常见误区:许多工程师直接使用物理验证(PV)后的 GDS 文件,但 PV 流程可能对版图进行了填充(Fill)、切边(Sliver)等修改,这些修改会影响寄生提取精度。建议使用 提取专用版图,即经过 DRC/LVS 干净但未做金属填充的版本,或使用填充感知提取模式。

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)。

操作流程:

  1. 从晶圆厂获取官方 ITF/ICT 文件,或使用 PDK 中的 itf_gen 脚本生成。
  2. 使用 itfcheck 工具验证工艺文件语法和物理合理性(如厚度为正、k值在合理范围)。
  3. 将 ITF 编译为 TLU+ 模型(使用 starrc_tluplus 命令),TLU+ 是 StarRC 内部使用的二进制工艺模型,提取速度更快。
实战经验:在 28nm 及以下节点,金属厚度和介电常数随工艺角变化显著。建议为每个工艺角(TT/SS/FF)准备独立的 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]
注意事项:SDC 文件必须与综合/布局布线使用的版本完全一致。任何时钟定义的修改(如周期变化、波形调整)都会影响提取结果。建议在运行 StarRC 前,使用 check_sdc 工具验证 SDC 的完整性和一致性。

4.4 网表文件(SPEF/Verilog):逻辑连接的桥梁

核心原理:网表文件描述了设计中实例(Instance)、网络(Net)和引脚(Pin)的连接关系。StarRC 需要网表来建立版图图形与逻辑器件之间的映射关系,从而将提取的寄生参数正确关联到每个网络和实例上。Verilog 网表提供逻辑连接信息,SPEF(Standard Parasitic Exchange Format)则用于输出提取结果,但也可作为输入用于增量提取或 ECO 场景。

准备方法与格式要求:

  1. Verilog 网表:必须为门级网表(Gate-level Netlist),包含所有标准单元和宏单元的实例化。格式要求:
    • 使用 module 定义顶层,端口列表与版图顶层一致。
    • 所有实例必须有唯一的例化名(Instance Name)。
    • 避免使用行为级描述(如 assign 语句),应全部为单元例化。
  2. SPEF 文件:作为输入时,通常用于 ECO 场景或混合提取模式。SPEF 格式包含 D_NET 或 R_NET 定义,需确保网络命名与 Verilog 网表一致。
  3. 映射文件:创建单元映射文件(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)导致耦合电容显著增加。

分析判断过程:

  1. 对比 PV 前后版图差异,确认填充密度约 15%,主要分布在 M3-M5 层。
  2. 使用 StarRC 的 -fill_mode 选项,选择 fill_aware 模式,该模式可自动识别填充图形并排除在耦合电容计算之外。
  3. 同时检查工艺文件,发现 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),逐项确认版本、工艺角、填充状态等关键属性。

风险提示:在 ECO(工程变更单)场景中,若仅修改了部分版图区域,切勿直接使用全芯片 GDS 重新提取。应使用增量提取模式,仅对修改区域进行重新提取,并复用原有 SPEF 数据,以节省时间和计算资源。

4.6 常见误区与总结复盘

误区一:忽视层次映射表的完整性。层次映射表遗漏某一金属层,会导致该层网络完全无法提取,且错误难以察觉。建议使用 gdscheck 工具自动比对 GDS 中实际存在的层次与映射表中的层次,生成差异报告。

误区二:ITF 文件与 PDK 版本不匹配。晶圆厂更新 PDK 后,ITF 文件中的介电常数或厚度参数可能变化。使用旧版 ITF 提取新工艺设计,会产生系统性偏差。每次 PDK 更新后,必须重新生成并验证 TLU+ 模型。

误区三:SDC 文件未同步更新。布局布线阶段可能修改了时钟树或约束,但提取时仍使用旧版 SDC,导致时钟网络提取精度不足。建议在提取前,从时序收敛工具(如 PrimeTime)导出最终 SDC。

误区四:网表与版图不一致。LVS 未完全干净时,网表中的某些实例在版图中不存在,或版图中有额外图形。StarRC 会报错或忽略不匹配部分,导致提取结果不完整。务必确保 LVS 完全通过后再进行提取。

总结:输入文件的准备是 StarRC 提取流程中最耗时但最关键的环节。建议建立标准化的输入文件检查流程,包括格式验证、版本核对、内容一致性检查三个层次。通过自动化脚本(如 Perl/Python)实现文件清单的自动校验,可显著降低人为错误风险。同时,保持与晶圆厂和 PDK 的同步更新,是确保提取精度的长期保障。