1. FPGA 的全局时钟是什么?
FPGA 的全局时钟应该是从晶振分出来的,最原始的频率。其他需要的各种频率都是在这个基础上利用 PLL 或者其他分频手段得到的。
 
2. 全局时钟和 BUFG:
BUFG,输入为固定管脚,输出为 H 型全铜全局高速网络,这样抖动和到任意触发器的延时差最小,这个也就是 FPGA 做同步设计可以不需要做后仿真的原因。
 
全局时钟:今天我们从另一个角度来看一下时钟的概念:时钟是 D 触发器的重要组成部分,一个有效边沿使得 D 触发器进行一次工作。而更多的时候,D 触发器保持住上次的值。对于 D 触发器来说,可以将输入信号和时钟作比较。也许你会问,这么比较有什么意义。首先看我们比较得出什么东西:
       
翻转率:R=Dr/Crx100%
 
就是 D 触发器改变一次值与时钟有效沿个数的比值。
 
举例:你写了一个来一个时钟有效沿就取一次反的电路,那么他的翻转率就是 100%,翻转率和你的 FPGA 的功率有很大关系,翻转率越高,FPGA 功率越高。 
 
3. 全局时钟不够用是什么意思?
因为全局时钟需要驱动很多模块,所以全局时钟引脚需要有很大的驱动能力,FPGA 一般都有一些专门的引脚用于作为全局时钟用,他们的驱动能力比较强。但是如果这些引脚用完了,就只能用一般的引脚了,而他们的驱动能力不强,有可能不能满足你的时序要求。(驱动能力小的,产生的延迟会大一些)
 
理论上,FPGA 的任意一个管脚都可以作为时钟输入端口,但是 FPGA 专门设计了全局时钟,全局时钟总线是一条专用总线,到达片内各部分触发器的时间最短,所以用全局时钟芯片工作最可靠,但是如果你设计的时候时钟太多,FPGA 上的全局时钟管脚用完了就出现不够用的情况。
 
4. 什么是第二全局时钟?
比如我有一个同步使能信号,连接到 FPGA 内部 80%的资源(但不是时钟),这个时候,你的信号走线到达各个 D 触发器的延迟差很大,或者翻转率比较大的时候(>40%),这个时候你就需要使用第二全局时钟资源。
 
第二全局时钟资源的驱动能力和时钟抖动延迟等指标仅次于全局时钟信号。第二全局时钟资源其实是通过片内的高速行列总线来实现的,而不像全局时钟总线是一条专用总线。第二全局时钟总线是通过软件布线得到的,所以硬指标肯定是拼不过全局时钟总线。特别是当你在已经有 80%以上的布线率的情况下,可能会出现约束第二全局时钟资源失败的情况。
 
5.CCLK:
CCLK:FPGA 同步配置时钟。如果配置模式为主模式,则该时钟由 FPGA 器件生成,并输出;如果配置模式为从模式,则该时钟由外部提供;
 
当所配置的数据存放在 PROM 中,即通过 PROM 来配置器件时,必须选择 CCLK 时钟;
 
USER CLOCK:用户定义的配置时钟信号,该配置时钟目前很少采用;
 
JTAG CLOCK:JTAG 模式的配置时钟,该时钟提供给内部的 JTAG 控制逻辑。
 
默认值为:CCLK
 
6. CCLK 是怎么产生的:
CCLK 的产生根据配置模式不同而不同,如果设置为 Master 模式,则由内部的震荡电路产生,作为外部 ROM 的工作时钟,默认为 6MHZ,可通过配置选项设置;如果设置为 Slave 模式,则由计算机(或其他下载设备)提供,作为芯片内部下载电路的工作时钟;在 JTAG 模式情况下,CCLK 不输出,此时芯片内部下载电路时钟由内部震荡电路提供,TCK 仅用作边界扫描相关电路时钟。
 
补充:FPGA 的主配置模式中,CCLK 信号是如何产生的?
 
CCLK 是由 FPGA 内部一个晶振电路产生的,同时 ISE 的软件在生成 BIT 流文件时,有个 CCLK CONFIG 选项,这个选项只有在时钟为 CCLK 时才可以起作用,可以在 4-60MHz 选择,可以控制 CCLK 的频率。
在主从模式配置,配置数据的前 60 个字节导入 FPGA 之前,CCLK 一直是 2.5MHz,接下来由于前 60 个配置字节的作用,CCLK 改为 CONFIG 设定的频率,直到结束,一般 CONFIG 默认的频率是 4MHz.
 
