多周期路径与时钟相移
有时,必须在具有相同时钟域的两个时钟域之间定义定时约束时钟周期,但两个时钟之间的相移。在这些情况下,理解正时引擎使用的默认设置和保持关系。如果没有仔细调整两个时钟之间的相移可能导致两个时钟间的逻辑约束过大域。
例如,假设以下内容:
?两个时钟CLK1和CLK2具有相同的波形。
?CLK2偏移+0.3 ns。
正时引擎通过查看两者的所有边缘来计算设置关系波形,并选择启动和捕获时钟上的两个边缘,从而产生更严格的约束。由于时钟相移,定时引擎使用的设置和保持关系可能不是预期的那样。如下图所示。
在该示例中,由于相移而导致的设置约束是0.3ns。这使得它几乎无法实现定时关闭。另一方面,保持检查为-3.7 ns,这也是宽大的。
设置和固定边缘必须进行调整,以符合您的意图。这是通过添加设置乘数为二(2)的多循环约束:
这导致将设置要求的捕获边缘向前移动一个周期。这个保持的默认边缘源自设置要求。不需要指定。
在负相移的情况下,如下图所示,两个时钟之间域,用于设置和保持检查的启动和捕获边缘与那些类似来自上一节(单时钟域,无相移)。
对于负相移,通常不需要多周期约束来平衡相移的影响。如果相移太大以至于时钟启动,则会发生异常或者必须调整捕获边缘以保持真实的设置和保持要求。