时序分析基础与时钟约束实例1
FPGA时序分析时序约束知识

FPGA时序分析时序约束知识一、FPGA时序分析的基本概念1.时序分析的定义时序分析是指通过计算和模拟来评估数字电路在不同条件下的时序要求是否能够满足。
它主要包括时钟周期、时钟偏移、时钟抖动、信号传输延迟等方面的考虑。
2.时序要求时序要求是指数字电路在设计中必须满足的时序条件。
常见的时序要求包括时钟频率、最小信号保持时间、最小信号恢复时间等。
3.时序路径时序路径是指数字电路中信号从输入到输出所经过的所有逻辑门和寄存器。
4.时序违规时序违规是指数字电路在设计中无法满足时序要求的情况。
时序违规可能导致电路功能失效,甚至硬件故障。
二、FPGA时序分析的关键步骤1.时序约束的设置时序约束是在FPGA设计中非常重要的一部分,它用于定义时钟频率、时钟边沿以及其他关键参数。
时序约束通常以SDC(Synopsys Design Constraints)的格式提供。
时序约束的设置需要综合考虑到电路的功能需求、时钟分频、时钟域划分以及时钟边沿和信号的传输延迟等各种因素。
时序约束应该准确地描述信号的起始时间、到达时间和关系,以确保设计满足时序要求。
2.时序路径分析时序路径分析是指通过分析不同信号路径的延迟和时间关系来评估设计是否满足时序要求。
时序路径分析可以通过静态分析和动态仿真两种方式进行。
静态分析主要是利用逻辑综合工具对电路的时序路径进行分析和计算。
动态仿真则是通过对电路进行时钟驱动的行为级仿真来评估时序路径。
两种方法都可以获得电路的路径延迟和时间关系,以判断设计是否满足时序要求。
3.时序修复当时序分析发现设计存在时序违规时,需要进行时序修复来解决问题。
时序修复主要包括时钟域划分、时钟频率调整、逻辑重构等方法。
时钟域划分是指将设计划分为不同的时钟域,确保时钟边沿的一致性。
时钟频率调整是通过逻辑优化和时序约束调整来改善设计的时序性能。
逻辑重构则是通过改变电路的结构和时序路径,以使设计满足时序要求。
三、时序约束的知识1.时钟频率设置时钟频率设置是指设置时钟的工作频率,以控制电路的运行速度和性能。
FPGA时序约束、时序分析

FPGA设计之——时序设计FPGA设计一个很重要的设计是时序设计,而时序设计的实质就是满足每一个触发器的建立(Setup)/保持(Hold)时间的要求。
建立时间(Setup Time):是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(Hold Time):是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器。
FPGA设计分为异步电路设计和同步电路设计,然而很多异步电路设计都可以转化为同步电路设计,在设计时尽量采用同步电路进行设计。
对于同步电路可以转化的逻辑必须转化,不能转化的逻辑,应将异步的部分减到最小,而其前后级仍然应该采用同步设计。
为了让同步电路可靠地运行,就要对时钟偏差进行控制,以使时钟偏差减小到可用的范围。
影响时钟偏差的主要有以下几个因素:o用于连接时钟树的连线o钟树的拓扑结构o时钟的驱动o时钟线的负载o时钟的上升及下降时间在通常的FPGA设计中对时钟偏差的控制主要有以下几种方法:o控制时钟信号尽量走可编程器件的的全局时钟网络。
在可编程器件中一般都有专门的时钟驱动器及全局时钟网络,不同种类、型号的可编程器件,它们中的全局时钟网络数量不同,因此要根据不同的设计需要选择含有合适数量全局时钟网络的可编程器件。
一般来说,走全局时钟网络的时钟信号到各使用端的延时小,时钟偏差很小,基本可以忽略不计。
o若设计中时钟信号数量很多,无法让所有的信号都走全局时钟网络,那么可以通过在设计中加约束的方法,控制不能走全局时钟网络的时钟信号的时钟偏差。
o异步接口时序裕度要足够大。
局部同步电路之间接口都可以看成是异步接口,比较典型的是设计中的高低频电路接口、I/O接口,那么接口电路中后一级触发器的建立-保持时间要满足要求,时序裕度要足够大。
o在系统时钟大于30MHz时,设计难度有所加大,建议采用流水线等设计方法。
时序分析(2):时序约束原理

