在芯片物理设计流程中,ICC2(Innovus Implementation System)和StarRC(Synopsys寄生参数提取工具)的correlation检查是确保设计数据一致性的关键环节。作为一名后端设计工程师,我经常需要处理两者之间的数据匹配问题。当ICC2的时序分析与StarRC提取的寄生参数结果不一致时,会导致sign-off阶段出现意外问题,严重影响tape-out进度。
correlation检查的核心目标是验证ICC2的RC寄生参数计算结果与StarRC提取结果的一致性。根据我的项目经验,良好的correlation应该控制在5%以内的偏差。要达到这个目标,需要从数据库状态、工具配置、文件版本等多个维度进行系统性的检查和调整。
在进行correlation检查前,必须确保ICC2数据库处于正确的状态:
Post-route阶段:数据库必须完成所有布线(global route + detail route),建议在完成clock tree synthesis和post-route优化后进行。我曾遇到过在pre-route阶段做correlation检查导致结果偏差超过15%的情况。
DRC清理:使用verify_drc命令确保没有min spacing和min width违规。特别要注意高密度区域的金属填充(metal fill)是否引入额外DRC问题。一个实用技巧是:
tcl复制verify_drc -report pre_correlation_drc.rpt
Open/Short处理:通过verify_connectivity检查并修复所有open和short。对于复杂设计,建议分层检查:
tcl复制verify_connectivity -no_antenna -layer_by_layer
单元匹配:确认ICC2和StarRC使用的标准单元库版本完全一致。曾经有项目因为ICC2使用NDM库而StarRC使用LEF导致correlation偏差达8%。
工艺文件对齐:确保两者使用的itf(Interconnect Technology Format)文件来自同一来源。最佳实践是:
提示:使用
report_technology_file命令验证ICC2加载的itf文件路径和版本
核心命令check_consistency_settings需要配合set_consistency_settings_options进行配置:
tcl复制set_consistency_settings_options \
-tool starrc \
-exec_path /path/to/StarRC/bin/StarXtract \
-script /path/to/generated/starrc_cmd.tcl \
-tech_file /path/to/current.itf \
-map_file /path/to/lef_to_gds.map
关键参数说明:
-exec_path:必须指向实际使用的StarRC可执行文件路径。我曾因为使用默认路径导致工具版本不匹配。-script:生成的StarRC命令文件应包含完整的提取设置,特别是以下关键项:tcl复制set_extraction_options \
-reduce_no_loop \
-independent_net_cap
根据实际项目经验,以下StarRC设置对改善correlation至关重要:
REDUCTION设置:
tcl复制set_parameter REDUCTION NO_EXTRA_LOOPS
这个设置可以避免StarRC在RC提取时引入额外的环路简化,与ICC2的提取算法保持一致。
耦合电容处理:
tcl复制set_parameter CC_MODE 3
模式3会采用更精确的耦合电容计算方式,与ICC2的默认算法更匹配。
层次化提取:
tcl复制set_parameter FLAT_HIER_DETECTION YES
对于大型设计,这个设置可以保持层次结构与ICC2的一致性。
TLUPlus文件的版本一致性是correlation的关键:
生成工具匹配:
bash复制grdgenxo -itf2TLUPlus input.itf -output output.tluplus -units 1e-6
grdgenxo -itf2nxtgrd input.itf -output output.nxtgrd
版本检查:
code复制HEADER {
grdgenxo_version = "K-2015.06";
creation_date = "2023-11-15";
}
工具版本组合建议:
重要经验:新版本StarRC可能引入算法改进,导致与旧版ICC2的correlation变差。在项目紧急阶段建议采用保守策略。
下表总结了常见correlation问题及解决方法:
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 总电容偏差>10% | TLUPlus文件版本不匹配 | 重新生成匹配的tluplus/nxtgrd文件 |
| 特定net电阻偏差大 | 该net的提取层次不一致 | 检查StarRC的-preserve_geometry设置 |
| 耦合电容差异明显 | CC_MODE设置不同 | 在StarRC中设置CC_MODE 3 |
| 整体RC偏小 | REDUCTION设置过于激进 | 设置NO_EXTRA_LOOPS |
分网表调试:
tcl复制check_consistency -net [get_nets {net1 net2}] -verbose
对问题net进行针对性检查
寄生参数对比:
tcl复制write_parasitics -format SPEF -output icc2.spef
图形化检查:
tcl复制gui_start
compare_rc -starrc starrc.spef -icc2 icc2.spef
使用图形界面定位差异区域
金属填充(metal fill)会显著影响correlation:
填充一致性检查:
tcl复制set_metal_fill_options -density 0.3 -layer {M1 M2}
填充排除技术:
对于关键网络,可以添加填充排除:
tcl复制set_net_options -no_metal_fill [get_nets clk_net]
多角点(multi-corner)分析时的注意事项:
温度对齐:
tcl复制set_operating_conditions -temperature 125
必须与StarRC命令中的-temperature参数一致
电压设置:
tcl复制set_voltage -object_list {VDD} -value 0.9
tcl复制set_power_net -voltage 0.9 VDD
在最近的一个7nm项目上,我们遇到了ICC2与StarRC correlation偏差达到12%的问题。经过系统排查,发现是以下原因导致:
TLUPlus生成问题:
bash复制grdgenxo -itf2TLUPlus input.itf -temp_coeff 1.0 -output correct.tluplus
金属厚度设置不一致:
tcl复制set_technology -layer [get_layers M1] -thickness 0.042
通孔电阻偏差:
tcl复制set_via_resistance -layer V1 -res 5.2
这个案例告诉我们,当遇到严重correlation问题时,需要从工艺文件的最底层参数开始检查。