相关阅读
静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm=1001.2014.3001.5482
引言
一般情况下,设计中的时钟路径和数据路径是严格区分开的:时钟路径即从时钟源对象(时钟定义点)到触发器的时钟引脚,数据路径即从触发器的时钟引脚到另一个触发器的数据引脚,如图1所示。根据这个定义,发射路径由发射触发器的时钟路径和数据路径组成,而捕获路径由捕获触发器的时钟路径组成。
图1 时钟路径和数据路径的定义
虽然不常见,但有些时候时钟信号也会连接到触发器的数据引脚,如图2所示,本文就将讨论这种情况。
图2 作为数据使用的时钟
时钟标记
从时钟源对象开始,工具会遍历整个时钟网络并进行标记:如果某个单元引脚的扇出中存在触发器时钟引脚,则该单元引脚is_clock_used_as_clock属性被设置为true;如果某个单元引脚的扇出中存在触发器数据引脚,则该单元引脚is_clock_used_as_data属性被设置为true。
以图2为例,可以使用下面的命令报告设计中所有is_clock_used_as_clock属性或is_clock_used_as_data属性为true的引脚。
get_pins -filter "is_clock_used_as_clock==true"
{u1/A u1/Y u2/A u2/Y o_reg/CK}
get_pins -filter "is_clock_used_as_data==true"
{u1/A u1/Y u3/A u3/Y o_reg/D}
作为数据使用的时钟的时序分析
以图2为例,此时的输入端口clk到触发器的时序分析时就像普通输入端口那样,会计算真实发射路径上的延迟和转换时间(即使时钟为理想时钟也是如此,这是因为此时的时钟路径与数据路径重合了),并且此时无需指定输入延迟,数据自身就是时钟,如图3所示。
图3 作为数据使用的理想时钟
但可能出现问题,对于理想时钟来说,如果使用真实发射路径上的延迟和转换时间,时钟网络的高扇出而可能造成很大的延迟和转换时间,这在时钟树综合前是过于悲观的。如果将enable_clock_to_data_analysis变量(默认值为false)设置为true,则对于发射路径则会使用set_clock_latency命令和set_clock_transition命令设置的延迟和转换时间。
对于捕获路径,则会根据时钟的种类(理想or传播)使用相应的延迟和转换时间的计算策略,就如一般情况下那样,图4展示了时钟为传播时钟情况下的时序分析报告,注意使用-full_clock选项和-transition_time以报告完整的时序路径和转换时间。
图4 作为数据使用的传播时钟