7. FPGA 中全局时钟怎么用啊?是把时钟接到 FPGA 的全局时钟输入引脚后,就起到全局时钟的作用了,还是在编译时需要制定某个时钟为全局时钟阿?
 
其实全局时钟的使用关键在你的代码… 如果你的代码中只用了一个时钟作为所有的或者大部分触发器的时钟,编译器自然会把它编译为全局时钟。当然硬件连接上还是用全局时钟引脚较好,尤其是带 PLL 的,不是所有的全局时钟脚都能用 PLL。
 
无沦是用离散逻辑、可编程逻辑,还是用全定制硅器件实现的任何数字设计,为了成功地操作,可靠的时钟是非常关键的。设计不良的时钟在极限的温度、电压或制造工艺的偏差情况下将导致错误的行为,并且调试困难、花销很大。 在设计 PLD/FPGA 时通常采用几种时钟类型。时钟可分为如下四种类型:全局时钟、门控时钟、多级逻辑时钟和波动式时钟。多时钟系统能够包括上述四种时钟类型的任意组合。
 
1.全局时钟
对于一个设计项目来说,全局时钟(或同步时钟)是最简单和最可预测的时钟。在 PLD/FPGA 设计中最好的时钟方案是:由专用的全局时钟输入引脚驱动的单个主时钟去钟控设计项目中的每一个触发器。只要可能就应尽量在设计项目中采用全局时钟。PLD/FPGA 都具有专门的全局时钟引脚,它直接连到器件中的每一个寄存器。这种全局时钟提供器件中最短的时钟到输出的延时。
 
图 1 示出全局时钟的实例。图 1 定时波形示出触发器的数据输入 D[1..3]应遵守建立时间和保持时间的约束条件。建立和保持时间的数值在 PLD 数据手册中给出,也可用软件的定时分析器计算出来。如果在应用中不能满足建立和保持时间的要求,则必须用时钟同步输入信号(参看下一章“异步输入”)。
 
图 1 全局时钟
(最好的方法是用全局时钟引脚去钟控 PLD 内的每一个寄存器,于是数据只要遵守相对时钟的建立时间 tsu 和保持时间 th)
 
2.门控时钟
在许多应用中,整个设计项目都采用外部的全局时钟是不可能或不实际的。PLD 具有乘积项逻辑阵列时钟(即时钟是由逻辑产生的),允许任意函数单独地钟控各个触发器。然而,当你用阵列时钟时,应仔细地分析时钟函数,以避免毛刺。
 
通常用阵列时钟构成门控时钟。门控时钟常常同微处理器接口有关,用地址线去控制写脉冲。然而,每当用组合函数钟控触发器时,通常都存在着门控时钟。如果符合下述条件,门控时钟可以象全局时钟一样可靠地工作:
1. 驱动时钟的逻辑必须只包含一个“与”门或一个“或”门。如果采用任何附加逻在某些工作状态下,会出现竞争产生的毛刺。
 
2. 逻辑门的一个输入作为实际的时钟,而该逻辑门的所有其它输入必须当成地址或控制线,它们遵守相对于时钟的建立和保持时间的约束。
 
图 2 和图 3 是可靠的门控时钟的实例。在 图 2 中,用一个“与”门产生门控时钟,在 图 3 中,用一个“或”门产生门控时钟。在这两个实例中,引脚 nWR 和 nWE 考虑为时钟引脚,引脚 ADD[o..3]是地址引脚,两个触发器的数据是信号 D[1..n]经随机逻辑产生的。
 
图 2 “与”门门控时钟
 
图 3 “或”门门控时钟
 
图 2 和图 3 的波形图显示出有关的建立时间和保持时间的要求。这两个设计项目的地址线必须在时钟保持有效的整个期间内保持稳定(nWR 和 nWE 是低电平有效)。如果地址线在规定的时间内未保持稳定,则在时钟上会出现毛刺,造成触发器发生错误的状态变化。另一方面,数据引脚 D[1..n]只要求在 nWR 和 nWE 的有效边沿处满足标准的建立和保持时间的规定。
 
