
相关阅读静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482目录介绍发射时钟和捕获时钟相同发射时钟和捕获时钟不同介绍在静态时序分析中恢复时间检查约束了触发器时钟引脚时钟路径和异步复位包括异步置位引脚数据路径之间的时序关系以满足触发器的恢复时间要求。简单来说就是恢复时间要求复位释放在时钟的有效沿到达之前提前到达且稳定一段时间这是为了数据被有效锁存捕获关于异步复位的更详细介绍可以参考下面的博客。数字IC前端学习笔记异步复位同步释放https://chenzhang.blog.csdn.net/article/details/134481964?spm1011.2415.3001.5331通常来说在检查一条时序路径时会有一个发射触发器即发射数据的触发器就算是输入端口也会有一个假想的发射触发器还有一个捕获触发器即捕获数据的触发器就算是输出端口也会有一个假想的捕获触发器在进行恢复时间检查时我们会使用最大路径即延迟最大的时序路径。有一点需要特别注意发射触发器和捕获触发器的时钟并不一定是同一个时钟虽然在同步设计中常常能保证这一点。恢复时间检查是从发射时钟的某个有效沿到其后捕获时钟的最近有效沿不包括同时这里的先后并不考虑时钟延迟包括时钟网络延迟和时钟源延迟、时钟不确定度的即考虑理想情况。在同步设计中由于理想情况下时钟是对齐的因此发射捕获时钟的任何一个沿的检查都是等效的。发射时钟和捕获时钟相同例如对于图1假设使用复位同步器图中有三个同步的D触发器考虑发射触发器是reset_sync_ff2_reg而捕获触发器是data_out_reg的情况。图1 一个简单的例子图2是时钟的波形图周期为10ns假设D触发器是上升沿触发则发射触发器会在5ns、15ns、25ns...发射数据而捕获触发器则相应的会在15ns、25ns、35ns...捕获数据并检查恢复时间是否满足要求。图2 时钟波形图由于Design Compiler与PrimeTime的设置不同默认不进行恢复时间检查需要先进行下面的设置。enable_recovery_removal_arcs 默认值false timing_disable_recovery_removal_checks 默认值true /*它们永远保持相斥可以将enable_recovery_removal_arcs设置为true也可以将 timing_disable_recovery_removal_checks设置为fasleDC会自动设置另一个变量。*/ set enable_recovery_removal_arcs true set timing_disable_recovery_removal_checks false //两者取一即可使用report_timing命令可以报告时序检查结果如图3所示就是从reset_sync_ff2_reg触发器的时钟引脚CK到data_out_reg触发器的复位引脚RN的时序路径的报告报告中会出现library recovery time关键词。图3 恢复时间时序报告图3中Path_type为max表示这是一个恢复时间检查或最大延迟时间检查注意将其与其他SDC命令中的-max和-min选项区分开并不代表着-max指定的参数就只用于恢复时间检查也不代表着-min指定的参数就只用于移除时间检查这取决于工作模式是否为bc_wc模式还是on_chip_variation模式。从图3中可以看出发射时钟选择了5ns时的上升沿而捕获时钟选择了15ns时的上升沿在报告的最后给出了时序检查的裕度(slack)在满足时序要求的设计中裕度应该是正的并且留有一定的余量。发射时钟和捕获时钟不同下面来看一个发射时钟和捕获时钟不是同一个时钟的例子。以图4为例此时reset_sync_ff2_reg触发器的时钟改为clk1周期为16如图5所示而data_out_reg触发器的时钟改为clk2周期为14如图6所示。图4 发射时钟和捕获时钟不同的例子图5 时钟clk1的波形图图6 时钟clk2的波形图根据我们的规则易知发射时钟的有效沿在8ns、24ns、40ns、56ns...而捕获时钟需要检查的相应有效沿在21ns、35ns、49ns、63ns...。在进行恢复时间检查时会对最难满足条件的时钟沿时刻组合进行检查即相隔最短的一组时刻在本例中为发射时钟在104ns而捕获时钟在105ns时。图7的时序报告证明了这一分析。图7 恢复时间时序报告