sdc之multicycle

发布时间 2023-04-06 17:03:17作者: 小勇5

1、multicycle path  是什么?

常规的时许路径检查都是一个周期内去检查建立时间以及保持时间是否满足要求,set_multicycle_path命令指定从path起点到path终点传输数据所需的时钟周期数,即建立时间和保持时间的检查不再局限于一个周期内,而是多个周期。

2、为什么需要设置multicycle path?

如下图所示,在设计过程中,由于某些原因FF4到FF5之间的逻辑较为繁杂,data无法在一个周期内从FF4传输至FF5,因此FF5只能隔多个周期才能采一次值,所以常规的一个周期内的检查就无法满足要求,需要设定multicycle来检查setup time和hold time。但是一定要注意:我们的design也要保证FF5是每隔multi cycle采一次值。

3、如何设置multicycle?

通过set_multicycle_path -setup 2 -from [get_cells FF4] to [get_cells FF5] 这个command,将建立时间的检查向后推了一个周期,只要在两个周期内满足建立时间要求即可。如下图所示。

 

 改变了建立时间检查的周期,会导致保持时间的检查也会发生改变,如下图所示,工具默认的保持时间的检查就是建立时间检查向前一个周期

 

 显然上图所示的保持时间检查点并不是我们想要的,因此通过command set_multicycle_path -hold 1 -from [get_cells FF4] to [get_cells FF5] 

来修改hold time的检查点。如下图所示:

4、注意事项

set_multicycle_path option setup 和hold time的意义不同,setup后的value指定multicycle的周期,默认是1,而hold 后的value表示相对于默认检查位置,检查点向后移动的时钟周期数,默认是0,工具计算hold cycle的公式如下:

(hold cycles) = (setup option value) – 1 – (hold option value)

还可以指定multicycle的command是基于clcok的上升沿还是下降沿。