我们往往可以将门控时钟转换成全局时钟以改善设计项目的可靠性。图 4 示出如何用全局时钟重新设计 图 2 的电路。地址线在控制 D 触发器的使能输入,许多 PLD 设计软件,如 MAX+PLUSII 软件都提供这种带使能端的 D 触发器。当 ENA 为高电平时,D 输入端的值被钟控到触发器中:当 ENA 为低电平时,维持现在的状态。
 
图 4 “与”门门控时钟转化成全局时钟
 
图 4 中重新设计的电路的定时波形表明地址线不需要在 nWR 有效的整个期间内保持稳定;而只要求它们和数据引脚一样符合同样的建立和保持时间,这样对地址线的要求就少很多。
 
图 给出一个不可靠的门控时钟的例子。3 位同步加法计数器的 RCO 输出用来钟控触发器。然而,计数器给出的多个输入起到时钟的作用,这违反了可靠门控时钟所需的条件之一。在产生 RCO 信号的触发器中,没有一个能考虑为实际的时钟线,这是因为所有触发器在几乎相同的时刻发生翻转。而我们并不能保证在 PLD/FPGA 内部 QA,QB,QC 到 D 触发器的布线长短一致,因此,如 图 5 的时间波形所示,在器从 3 计到 4 时,RCO 线上会出现毛刺(假设 QC 到 D 触发器的路径较短,即 QC 的输出先翻转)。
 
图 5 不可靠的门控时钟
(定时波形示出在计数器从 3 到 4 改变时,RCO 信号如何出现毛刺的)
 
图 6 给出一种可靠的全局钟控的电路,它是图 5 不可靠计数器电路的改进,RCO 控制 D 触发器的使能输入。这个改进不需要增加 PLD 的逻辑单元。
 
图 6 不可靠的门控时钟转换为全局时钟
(这个电路等效于图 5 电路,但却可靠的多)
 
3.多级逻辑时钟
当产生门控时钟的组合逻辑超过一级(即超过单个的“与”门或“或”门)时,证设计项目的可靠性变得很困难。即使样机或仿真结果没有显示出静态险象,但实际上仍然可能存在着危险。通常,我们不应该用多级组合逻辑去钟控 PLD 设计中的触发器。
 
图 7 给出一个含有险象的多级时钟的例子。时钟是由 SEL 引脚控制的多路选择器输出的。多路选择器的输入是时钟(CLK)和该时钟的 2 分频(DIV2)。由图 7 的定时波形图看出,在两个时钟均为逻辑 1 的情况下,当 SEL 线的状态改变时,存在静态险象。险象的程度取决于工作的条件。 多级逻辑的险象是可以去除的。例如,你可以插入“冗余逻辑”到设计项目中。然而,PLD/FPGA 编译器在逻辑综合时会去掉这些冗余逻辑,使得验证险象是否真正被去除变得困难了。为此,必须应寻求其它方法来实现电路的功能。
 
图 8 给出图 7 电路的一种单级时钟的替代方案。图中 SEL 引脚和 DIV2 信号用于使能 D 触发器的使能输入端,而不是用于该触发器的时钟引脚。采用这个电路并不需要附加 PLD 的逻辑单元,工作却可靠多了。 不同的系统需要采用不同的方法去除多级时钟,并没有固定的模式。
 
 
 
图 7 无静态险象的多级时钟
(这个电路逻辑上等效于图 7,但却可靠的多)
 
4.行波时钟
另一种流行的时钟电路是采用行波时钟,即一个触发器的输出用作另一个触发器的时钟输入。如果仔细地设计,行波时钟可以象全局时钟一样地可靠工作。然而,行波时钟使得与电路有关的定时计算变得很复杂。行波时钟在行波链上各触发器的时钟之间产生较大的时间偏移,并且会超出最坏情况下的建立时间、保持时间和电路中时钟到输出的延时,使系统的实际速度下降。
 
用计数翻转型触发器构成异步计数器时常采用行波时钟,一个触发器的输出钟控下一个触发器的输入,参看图 9 同步计数器通常是代替异步计数器的更好方案,这是因为两者需要同样多的宏单元而同步计数器有较快的时钟到输出的时间。图 10 给出具有全局时钟的同步计数器,它和 图 9 功能相同,用了同样多的逻辑单元实现,却有较快的时钟到输出的时间。几乎所有 PLD 开发软件都提供多种多样的同步计数器。
 
图 9 行波时钟
 