时序分析(2):时序约束原理⼀、基本概念1.时序:时钟和数据的对应关系2.约束:告诉综合⼯具,我们希望时序达到什么样的标准3.违例:时序达不到需要的标准4.收敛:通过调整布局布线⽅案来达到这个标准5.静态时序分析:电路未跑起来时,延时等已知,以此分析时序6.动态时序分析:电路跑起来,如Modelsim软件(理想状态)⼆、时序分析基本模型模型分为以下四种:(注:PAD指管脚)寄存器与寄存器之间输⼊PAD与寄存器之间寄存器与输出PA D之间输⼊PAD 与输出PAD之间(太极端,不讨论)知识补充:1、全局时钟:FPGA时钟到各个寄存器的时间⾮常接近。
2、⾃分频时钟:⾛的是数据线,到各个寄存器的时间差异⾮常⼤。
三、理想状态的建⽴时间和保持时间1、建⽴时间 Time setup(1) 接收时钟上升沿前,发送数据要准备好的时间(2) Tsu = 数据锁存沿(Latch)- 数据发送沿(Lanch)= 时钟周期2、保持时间 Time hold(1) 接收时钟上升沿后,发送数据要保持住的时间(2) Th = 发送端数据变化时 - 接收端数据锁存 = 03、补充(1) D触发器本⾝也有建⽴/保持时间的概念,称之为寄存器建⽴时间门限和寄存器保持时间门限,这是⼀个固有属性,是确定的、不变的。
当理想状态时,我们讨论建⽴/保持时间就相当于讨论D触发器的这⼀固有属性。
(2) FPGA所有时序问题,根本原因都是“建⽴时间和保持时间”的问题。
(3) 解决建⽴时间不⾜的⽅法是“减少延时”,⽽解决保持时间不⾜的⽅法是“增加延时”。
4、符号说明四、建⽴时间余量和保持时间余量Lunch edge:发射沿,以 clk_pad 为基准,⼀般看成 0 时刻。
实际时间是上⼀个寄存器所⽤的时间,因此⽤ clk1,看数据到达下⼀个寄存器的 D 端⽤了多久时间,结束时间⼜是多久。
Latch edge:接收沿,以 clk_pad 为基准,⼀般看成 0+Tcyc 时刻,要求时间是下⼀个寄存器计算的时间,所以⽤ clk2,看它⾃⾝需要的到达时间和结束时间是什么时候。
FPGA中的时序约束--从原理到实例

FPGA中的时序约束--从原理到实例FPGA中的时序问题是⼀个⽐较重要的问题,时序违例,尤其喜欢在资源利⽤率较⾼、时钟频率较⾼或者是位宽较宽的情况下出现。
本⽂介绍时序分析的原理以及出现时序问题时⼀般的解决办法。
基本概念建⽴时间和保持时间是FPGA时序约束中两个最基本的概念,同样在芯⽚电路时序分析中也存在。
电路中的建⽴时间和保持时间其实跟⽣活中的红绿灯很像,建⽴时间是指在绿灯(clk的上升沿)亮起之前⾏⼈或者车辆(data数据)在路⼝提前等待的时间(只允许绿灯亮起的⼀刹那在路⼝的车辆才允许通⾏),⽽保持时间,则是绿灯亮起后必须保持的时间,这样⾏⼈或者数据才能够通过这个⼗字路⼝,否则hold时间就不满⾜。
同时,红绿灯默认都是周期性的(clk也是周期性的),车辆不允许在两个相邻的红绿灯之间通过的时间超过⼀个clk的周期(组合逻辑时延不能过⼤)。
建⽴时间(Tsu):是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建⽴的时间不满⾜要求,在时钟上升沿,寄存器将不能正确采到数据值。
如下图(左)所⽰:保持时间(Th):是指在时钟上升沿后数据保持稳定的时间,如果保持时间不满⾜要求那么数据同样也不能被正确采集到。
保持时间⽰意图如下图(右)所⽰:如图1.3,这是⼀个FPGA输⼊数据的模型,输⼊端⼝到第⼀个寄存器之间的路径需要进⾏时序约束。
⼀般我们需要告知FPGA输⼊输出接⼝的最⼤最⼩延迟,使EDA⼯具在进⾏布局布线时能够尽可能的优化输⼊端⼝到第⼀级寄存器之间的延迟,使FPGA中时钟的上升沿能够正确采集到输⼊的数据。
在sdc约束中,输⼊延时是从上游器件发出数据到FPGA输⼊端⼝的延时时间。
如图,1.4所⽰,输⼊接⼝时序清楚反应了FPGA在接收数据时应满⾜的建⽴和保持时间要求。
说明:OSC :系统时钟ASSP.CLk :外部器件寄存器的时钟ASSP.Q :外部器件数据输出FPGA.D :FPGA数据输⼊FPGA.CLK :FPGA内部寄存器的时钟Tclk1 :系统时钟到外部器件之间的延时Tclk2 :系统时钟到FPGA之间的延时Tco :数据经过外部器件寄存器输出后相对于ASSP.CLK的偏移Tpcb :数据在pcb电路板上的延时FTsu :FPGA上寄存器的建⽴时间要求FTh :FPGA上寄存器的保持时间要求setup slack :建⽴时间余量,必须⼤于等于0才能满⾜建⽴时间的时序要求hold slack :保持时间余量,必须⼤于等于0才能满⾜保持时间的时序要求T: 系统时钟频率c. 输出延时即为FPGA输出数据后到达外部器件的延时时间。
时序约束与分析基础

