广告

2. Timing Basics(Timing Constraints in Vivado)

2017-1-11 14:40 282 0

在深入讲解XDC约束前,先介绍一下基本的时序约束、分析的概念。


Timing Path:


图1中包含了主要的时序分析路径:



  1. 输入端口到FPGA内部时序单元的路径


  2. FPGA内部时序单元间的路径


  3. FPGA内部时序单元到输出端口的路径


  4. 输入端口到输出端口的路径



图1


不管时序单元是在FPGA内部还是外部,除了第4条路径,它是从输入端口到输出端口,其间没有锁存,其它3条路径的时序分析都以2个时序单元间的路劲进行分析,如图2所示。


第一个时序单元上的时钟称为source clock(启动时钟),第二个时序单元上的时钟称为destination clock (锁存时钟),时序分析从source clock的上升沿开始,到之后的destination clock的上升沿结束,时序分析的过程就是检验数据在两个上升沿时间差内经过数据路径传输后是否满足要求,数据到达时需要满足后一级时序单元的setup/hold要求,其本质上是需要数据在到达后一级时序单元时不发生亚稳态,数据能够被稳定地采集到并且稳定地输出。


图2


Clock Setup Check:


检验Setup是否满足要求,这边引入setup slack概念,只要setup slack的值大于零即Setup检查满足要求,其计算公式如下:


以下是代码片段:

setup slack = data required time – data arrival time

其中:


以下是代码片段:

data required time = destination clock edge time + destination clock path delay - clock uncertainty - setup time

data arrival time = source clock edge time + source clock path delay + clock to output time + data path delay

公式代入可得到:


以下是代码片段:

setup slack = (destination clock edge time - source edge time) + (destination clock path delay - source clock path delay) - clock uncertainty - setup time - clock to output time - data path delay

= T destination_to_source + (Tclk-D2 – Tclk-D1) – Tclk_uncertainty – Tsetup – uTco - Tdata_path_delay

在Setup检查中source clock一定超前于destination clock。


其中第一部分T?destination_to_source,当source clock和destination clock为异步时钟时,如图3中实例,source clock的周期等于6ns,destination clock的周期等于4ns,首先假定2个时钟的相位差为0,图中在这种情况下有2个setup关系,setup1下T?destination_to_source = 4ns,setup2下

T destination_to_source = 2ns,在实际分析中应该选取最严格的情况,即选取setup2这种。


图3


而当source clock和destination clock为同一个时钟时,T?destination_to_source的值很显然就是时钟周期Tclk_period,这也是时序分析最多的情况了,进一步推导setup slack = T?clk_period+ (Tclk-D2 – Tclk-D1) – Tclk_uncertainty - Tsetup – Tdata_path_delay > 0,可以得到:


T clk_period > Tclk_uncertainty + Tsetup + Tdata_path_delay - (Tclk-D2 – Tclk-D1)


T clk_period、Tclk_uncertainty可以通过时序约束确定其值,uTco, Tsetup是时序单元的属性值,(Tclk-D2 – Tclk-D1)在布局布线后其值也能确定,剩下Tdata_path_delay对T?clk_period影响最大,一个设计Setup检查中的关键路径往往是Tdata_path_delay值最大的一条路径,影响其值有很多原因,如逻辑级数过多,扇出导致布线延时过大…


Clock Hold Check:


对应Hold检查,也有hold slack,其计算公式如下:


以下是代码片段:

hold slack = data arrival time – data required time

其中


以下是代码片段:

data required time = destination clock edge time + destination clock path delay + clock uncertainty + hold time

data arrival time = source edge time + source clock path delay + clock to output time + data path delay

代入公式得到:


以下是代码片段:

hold slack = (source clock edge time - destination edge time) +(source clock path delay - destination clock path delay) - clock uncertainty - hold time + clock to output time + data path delay

= T source_to_destination + (Tclk-D1 – Tclk-D2) – Tclk_uncertainty – Thold + uTco + Tdata_path_delay