图 10 行波时钟转换成全局时钟
(这个 3 位计数器是图 9 异步计数器的替代电路,它用了同样的 3 个宏单元,但有更短的时钟到输出的延时)
 
5. 多时钟系统
许多系统要求在同一个 PLD 内采用多时钟。最常见的例子是两个异步微处理器器之间的接口,或微处理器和异步通信通道的接口。由于两个时钟信号之间要求一定的建立和保持时间,所以,上述应用引进了附加的定时约束条件。它们也会要求将某些异步信号同步化。
 
图 11 给出一个多时钟系统的实例。CLK_A 用以钟控 REG_A,CLK_B 用于钟控 REG_B,由于 REG_A 驱动着进入 REG_B 的组合逻辑,故 CLK_A 的上升沿相对于 CLK_B 的上升沿有建立时间和保持时间的要求。由于 REG_B 不驱动馈到 REG_A 的逻辑,CLK_B 的上升沿相对于 CLK_A 没有建立时间的要求。此外,由于时钟的下降沿不影响触发器的状态,所以 CLK_A 和 CLK_B 的下降沿之间没有时间上的要求。, 如图 4,2.II 所示,电路中有两个独立的时钟,可是,在它们之间的建立时间和保持时间的要求是不能保证的。在这种情况下,必须将电路同步化。图 12 给出 REG_A 的值(如何在使用前)同 CLK_B 同步化。新的触发器 REG_C 由 GLK_B 触控,保证 REG_G 的输出符合 REG_B 的建立时间。然而,这个方法使输出延时了一个时钟周期。
 
图 ll 多时钟系统
(定时波形示出 CLK_A 的上升沿相对于 CLK_B 的上升沿有建立时间和保持时间的约束条件)
 
图 12 具有同步寄存器输出的多时钟系统
(如果 CLK_A 和 CLK_B 是相互独立的,则 REG—A 的输出必须在它馈送到 1REG_B 之前,用 REG_C 同步化)
 
在许多应用中只将异步信号同步化还是不够的,当系统中有两个或两个以上非同源时钟的时候,数据的建立和保持时间很难得到保证,我们将面临复杂的时间问题。最好的方法是将所有非同源时钟同步化。使用 PLD 内部的锁项环(PLL 或 DLL)是一个效果很好的方法,但不是所有 PLD 都带有 PLL、DLL,而且带有 PLL 功能的芯片大多价格昂贵,所以除非有特殊要求,一般场合可以不使用带 PLL 的 PLD。 这时我们需要使用带使能端的 D 触发器,并引入一个高频时钟。
  
 
图 13 不同源时钟
 
如图 13 所示,系统有两个不同源时钟,一个为 3MHz,一个为 5MHz,不同的触发器使用不同的时钟。为了系统稳定,我们引入一个 20MHz 时钟,将 3M 和 5M 时钟同步化,如图 15 所示。 20M 的高频时钟将作为系统时钟,输入到所有触发器的的时钟端。3M_EN 和 5M_EN 将控制所有触发器的使能端。即原来接 3M 时钟的触发器,接 20M 时钟,同时 3M_EN 将控制该触发器使能 ,原接 5M 时钟的触发器,也接 20M 时钟,同时 5M_EN 将控制该触发器使能。 这样我们就可以将任何非同源时钟同步化。
 
图 13 同步化任意非同源时钟
(一个 DFF 和后面非门,与门构成时钟上升沿检测电路)
 
另外,异步信号输入总是无法满足数据的建立保持时间,容易使系统进入亚稳态,所以也建议设计者把所有异步输入都先经过双触发器进行同步化。
 

 

异步时钟同步化
通过双触发器接口,异步信号输入总是无法满足数据的建立保持时间,所以建议大家把所有异步输入都先经过双触发器进行同步化。如图所示,时钟域 clk_s 传给时钟域 clk_d 的数据经过了双触发器的同步处理,相同的,时钟域 clk_d 经双触发器传给时钟域 clk_s 的数据
 
通过高频时钟同步化,当在单个系统中有两个或两个以上非同源时钟的时候,数据的建立和保持时间很难得到保证,我们将面临复杂的时间问题,最好的方法是将所有非同源时钟同步化:选用一个频率是它们的时钟频率公倍数的高频主时钟将他们进行同步。
 