5
时序路径
6
从引脚到引脚
D
Q
输入到输出路径示意图
7
从输入到寄存器
D
Q
输入到寄存器路径示意图
8
从寄存器到输出
D
Q
输入到输出路径示意图
9
从寄存器到寄存器
D
Q
D
Q
输入到输出路径示意图
10
பைடு நூலகம்序基础
11
输入延时约束
外部器件 板级延时 uTco CLK 最大输入延时 CLK Tsu
FPGA uTsu
时序约束与分析基础
1
常用设计约束种类
时序约束:规范设计的时序行为,表达设计者 期望满足的时序条件,指导综合和布局布线阶 段的优化方法等。 区域与位置约束:主要指芯片I/O引脚位置,以 及指导工具在芯片特定的物理区域进行布局布 线。
其他约束:目标芯片型号、电气特性等。
时序约束的作用:提高设计的工作频率;获得 正确的时序报告。
28
29
30
31
设置时序约束的方法
1.通过Assignment/Timing Analysis Settings 菜单命令。 2.通过Assignment/Classic Timing Analyzer Wiards 菜单命令。 3.通过Assignment/Assignment Editor选项在 图形界面下完成对设计时序的约束。
39
40
41
(2)个别时序约束 执行命令:Assignments Editor 在Assignment Name中选择约束项目,如 Clock Settings (3)时序约束的种类 可以单点、点到点、通配符或时序分组。 (4) Assignments Editor可对所有的时序 约束。
在ISE下分析和约束时序

1.在ISE下分析和约束时序3.1ISE的时序约束工具入门像TimeQuest一样,ISE软件工具也有自己的时序约束及分析工具。
ISE界面的processes当中,有一个user constraints列表,其中的Creat Timing Constrain 可以提供用户添加指定的时序约束。
ISE使用的时序约束信息跟其他的物理约束,电气约束等信息全部都放置在后缀名为ucf(user constrain file)的文件中,在使用图形化界面编辑约束后,用户还可以直接编辑UCF文件对时序等要求进行修改。
此外,PlanAhead Post synthesis工具在提供管脚,区域约束等功能之外,也提供了时序约束及分析的功能。
所以设计者在约束设计时序时可以有多种方法。
使用Creat Timing Constrain时界面的约束类型部分如下图所示:图ISE时序约束类型从图中我们看到,这个工具对于时序约束的理解与altera的一致,需要约束时钟,输入输出信号,以及指定一些时序例外,也有将约束组成Group的功能。
Xilinx公司对于其FPGA约束的名称与altera略有不同,但含义一样。
分别是Period constrain(时钟周期约束),OFFSET constrain(输入输出偏移约束),以及FROM TO constrain,当然也有multi-cycle constrain等。
双击unconstrained clks窗口的clk项,出现的以下对话框可以对设计的时钟信息进行指定。
图ISE下约束时钟界面这个界面可以设置时钟的周期,占空比,以及初始边沿是上升沿还是下降沿。
或者如果这个时钟是从其他指定的时钟生成的,也可以指定生成的关系从而软件自己计算生成时钟的信息。
unconstrained clks窗口将设计中没有约束的时钟列出来,在对每个时钟一一指定之后,窗口内容逐一消失。
而其上方另一个窗口将显示约束的具体信息,并且也可从中选择一条约束进行逐一修改。
电脑芯片分析中的时序约束和时钟分析技术

电脑芯片分析中的时序约束和时钟分析技术时序约束和时钟分析技术在电脑芯片分析中起着至关重要的作用。
时序约束是指对于电路中信号的时间要求,而时钟分析技术则是用于检测和优化电路中的时钟信号。
本文将对时序约束和时钟分析技术进行详细讨论。
一、时序约束分析时序约束分析是芯片设计中非常重要的一环,它可以确保电路中各个信号在正确的时间满足要求。
时序约束通常由设计工程师根据芯片规格书和设计要求制定。
在实际分析中,常用的时序约束分析工具有Timing Analyzer和PrimeTime等。
在时序约束分析中,设计工程师需要对每个时序约束进行确定和设置。
主要包括以下几个方面:1. 时钟频率约束:确定芯片的时钟频率,并设置对应的约束。
时钟频率约束直接影响到芯片的性能和功耗。
2. 输入到输出延迟约束:确定信号从输入到输出的传输延迟,并设置对应的约束。
这是确保信号传输时间在可接受范围内的重要约束。
3. 状态转换约束:定义芯片在各个状态下的时序要求,如输入到输出的延迟、输出的保持时间等。
这些约束非常重要,因为芯片在不同状态下的时序要求可能不同。
时序约束分析需要考虑到芯片中各个信号的传输时间、数据的稳定性以及功耗等多方面因素。
合理的时序约束设置可以提高芯片的性能和可靠性。
二、时钟分析技术时钟分析技术是指通过对芯片中的时钟信号进行综合分析和优化,以确保芯片的正常工作。
常用的时钟分析技术有时钟树分析、时钟偏移分析和时钟路径分析等。
1. 时钟树分析:时钟树分析主要用于分析时钟信号在芯片内的传输路径和延迟。
时钟树分析可以帮助设计工程师找出时钟网络中的问题,并进行相应的优化。
2. 时钟偏移分析:时钟偏移分析主要用于分析芯片中不同时钟域之间的偏移情况。
时钟偏移可能导致芯片中的时序错误,因此需要进行分析和调整。
3. 时钟路径分析:时钟路径分析主要用于分析时钟信号在芯片中的传输路径,并评估时钟的时序约束是否满足。
通过时钟路径分析,设计工程师可以找出潜在的时序问题,并进行相应的优化。
电脑芯片分析中的时序约束和时钟分析

