时序收敛:基本概念

对于FPGA而言,时序收敛是一个很重要的概念。在我看来,时序约束是必要的,但不是在最重要的,我们应该在设计初始就考虑到时序问题,而不是完全的靠约束来获得一个好的结果。但我认为,对FPGA时序的分析能力是理解其运行机制的必要条件。之前也简单看过这方面的内容,却没有很正确的认识。这两天看了看UG612和相关内容,记录在此,这应该有一系列文章,希望不要烂尾。

系列目录

时序收敛:基本概念

建立时间和保持时间(setup time 和 hold time)

OFFSET IN

OFFSET OUT

1. FPGA时序的基本概念

FPGA器件的需求取决于系统和上下游(upstream and downstrem)设备。我们的设计需要和其他的devices进行数据的交互,其他的devices可能是FPGA外部的芯片,可能是FPGA内部的硬核(是否还能是其他的FPGA design?我的理解是,如果两个FPGA design和成了一个,那么ucf内的时序约束是要修改的)。

对于FPGA design来说,必须要关注在指定要求下,它能否正常工作。这个正常工作包括同步时序电路的工作频率,以及输入输出设备的时序要求。在FPGA design内部,都是同步时序电路,各处的延时等都能够估计出来,但是FPGA内部并不知道外部的设备的时序关系。所以,Timing constraints包括

  • Input paths

  • Register-to-register paths 
  • Output paths 
  • Path specific exceptions

这正好对应了上图中三个部分,Path specific exceptions 暂时不提。

Input paths对应的是OFFSET IN约束,即输入数据和时钟之间的相位关系。针对不同的数据输入方式(系统同步和源同步,SDR和DDR)有不同的分析结果。

Register-to-register paths 对应的是整个FPGA design的工作时钟。如果只有一个时钟,那么只需要指定输入的频率即可。如果有多个时钟,这些时钟是通过DCM,MMCM,PLL生成的,那么显然ISE知道这些时钟之间的频率、相位关系,所以也不需要我们指定。如果这些不同的时钟是通过不同的引脚输入的,ISE不知道其相位关系,所以指定其中一个为主时钟,需要指定其间的相位关系。

Output paths对应的是OFFSET OUT 约束,和OFFSET IN约束很类似。

2.输入时序约束


The input timing constraints cover the data path from the external pin or pad of the package of the  FPGA device to the internal synchronous element or register that captures that data.


输入时序约束控制外部引脚到内部模块的路径。采用OFFSET IN来指出input timing constraints。(The OFFSET IN constraint defines the relationship between the data and the clock edge used to capture that data at the pin or pads of the FPGA device.)也就是说OFFSET IN定义了时钟沿河被采集数据的关系(相位)。输入模式分为两类,分别如下。
System Synchronous inputs

系统同步输入,指由同一时钟传输和捕获数据,如下图所示

1.时钟上升沿传输

2.下一个上升沿捕获

Source synchronous inputs

In a source synchronous input interface, a clock is regenerated and transmitted along with the data from the source device along similar board traces. This clock captures the data in the FPGA device.

The board trace delays and board skew no longer limit the operating frequency of the interface. The higher frequency also results in the source synchronous input interface typically being a dual data rate (DDR) application.

即一个时钟周期传两组数据,上升沿和下降沿均采集数据,在传输数据的同时传输时钟,利用重新生成的时钟捕获数据(DDR取代SDR)

3.寄存器-寄存器的时序约束

寄存器-寄存器的约束,在同步时序电路中,就是周期的约束,具体分为以下几类

  • 自动相关同步时钟域

  • 手动相关同步时钟域
  • 异步时钟域

自动相关同步时钟域(DLL,DCM,PLL,MMCM)

因为它是自动的,所以基本不用管,当时我们要写输入到DCM的信号的时序约束。

手动相关同步时钟域

如果说,输入的同步时钟是从不同的引脚引入的,那么DCM就用不了了,我们需要手动的定义一个主时钟,并以之为参考,定义相对的约束。语法如下:

NET “PrimaryClock” TNM_NET = “TNM_Primary”;

NET “RelatedClock” TNM_NET = “TNM_Related”;

TIMESPEC “TS_primary” = PERIOD “TNM_Primary” PeriodValue HIGH HighValue%;

TIMESPEC TS_related” = PERIOD “TNM_Related” TS_Primary_relation PHASE value;

异步时钟域

xilinx无法分析,也可以用,具体参考ug612。

4.输出时序约束

输出就是输入的逆

SDR

例子:NET "ClkIn" TNM_NET = "ClkIn";

OFFSET = OUT 5 ns AFTER "ClkIn";

DDR(一般来说不给约束就可以)

例子:NET “ClkIn” TNM_NET = “ClkIn”;

OFFSET = OUT AFTER “ClkIn” REFERENCE_PIN “ClkOut” RISING;

OFFSET = OUT AFTER “ClkIn” REFERENCE_PIN “ClkOut” FALLING;

时间: 2024-10-10 15:38:02

时序收敛:基本概念的相关文章

