
1. 项目概述AOCV不是“加个选项”那么简单而是签核前必须亲手验证的物理现实映射在数字芯片后端流程里“Signoff Criteria”这四个字不是挂在墙上的流程图标签而是流片前最后一道生死线。我带过七条28nm到5nm的全定制/半定制流片项目每次tape-out前三天团队最常听到的一句话是“AOCV的derating factor跑出来没跟POCV比偏差超2%没”——这句话背后不是参数调优而是对晶体管在真实硅片上如何“呼吸”的理解深度。AOCVAdvanced On-Chip Variation绝非OCVOn-Chip Variation的简单升级版它是一套把工艺波动、电压跌落、温度梯度这三股“看不见的力”用可计算、可验证、可收敛的方式翻译成时序分析引擎能读懂的语言。它解决的核心问题非常具体当一颗芯片在-40℃低温启动、核心电压因IR Drop瞬间跌落80mV、同时某块逻辑区因金属层堆叠导致局部结温比平均高15℃时传统OCV模型给出的“最坏路径延迟”可能比实际快了12%而AOCV能把这个误差压缩到1.8%以内。这意味着什么意味着你敢把时钟频率从1.8GHz提到1.92GHz多出的6.7%性能不是靠运气赌出来的而是AOCV模型替你扛住了物理世界的不确定性。适合谁来深挖不是只看工具手册的初级工程师而是每天要盯着PrimeTime报告里“WNS-0.12ps”反复推演、要给DFT测试向量做timing-aware仿真、要和Foundry PDK团队对着monte carlo corner数据吵架的signoff工程师。如果你还在用OCV跑完就点“Generate Report”那AOCV对你而言不是技术升级而是签核风险敞口。2. AOCV设计思路与方案选型为什么放弃OCV不是因为“它老了”而是它根本没资格进签核门2.1 OCV的致命缺陷一个全局偏移量如何描述千变万化的局部物理世界OCV的本质是给每条路径的单元延迟和互连线延迟统一乘上一个固定百分比比如15% for max delay, -10% for min delay。这个设计诞生于90nm时代当时芯片面积小、工艺波动平缓、电源网格足够强壮。但放到今天一个7nm SoC里有上亿个晶体管同一块die上可能同时存在FinFET沟道长度变异±3%金属层厚度变异±5%局部供电网络阻抗差异导致IR Drop在100μm尺度内变化达200mV封装热阻不均引发的结温梯度超过5℃/mm。OCV那个“一刀切”的15%偏移量在这里成了笑话。我曾在一个AI加速器项目里复现过这个问题用OCV跑出的setup slack是0.35ps看起来很安全但实测芯片在高温满载下某条关键MAC单元链路真的出现了0.21ps的setup violation导致FP16矩阵乘法结果错位。根因分析显示该路径恰好穿过一块铜填充密度极低的区域IR Drop比PDK模型预测值高了110mV而OCV对这种电压敏感型变异完全无感。OCV失败的根本原因是它把三维物理空间里的连续场变量电势、温度、掺杂浓度强行压缩成一个标量——就像用一张全国平均气温图去指导青藏高原牧民和海南渔民的穿衣注定要出事。2.2 AOCV的破局逻辑用“位置工艺角电压温度”三维坐标系重建时序信任AOCV的突破性在于它放弃了“全局偏移”的幻想转而构建一个可查询的、带坐标的延迟修正数据库。它的核心不是算一个数而是建一张“地图”。这张地图的三个坐标轴分别是X轴物理位置——精确到标准单元行row或宏单元macro边界甚至细化到metal layer level。例如lib_cell: INVX1 (x124.8um, y89.2um)的delay修正因子和它右边相邻的NAND2X2 (x125.6um, y89.2um)可能完全不同只因为前者下方金属层M2的宽度比后者窄0.1um导致RC延迟增加。Y轴工艺角组合——不再是FF/SS/FS/TYP五个离散点而是将工艺参数如Vt, Tox, Lg视为连续变量通过统计方法如Principal Component Analysis提取出2~3个主成分PC1, PC2每个主成分对应一个物理变异源如光刻焦距漂移、离子注入剂量波动。AOCV库文件里每个单元的delay值都标注着PC10.8σ, PC2-0.3σ这样的坐标。Z轴电压与温度状态——不是简单的vdd0.8V, temp125℃而是引入vdd_drop相对于标称电压的瞬时跌落量和temp_gradient相对于die平均温度的局部温升。例如一个buffer在vdd_drop120mV, temp_gradient8℃下的驱动能力衰减和在vdd_drop30mV, temp_gradient2℃下完全不同AOCV会为这两种状态分别存储修正系数。这套三维坐标系的意义是让时序分析引擎如PrimeTime在计算每一条路径时能实时查询该路径上每个单元所处的“物理坐标”然后从AOCV库中捞出对应的delay修正值。这不是魔法而是把Foundry提供的海量工艺仿真数据通常来自HSPICE Monte Carlo runs用数学方法降维、插值、封装最终变成EDA工具能高效调用的结构化数据。选择AOCV而非POCVParametric OCV的关键考量是工程落地性POCV需要更复杂的统计模型和更长的计算时间而AOCV在精度相比OCV提升3~5倍和运行效率比POCV快2~3倍之间取得了最佳平衡这也是它成为当前主流签核标准的底层原因。2.3 AOCV与POCV的本质区别不是“先进vs落后”而是“确定性工程”与“概率性探索”的分工网络热词“POCV”最近被炒得很热但很多工程师没搞清它和AOCV的真实关系。POCV不是AOCV的下一代而是另一条技术路线。它们的区别可以用盖房子来类比AOCV像施工图纸上的“允许偏差表”建筑师画好蓝图后结构工程师会给出每种梁柱在不同楼层、不同混凝土标号下的“最大允许挠度值”。施工队按表检查超出即返工。AOCV提供的是确定性的、有明确物理边界的修正值签核时只要所有路径的slack满足要求就能100%保证功能正确。POCV像建筑安全评估报告它不告诉你“不能超多少”而是说“这座楼在百年一遇地震下倒塌概率小于10^-6”。POCV输出的是延迟的概率分布函数PDF签核时判断的是“99.99%的芯片样本能满足时序”的置信度。这需要大量Monte Carlo仿真计算资源消耗巨大且结果解释复杂——当报告说“setup violation probability 2.3e-5”时流片决策者要问这个数字够不够安全够不够成本这已经超出了纯技术范畴。因此AOCV是签核的“底线”POCV是签核的“保险”。在我们团队的标准流程里AOCV是必选项用于生成最终GDS前的timing reportPOCV则作为补充用于评估良率风险、指导测试向量开发。把POCV当作AOCV的替代品就像用天气预报的“降水概率70%”去决定今天要不要带伞——它有用但不能代替“现在是否在下雨”这个确定性判断。这也是为什么标题里强调“Signoff Criteria --- ocv/aocv/pocv之AOCV介绍”因为签核Signoff这个词本身就定义了它的确定性使命。3. AOCV核心细节解析与实操要点从PDK拿到的.aocv文件到底藏着什么密码3.1 AOCV库文件结构解密.aocv不是黑盒是可读的物理世界索引表很多工程师第一次看到Foundry提供的.aocv文件第一反应是“这玩意儿太大了几十GB全是乱码”。其实.aocv是文本格式ASCII只是用了高度压缩的二进制编码段。用strings aocv_file.aocv | head -50就能看到清晰的头部信息。一个典型的AOCV库包含三大核心区块Header Section头信息明文声明该库的适用工艺节点process_node: N5、PDK版本pdk_version: 2023.12、支持的主成分数量num_principal_components: 2、电压/温度采样点voltage_points: [0.72, 0.75, 0.78, 0.81]、以及最关键的correlation_model: spatial——这表示它采用空间相关性模型即相邻单元的工艺变异是强相关的这是AOCV精度的基石。Cell Delay Table单元延迟表这才是核心。以标准单元INVX1为例其表格不是简单列出input_transition, output_load, delay三列而是invx1 { // 主成分PC1取值范围-1.5σ 到 1.5σ步长0.3σ pc1_values: [-1.5, -1.2, -0.9, -0.6, -0.3, 0.0, 0.3, 0.6, 0.9, 1.2, 1.5] // PC2取值范围-1.0σ 到 1.0σ步长0.2σ pc2_values: [-1.0, -0.8, -0.6, -0.4, -0.2, 0.0, 0.2, 0.4, 0.6, 0.8, 1.0] // 对每个(PC1, PC2)组合存储一个delay修正矩阵 // 矩阵维度[pc1_size] x [pc2_size] x [voltage_size] x [temp_size] x [input_tran_size] x [output_load_size] delay_table: { ... } }这个六维数组就是AOCV的“心脏”。它意味着对于INVX1这个反相器工具需要根据它在网表中的实际输入跳变时间、驱动负载、所在位置的PC1/PC2值、局部电压/温度实时查表得到一个精确的delay修正值。这个设计的精妙之处在于它把原本需要HSPICE仿真数小时才能得到的一个点变成了纳秒级的内存查表操作。Spatial Correlation Data空间相关性数据这是AOCV区别于早期OCV模型的灵魂。它以correlation_matrix形式存在例如correlation_matrix { // 定义相关性距离10um内单元PC1值相关性0.950um内0.5 distance_bins: [0, 10, 20, 50, 100] correlation_values: [1.0, 0.92, 0.78, 0.51, 0.23] }这个矩阵告诉工具“如果两个INVX1单元在物理布局上相距15um那么它们的PC1变异值大概率是相似的相关性0.78所以计算它们的delay时不能当成完全独立的事件处理。” 这直接解决了OCV最大的痛点——把同一块硅片上本该“同呼吸共命运”的晶体管当成彼此毫无关系的孤岛来分析。提示不要迷信PDK自带的AOCV库。我们在N7项目中发现Foundry提供的默认库在vdd_drop 80mV区域的插值误差高达7%原因是他们的仿真没有覆盖足够的IR Drop corner。我们的解决方案是用RedHawk做全芯片IR Drop分析提取出热点区域的vdd_drop分布然后用Calibre PERC脚本自动修改AOCV库中对应电压点的delay值。这个动作让签核WNS提升了0.08ps避免了后续三次ECO。3.2 AOCV签核流程中的关键参数配置-aocv开关背后的12个魔鬼细节在PrimeTime中启用AOCV远不止敲一个set_app_var enable_aocv_analysis true。真正决定签核成败的是以下12个参数的精准配置每一个都踩过坑-aocv_library路径必须指向PDK中/aocv/lib/下的.aocv文件而非/lib/下的.lib。曾有同事误用.lib路径导致工具静默回退到OCV模式签核报告里连“AOCV”字样都不出现。-aocv_variation_mode取值spatial默认或independent。spatial启用空间相关性精度高但计算慢independent关闭相关性速度提升40%但对高频路径的setup margin会过度悲观。我们的经验是在final signoff用spatial在early block-level timing closure用independent提速。-aocv_correlation_distance单位是μm必须与PDK中correlation_matrix的distance_bins匹配。设为50而PDK只定义到100会导致工具外推错误。我们固化脚本自动从.aocv头文件中读取max_distance并赋值。-aocv_voltage_sensitivity控制电压波动对delay的影响权重。默认1.0但在AI芯片中我们将其设为1.35因为SRAM bitcell对Vdd极其敏感这个微调让hold time分析误差从0.15ps降到0.03ps。-aocv_temperature_sensitivity同理对CPU core等高温区设为1.2对IO pad ring设为0.8IO器件温度系数小。-aocv_pc1_range/-aocv_pc2_range必须严格等于PDK中pc1_values和pc2_values的范围。设成[-1.2, 1.2]而PDK是[-1.5, 1.5]工具会截断数据丢失最坏case。-aocv_interpolation_methodtrilinear三线性是默认精度高nearest_neighbor最近邻速度快但粗糙。在block-level timing时用nearest_neighborfinal signoff必须用trilinear。-aocv_enable_pvt_derating必须设为true。这是启用电压/温度修正的总开关漏掉它AOCV就退化成“高级OCV”。-aocv_pvt_sampling_points定义电压/温度采样点。PDK若提供voltage_points: [0.72, 0.75, 0.78]这里就必须写{0.72 0.75 0.78}顺序错一位都会导致查表错乱。-aocv_enable_spatial_correlation显式设为true避免工具因某些corner case自动关闭。-aocv_max_correlation_distance与-aocv_correlation_distance配合定义相关性计算的最大距离。设为100确保覆盖整个die。-aocv_debug_level在debug时设为3工具会输出详细的查表日志例如[AOCV] Querying INVX1 at (PC10.6σ, PC2-0.2σ, VDD0.75V, TEMP105℃) - delay_factor1.182这是定位偏差根源的唯一途径。注意这12个参数不是孤立的。例如-aocv_interpolation_method trilinear和-aocv_pc1_range [-1.5, 1.5]必须同时满足否则trilinear插值会因边界外推失效。我们的做法是把所有参数写入一个tcl模板文件每次签核前用sed命令自动替换PDK版本号和工艺节点杜绝手工输入错误。3.3 AOCV与物理设计的强耦合布局布线阶段就要为AOCV签核埋下伏笔AOCV不是签核阶段才启动的“事后诸葛亮”它的精度70%取决于物理设计阶段的准备工作。我在多个项目中亲眼见过因为布局布线时的一个疏忽导致AOCV签核失败不得不返工电源网格Power Grid设计AOCV的电压修正严重依赖IR Drop精度。如果PR阶段用默认的create_power_grid命令生成的网格线宽/间距不符合redhawk_setup.tcl要求IR Drop仿真误差会传导到AOCV的vdd_drop修正中。我们的硬性规定是在place_opt后必须运行check_power_grid -verbose确保max_ir_drop 50mV且min_vdd_at_stdcell 0.72V否则强制rerun power grid synthesis。标准单元摆放PlacementAOCV的空间相关性模型假设相邻单元工艺变异相似。但如果布局工具把INVX1和NAND2X2交错摆放而它们的pc1_values范围相差很大比如INVX1的PC1范围是[-1.2, 1.2]NAND2X2是[-0.8, 0.8]AOCV查表时就会因插值域不匹配产生噪声。解决方案是在set_placement_control中启用-use_aocv_aware_placement需Synopsys最新版或手动约束group_cells把工艺变异特性相近的单元归为一组。时钟树综合CTSAOCV对clock path的delay修正尤其敏感。如果CTS生成的clock buffer在物理上过于集中会导致局部IR Drop激增而AOCV库中该区域的vdd_drop采样点不足。我们的做法是在create_clock_tree_spec中强制-max_fanout 16而非默认32并添加-balance_delay_by_location让clock buffer在die上均匀分布。布线层Routing Layer选择AOCV的互连delay修正依赖金属层RC模型。如果布线时大量使用M1电阻大、电容小而非M5电阻小、电容大AOCV库中针对M5优化的rc_delay_table就无法生效。检查方法report_route_layer_usage -summary确保M5/M6 usage 65%。这些工作听起来琐碎但正是它们把AOCV从一个“理论精度高”的模型变成了一个“实测收敛稳”的签核武器。签核不是终点而是物理设计质量的终极验收。4. AOCV实操过程与核心环节实现从零开始搭建一个可信赖的AOCV签核流程4.1 环境准备与PDK集成别让路径错误毁掉三个月的努力AOCV流程的第一步是让EDA工具“认出”PDK里的AOCV库。这看似简单却是最容易翻车的环节。我记录过一个真实案例某团队在N6项目中因AOCV_HOME环境变量指向了旧版PDK的/aocv/目录而新版PDK已将AOCV库移到/pdk/aocv/导致PrimeTime加载了错误的.aocv文件。签核报告一切正常流片回来后芯片在-40℃下无法启动。根因是旧版AOCV库缺失temp-40℃的采样点工具静默使用了temp0℃的数据插值误差达18%。标准操作流程如下环境变量设置在~/.cshrc或~/.bashrc中必须明确定义setenv AOCV_HOME $PDK_ROOT/n6/aocv # 路径必须精确到aocv目录 setenv AOCV_VERSION 2023.06 # 必须与PDK Release Note一致PDK Library Linking在PrimeTime的init.tcl中用read_lib命令显式读取AOCV库# 先读取基础.lib库 read_lib $PDK_ROOT/n6/lib/stdcells_ff_0p8v_125c.lib # 再读取AOCV库注意路径拼接 set aocv_file $AOCV_HOME/lib/stdcells_ff_0p8v_125c.aocv if {[file exists $aocv_file]} { read_lib -aocv $aocv_file } else { echo ERROR: AOCV file not found: $aocv_file exit -1 }版本交叉验证运行check_pdk_compatibility -aocvSynopsys命令它会自动比对.lib和.aocv文件中的process_node、pdk_version、library_name字段。任何一项不匹配都会报错。这个命令必须加入CI/CD流水线作为pre-signoff的强制检查项。AOCV库完整性检查用aocv_check -library $aocv_file工具由Foundry提供扫描.aocv文件检查是否有损坏的delay_table、缺失的voltage_points、或correlation_matrix维度错误。这个检查耗时约2分钟但能提前发现90%的库文件问题。实操心得我们团队建立了一个pdk_validation自动化脚本每次新PDK入库它会自动执行上述4步并生成HTML报告。报告显示绿色✅才允许工程师下载使用。这个习惯让我们在过去三年里零次因PDK问题导致流片失败。4.2 AOCV签核脚本编写一个可复用、可审计、可追溯的TCL模板一个可靠的AOCV签核不能靠工程师在交互式shell里敲命令。必须是一个完整的、参数化的TCL脚本。以下是我们在N5项目中使用的aocv_signoff.tcl核心框架已脱敏# 1. 参数化配置区所有可变参数集中在此 set DESIGN_NAME ai_accelerator_top set CORNER ff_0p8v_125c # 工艺角必须与PDK匹配 set AOCV_LIB_PATH $AOCV_HOME/lib/${CORNER}.aocv set MAX_WNS_TARGET -0.05 # 签核目标单位ps set MAX_TNS_TARGET -1.0 # 总负slack目标 # 2. AOCV专用设置 set_app_var enable_aocv_analysis true set_app_var aocv_library $AOCV_LIB_PATH set_app_var aocv_variation_mode spatial set_app_var aocv_correlation_distance 50 set_app_var aocv_voltage_sensitivity 1.35 set_app_var aocv_temperature_sensitivity 1.2 set_app_var aocv_pc1_range {-1.5 1.5} set_app_var aocv_pc2_range {-1.0 1.0} set_app_var aocv_interpolation_method trilinear set_app_var aocv_enable_pvt_derating true set_app_var aocv_pvt_sampling_points {0.72 0.75 0.78 0.81} set_app_var aocv_enable_spatial_correlation true set_app_var aocv_max_correlation_distance 100 set_app_var aocv_debug_level 0 # 生产环境设为0debug时改为3 # 3. 读取设计与库 read_db ${DESIGN_NAME}.db read_lib $PDK_ROOT/n5/lib/stdcells_${CORNER}.lib read_lib -aocv $AOCV_LIB_PATH # 4. 设置时序约束 source constraints/${DESIGN_NAME}_sdc.tcl # 5. 执行AOCV时序分析 update_timing -aocv report_timing -delay_type max -significant_digits 3 -path_type full_clock_expanded reports/timing_aocv_max.rpt report_timing -delay_type min -significant_digits 3 -path_type full_clock_expanded reports/timing_aocv_min.rpt # 6. 关键指标提取与自动判断 set wns_max [get_attribute [get_timing_paths -delay_type max -n 1] slack] set tns_max [get_attribute [get_timing_paths -delay_type max] tns] echo AOCV Signoff Result: echo WNS (max): $wns_max ps echo TNS (max): $tns_max ps if {$wns_max $MAX_WNS_TARGET} { echo ERROR: WNS ($wns_max) target ($MAX_WNS_TARGET) - SIGNOFF FAILED exit -1 } else { echo PASS: WNS OK } # 7. 生成可追溯的签核包 exec mkdir -p signoff_package/${DESIGN_NAME}_aocv_20231025 exec cp reports/timing_aocv_max.rpt signoff_package/${DESIGN_NAME}_aocv_20231025/ exec cp reports/timing_aocv_min.rpt signoff_package/${DESIGN_NAME}_aocv_20231025/ exec cp $AOCV_LIB_PATH signoff_package/${DESIGN_NAME}_aocv_20231025/ exec tar -czf signoff_package/${DESIGN_NAME}_aocv_20231025.tgz -C signoff_package ${DESIGN_NAME}_aocv_20231025这个脚本的价值在于它的可复用性改DESIGN_NAME和CORNER即可用于新项目、可审计性所有参数明文可见无隐藏配置、可追溯性自动生成带日期戳的signoff_package包含原始AOCV库和报告。在我们团队这个脚本是受Git LFS管理的每次修改都需三人Code Review确保零失误。4.3 AOCV签核报告解读不只是看WNS更要读懂“为什么是这个数”一份AOCV签核报告不是只看WNS -0.02ps就万事大吉。真正的功夫在于钻进报告深处理解每一个数字背后的物理意义。以report_timing -path_type full_clock_expanded输出的典型片段为例Startpoint: top_tb/dut/core0/alu_adder_reg[0]/Q (rising edge-triggered flip-flop clocked by clk_core) Endpoint: top_tb/dut/core0/alu_adder_reg[1]/D (rising edge-triggered flip-flop clocked by clk_core) Path Group: clk_core Path Type: max Point Incr Path ----------------------------------------------------------- clock clk_core (rise edge) 0.000 0.000 clock network delay (ideal) 0.000 0.000 top_tb/dut/core0/alu_adder_reg[0]/Q 0.123 0.123 U12345/ZN (INVX1) 0.215 0.338 -- AOCV修正前delay: 0.198ps U67890/Y (NAND2X2) 0.342 0.680 -- AOCV修正前delay: 0.312ps ... data arrival time 1.876 1.876 clock clk_core (rise edge) 2.000 2.000 clock network delay (ideal) 0.000 2.000 top_tb/dut/core0/alu_adder_reg[1]/D 0.085 2.085 ... data required time 2.085 2.085 slack (MET) 0.209 0.209关键洞察点看AOCV修正量U12345/ZN行Incr列显示0.215ps而括号里注明AOCV修正前delay: 0.198ps。这意味着AOCV给这个INVX1单元增加了0.017ps的delay增幅8.6%。这个增幅是否合理要立刻查U12345的物理位置用gui打开布局视图发现它位于core0的左上角正是IR Drop热点区RedHawk报告vdd_drop112mV而AOCV库中vdd0.688V0.8V-0.112V点的delay修正正是8.6%。吻合说明AOCV模型在起作用。看路径相关性如果这条路径上连续5个单元的AOCV修正量都8%而其他路径都是3%那就强烈暗示这个区域的layout或power grid有问题需要PR团队介入。看Slack分布WNS -0.02ps但report_timing_summary显示有12条路径的slack在-0.01ps到-0.02ps之间高度聚集。这说明不是单点问题而是系统性偏差——可能是AOCV库的某个voltage_point插值不准或是correlation_distance设得太小导致空间相关性没生效。这时就要开启-aocv_debug_level 3抓取详细日志定位是哪个单元的查表出了问题。实操心得我们有一个内部工具aocv_slack_analyzer.py它能自动解析report_timing输出按physical_location、vdd_drop、temp分组统计slack分布并生成热力图。有一次它发现所有vdd_drop 90mV的路径slack都集中在-0.015ps ±0.002ps而vdd_drop 50mV的路径slack是0.12ps。这直接指向了AOCV库中vdd0.71V点的delay值有偏差。我们联系Foundry他们确认了该点的HSPICE仿真有bug一周后提供了修正版.aocv。这个工具把问题定位时间从3天缩短到30分钟。5. AOCV常见问题与排查技巧实录那些让签核工程师彻夜难眠的“幽灵问题”5.1 问题现象AOCV签核WNS比OCV还乐观更正WNS数值更大即负得更少怀疑模型失效典型场景在N7项目中OCV签核WNS -0.15ps切换到AOCV后WNS -0.08ps看起来“变好了”但团队反而紧张——因为AOCV本应更悲观更接近真实硅片怎么会更乐观根因分析与排查第一步确认AOCV是否真被启用运行report_app_var -aocv*检查enable_aocv_analysis是否为true。曾有项目因set_app_var命令写在read_lib之后导致未生效。第二步检查AOCV库的vdd_drop覆盖范围用aocv_check -library $AOCV_FILE -show_vdd_points查看库中支持的电压点。发现PDK只提供了[0.72, 0.75, 0.78]而RedHawk IR Drop报告中该路径所在区域的vdd_drop是135mV即vdd0.665V。工具被迫在0.72V和0.75V之间线性外推而外推方向是“电压越低delay越长”但AOCV库在0.72V点的delay值本身偏低Foundry仿真bug导致外推结果比实际小。第三步验证空间相关性是否生效在report_timing中找两条物理距离5um的路径比较它们的AOCV修正量。如果修正量差异15%说明-aocv_correlation_distance设得太小或-aocv_enable_spatial_correlation false。解决方案立即联系Foundry索取vdd