电脑芯片分析中的时序约束和时钟分析在现代电子产品中,芯片的设计和性能至关重要。
而在芯片设计过程中,时序约束和时钟分析是不可或缺的部分。
本文将详细介绍电脑芯片分析中的时序约束和时钟分析的概念和作用,并探讨其在芯片设计中的重要性。
一、时序约束的概念和作用时序约束是指对于电路的时序行为所提出的各种约束条件,用以规定芯片内部电路在不同时钟周期中的操作关系。
它是芯片设计分析的重要一环,具有以下几个作用:1. 确定芯片的最大频率:时序约束可以帮助设计人员确定芯片的最大工作频率,从而保证芯片的正常运行。
通过设置适当的时序约束,可以限制芯片内部电路的延迟和时序关系,提高芯片的工作效率和性能。
2. 验证芯片的时序正确性:时序约束可以用于验证芯片的时序正确性。
通过对芯片的时序约束进行仿真和分析,可以检测出芯片设计中可能存在的时序错误,提前进行修改和优化,避免出现设计缺陷。
3. 优化芯片的功耗和面积:时序约束可以用于优化芯片的功耗和面积。
通过合理设置时序约束,可以减少芯片内电路的冗余和无效操作,减小功耗和芯片面积,提高整个系统的效能。
二、时序约束的关键要素在时序约束中,有几个关键要素需要考虑:1. 时钟周期:时钟周期是指芯片内部电路在一个时钟周期内完成一次操作的时间。
时钟周期是芯片设计的基本单位,决定了芯片的工作速度和时序要求。
2. 延迟:延迟是指芯片内部电路从接收输入信号到输出响应所需的时间。
延迟是芯片设计中重要的指标之一,需要根据时序约束进行控制和优化。
3. 约束条件:约束条件是指对芯片内部电路工作的各种限制和要求。
常见的约束条件包括输入输出延迟、时序关系、最大工频等。
三、时钟分析的概念和作用时钟分析是对芯片内部时钟信号进行分析和优化的过程。
在芯片设计中,时钟信号起到同步和调度电路的作用,时钟分析主要包括以下几个方面:1. 时钟树分析:时钟树是指芯片中所有时钟信号的传输路径。
时钟树分析可以帮助设计人员了解芯片中时钟信号的传输效率和延迟情况,发现潜在的时钟问题,进行优化和改进。
时序分析与时序约束

时序分析与时序约束(基于TimeQuest Timing Analyzer)一、基础篇:常用的约束(Assignment/Constraints)分类:时序约束、区域与位置约束和其他约束。
主要用途:1、时序约束:规范设计的时序行为,表达设计者期望满足的时序条件,指导综合和布局不同阶段的优化算法等。
简而言之就是规范和指导的作用。
倘若合适的话,它在综合、影射、布局布线的整个流程中都会起指导作用,综合器,布线器都会按照你的约束尽量去努力实现,并在静态时序分析报告中给出结果。
2、区域与位置约束:指定芯片I/O引脚位置以及指导实现工具在芯片中特定的物理区域进行布局布线。
3、其他约束:主要作用:1、提高设计的工作频率:通过附加时序约束可以控制逻辑的综合、映射、布局和布线,以减少逻辑和布线的延时。
其实,综合后的结果只是给出你的设计一个大概的速度范围,布线后的速度比综合后给出的结果要低,这是因为综合后只有器件的延时,而布线后除了器件的延时还要加上布线上的延时。
至于低多少就看设计者的约束能不能很好的指导布线器进行优化了。
2、获得正确的时序分析报告:在QuartusII 中,内嵌的是静态时序分析工具(STA, Static Timing Analysis),他的作用就是设计进行评估,只有在正确的输入时序约束的情况下,才能得到可靠的报告。
同时也是做FPGA设计时是必须的一个步骤,事实上大家一般都已经做了这一步,我们在FPGA加约束、综合、布局布线后,会生成时序分析报告,设计人员会检查时序报告、根据工具的提示找出不满足setup/hold time的路径,以及不符合约束的路径,这个过程就是STA。
此外,STA是相对于动态时序仿真而言的,它通过对每个时序路径的延时分析,计算出最高的设计频率(fmax),发现时序违规(Timing Violation)。
注意:静态时序分析仅仅聚焦于设计时序性能的分析,而不会涉及逻辑性能。
在STA中主要分析的路径有:时钟路径,异步路径,数据路径。
时序逻辑电路例题分析