时序收敛-基本方法论

本部分内容参考ug612 <Timing Closure User Guide >,主要是对第二章内容的整理和翻译.     在一个有效的设计中,生成工具必须要了解每一条路径上的时序约束.时序需求可以被分为几个大类,最通用的类型包括:      ?Input paths     ? Register-to-register paths     ? Output paths     ? Path specific exceptions     指定约束应该从全局约束开始,然后添加局部路径的例外.

FPGA静态时序分析——IO口时序(Input Delay /output Delay)(转载)

转载地址:http://www.cnblogs.com/linjie-swust/archive/2012/03/01/FPGA.html 1.1  概述 在高速系统中FPGA时序约束不止包括内部时钟约束,还应包括完整的IO时序约束和时序例外约束才能实现PCB板级的时序收敛.因此,FPGA时序约束中IO口时序约束也是一个重点.只有约束正确才能在高速情况下保证FPGA和外部器件通信正确. 1.2  FPGA整体概念 由于IO口时序约束分析是针对于电路板整个系统进行时序分析,所以FPGA需要作为一个

(转)FPGA异步时序和多时钟模块

http://bbs.ednchina.com/BLOG_ARTICLE_3019907.HTM   第六章   时钟域 有一个有趣的现象,众多数字设计特别是与FPGA设计相关的教科书都特别强调整个设计最好采用唯一的时钟域.换句话说,只有一个独立的网络可以驱动一个设计中所有触发器的时钟端口.虽然这样可以简化时序分析以及减少很多与多时钟域有关的问题,但是由于FPG**外各种系统限制,只使用一个时钟常常又不现实.FPGA时常需要在两个不同时钟频率系统之间交换数据,在系统之间通过多I/O接口接收和发送

[转载]UML时序图总结

前言 在我的工作中,用的最多的就是时序图了.可能由于工作的原因,我也是最喜欢画时序图了,很清楚,很明了,什么时候发送什么消息,到达什么状态,一下子就展示在你的脑海里,对于消息驱动的程序来说,是再好不过的了. 时序图简介 首先,时序图用来表示用例中的行为顺序,当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或者状态机中引起转换的事件: 其次,时序图展示对象之间的交互,这些交互是指在场景或用例的事件流中发生的.时序图属于动态建模: 最后,时序图的重点在消息序列上,也就是说,描述消息是如何在对

【转】时序图

http://www.lupaworld.com/article-233409-1.html 系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类图class的关联关系(聚合.组合) [UML]UML系列——类图class的依赖关系 [UML]UML系列——类图class的泛化关系 [UML]UML系列——类图class的实现关系Realizatio

UML时序图总结

前言 在我的工作中,用的最多的就是时序图了.可能由于工作的原因,我也是最喜欢画时序图了,很清楚,很明了,什么时候发送什么消息,到达什么状态,一下子就展示在你的脑海里,对于消息驱动的程序来说,是再好不过的了. 时序图简介 首先,时序图用来表示用例中的行为顺序,当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或者状态机中引起转换的事件:其次,时序图展示对象之间的交互,这些交互是指在场景或用例的事件流中发生的.时序图属于动态建模:最后,时序图的重点在消息序列上,也就是说,描述消息是如何在对象间

OpenCL学习笔记(一):摩尔定律、异构计算与OpenCL初印象

关于摩尔定律: 摩尔定律1965年提出,晶体管密度是按照每年翻倍发展的,之后的趋势也是这样--每一代芯片的的时钟频率提高50%,而同时工艺节点减小了0.3,功耗密度翻倍(保持功耗相同的情况下,面积0.7*0.7=0.49,因此提高频率使得性能提升了):而在2000年中期之后,出现了物理尺寸更小的器件,意味着,我们没有办法保持功耗密度不变,而同时提高频率,结果我们看到自此之后,时钟频率并没有显著提高,需要通过并行来提高性能,所以多核CPU流行起来.即使是最基本的处理器,超标量和无序指令执行等高级体

OFFSET约束(OFFSET IN 和OFFSET OUT)

系列目录  时序收敛:基本概念 建立时间和保持时间(setup time 和 hold time) OFFSET约束(OFFSET IN 和OFFSET OUT) 1. OFFSET约束的写法 Offset 约束定义了外部时钟pad和与之相关的输入.输出pad之间的相对关系.这是一个基础的时序约束.Offset定义的是外部之间的关系,不能用在内部信号上. OFFSET约束写起来还是比较简单的,如 OFFSET = {IN|OUT} offset_time [units] {BEFORE|AFTE

AXI总线简介

AXI全称Advanced eXtensible Interface,是Xilinx从6系列的FPGA开始引入的一个接口协议,主要描述了主设备和从设备之间的数据传输方式.在ZYNQ中继续使用,版本是AXI4,所以我们经常会看到AXI4.0,ZYNQ内部设备都有AXI接口.其实AXI就是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)的一个部分,是一种高性能.高带宽.低延迟的片内总线,也用来替代以前的AHB和APB总线.第一个版本的AX