与Setup检查不同,在Hold检查下destination clock超前于source clock。


在Setup检查中,T?destination_to_source的值选取destination clock和source clock相差最小的情况下进行分析;而Hold检查中

T source_to_destination的值选取所有Setup关系分别进行分析,每一种Setup关系对应有两种情况,然后选取所有情况中T?destination_to_source值大的计算对应的T source_to_destination


a. 取Setup关系的前一个destination clock沿,如图4中Hold1a和Hold2a


b. 取Setup关系的destination clock沿,如图4中Hold1b和Hold2b


图4


根据图4中实例计算得到:


Hold1a:T?destination_to_source = 0ns


Hold1b:T?destination_to_source = -2ns


Hold2a:T?destination_to_source = -2ns


Hold2b:T?destination_to_source = -4ns


显然选取Hold1a,对应T?source_to_destination值为0ns


当source clock和destination clock为同一个时钟时,可以计算得到T source_to_destination值为0ns,进一步推导hold slack = T source_to_destination + (Tclk-D1 – Tclk-D2) – Tclk_uncertainty – Thold + Tdata_path_delay > 0可以得到:


Tdata_path_delay > Tclk_uncertainty + Thold + (Tclk-D2 – Tclk-D1)


由上得出数据路径的延时也不能过短,与Setup检查是矛盾对立的存在;在FPGA设计或者数字前端开发时,工程师考虑最多的是Setup是否满足要求,而Hold检查的工作主要交给工具或者负责数字后端的工程师解决。


Timing Report in Vivado:


下面通过简单的实例说明一下vivado中的时序分析,当FPGA设计经过综合实现后,通过Report Timing Summary打开时序报告,如图5、6所示。


图5


图6


图中有红色部分表示设计中有时序不满足要求,此例中是Setup。选择Setup中未满足要求的Path,打开Path Properties,如图7所示。


图7


Setup关键路径的时序报告如图8所示,报告由四部分组成:Summary, Source Clock Path, Data Path和Destination Clock Path,其中由Source Clock Path和Data Path得出Arrival Time,由Destination Clock Path得出Required Time。


图8


Hold检查的报告也类似,如图9所示。


图9


广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
Hoki 2017-01-11 17:35
LX9开发板呼吸灯实现
对LX9开发板硬件评测后,从这一节开始真正进入FPGA开发的世界。很多开发板的例程中必有跑马灯实验,老跑马也没意思,咱来把新潮的,整一个呼吸灯。 呼吸灯最初是出现在apple公司的笔记本产品中,当合上...
Hoki 2017-01-11 16:47
LX9的microblaze配置
虽然XC6SLX9芯片资源比较少,但是嵌一个microblaze还是搓搓有余的,这一节就来评测一下在XC6SLX9上microblaze的配置。 有两种方法配置microblaze,一是在ISE软件中...
Hoki 2017-01-11 16:32
zynq评测
Zynq芯片是业界第一款在FPGA中集成ARM核的芯片,由FPGA的发明者xilinx公司推出的。Zynq严格来说不能以FPGA来定义它,因为其是以处理器为中心的平台,能够在单芯片上提供软、硬件和 I...
Hoki 2017-01-11 16:19
u-boot
Zyny芯片启动加载分为3步: 1. 芯片上电启动,首先读取BootROM中的程序,初始化一些必要的外设,然后根据专用引脚电平判断该从何处启动first stage Bootloader(FSBL),...
Hoki 2017-01-11 16:09
基于zynq的交叉编译平台
Zynq芯片的最大特点是其集成了双ARM Cortex-A9处理器,因此zynq的应用基本是以这个ARM核为核心,再配合FPGA逻辑作为协处理器,几乎能实现所有较复杂的应用。并且在ARM上可以跑操作系...
Hoki 2017-01-11 15:54
u-boot image生成
这节介绍一下如何生成u-boot image文件,在SDK软件中点击Xilinx Tools→Create Boot Image工具即可生成,但是生成image文件需要首先集齐3个文件:u-boot....
我要评论
0
0
广告