十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

静态时序分析:无法满足的生成时钟(TIM-255警告、UITE-461或PTE-075错误)

静态时序分析:无法满足的生成时钟(TIM-255警告、UITE-461或PTE-075错误) 相关阅读静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482在阅读本文前强烈建议首先阅读介绍生成时钟的文章尤其是其中关于时钟极性和反相的相关内容。静态时序分析SDC约束命令create_generated_clock详解上https://chenzhang.blog.csdn.net/article/details/134236547有时在Design Compiler中创建生成时钟并将主时钟设置为传播时钟后使用update_timing或report_timing命令时会出现如下警告Warning: Sense relationship for generated clock (*** with source pin ***) (rise_edge) is not satisfied. (TIM-255) Warning: Sense relationship for generated clock (*** with source pin ***) (fall_edge) is not satisfied. (TIM-255)这个警告在PrimeTime被升级为了如下两类更加细化的错误Error: Generated clock clk1 has no path to its master clock. (PTE-075)Error: Generated clock *** with source pin *** rise_edge is not satisfiable; zero source latency will be used. (UITE-461) Error: Generated clock *** with source pin *** fall_edge is not satisfiable; zero source latency will be used. (UITE-461)首先回顾一下create_generated_clock命令的-source选项这个选项指明生成时钟是由哪个引脚或端口上的时钟派生的这个原时钟被称为master clock注意这里不一定要master clock的源对象是该引脚或端口该引脚或端口也不需要是生成时钟源的扇入唯一的要求是master clock要能传播至该引脚或端口这里需要注意的是时钟无法穿过触发器进行传播除了作为集成门控单元(ICG)使用的锁存器的时钟引脚外该选项只是用于确定master clock及其极性。第一种可能图1 第一种情况第一种情况是最简单的如图1所示。由于创建生成时钟并未要求master clock能传播至生成时钟的源对象如果使用下面的命令创建时钟和生成时钟创建时钟时并不会有任何问题此时的时钟报告如图2所示。create_clock -period 10 [get_ports clk] create_generated_clock -source [get_ports out] -divide_by 2 [get_ports clk1]图2 时钟报告但这是有问题的因为显然master clock源对象并不存在任何时序弧到生成时钟源对象这里我们避免使用传播这个词因为时钟无法穿过触发器进行传播但计算延迟可以穿过触发器。用set_propagated_clock命令将master clock设置为传播时钟后静态时序分析器会尝试计算master clock到生成时钟的延迟此时如果使用update_timing或report_timing命令时会出现警告或错误对于Design Compiler会出现TIM-255警告而对于PrimeTime则会出现PTE-075错误。第二种可能图3 第二种情况在第二种情况下时钟路径上存在一个反相器这就会导致出现时钟极性的翻转此时-source选项指定的引脚或端口就会产生影响如果使用端口clk则使用了正极性的master clock如果使用引脚U6/Y或引脚out1_reg/CK则使用了负极性的master clock。这里存在一个隐性要求如果使用了正极性的master clock则要求从master clock源对象上升沿开始存在时序弧到生成时钟源对象如果使用了负极性的master clock则要求从master clock源对象下降沿开始存在时序弧到生成时钟源对象。使用下面的命令使用正极性的master clock。create_clock -period 10 [get_ports clk] create_generated_clock -source [get_ports clk] -divide_by 2 [get_pins out1_reg/Q]但从图3中可得master clock源对象上升沿并不能触发out1_reg。用set_propagated_clock命令将master clock设置为传播时钟后静态时序分析器会尝试计算master clock到生成时钟的延迟此时如果使用update_timing或report_timing命令时会出现警告或错误对于Design Compiler会出现TIM-255警告而对于PrimeTime则会出现UITE-461错误。使用下面的命令使用负极性的master clock则不会有任何问题。create_clock -period 10 [get_ports clk] create_generated_clock -source [get_ports U6/Y] -divide_by 2 [get_pins out1_reg/Q]需要注意的是以上的讨论仅针对触发器为上升沿触发的情况如果触发器为下降沿触发则情况完全相反。顺带一提report_transitive_fanout -clock_tree命令可以显示时钟树的的传播过程及其中的极性。
返回列表