静态时序分析:时钟共同悲观路径(CPPR)移除与重汇聚悲观路径移除(CRPR)

发布时间:2026/11/6 3:12:52
静态时序分析:时钟共同悲观路径(CPPR)移除与重汇聚悲观路径移除(CRPR) 相关阅读静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482目录时钟共同悲观路径时钟重汇聚悲观路径其他的控制变量时钟共同悲观路径时钟共同悲观路径指的是发射路径和捕获路径有一段共同的时钟路径然而在进行时序分析时这段路径却因为片上变化(On Chip Variation, OCV)的设置而使用了不同的延迟值。这类设置包括使用set_operating_conditions命令设置了on_chip_variation模式和使用set_timing_derate命令设置时序降额。下面以图1为例进行说明时钟共同悲观路径的影响仅展示on_chip_variation模式下的共同悲观路径。图1 时钟共同悲观路径首先使用create_clock命令以clk端口为源对象创建一个周期为10的时钟。create_clock -period 10 [get_ports clk]随后将其设置为传播时钟这很重要因为理想时钟不会考虑共同悲观路径这也意味着只有做完时钟树综合(Clock Tree Synthesis, CTS)后才会存在共同悲观路径。set_propagated_clock [get_clocks clk]接着在时钟输入端口分别设置最大条件下和最小条件下的转换时间。set_input_transition -min 0.1 [get_ports clk] set_input_transition -max 0.8 [get_ports clk]最后使用set_operating_conditions命令设置分析模式为on_chip_variation关于该命令的使用可以看下面的博客。set_operating_conditions -analysis_type on_chip_variation fastSDC命令详解使用set_operating_conditions命令进行约束bc_wc模式和on_chip_variation模式https://blog.csdn.net/weixin_45791458/article/details/146458759?spm1001.2014.3001.5501此时的触发器间时序报告如图2所示注意使用-full_clock选项和-transition_time以报告完整的时序路径和转换时间。图2 触发器间时序报告可以看出发射路径和捕获路径的起始转换时间分别是0.8和0.1导致共同路径上的u1和u2单元的延迟不同这是过于悲观的如果想要移除这种悲观可以将timing_remove_clock_reconvergence_pessimism变量设置为true对于Design Compiler默认是false对于PrimeTime默认是True。set_app_var timing_remove_clock_reconvergence_pessimism true图3是移除了悲观路径后的时序报告可以看出此时以clock reconvergence pessimism项标出了悲观值并使最后的裕量增加了。图3 触发器间时序报告移除共同悲观路径两个不同的时钟即使有一段共同的时钟路径也不会考虑它们之间的悲观路径如图4所示。图4 触发器间时序报告不考虑共同悲观路径时钟重汇聚悲观路径有些时候即使不考虑片上变化也会出现额外的悲观值时钟重汇聚悲观路径指的是发射路径和捕获路径有一段时钟路径出现了分离-重汇聚的过程默认情况下会在最悲观的情况下进行分析即对于发射路径和捕获路径选择不同的时钟传播路径即使不开启on_chip_variation模式。下面以图5为例进行说明时钟共同悲观路径的影响。图5 时钟路径上的重汇聚首先使用create_clock命令以clk端口为源对象创建一个周期为10的时钟。create_clock -period 10 [get_ports clk]随后将其设置为传播时钟这很重要因为理想时钟不会考虑重汇聚悲观路径这也意味着只有做完时钟树综合(Clock Tree Synthesis, CTS)后才会存在重汇聚悲观路径。set_propagated_clock [get_clocks clk]此时的触发器间时序报告如图6所示注意使用-full_clock选项以报告完整的时序路径。图6 触发器间时序报告可以看出发射路径的时钟路径经过了三个单元而捕获路径的时钟路径则只经过了一个单元对于保持时间检查来说情况相反这是过于悲观的如果想要移除这种悲观可以将timing_remove_clock_reconvergence_pessimism变量设置为true对于Design Compiler默认是false对于PrimeTime默认是True。set_app_var timing_remove_clock_reconvergence_pessimism true图7是移除了悲观路径后的时序报告可以看出此时以clock reconvergence pessimism项标出了悲观值并使最后的裕量增加了。图7 触发器间时序报告移除重汇聚悲观路径最后顺带一提如果时钟重汇聚悲观路径和时钟共同悲观路径同时存在则会同时考虑这两种悲观情况。其他的控制变量timing_crpr_threshold_ps变量该变量指定允许悲观移除在报告中留下的悲观量单位为ps默认值为5ps允许的最小值为2e-5ps。如果悲观移除未启用则此变量没有影响该变量的值越大运行悲观移除时越快。推荐的设置是时钟网络中的典型门包括门和网半延迟这适用于大多数情况下的精度和运行时间之间的合理折衷。在设计周期中可能会使用不同的设置设计阶段使用较大的值签核阶段使用较小的值。timing_crpr_remove_clock_to_data_crp变量该变量指定是否允许悲观移除时考虑作为数据使用的时钟如图8所示默认值为false。图8 作为数据使用的时钟严格意义上说这并不是时钟路径的悲观因为发射路径即通过u1和u3单元的路径此时被认为是数据路径而不是时钟路径捕获路径即通过u1和u2单元的路径与发射路径拥有共同的u1单元。需要注意的是由于该行为会导致单独分析每一个时钟到数据路径因此可能在时序更新期间造成严重的性能损失。timing_clock_reconvergence_pessimism变量这个变量决定了如何计算时钟悲观路径去除的值允许的值为normal默认值和same_transition。当设置为normal时即使时钟在共同时钟路径上的转换方向不同比如时钟路径上有极性反转或者触发器的触发方式不同也会计算悲观值此时将对上升和下降沿分别计算悲观路径并使用绝对值较小的结果。当设置为same_transition时只有当时钟在共同时钟路径上每一个引脚的的转换方向都相同时才会计算悲观值。图9 发射触发器和捕获触发器由时钟的不同沿触发对于图9所示的例子如果设置为normal则还是会计算共同悲观路径u1和u2单元即使发射路径和捕获路径在这两个单元上的转换方向不同假设触发器都是上升沿触发的如果设置为same_transition则不会计算共同悲观路径。

关于本文作者

来自尧图内容编辑团队

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

尧图内容编辑团队

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

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

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

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

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

网站改版的5个关键决策

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

获取专属建站方案

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

立即免费咨询