QA JA QAKA
计数脉冲CP
(7) 检验该计数电路能否自动启动。
本计数电路有三个触发器,可有八个状态组合,可是 只用去六个,尚有两 个未利用,因此需要检验一下, 若不能自行启动要进行修改。
例2 试用主从JK触发器设计一个时序电路,要求该电路的输入Z 与CP之间的关系应满足图示的的波形图。
解:由波形图可以看出这是一个三进制的计数器。
Q1
C1
C1
CP
Q0
Q1
解:输出方程: Y
=
n
X Q1
=
X
Q1n
驱动方程:T0 = 1 T1 = X Q0n
状态方程: Q1n1 = T1 Q1n = X Q0n Q1n Q0n = T0 Q0n = 1 Q0n = Q0n
状态表:
输入
Q1n1 = X Q0n Q1n
X
Q0n = Q0n
0
Y = X Q1n
0 0
QQ10nn=1
= 1
11 =0
1
=
1
0 1 1
Y = 11=1
1
1
现态
Q1n Q0n
00 01 10 11 00 01 10 11
次 态 输出
Q Q n1 n1 10
Y
01
1
10
1
11
1
00
1
11
0
00
0
01
1
10
1
0/1
画
00
01 CP
状 态 图
0/0
X
0/1 1/0 1/1 0/1 Q0
74LS161
CO 1
LD
CR
D0 D1 D2 D3
时序逻辑电路典型例题分析

第六章时序逻辑电路典型例题分析第一部分:例题剖析触发器分析例1在教材图6.1所示的基本RS触发器电路中,若⎺R、⎺S 的波形如图P6.1(a)和(b),试分别画出对应的Q和⎺Q端的波形。
解:基本RS触发器,当⎺R、⎺S同时为0时,输出端Q、⎺Q均为1,当⎺R=0、⎺S=1时,输出端Q为0、⎺Q为1,当⎺R=⎺S=1时,输出保持原态不变,当⎺R=1、⎺S=0时,输出端Q为1、⎺Q为0,根据给定的输入波形,输出端对应波形分别见答图P6.1(a)和(b)。
需要注意的是,图(a)中,当⎺R、⎺S同时由0(见图中t1)变为1时,输出端的状态分析时不好确定(见图中t2),图中用虚线表示。
例2 在教材图6.2.3(a)所示的门控RS触发器电路中,若输入S 、R和E的波形如图P6.2(a)和(b),试分别画出对应的输出Q和⎺Q端的波形。
解:门控RS触发器,当E=1时,实现基本RS触发器功能,即:R=0(⎺R=1)、S=1(⎺S=0),输出端Q为1、⎺Q为0;R=1(⎺R=0)、S=0(⎺S=1)输出端Q为0、⎺Q为1;当E=0时,输出保持原态不变。
输出端波形见答图P6.2。
例3在教材图6.2.5所示的D锁存器电路中,若输入D、E的波形如图P6.3(a)和(b)所示,试分别对应地画出输出Q和Q端的波形。
解:D锁存器,当E=1时,实现D锁存器功能,即:Q n+1=D,当E=0时,输出保持原态不变。
输出端波形见答图P6.3。
例4在图P6.4(a)所示的四个边沿触发器中,若已知CP、A、B的波形如图(b)所示,试对应画出其输出Q端的波形。
设触发器的初始状态均为0。
解:图中各电路为具有异步控制信号的边沿触发器。
图(a)为边沿D触发器,CP上升沿触发,Q1n+1= A,异步控制端S D接信号C(R D=0),当C=1时,触发器被异步置位,输出Q n+1=1 ;图(b)为边沿JK触发器,CP上升沿触发,Q2n+1= A⎺Q2n +⎺BQ2n,异步控制端⎺R D接信号C(⎺S D =1),当C=0时,触发器被异步复位,输出Q n+1=0;图(c)为边沿D触发器,CP下降沿触发,Q3n+1= A,异步控制端⎺S D接信号C(⎺R D =1),当C=0时,触发器被异步置位,输出Q n+1=1;图(d)为边沿JK触发器,CP下降沿触发,Q4n+1= A⎺Q4n +⎺BQ4n,异步控制端R D接信号C(S D =0),当C=1时,触发器被异步复位,输出Q n+1=0。
【精品博文】4.6、静态时序分析之——如何编写有效地时序约束(一)

