PrimeTime:高级片上变化(AOCV)

发布时间:2026/10/26 1:18:21
PrimeTime:高级片上变化(AOCV) 相关阅读PrimeTimehttps://blog.csdn.net/weixin_45791458/category_12900271.html?spm1001.2014.3001.5482简介随着工艺尺寸的不断缩小静态时序分析受到的制造过程变化影响日益显著。传统的解决方案是使用一个全局的固定系数set_timing_derate命令来为设计添加裕量以应对片上变化(On Chip Variation, OCV)虽然在130nm和90nm工艺节点时仍属合理但在更先进的制程中已显得过于保守带来了过度设计、性能下降和设计周期延长等问题。为解决这一挑战PrimeTime在2008版本引入了高级片上变化(AOCV)技术这是对传统OCV方法的自然扩展它通过更细致和上下文相关的建模方式为设计提供了更真实、低悲观度的时序裕量控制。AOCV通过以下两个关键参数来对设计路径施加更合理的derating系数逻辑深度逻辑深度用于模拟随机变化较长的路径包含更多的门级元件其随机性变化之间往往会互相抵消因此整体上的随机变化会变小。AOCV针对逻辑较深的路径采用更低的derating系数从而降低不必要的裕量。物理距离物理距离用于模拟系统变化当路径跨越芯片较大区域时更容易受到系统性变化如工艺密度或邻近效应的影响。AOCV结合路径所跨越的物理区域为其计算位置相关的derating系数从而更准确地反映系统性变化对时序的影响。准备工作带有物理信息的寄生参数文件由于要计算路径的物理距离需要使用坐标信息而计算路径的逻辑深度则不需要坐标信息。若要从SPEF、SBEF或GPD文件中读取线网、引脚和端口的节点坐标到PrimeTime中首先将变量read_parasitics_load_locations设置为true然后再使用read_parasitics命令如下所示。pt_shell set_app_var read_parasitics_load_locations true pt_shell read_parasitics parasitics_fileAOCV文件由于需要根据逻辑深度和物理距离确定derating系数用户必须按照AOCV文件格式来指定AOCV derating表支持的类型包括一维表仅基于逻辑深度(depth)或物理距离(distance)二维表同时基于逻辑深度和物理距离以下是AOCV文件中每个字段的定义每个字段必须单独一行指定除非使用\转义version: aocv_format_version该字段可指定文件版本号便于未来兼容不同格式必须写在AOCV文件的第一行有效版本包括:1.0、2.0和3.0。若使用path_type字段版本需为2.0若使用group_name字段版本需为3.0。group_name: name该字段可选用于指定derating表所属的AOCV表组名称。若使用该字段必须将版本设置为3.0。object_type: design | cell | lib_cell该字段可指定derating表定义的对象类型可以是design、cell或lib_cell配合可选的object_spec字段使用注意此处的cell指的是层次单元而不是叶单元。rf_type: rise | fall | rise fall该字段可指定时序弧的转换方向可以是rise、fall或rise fall。delay_type: cell | net | cell net该字段可指定derating表影响的时序弧的种类如果object_type为design或cell则可指定为cell、net或cell net如果object_type为lib_cell则可指定为cell。derate_type: early | late该字段可指定derating表的类型可以是early或late不能同时指定。若为early类型则derating系数小于1若为late类型则derating系数大于1。object_spec: [patterns] [-filter expression]...该字段可指定与object_spec对应的对象查询命令所支持的任何选项和参数用于指定derating表定义的对象可留空。例如对于object_type为cell时可以使用get_cells命令的所有选项和参数。voltage: floating_number该字段可选用于指定多电压情况下的derating表只能在object_type为design和lib_cell时使用。path_type: data | clock | data clock该字段可选用于指定derating表影响的路径种类可以是data、clock或data clock。若使用该字段必须将版本设置为2.0。depth: floating_number list该字段用于指定逻辑深度值由M个浮点数组成可留空。distance: floating_number list该字段用于指定逻辑深度值由N个浮点数组成以nm为单位可留空。table: N*M数组该字段用于指定derating系数可以是二维、一维甚至零维。下面展示了一个AOCV derating表的示例该表定义在名为top的设计对象上并将derating系数反标到设计中的所有单元、线网时序弧上。version: 1.0 object_type: design rf_type: rise fall delay_type: cell net derate_type: early object_spec: top depth: 0 1 2 3 distance: 100 200 table: 0.87 0.93 0.95 0.96 \ 0.83 0.85 0.87 0.90读取AOCV文件使用read_aocvm命令可以读取AOCV文件PrimeTime会将该文件中的derating表定义在指定对象上如下所示。如果derating表的语法不正确PrimeTime会给出错误提示并且不会进行任何定义。pt_shell read_aocvm aocv_file_name为了保护与工艺相关的敏感信息可以使用write_binary_aocvm命令将ASCII格式的AOCV文件转换为二进制编码格式。read_ocvm命令可以读取由write_binary_aocvm生成的二进制或压缩二进制AOCV文件无需添加任何额外参数。derating系数是通过以逻辑深度和物理距离为索引的表格查表得到如不能完全匹配将使用线性插值来计算所需的derating系数就像是非线性延迟模型查表得到延迟值那样但需要注意的是在计算derating系数时不会进行外插。在读取了AOCV文件后可以使用report_aocvm命令报告当前设计的AOCV信息该命令默认显示当前设计中叶单元和线网的上是否有定义derating表注意尽管在AOCV文件中不能指定object_type为叶单元或线网但他们能从顶层继承derating表的定义继承的优先级从高到低为库单元只针对叶单元、层次单元、设计如下所示。pt_shell report_aocvm **************************************** Report : aocvm Design : top Version: W-2024.09-SP2 Date : Sun Jul 20 21:21:20 2025 **************************************** AOCV Table Set : *Default* ****************************************************** | | Fully | Partially | Not | | Total | annotated | annotated | annotated | -------------------------------------------------------- Leaf cells | 6 | 0 | 6 | 0 | Nets | 18 | 0 | 18 | 0 | -------------------------------------------------------- | 24 | 0 | 24 | 0 |如果指定单元或线网则能显示该对象上定义的derating表如下所示。Inherited字段显示该单元从top设计继承的derating表。pt_shell report_aocvm [get_cells U10] **************************************** Report : aocvm object_list Design : top Version: W-2024.09-SP2 Date : Sun Jul 20 21:21:44 2025 **************************************** ****************************************************** AOCV Table Set : *Default* ****************************************************** | Depth Distance | 0 1 2 3 ----------------------------------------- 100 | 0.8700 0.9300 0.9500 0.9600 200 | 0.8300 0.8500 0.8700 0.9000 File: /home/zhangchen/AOCV/aocvm_1D_LUT.pt Name Object Process Voltage Sense Path Delay Inherited --------------------------------------------------------------------------------------------------------------- U10 cell early * rise clock cell top U10 cell early * fall clock cell top U10 cell early * rise data cell top U10 cell early * fall data cell top启用AOCV分析启用AOCV分析需要将变量timing_aocvm_enable_analysis设置为true如下所示。pt_shell set_app_var timing_aocvm_enable_analysis true需要注意的是将该变量设置为true会隐式执行set_operating_conditions命令将分析模式切换为on_chip_variation即AOCV分析是在原OCV模式的基础上进行的。在PrimeTime中AOCV集成于图分析(GBA)和路径分析(PBA)能力中这使得分析可以采用一种逐步细化的策略这一策略在传统的静态时序分析中已被广泛使用可以参考下面的博客。静态时序分析静态时序分析的原理及其两种模式PBA、GBAhttps://blog.csdn.net/weixin_45791458/article/details/136078969?ops_request_misc%257B%2522request%255Fid%2522%253A%2522c4f0b53a37090de7069d86ea87e4100b%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257Drequest_idc4f0b53a37090de7069d86ea87e4100bbiz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-136078969-null-null.nonecaseutm_termPBAspm1018.2226.3001.4450GBA AOCV分析GBA AOCV分析是一种快速、覆盖整个设计的分析方式在进行任何时序更新时进行例如使用update_timing命令或report_timing命令。它可以在全芯片范围内利用较低的悲观性从而节省面积、提升性能。在执行GBA AOCV分析时PrimeTime会计算时序弧的逻辑深度和物理距离的保守值以覆盖穿越某条时序弧的最坏情况路径。例如对某条时序弧而言其深度值为包含它在内的所有时序路径这里的时序路径需要包含时钟路径中的深度最小值深度越小受到AOCV影响越大。GBA AOCV分析是后续在关键路径上进行PBA AOCV分析以进一步减少裕量的前提条件对于大多数设计GBA AOCV分析已足以用于时序签核。指标计算规则对于时钟路径和数据路径逻辑深度和物理距离两者后称为指标的计算方式有些许不同时钟路径上的时序弧拥有三套指标分别针对发射路径(launch)、捕获路径(capture)或者是穿过时钟路径的数据路径(data)数据路径上的时序弧只能作为发射路径的一部分存在。由于存在共同悲观路径指标的计算从时钟路径上的共同点开始但一个时钟路径上的时序弧可能在一个时序路径中是共同路径的一部分而在另一个时序路径中不是若要为每种可能的组合计算指标在计算上是不可行的。这种情况下PrimeTime会选择一个最保守的共同点。若想查看某条时序弧上的指标和derating系数只需要将时序弧作为参数传递给report_aocvm命令即可如下所示。pt_shell report_aocvm [get_timing_arcs -of_objects [get_cells U10]] **************************************** Report : aocvm object_list Design : top Version: W-2024.09-SP2 Date : Sun Jul 20 22:23:56 2025 **************************************** Warning: No coordinates locations have been defined; AOCVM analysis may be inaccurate. (UITE-464) From pin: U10/A To pin: U10/Y Arc type: cell (data network) AOCVM arc metrics Launch --------------------------------------- Distance -- Depth 4.00 AOCVM arc derates Launch --------------------------------------- Early rise 0.9000 Early fall 0.9000 Late rise -- Late fall -- From pin: U10/B To pin: U10/Y Arc type: cell (data network) AOCVM arc metrics Launch --------------------------------------- Distance -- Depth 6.11 AOCVM arc derates Launch --------------------------------------- Early rise 0.9000 Early fall 0.9000 Late rise -- Late fall --可以看出其中有一条时序弧的逻辑深度中出现了小数这是由于使用了set_aocvm_coefficient命令重新指定了单元的深度系数默认为1。使用report_timing -derate命令即可查看考虑了GBA AOCV时的时序报告如下所示。pt_shell report_timing -derate -delay_type min **************************************** Report : timing -path_type full -delay_type min -input_pins -max_paths 1 -derate -sort_by slack Design : top Version: W-2024.09-SP2 Date : Sun Jul 20 22:28:28 2025 **************************************** Startpoint: q_long_reg (rising edge-triggered flip-flop clocked by clk) Endpoint: out_long (output port clocked by clk) Path Group: clk Path Type: min Point Derate Incr Path -------------------------------------------------------------------------- clock clk (rise edge) 0.00 0.00 clock network delay (propagated) 0.02 0.02 q_long_reg/CK (DFFRQX2) 0.00 0.02 r q_long_reg/Q (DFFRQX2) 0.90 0.07 0.09 r U10/B (AND2X1) 0.90 0.00 0.09 r U10/Y (AND2X1) 0.90 0.03 0.12 r U9/A (XNOR2X1) 0.90 0.00 0.12 r U9/Y (XNOR2X1) 0.90 0.02 0.14 r U8/C (NOR3BX1) 0.90 0.00 0.14 r U8/Y (NOR3BX1) 0.90 0.01 0.16 f U7/B (XNOR2X1) 0.90 0.00 0.16 f U7/Y (XNOR2X1) 0.87 0.01 0.17 f out_long (out) 0.87 0.00 0.17 f data arrival time 0.17 clock clk (rise edge) 0.00 0.00 clock network delay (propagated) 0.00 0.00 clock reconvergence pessimism 0.00 0.00 output external delay -0.50 -0.50 data required time -0.50 -------------------------------------------------------------------------- data required time -0.50 data arrival time -0.17 -------------------------------------------------------------------------- slack (MET) 0.67PBA AOCV分析指标计算规则如果在完成GBA AOCV后仍有时序违规可以通过启用PBA AOCV分析来进一步降低悲观性并提高分析准确性只需要在使用get_timing_paths命令或report_timing命令时添加-pba_mode选项即可。PBA AOCV分析会逐条时序路径独立分析而不受其他时序路径影响换句话说一条时序弧上的指标还取决于其所在的时序路径可能有很多条图1展示了如何计算一条时序路径的单元逻辑深度。图1 PBA AOCV模式下单元逻辑深度的计算单元的物理距离是通过计算一个包围时序路径中所有单元的边界框(bounding box)的对角线长度来确定的如图2所示。图2 PBA AOCV模式下单元物理距离的计算由于存在共同悲观路径指标的计算从时钟路径上的共同点开始由于只有一对发射/捕获路径因此共同点是显然的。若想查看某条时序路径上的指标只需要将时序路径作为参数传递给report_aocvm命令即可注意使用get_timing_paths命令时必须添加-pba_mode选项如下所示。pt_shell report_aocvm [get_timing_paths -pba_mode path -from q_long_reg/CK -to out_long] Warning: AOCVM path-based analysis can take a long time if path-specific slew propagation is also performed. (UITE-487) **************************************** Report : aocvm object_list Design : top Version: W-2024.09-SP2 Date : Sun Jul 20 22:57:36 2025 **************************************** Startpoint: q_long_reg (rising edge-triggered flip-flop clocked by clk) Endpoint: out_long (output port clocked by clk) Path Group: clk Path metrics Cell Net --------------------------------------------------------- Distance -- -- Launch depth 6.11 7.00 Capture depth 0.00 0.00可以看出存在UITE-487警告这是由于PBA AOCV分析同时也会像传统PBA分析中那样不进行最差转换时间合并而是重新计算这会导致运行时间增加为了节省运行时间用户也可以选择将变量pba_derate_only_mode设置为true这会导致仅执行PBA AOCV分析部分跳过转换时间的重新计算过程而使用GBA分析得到的最差情况的转换时间。从上面的报告中可以看出对于线网和单元指标的计算是分开的这是由于变量timing_aocvm_enable_single_path_metrics的默认值为falsePrimeTime将分别计算单元和线网的指标这对于GBA AOCV分析和PBA AOCV分析都是生效的图3给出了线网的物理距离的计算规则。图3 PBA AOCV模式下单元物理距离的计算使用report_timing -derate -pba_mode ...命令即可查看考虑了PBA AOCV时的时序报告如下所示。pt_shell report_timing -derate -delay_type min -pba_mode path **************************************** Report : timing -path_type full -delay_type min -input_pins -max_paths 1 -derate -pba_mode path -sort_by slack Design : top Version: W-2024.09-SP2 Date : Sun Jul 20 23:18:28 2025 **************************************** Startpoint: q_long_reg (rising edge-triggered flip-flop clocked by clk) Endpoint: out_long (output port clocked by clk) Path Group: clk Path Type: min (recalculated) Point Derate Incr Path -------------------------------------------------------------------------- clock clk (rise edge) 0.00 0.00 clock network delay (propagated) 0.02 0.02 q_long_reg/CK (DFFRQX2) 0.00 0.02 r q_long_reg/Q (DFFRQX2) 0.90 0.07 0.09 r U10/B (AND2X1) 0.90 0.00 0.09 r U10/Y (AND2X1) 0.90 0.03 0.12 r U9/A (XNOR2X1) 0.90 0.00 0.12 r U9/Y (XNOR2X1) 0.90 0.02 0.14 r U8/C (NOR3BX1) 0.90 0.00 0.14 r U8/Y (NOR3BX1) 0.90 0.01 0.16 f U7/B (XNOR2X1) 0.90 0.00 0.16 f U7/Y (XNOR2X1) 0.90 0.02 0.17 f out_long (out) 0.90 0.00 0.17 f data arrival time 0.17 clock clk (rise edge) 0.00 0.00 clock network delay (propagated) 0.00 0.00 clock reconvergence pessimism 0.00 0.00 output external delay -0.50 -0.50 data required time -0.50 -------------------------------------------------------------------------- data required time -0.50 data arrival time -0.17 -------------------------------------------------------------------------- slack (MET) 0.67一些影响AOCV的应用变量下面列出了一些影响AOCV的应用变量它们有些在本文中涉及了有些没有可以参考相应的手册进行学习。pba_derate_only_modetiming_aocvm_enable_analysistiming_aocvm_analysis_modetiming_aocvm_enable_clock_network_onlytiming_aocvm_enable_single_path_metricstiming_ocvm_enable_distance_analysistiming_ocvm_precedence_compatibility

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询