假设系统有两个不同源时钟,一个为 3MHz,一个为 5MHz,不同的触发器使用不同的时钟。为了系统稳定,假设我们引入一个 20MHz 时钟。
 
 
用 modelsim 仿真后得到的时序图如图所示
 
 
9、如何确定时序约束数值
FPGA 工程的功能框图如图所示。上电初始,FPGA 需要通过 IIC 接口协议对摄像头模块进行寄存器初始化配置。这个初始化的基本参数,如初始化地址和数据存储在一个预先配置好的 FPGA 内嵌 ROM 中。在初始化配置完成后,摄像头就能够持续输出 RGB 标准的视频数据流,FPGA 通过对其相应的时钟、行频和场频进行检测,从而一帧一帧的实时采集图像数据。
 
采集到的视频数据先通过一个 FIFO,将原本 25MHz 频率下同步的数据流转换到 100MHz 频率下。接着讲这个数据再送入写 SDRAM 缓存的 FIFO 中,最终这个 FIFO 每满 160 个数据就会将其写入 SDRAM 的相应地址中。在另一侧,使用另一个异步 FIFO 将 SDRAM 缓存的图像数据送个 LCD 驱动模块。LCD 驱动模块不断的读出新的现实图像,并且驱动 3.5 寸液晶屏工作。
 
 
由于这个工程是移植过来的,SDRAM 的时序约束已经添加好并且很好的收敛了。但是,新增加的 CMOS sensor 的接口也需要做相应的时序约束。下面我们就来探讨下它的时序该如何做约束。
 
先看看 CMOS Sensor 的 datasheet 中提供的时序波形和相应的建立、保持时间要求。波形如图所示。
 
 
波形中出现的时间参数定义如下表所示。
 
 
我们可以简单分析下这个 datasheet 中提供的时序波形和参数提供了一些什么样的有用信息。我们重点关注 PCLK 和 D[7:0]的关系,HREF 其实也可以归类到 D[7:0]中一起分析,他们的时序关系基本是一致的(如果存在偏差,也可以忽略不计)。这个波形实际上表达的是从 Sensor 的芯片封装管脚上输出的 PCLK 和 D[7:0]的关系。而在理想状况下,经过 PCB 走线将这组信号连接到其他的芯片上(如 CPU 或 FPGA),若尽可能保持走线长度,在其他芯片的管脚上,PCLK 和 D[7:0]的关系基本还是不变的。那么,对于采集端来说,用 PCLK 的上升沿去锁存 D[7:0]就变得理所当然了。而对于 FPGA 而言,从它的管脚到寄存器传输路径上总归是有延时存在的,那么 PCLK 和 D[7:0]之间肯定不会是理想的对齐关系。而我们现在关心的是,相对于理想的对齐关系,PCLK 和 D[7:0]之间可以存在多大的相位偏差(最终可能会以一个延时时间范围来表示)。在时序图中,Tsu 和 Th 虽然是 PCLK 和 D[7:0]在 Sensor 内部必须保证的建立时间和保持时间关系,但它同样是 Sensor 的输出管脚上,必须得到保证的基本时序关系。因此,我们可以认为:理想相位关系情况下,PCLK 上升沿之前的 Tsu 时间(即 15ns)到上升沿后的 Th 时间(即 8ns)内,D[7:0]是稳定不变的。同样的,理想情况下,PCLK 的上升沿处于 D[7:0]两次数据变化的中央。换句话说,在 D[7:0]保持当前状态的情况下,PCLK 上升沿实际上在理想位置的 Tsu 时间和 Th 时间内都是允许的。请大家记住这一点,下面我们需要利用这个信息对在 FPGA 内部的 PCLK 和 D[7:0]信号进行时序约束。
 
 
OK,明确了 PCLK 和 D[7:0]之间应该保持的关系后,我们再来看看他们从 CMOS Sensor 的管脚输出后,到最终在 FPGA 内部的寄存器进行采样锁存,这整个路径上的各种“艰难险阻”(延时)。
 
 
在这个路径分析中,我们不去考虑 CMOS Sensor 内部的时序关系,我们只关心它的输出管脚上的信号。先看时钟 PCLK 的路径延时,在 PCB 上的走线延时为 Tcpcb,在 FPGA 内部,从进入 FPGA 的管脚到寄存器的时钟输入端口的延时为 Tcl。再看数据 D[7:0]的延时,在 PCB 上的走线延时为 Tdpcb,在 FPGA 内部的管脚到寄存器输入端口延时为 Tp2r。而 FPGA 的寄存器同样有建立时间 Tsu 和保持时间 Th 要求,也必须在整个路径的传输时序中予以考虑。

 

