目录
- 1.绪论
- 2.静态时序分析与动态时序分析
- 3.时序约束在静态时序分析中的作用
- 3.1.约束作为声明
- 3.2. 约束作为断言
- 3.3.约束作为指令
- 3.4.约束作为异常
- 3.5.约束的角色变化
- 4.STA需要正确约束
- 5.时序路径起点和终点
- 6.建立与保持
- 6.1 建立时间
- 6.2 保持时间
- 6.3 裕度
- 7.SDC主要类型
- 7.1 时序约束
- 7.2 面积与功耗约束
- 7.3 设计规则约束
- 7.4 接口约束
- 7.5 特定模式和配置约束
- 7.6 设计要求和异常
- 7.7 其他命令
1.绪论
时序在数字系统中占有至关重要的地位,时序约束对数字系统的设计起着显著的作用,定义时序约束是一个相当复杂的过程。
接下来将通过多篇文章详细的讲述约束是什么,有哪些重点,约束怎么写,PT软件如何产生时序报告,时序报告怎么分析等。
2.静态时序分析与动态时序分析
时序分析有两种
- 动态时序分析:动态时序分析是指在输入端输入一组向量,并观察信号到达电路中的各个点的时间。
- 静态时序分析(STA):静态时序分析通过分析电路拓扑来计算相同的信息,而不需要任何输入向量。
我们研究的内容是静态时序分析。
区别:静态时序分析与动态时序分析优缺点_简述数字电路静态时序分析与动态时序仿直的各自的优缺点-CSDN博客
3.时序约束在静态时序分析中的作用
STA工具从相应的设计描述中获取电路描述,HDL是最常用的形式。它还接受库输入–主要用来了解依赖技术的特性,如通过特定门的延迟值。
STA工具需要的另一组输入与输入端各种信号的到达时间和其他特性以及各种输出的时间要求有关,这些输入通过时序约束来提供。时序约束在STA期间扮演了多个角色。
3.1.约束作为声明
某些约束只是工具的声明。该工具不需要验证这些声明的准确性或正确性。该工具仅仅将其用作自身的输入,以便验证时序是否满足。通常,这是设计外部某些情况的信息–工具无法自行确定。
对于3.3所示的电路,以下只是用作声明的约束的示例:
- 输入I1到达边界的时间
- 输入I2到达边界的时间
- 输入I1和I2的过渡时间(transistion time,信号的状态从逻辑0变为逻辑1或从逻辑1变为逻辑0所需时间)
- 输出O1必须驱动负载
3.2. 约束作为断言
另一方面,约束可以作为断言。该工具需要验证设计符合这些约束,这正式STA所关心的。在进行各种计算之后,如果工具发现时序满足要求,则认为STA通过,或认为时序满足要求。相反,如果这些约束不满足要求,则认为STA或时序失败。
图3.3相同所示电路,断言约束的一个例子:
- 输出O1在边界可用的时间
3.3.约束作为指令
在其他时候,约束可以为某些工具的指令。这种情况使用于实现工具,如综合或布局布线,这种情况使用于实现工具,如综合或布局布线。这些实现工具将这些约束作为他们试图满足的目标。考虑3.4所示的电路。
对于示例电路,时钟树综合工具现在将提供一个精巧的网络结构,以便1000个触发器中的每一个都可以由该网络驱动。这种时钟树综合工具的实力指令可以实现时钟网络的延迟。时钟树工具应该通过网络的延迟满足规定值的方式来实现树形网络。
3.4.约束作为异常
有一些约束做相反的事情,即他们指定约束放宽的范围。假设一些路径被约束以满足某些时序,但是由于某些特殊原因,这些路径并不需要满足这些时序。或者说,即使要求更宽松,它们也可以很好地工作。这些称为时序异常。
3.5.约束的角色变化
有时,同一个约束的角色也会发生变化。在设计的一个阶段,他可能是一个声明,在另一个阶段,它也可能变成一条指令。
再次考虑图3.4所示的电路。有一个约束指定了通过该时钟网络的延迟。如果有一个想在该时钟网络综合之前进行STA,那么这个约束(即通过该时钟网络延迟)只是一个声明STA工具应该仅假设通过该时钟网络的延迟是一个指定值。
现在,在时钟树综合期间,同一个约束变成了一个指令。时钟树综合工具需要综合时钟网络,使通过时钟网络的延迟等于指定值。
一旦完成了时钟树综合,STA就可以通过时钟树网络计算延迟。同样的约束就会变得毫无意义,应该舍弃掉。
因此相同的约束(即通过时钟树的延迟):
- 对预布局STA而言是一个声明–此处将其视为通过该网络的延迟。
- 对时钟树综合工具而言是一条指令–它尝试实现该时钟网络,使其延迟在指令范围内。
- 对后布局STA而言是无意义的。
4.STA需要正确约束
约束必须处理好平衡,下图解释了这种平衡。
横轴表示操作频率所需的约束,纵轴表示实际应用于设计中的约束。离原点越远表示约束越严格。45°的只限表示理想约束。实际定义的约束应于实际所需的相同。
线下面的点代表所应用的约束比要求的更宽松,这意味着STA看起来可能是很干净的,但是它已经针对比实际要求更宽松的条件进行了处理,因此最终设备可能无法以所需的频率进行工作。
一个明显的解决方案是约束的应用应该在始终位于线上或者线的上方,这将确保约束比真正的需要的更严格。但是,应用更严格的约束有自身的一系列问题。
- 为了满足更严格的时序,这些工具可能要插入驱动能力更高的单元。这些驱动能力更高的单元意味着更高的面积和功率。
- 有时为了满足更严格的约束,可能将更高效的路由资源分配给了这些路径,从而为实际的关键路径留出了较少的高效资源。因此,真正需要更好资源的路径可能会获得较低的优先级,因此另外一条路径被给予了不必要的但更严格的约束。
- 严格约束更严重的弊端是时序关闭问题。设计可能不符合时序要求,因此它已经被指定给了比真正需要更严格的约束。试图满足甚至不需要的时序,这可能会带来必须要的时间开销。
因此,约束的理想使用应该正好在线上,既不过严也不过松。在拿不准的情况下,必须要严格一点。
对于上述图片B表示约束正好,A表示约束宽松,C表示约束严格。
5.时序路径起点和终点
信号时序开始的点称为起点。因此,对于给定电路,所有输入都可以作为起点。信号必须被定时的点称为终点。因此,所有输出都可以作为终点。
在寄存器中,输入D必须等待时钟触发的到达。所以,直到D到达才能完成的过渡过程现在必须等待。现在进一步传递信号的时序将取决于时钟的到达时间。此处D应检查是否满足建立和保持时间要求。因此,时序路径在此结束。所以寄存器也可以作为终点。
类似地,寄存器也可作为起点。信号将从寄存器的Q引脚开始,然后向前传递。严格来说,时序从时钟源开始,然后到达触发器的clock引脚,接着进入触发器的Q引脚,然后继续向前。所以,严格来说,寄存器并不是真正的起点。但是,在大多数实际使用中,把寄存器称为起点。在实际分析中,虽然对于图3.9所示的电路,路径跟踪是从时钟源开始的。
起点是:
- 原始输入(I1、Clk、Clr、I2)
- 寄存器(F1、F2、F3、F4) – 实际上是这些寄存器的时钟源。
终点是: - 原始输出(O1、O2、O3) – 此处必须检查在要求的时间内信号在这些点可用。
- 寄存器(F1、F2、F3、F4) – 此处必须检查D(和其他同步输入)输入满足建立和
保持时间的要求。
让我们更仔细地看一下触发器F3。到达触发器的异步clear引脚的信号在此处不需要等待任何其他的触发,它可以简单地通过触发器的Q引脚继续向前。因此,时序路径不需要在这里结束。因此,当触发器的D引脚作为终点时,异步clear或set引脚可能不是终点。
6.建立与保持
6.1 建立时间
建立时间指的是时钟信号变化之前数据保持不变的时间
6.2 保持时间
保持时间指的是时钟信号变化之后数据保持不变的时间
6.3 裕度
时间裕量是指在时序路径上要求的时间和实际花费的时间的差。如果裕量的值为正值或者0,则说明设计电路的时机时序符合约束条件,如果为负值则说明不符合条件。
7.SDC主要类型
SDC格式的余数可以大致分为以下几种:
- 时序约束
- 面积与功率约束
- 设计规则约束
- 接口约束
- 特定模式和配置约束
- 设计要求的异常
- 其他命令
7.1 时序约束
时序约束为影响工作频率的设计参数提供指导。它包括指定时钟特性、端口延迟、引脚和路径的命令。
7.2 面积与功耗约束
面积与功耗约束包括为面积和功率提供指导的命令,其中设计必须适合面积和功率要求要达到最优
7.3 设计规则约束
设计规则约束包括为目标计数的某些要求提供指导的命令。
7.4 接口约束
接口约束包括为假想设计提供指导的命令,为设计需要构造电路单元,同时这些电路单元与子系统、芯片或SOC相连与之交互。
7.5 特定模式和配置约束
假设分析的约束包括一些命令,这些命令帮助设计人员对端口和引脚的允许值做出假设。通过在特定工作模式或任意工作模式下明确排除不可能出现的情况,这些命令有助于对特定模式的设计进行更好的优化。
7.6 设计要求和异常
该类别包括帮助设计人员放宽要求的命令,此命令是由其他命令所规定的,从而提供了约束放宽的适用范围。