一文详解时序约束是如何影响数字系统的
扫描二维码
随时随地手机看文章
时序在数字系统中占有至关重要的地位,时序约束对数字系统的设计起着显著的作用,定义时序约束是一个相当复杂的过程。
FPGA(现场可编程门阵列)是一种灵活且可重构的硬件平台,广泛应用于数字电路设计和加速计算领域。在设计复杂的数字电路时,时序约束是关键的步骤之一,它可以确保电路在给定的时钟频率下正常运行。本文将介绍时序约束的重要性,并提供一些优化时序性能的技巧和相关的源代码示例。
一、时序约束的重要性
时序约束是确保FPGA设计在正确的时钟频率下运行的关键步骤。通过指定时序约束,设计人员可以告诉综合工具和布局布线工具如何优化电路的时序性能。如果没有正确的时序约束,设计可能会面临以下问题:
时序违规:当设计的时序路径超过FPGA的时序限制时,就会发生时序违规。这可能导致电路功能失效或不可预测的行为。
容错能力下降:没有适当的时序约束,电路对时钟频率的容错能力会下降,容易受到抖动、噪声和温度变化等因素的干扰。
性能下降:缺乏时序约束可能会导致电路的性能下降,无法充分利用FPGA的资源和计算能力。
FPGA开发过程中,离不开时序约束,那么时序约束是什么?简单点说,FPGA芯片中的逻辑电路,从输入到输出所需要的时间,这个时间必须在设定的时钟周期内完成,更详细一点,即需要满足建立和保持时间。时序约束可以让VIvado和Quartus等FPGA开发软件,在布线时检测综合出来的逻辑电路是否满足这个时序要求,并生成时序报告。
建立/保持时间
1、基本概念
设定时序约束的目的就是为了满足建立时间和保持时间,所以理解“建立时间和保持时间”这两个概念非常重要。
建立时间:在时钟上升沿到来之前,输入信号需要提前一个最小时间里“预先准备好”,这个最小时间量就是建立时间;
保持时间:在时钟上升沿到来之后,输入信号必须保持一个最小时间量“不能变化”,这样这个最小时间量就是保持时间。
一、时序分析:揭示时间之秘
时序分析,简而言之,是对系统中信号传播时间的分析和评估。它主要分为静态时序分析(STA)和动态时序分析(DTA)两种类型。
静态时序分析(STA)是电子设计中最为常用的分析方法。它通过对电路中的所有时序路径进行遍历,根据给定工作条件(如温度、电压、工艺角等)下的时序库文件,计算信号在这些路径上的传播延时,进而检查信号的建立和保持时间是否满足设计要求。STA的核心在于其全面性和准确性,能够发现设计中的潜在时序问题,为设计优化提供有力支持。
动态时序分析(DTA)则更加侧重于对系统动态行为的模拟和分析。它通过对输入信号施加不同时刻的激励,在仿真环境中模拟系统的运行过程,并对仿真结果进行时序和功能分析。DTA虽然能够更真实地反映系统的动态特性,但由于其计算复杂度和资源消耗较大,通常用于对关键路径或特定场景的深入分析。
二、时序约束:界定时间边界
时序约束是指在设计和开发硬件或软件系统时,对各个元件或操作之间的时间关系进行限制和要求。它是确保系统在特定时间范围内以期望顺序和时间间隔进行操作的关键。
时序约束的应用广泛而深入,涵盖了电子电路设计、数字系统设计、通信协议设计等多个领域。在电子电路设计中,时序约束通常包括时钟频率、时钟沿、时序延迟和时序关系等方面的要求。这些约束条件共同构成了系统稳定运行的基石,确保了信号在指定时间范围内准确到达目标元件,避免了因信号延迟导致的系统故障或性能下降。
三、时序收敛:迈向设计成功
时序收敛是指通过设计优化和约束调整,使系统满足时序要求的过程。它是集成电路设计过程中不可或缺的一环,直接关系到设计的成功与否。
在FPGA(现场可编程逻辑门阵列)和ASIC(专用集成电路)等集成电路设计过程中,时序收敛是一个复杂而耗时的过程。设计师需要根据STA和DTA的结果,对设计进行反复优化和调整,以确保所有时序路径都满足设计要求。这包括调整时钟频率、优化电路结构、增加缓冲器等多种手段。
一、时序分析中的重要概念
在数字系统中有两个非常重要的概念:建立时间和保持时间,其示意图如图1所示。一个数字系统能否正常工作跟这两个概念密切相关。只有建立时间和保持时间都同时得到满足时,数字系统才能可靠的、正常的工作。