【精品博文】4.6、静态时序分析之——如何编写有效地时序约束(一)静态时序相关博文连载目录篇:/justlxy/p/5100052092前面的几篇讲了静态时序分析一些基本概念等内容,接下来将以一个实际的例子来简单地介绍一下使用Lattice Diamond IDE进行静态时序分析的几种基本案例。
此部分博文主要翻译自Lattice的一篇叫做Timing Closure的文章(在Diamond的Start Page的页面中就可以找到),有兴趣的可以自己去下载阅读。
接下来要介绍的主要一下几种基本案例(Case):|-1、No user-defined timing constraint|-2、Insufficient FREQUENCY preference|-3、Sufficient FREQUENCY preference|-4、INPUT_SETUP|-5、CLOCK_TO_OUT|-6、CLKSKEWDIFF|-7、Timing Exception 1 — MULTICYCLE|-8、Clock over-constrained|-9、Timing Exception 2 — False Paths由于内容比较多,所以分开为多篇文章……首先来介绍第一种情况:No user-defined timing constraint 默认情况下,当我们新建一个Diamond工程的时候,Diamond 都会自动地创建一个LPF文件,文件里面包含以下内容:其中,BLOCK RESETPATHS是一个全局约束(global preference)。
主要用于禁止TRACE分析异步复位和异步置位路径的时序信息。
BLOCK ASYNCPATHS也是一个全局约束,主要用于禁止TRACE分析输入到寄存器路径的时序信息。
因为很多情况下,我们的设计往往只是一个内部的模块,并不用连接到IO上,所以此时对输入到寄存器的时序分析是没有必要的。
建立时间、保持时间和时序约束条件

建立时间、保持时间和时序约束条件1、什么是建立时间(Tsu)和保持时间(Th)以上升沿锁存为例,建立时间是指在时钟翻转之前输入的数据D必须保持稳定的时间;保持时间是在时钟翻转之后输入数据D必须保持稳定的时间[1]。
如下图所示,一个数据要在上升沿被锁存,那么这个数据就要在时钟上升沿的建立时间和保持时间内保持稳定。
图1 建立时间和保持时间建立时间与保持时间,是对触发器(或者寄存器)和锁存器而言,以能够稳定准确的锁存或者触发为目的,对其输入数据信号保持稳定的时间要求,具体数值与具体器件的内部结构特点密切相关,不能人为控制。
建立时间和保持时间在时序分析中是一个很重要的准备知识,弄清楚这个两个时间对时序分析的原理的理解很有帮助。
2、根据内部结构分析建立时间和保持时间图2 经典的上升沿D触发器内部结构关于为什么会有建立时间和保持时间,我曾试图从触发器或锁存器内部的结构去分析和证实,但是看了许多资料,由于触发器的内部结构有很多,所以分析方法很多,说法也很多。
下面我选两个比较经典的结构来分析一下建立时间和保持时间。
以经典边沿触发的D触发器为例子,从内部结构上分析一下D触发器建立时间和保持时间。
这个说明主要来源于EETOP的一篇帖子,其结构在维基百科的触发器词条可以得到验证。
如上图所示,这是一个上升沿触发的D触发器,需要注意的是,图中的6个与非门都是有延迟的,也就是在某一时刻输入组合逻辑的数据,在一段时间之后才能影响其输出,这是产生建立时间和保持时间要求的最根本原因。
首先,我们在假设所有的与非门的延迟为0,叙述一下这个触发器的整体工作流程。
当CLK=0时,与非门G3和G4的输出均为1,输出的1反馈到G1和G2作为输入,导致G1和G2的输出分别为D和/D,输出的D和/D又反馈到G3和G4;而G5和G6在此期间一直锁存着之前的数据,不受输入影响。
图3 CLK=0时触发器内部信号详情当CLK=1时,与非门G3和G4的输出变为/D和D,输出到G5和G6作为输入,根据锁存器的原理,G5和G6最终会稳定的输出Q和/Q。
Timing Analysis

