时钟约束在STA中的作用
- 1.约束作为声明
- 2.约束作为断言
- 3.约束作为指令
- 4.约束作为异常
- 5. 约束的角色变化
简介:
STA工具从相应的设计描述中获取电路描述,HDL是最常用的形式。它还接受库输入–主要用来了解依赖技术的特性,如通过特定门的延迟值。
STA工具需要的另一组输入与输入端各种信号的到达时间和其他特性以及各种输出的时间要求有关,这些输入通过时序约束来提供。时序约束在STA期间扮演了多个角色。
1.约束作为声明
某些约束只是工具的声明。该工具不需要验证这些声明的准确性或正确性。该工具仅仅将其用作自身的输入,以便验证时序是否满足。通常,这是设计外部某些情况的信息–工具无法自行确定。
对于3.3所示的电路,以下只是用作声明的约束的示例:
- 输入I1到达边界的时间
- 输入I2到达边界的时间
- 输入I1和I2的过渡时间(transistion time,信号的状态从逻辑0变为逻辑1或从逻辑1变为逻辑0所需时间)
- 输出O1必须驱动负载
2.约束作为断言
另一方面,约束可以作为断言。该工具需要验证设计符合这些约束,这正式STA所关心的。在进行各种计算之后,如果工具发现时序满足要求,则认为STA通过,或认为时序满足要求。相反,如果这些约束不满足要求,则认为STA或时序失败。
图3.3相同所示电路,断言约束的一个例子:
- 输出O1在边界可用的时间
3.约束作为指令
在其他时候,约束可以为某些工具的指令。这种情况使用于实现工具,如综合或布局布线,这种情况使用于实现工具,如综合或布局布线。这些实现工具将这些约束作为他们试图满足的目标。考虑3.4所示的电路。
对于示例电路,时钟树综合工具现在将提供一个精巧的网络结构,以便1000个触发器中的每一个都可以由该网络驱动。这种时钟树综合工具的实力指令可以实现时钟网络的延迟。时钟树工具应该通过网络的延迟满足规定值的方式来实现树形网络。
4.约束作为异常
有一些约束做相反的事情,即他们指定约束放宽的范围。假设一些路径被约束以满足某些时序,但是由于某些特殊原因,这些路径并不需要满足这些时序。或者说,即使要求更宽松,它们也可以很好地工作。这些称为时序异常。
5. 约束的角色变化
有时,同一个约束的角色也会发生变化。在设计的一个阶段,他可能是一个声明,在另一个阶段,它也可能变成一条指令。
再次考虑图3.4所示的电路。有一个约束指定了通过该时钟网络的延迟。如果有一个想在该时钟网络综合之前进行STA,那么这个约束(即通过该时钟网络延迟)只是一个声明STA工具应该仅假设通过该时钟网络的延迟是一个指定值。
现在,在时钟树综合期间,同一个约束变成了一个指令。时钟树综合工具需要综合时钟网络,使通过时钟网络的延迟等于指定值。
一旦完成了时钟树综合,STA就可以通过时钟树网络计算延迟。同样的约束就会变得毫无意义,应该舍弃掉。
因此相同的约束(即通过时钟树的延迟):
- 对预布局STA而言是一个声明–此处将其视为通过该网络的延迟。
- 对时钟树综合工具而言是一条指令–它尝试实现该时钟网络,使其延迟在指令范围内。
- 对后布局STA而言是无意义的。