当寄存器的建立时间或保持时间不能得到满足时,寄存器有可能会进入亚稳态( Metastable)。亚稳态是一种电压的中间态,假设寄存器的输出电压大于3V判决为逻辑1,小于0.3V判决为逻辑0,那么电压处于0.3V到3V之间并且能够短时间稳定的状态就是亚稳态。寄存器在进入亚稳态一段时间后会回复到正常的状态,但是有可能回到逻辑1的状态,也有可能回到逻辑0的状态。这种不确定性就有可能引起数字系统的错误。
建立时间和保持时间是一个寄存器的固有属性,是由其内部的结构、工艺等因素决定的,因而在进行数字系统设计时只能通过改变电路结构使其满足建立时间和保持时间的要求,而不能改变建立时间和保持时间的值。
二、建立时间和保持时间对电路性能的影响
首先来看一个典型的同步数字系统的示意图,见图2。

在图2中,FF1和FF2代表两个寄存器,在两个寄存器中间存在组合逻辑。同步的数字系统正是由许多的寄存器,以及寄存器中间的组合逻辑构成的(也包括寄存器间的直接连接)。
显然,如果要数字系统正常工作,每个寄存器的建立时间和保持时间都必须得到满足。假设时钟信号ck到达所有寄存器的时间相同,图3画出了这两个寄存器间的时序关系。

从图中可以看到,如果要FF2的建立时间和保持时间得到满足,必须要满足以下公式:

其中Ts建立时间,Th为保持时间,Tclock为时钟周期,Tclk2q为寄存器的传输延时(从时钟有效沿到输出的时间),Tdelay为两个寄存器之间的组合逻辑延时。
从公式(1)中可以看出, 建立时间是否能得到满足取决于3个参数:时钟周期、寄存器传输延时以及组合逻辑延时。其中寄存器的输出延时是寄存器的固有属性,不可更改,因而在设计中只能靠调节时钟周期和组合逻辑的延时来满足寄存器对于建立时间的要求。
从公式(2)中可以看出,保持时间能否得到满足取决于2个参数:寄存器的传输延时和组合逻辑的延时,设计者能做的仅仅是调节组合逻辑的延时。
图3仅仅是两个寄存器之间的时序关系,在一个数字系统中往往包含有成千上万个寄存器,任意两个相邻的寄存器之间的时序关系都必须满足公式(1)和公式(2)的约束,只有如此数字系统才能正常工作。在数字系统可以正常工作的前提下,组合逻辑的延时就决定了数字系统能够工作的时钟频率的上限。组合逻辑的延时越短,系统的工作频率的上限就越高,这里的组合逻辑的延时指的是任意两个相邻的寄存器之间的最长的组合逻辑延时,也就是关键路径的延时。当然,组合逻辑的延时也不能无限短,必须要满足公式(2) 的要求。
三、在FPGA中对时序进行约束
在FPGA设计中,时序约束占有重要的地位。时序约束主要有两方面的作用:第一,EDA工具会根据设计者的约束努力尝试布局布线,尽量满足设计者提出的时序方面的要求;第二,在EDA工具经过努力仍不能满足设计者提出的时序要求时会给出警告信息,用以提示设计者。
在对设计进行约束时要做到恰到好处,太松或者太紧的约束都不能使电路达到最好的状态。约束过松自不必提,约束过紧之后EDA软件经过努力尝试仍不能达到要求,但其不会取最接近目标的一次,而是将最后一次作为结果,可能导致电路性能更加恶化。