另外,从前面的分析,我们得到了 PCLK 和 D[7:0]之间应该满足的关系。那么,为了保证 PCLK 和 D[7:0]稳定考虑的得到传输,我们可以得到这样一个基本的关系必须满足:
 
对于建立时间,有:
 
Launch edge + Tdpcb + Tp2r + Tsu < latch edge + Tcpcb + Tcl
 
对于保持时间,有:
 
Launch edge + Tdpcb + Tr2p < latch edge + Tcpcb + Tcl – Th
 
关于 launch edge 和 latch edge,对于我们当前的设计,如下图所示。
 
 
在对这个 FPGA 的 input 接口的时序进行分析和约束之前,我们先来看看 Altera 官方是如何分析此类管脚的时序。
 
 
具体问题具体分析,我们当前的工程,状况和理想模型略有区别。实际上在上面这个模型的源寄存器端的很多信息都不用详细分析,因为我们获得的波形是来自于 Sensor 芯片的管脚。同理,我们可以得到 input delay 的计算公式如下。
 
Input max delay = (0 – Tcpcb_min) + Tco_max + Tdpcb_max
 
Input min delay = (0 – Tcpcb_max) + Tco_min + Tdpcb_min
 
在这两个公式中,参数 Tco 是前面我们还未曾提到的,下面我们就要分析下如何得到这个参数。Tco 指的是理想情况下数据在源寄存器被源时钟锁存后,经过多长时间输入到管脚上。前面我们已经得到了 PCLK 和 D[7:0]之间的关系,其实从已知的关系中,我们不难推断出 Tco_max 和 Tco_min,如图所示。若 PCLK 的时钟周期为 Tpclk,则:
 
Tco_max = Tpclk – Tsu
 
Tco_min = Th
 
在我们采样的 CMOS Sensor 图像中,PCLK 频率为 12.5MHz,即 80ns。因此,我们可以计算到:
 
Tco_max = 80ns – 15ns = 65ns
 
Tco_min = 8ns
 
 
我们再看看 PCB 的走线情况,算算余下和 PCB 走线有关的延时。
 
如图所示,这是 PCLK 和 D[7:0]在 SF-CY3 核心板上的走线。
 
 
如图所示,这是 PCLK 和 D[7:0]在 SF-SENSOR 子板上的走线,在这个板子上的走线由匹配电阻分两个部分。
 
 
根据前面的走线长度,我们可以换算一下相应的走线延时,如下表所示。因此,我们可以得到,Tcpcb_max = 0.35ns,Tcpcb_min = 0.35ns,Tdpcb_max = 0.36ns,Tdpcb_min = 0.31ns。
 
 
 

 

将上面得到的具体数值都代入公式,得到:
 
Input max delay = (0 – 0.35ns) + 65ns + 0.36ns = 65.01ns
 
Input min delay = (0 – 0.35ns) + 8ns + 0.31ns = 7.96ns
 
加上一些余量,我们可以去 input max delay = 66ns,input min delay = 7ns。
 
下面我们来添加时序约束,打开 TimeQuest,点击菜单栏的 ContraintsàCreat Clock,做如下设置。
 
 
点击 ContraintsàSet Maximum Delay,对 vdb[0] vdb[1] vdb[2] vdb[3] vdb[4] vdb[5] vdb[6] vdb[7] vhref 的 set_max_delay 做如下设置。
 
 
点击 ContraintsàSet Minimum Delay,对 vdb[0] vdb[1] vdb[2] vdb[3] vdb[4] vdb[5] vdb[6] vdb[7] vhref 的 set_min_delay 做如下设置。
 
 
约束完成后,参照前面章节 Update Timing Netlist 并且 Write SDC File…,接着就可以重新编译整个工程,再来看看这个时序分析的报告。在报告中,数据的建立时间有 9-13ns 的余量,而保持时间也都有 7-11ns 的余量,可谓余量充足。
 
 
 

 

另外,我们也可以专门找一条路径出来,看看它的具体时序路径的分析。vd[0]这条数据线的建立时间报告中,66ns 的 input max delay 出现在了 Data Arrival Path 中。
 
 
而在 vd[0]的保持时间报告中,7ns 的 input min delay 则出现在了 Data Arrival Path 中。