静态时序分析:时序组(Path Group)的概念
静态时序分析:时序组(Path Group)的概念
要理解时序组(Path Group)的概念,首先得知道时序路径的概念,时序路径是由时序弧构成的数据路径,静态时序分析会分别对每条有约束的时序路径进行时序检查(例如建立时间检查、保持时间检查、移除时间检查、恢复时间检查、最大延迟检查和最小延迟检查等)。
每条被约束的时序路径都属于一个时序组,report_timing命令的报告中,就可以看到每条时序路径所属的时序组。
下面将举例进行说明,图1是一个简单电路的示意图,它由两个D触发器组成。
图1 一个简单的例子
在没有创建任何时钟时,时序路径是没有约束的,如图2所示的寄存器到寄存器时序路径,从图中可以看出,一条没有被约束的时序路径不属于任何时序组,因此标记为(none)。
图2 没有约束的时序路径
如果q1_reg和q2_reg都被相应时钟约束,则该条时序路径是有约束的,且以约束时序路径终点即q2_reg的时钟作为其时序组名,如图3所示为clk2时序组。
图3 被时钟约束的时序路径
需要注意的是,如果只有q2_reg被时钟clk2约束,而q1_reg没有被时钟约束,该条时序路径会被标记为(none)。
当使用set_max_delay、set_min_delay命令约束一条非典型时序路径时,即使该时序路径的起点和终点没有被时钟约束,该条时序路径也被认为是有约束的,且属于default时序组,如图4所示。
图4 被命令约束的非典型时序路径
如果在图4的基础上使用时钟约束其终点,则它变成以约束q的时钟作为其时序组名,如图5所示。
图5 被命令和时钟约束的非典型时序路径
对于复位信号的Removal和Recovery检查时序路径,会被归为async_default时序组。对于门控时钟信号检查时序路径,会被归为clock_gating_default时序组。
在某些情况下,用户可能不想使用默认的时序组分组模式,这时可以使用group_path命令创建时序组,使用report_path_group命令可以报告所有定义的时序组。
为什么会创建自定义时序组?在默认情况下(即Worst Negative Slack Method),Design Compiler将会顺序优化所有时序组(这指的是建立时间约束,保持时间约束相关的优化是在修复DRC阶段进行的),而对于一个特定时序组,将从该组的关键路径(Worst Negative Slack, WNS)开始进行优化,直到该组的所有时序路径都满足时序要求,或者当前WNS时序路径无法继续优化时停止(这是为了节约综合时间)。
这就表示,一个时序组中的关键路径会阻止其它次关键路径的优化。这有时会带来问题,因为如果次关键路径与关键路径交织在一起(共享逻辑),通过改善一个或多个次关键路径,可能会对关键路径有所帮助。同时,综合后的时序违例会更多,这给物理设计带来了更多的困难。
顺带一提,使用Critical Range Negative Slack Method也是一种解决以上问题的方法,这通过使用带-critical_range选项的group_path命令或者set_critical_range命令给一个时序组设置关键范围(Critical Range)来完成。所有在关键范围内的时序路径都会被优化,而不只是考虑关键路径,这会导致使用更多的CPU资源以及更长的综合时间。