时序约束与分析练习:文件夹Timing内为一个已经完成的设计,设计框图见下页。
整个电路有两路数据输入din_a* din_b*和din_x* din_y*;一路来自PCB上100Mhz晶振产生的时钟输入clk_in_100mhz;一路异步复位信号reset;两路数据输出multout_ab multout_xy和一路时钟输出clkout构成中央对齐源同步输出。
电路内所有时钟树由锁相环mail_pll产生,锁相环产生100Mhz输出c100,用于同步电路内所有寄存器;产生200Mhz输出,用于驱动multiplier工作;产生另一个100Mhz输出,用于驱动输出口clkout。
请为该设计添加约束并分析电路是否满足时序要求。
注:时序约束只需告诉QuartusII FPGA片外信号参数,即所有与FPGA相连接的引线。
如所有时钟、所有输入输出端口等。
电路参数:Minimum Maximum Clock-to-output Delay (ns) 1 3Estimated PCB Data Trace0.5 1 Delay (between devices) (ns)Board Clock Skew (ns) -0.5 0.5(0.5 ns)h2操作步骤提示:1、打开Timing目录下top.qpf,Analysis & Synthesis电路,。
2、打开时序分析工具TimeQuest timing analyzer. 。
建立-post_mapNetlist。
3、根据Tasks中unconstrained paths提示,设全所有时钟和外端口约束。
4、建立一个top.sdc文件,对电路的时钟进行约束。
建立基本时钟和衍生时钟。
根据末页电路图,基本时钟名为clk_in_100mhz 100MHZ,锁相环衍生时钟命名为c100/c200/c100_out。
提示:create_clock derive_pll_clock5、从Tasks中看Report Clocks (Tasks pane ⇒Reports⇒Individual Reports).看是否约束了所有时钟。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
时序分析基础与时钟约束实例(1)
文中实例配套SF-CY3开发套件。
更多内容请参考《SF-CY3 FPGA套件开发指南》。
何谓静态时序分析(STA,Static Timing Analysis)?
首先,设计者应该对FPGA内部的工作方式有一些认识。
FPGA的内部结构其实就好比一块PCB板,FPGA的逻辑阵列就好比PCB板上的一些分立元器件。
PCB通过导线将具有相关电气特性的信号相连接,FPGA也需要通过内部连线将相关的逻辑节点导通。
PCB板上的信号通过任何一个元器件都会产生一定的延时,FPGA的信号通过逻辑门传输也会产生延时。
PCB的信号走线有延时,FPGA的信号走线也有延时。
这就带来了一系列问题,一个信号从FPGA的一端输入,经过一定的逻辑处理后从FPGA的另一端输出,这期间会产生多大的延时呢?有多个总线信号从FPGA的一端输入,这条总线的各个信号经过逻辑处理后从FPGA 的另一端输出,这条总线的各个信号的延时一致吗?之所以关心这些问题,是因为过长的延时或者一条总线多个信号传输时间的不一致,不仅会影响FPGA本身的性能,而且也会给FPGA之外的电路或者系统带来诸多问题。
言归正传吧,之所以引进静态时序分析的理论也正是基于上述的一些思考。
它可以简单的定义为:设计者提出一些特定的时序要求(或者说是添加特定的时序约束),套用特定的时序模型,针对特定的电路进行分析。
分析的最终结果当然是要求系统时序满足设计者提出的要求。
下面举一个最简单的例子来说明时序分析的基本概念。
假设信号需要从输入到输出在FPGA内部经过一些逻辑延时和路径延时。
系统要求这个信号在FPGA内部的延时不能超过15ns,而开发工具在执行过程中找到了如图所示的一些可能的布局布线方式。
那么,怎样的布局布线能够达到系统的要求呢?仔细分析一番,发现所有路径的延时可能为14ns、15ns、16ns、17ns、18ns,有两条路径能够满足要求,那么最后的布局布线就会选择满足要求的两条路径之一。
静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,即有约束才会有分析。
若设计者不添加时序约束,那么时序分析就无从谈起。
特权同学常常碰见一些初学者在遇到问题时不问青红皂白就认为是时序问题,实际上只有在添加了时序约束后,系统的时序问题才有可能暴露出来。
下面我们再来看一个例子,我们假设有4个输入信号,经过FPGA内部一些逻辑处理后输出。
FPGA内部的布线资源有快有慢之分,好比国道和高速公路。
通过高速通道所需要的路径延时假设为3ns-7ns,但只有两条可用;而通过慢速通道的路径延时则>10ns。
默认情况下,离高速通道较近的din_2和din_3路径被布线到了高速通道上,当前的4个信号在FPGA内部的延时为:
din1 = 15ns, din2 = 4ns, din3 = 6ns, din4 = 13ns。
如果我们按照实际的需求对FPGA进行如下的时序约束:
din1 < 10ns, din2 < 10ns, din3 < 20ns, din4 < 20ns。
此时,FPGA将重新进行布局布线。
由于添加了时序约束,因此,FPGA的布局布线工具会根据这个实际需求,重新做布局布线后,我们看到,重新布局布线后的路径延时如下:
din1 = 7ns, din2 = 4ns, din3 = 18ns, din4 = 13ns。
此时,FPGA内部的时序全部都能够满足要求。
关于约束,我们要稍微提一下两种不恰当的约束方法,即欠约束和过约束。
我们假设下面提到的两种情况下的原始系统实际时序要求都是一样的,即前面我们所说的:din1 < 10ns, din2 < 10ns, din3 < 20ns, din4 < 20ns
但是下面这两种情况的约束不是完全按照实际系统时序需求来约束,我们来看看这些情况下会出现什么问题。
欠约束的情况(din1和din2过约束):
如果对本实例添加约束为din1 < 20ns, din2 < 20ns, din3 < 20ns, din4 < 20ns。
此时,由于4条路径的延时都能够控制在20ns要求之内,所以当前的约束都能够达到目标。
但是,相对于实际的情况,有两种情形:
A. din1和din2走了高速通道,那么当前约束也能够满足实际的时序要求;
B. din1和din2都没有走高速通道,或者有1条路径走了高速通道,那么结果是一样的,整个系统的时序无法满足要求。
过约束的情况(din3和din4过约束):
如果对本实例添加约束为: din1 < 10ns, din2 < 10ns, din3 < 10ns, din4 < 10ns 。
此时,由于能够走高速通道使得路径延时<10ns 的路径只有2条,那么无论如何当前的约束都有2条无法达到目标。
但是,相对于实际的情况,有两种情形:
A. din1和din2走了高速通道,那么当前约束也能够满足实际的时序要求;
B. din1和din2都没有走高速通道,或者有1条路径走了高速通道,那么结果是一样的,整个系统的时序无法满足要求。
这个简单的例子当然不会是FPGA 内部实际的情况,但是FPGA 内部的各种资源若要得到均衡的分配,设计者就必须添加一定的约束(时序约束),将设计的需求传达给工具,那么才有可能指导工具进行资源的合理分配,保证系统的基本性能要求得以实现。
时序欠约束和时序过约束都是不可取的,设计者应该根据实际的系统时序要求,添加合适的时序要求(可以稍微过约束),帮助设计工具达到最佳的时序性能。
下面我们再来认识一些时序分析的几个最基本的概念,即时钟和建立时间、保持时间的关系。
时钟这个并不陌生的词汇,特权同学也不大做文章,就先举个最典型的时钟模型献给大家。
如图所示,理想的时钟模型是一个占空比为50%且周期固定的方波。
clk T 为一个时钟周期,1T 为高脉冲宽度,2T 为低脉冲宽度,21T T T clk +=。
占空比定义为高脉冲宽度与周期之比,即clk T T /1
所谓建立时间(
),是指在时钟上升沿到来之前数据必须保持稳定的时间;所谓保持时间(),是指在时钟上升沿到来以后数据必须保持稳定的时间。
一个数据需要在时钟的上升沿被锁存,那么这个数据就必须在这个时钟上升沿的建立时间和保持时间内保持稳定。
这里,我们举一个二输入与功能的时序设计模型,如图所示。
输入数据data1和data2会在时钟的上升沿被分别锁存到reg2和reg1的输出端,然后这两个信号分别经过各自的路径到达与门and的输入端,他们相与运算后信号传送到下一级寄存器reg3的输入端,对应他们上一次被锁存后的下一个时钟上升沿,reg3的输入端数据被锁存到了输出端。
这个过程是一个典型的寄存器到寄存器的数据传输。
下面我们就要以此为基础来探讨他们需要满足的建立时间和保持时间关系。
下面这个波形,clk表示时钟源发出的时钟波形,它要分别达到上面例子中的源寄存器reg1和reg2,以及达到目的寄存器reg3,所经过的时间是不一样的,因此我们看到波形中给出的时钟达到reg3的波形clk_r3相对于基准时钟clk的波形会略有一些偏差(稍微延时一些,这是真实情况的模拟)。
Reg1out和reg2out分别是数据data1和data2被锁存到各自寄存器的输出端的波形,reg3in则是reg1out和reg2out的波形经过路径延时和门延时后到达reg3in 的波形,而reg3out则是在clk_r3的上升沿来到并锁存好有效的数据后,其寄存器输出端的波形。
在这个波形中,我们看到clk_r3的前后各有一条虚线,前一条虚线到clk_r3的上升沿这段时间即建立时间,clk_r3的上升沿到后一条虚线即保持时间。
前面对建立时间和保持时间下定义时提到过,在这段时间内不能够有数据的变化,数据必须保持稳定。
而在这个波形中,也确实没有看到建立时间和保持时间内,reg3in的数据有任何的变化,因此我们可以
稳定的将reg3in的数据锁存到reg3的输出reg3out中。
我们再来看下面这个波形,同样的一些信号,但我们发现reg3in在clk_r3的建立时间内发生了变化,这带来的后果就是clk_r3上升沿锁存到的reg3in数据不确定,那么随后的reg3out值也会处于一个不确定状态。
比如第一个时钟周期,原本reg3in应该是稳定的低电平,但是由于真个路径上的延时时间过长,导致了reg3in在clk_r3的建立时间数据还未能稳定下来,在建立时间内出现了电平正处于从高到低的变化,即不稳定的状态,那么导致的后果就是reg3out的最终输出要么是高电平要么是低电平,而不是原本期望的低电平。
我们再来看看保持时间违规的情况,如图所示,这次是数据传输得太快了,原本应该下一个时钟周期到达clk_r3的数据竟然在clk_r3的前一个时钟周期后的保持时间还未过去就来到了。
因此,它出现的最终危害也是后端输出的reg3out处于不确定的状态。