写这个的原因:
-
站在DC STA的角度计算时序路径,而非站在寄存器建立/保持时间的直观方式
-
个人感觉用arrival, required计算更间接
-
Arrial是reg2的D端经过的路径
-
Required是reg2 CK端经过的路径 + 时序余量 + library setup or hold time
T1 = 源时钟路径
T2 = 数据路径(包含Tco + 组合逻辑)
T3 = 目的时钟路径
结论
-
Data Arrial = T1 + T2
-
Data Required
- SETUP—— Required Time = T3 + Tcycle - library setup time
- HOLD —— Required Time = T3 + library hold time
-
Slack
- setup SLACK = Required- Arrial (arrial < required,说明arrial早,余量大)
- hold SLACK = Arrial Path - Required
- SLACK负数是violation
![](https://i-blog.csdnimg.cn/blog_migrate/b002473c47fe5eac2f27310115e2b5b6.png)
加点花活,multicycle的情况:
![](https://i-blog.csdnimg.cn/blog_migrate/e0c13e623f22029a88f614487e42205e.png)
根据这里MCP的余量
MAX —— Required Time = T3 + N cycle - library setup time
MIN —— Required Time = T3 + (N-1)cycle + library hold time
然后无脑算SLACK就行