Innovus 依据路径段的长度比例为分区分配时序预算,对于时序裕量为正(positive slack)和负(negative slack)的路径,计算方式略有不同。以下是具体说明:
一、核心参数定义
- SD(Segment Delay):路径段延迟(如模块内部或顶层网络的延迟)。
- TD(Total Delay):路径总延迟(所有路径段延迟之和)。
- AT(Available Time):总可用时间(如时钟周期减去固定延迟,或多周期路径的周期数)。
- HT(Hold Time):保持时间(信号不允许变化的时间)。
- BB(Baseline Budget):基准预算(分配给各路径段的时序目标)。
- PS(Positive Slack):正时序裕量(路径实际延迟小于可用时间的差值)。
二、负时序裕量路径(Negative Slack)的预算计算
当路径时序违规(实际延迟 > 可用时间)时,预算按比例分配以优先满足关键路径。
1. 建立时间检查(Setup Check,max budgeting)
公式:
BB(neg) = (SD / TD) × AT
示例:
- 路径包含模块 A(3ns)、模块 B(2ns)、顶层网络 C(1ns),总延迟
TD = 3 + 2 + 1 = 6ns,可用时间AT = 5ns。 - 模块 A 的预算:
3/6 × 5 = 2.5ns - 模块 B 的预算:
2/6 × 5 ≈ 1.67ns - 顶层网络 C 的预算:
1/6 × 5 ≈ 0.83ns - 衍生约束:
- 模块 A 的输出延迟 = 模块 B 预算 + 网络 C 预算 = 1.67 + 0.83 = 2.5ns
- 模块 B 的输入延迟 = 模块 A 预算 + 网络 C 预算 = 2.5 + 0.83 ≈ 3.33ns
2. 保持时间检查(Hold Check,min budgeting)
公式:
BB(neg) = (SD / TD) × (AT + HT)
- 若
AT + HT < 0,则不使用比例值,直接采用时序分析中的输入 / 输出延迟。
三、正时序裕量路径(Positive Slack)的预算计算
当路径时序有冗余(实际延迟 < 可用时间)时,预算会分配部分裕量以平衡各路径段。
1. 建立时间检查(Setup Check,max budgeting)
公式:
BB(pos) = SD + (SD / TD) × PS
示例:
- 路径包含模块 A(1ns)、模块 B(1ns)、顶层网络 C(1ns),总延迟
TD = 3ns,可用时间AT = 5ns,正裕量PS = 5 - 3 = 2ns。 - 各路径段预算:
1 + (1/3) × 2 ≈ 1.66ns
2. 保持时间检查(Hold Check,min budgeting)
公式:
BB(pos) = SD - (SD / TD) × PS
四、特殊规则
- 虚拟缓冲延迟:
正裕量路径会添加虚拟缓冲延迟(通常 3 个),以预留优化空间。邻接设计(abutted designs)添加 2 个,穿通路径(feedthrough paths)则将 3 个缓冲延迟分配到所有路径段。 - 保持时间特性:
保持时间不同于建立时间,它代表信号不允许变化的时间,计算时需结合可用时间和路径段比例。
总结
时序预算计算通过比例分配机制,确保负裕量路径优先满足关键时序要求,正裕量路径合理分配冗余以平衡设计。这种方式既保证了时序收敛的可行性,又为后续优化预留了空间。
Innovus时序预算计算方法
1511

被折叠的 条评论
为什么被折叠?



