tag 标签: 时序约束

相关博文
  • 热度 2
    2015-4-29 17:41
    1518 次阅读|
    1 个评论
    TimeQuest Timing Analyzer 工具使用一例 作者: RyudoYang   工具版本: Quartus II 13.1+ TimeQuest Timing Analyzer 同事在进行 SDR SDRAM 时序约束时遇到工具使用和概念上的诸多问题,有些问题具有代表性,这里一并总结。 (1)     问题抽象 图 1 SDR SDRAM 约束问题抽象 图 1 是 SDR SDRAM 接口电路的抽象(以输入数据为例进行分析)。 由 PLL 产生 2 个 133MHz 的时钟,其中 C0 输出作为 SDR SDRAM 的芯片时钟使用,另一个时钟经过 270 °的移相,作为 SDR SDRAM 输入数据的锁存时钟使用。注意,这里时钟的用法也是解决很多时序问题的技巧之一。 以上是该问题的抽象,不需要过多解释。   (2)     TimeQuest Timing Analyzer 使用与分析过程 对图 1 所示的小工程进行全编译之后,打开 TimeQuest Timing Analyzer (以下简称为 TQ )进行分析。 首先进行时钟设置。 图 2 时钟约束 第 2 步,对 SDR SDRAM 用到的时钟进行约束,该时钟是通过 PLL 的 C0 输出得到的。采用的约束是: create_generated_clock -name clkout -source }] ,然后更新网表,检查约束是否生效。 图 2 新的时钟约束已经生效 第 3 步,对外部输入延时进行设置,为了简化,采用的约束是: set_input_delay -clock { clkout } 5 ,生效后检查建立时间,发现违规。   图 3 建立时间违规 通过分析得出,违规路径有三个参数延时很大,分别是时钟延时,外部固有延时,数据输入延时。在一般情况中,外部固有延时是固定的,可更改的余地有限,主要是通过减小另外两个延时来达到时序收敛。这里假设另外两个延时也不可以更改,那么如何达到时序收敛呢?通过观察违规波形,发现如果使用 锁存时钟的第 3 个时钟沿 来锁存数据是可以满足时序收敛的,带来的影响就是必须对设计进行调整,使用锁存时钟的第 3 个时钟沿锁存的数据来进行后续处理,简单来说就是增加了有效数据的潜伏期。 第 4 步,更改设计之后重新进行时序分析,这里必须使用多周期约束把设计意图告知 TQ ,使其能够进行正确的时序分析。采用的约束是: set_multicycle_path -from -to -setup -end 3 。生效后重新检查结果,发现已经符合预期。 图 4 时序已经收敛   (3)     问题总结 通过以上例子,总结一下使用 TQ 时应该注意的问题: 第一,使用 TQ 之前必须弄清楚相关概念的含义与他们之间的关系,比如 Setup Time 、 Hold Time 、 Data Arrival Time 、 Data Required Time 等概念,这样才能看懂 TQ 生成的波形图; 第二,先抽象出电路,再开始约束。约束对象往往比较复杂纷繁,先把其实际表达的电路,尤其是电路路径抽象出来,可以很好的辅助分析; 第三,开始约束之后,首先约束的内容必须是时钟,这些时钟包含由 PLL 直接产生的时钟以及各类派生时钟和虚拟时钟,只有时钟建立正确,后面的结果才有分析的价值与意义; 第四,约束必须符合设计意图,违背设计意图的约束即使达到了时序收敛,也毫无意义。这里以上面的多周期约束为例,通过分析违规时序可知必须更改设计,完成修改之后,必须把这一设计意图通过多周期约束告知 TQ ,使其按设计意图进行约束,否则 TQ 还会按默认的“单周期”进行约束,结果就是无论如何都不能达到时序收敛。
  • 热度 6
    2015-1-27 22:18
    838 次阅读|
    6 个评论
    前段时间有位中国科学技术大学(我梦寐以求却求而不得的学府)的研究生同学在我的博客下方留言咨询时序约束的一些问题:“如果设计的电路只是提供给NIOSII在FPGA内调用,没有外部器件的相关延时信息,该怎么约束输入输出呢”。   其实呢,从事IC设计或者FPGA开发这个行业,拥有聪明的大脑写好优秀的代码固然重要,然而学会对代码或者电路施加时序约束也是每个从业者应该掌握的技巧,这个技巧可以帮助你高效且合理且正确的定制SPEC或者划分模块,进而为后续项目的顺利进展打下良好的铺垫。正确合理的时序约束可以帮你实现快速综合出面积尽量小、频率尽量高的电路来。   通常情况下: 1、对系统的时钟频率约束的紧一些,余量可以根据情况定为10%-20%之间,比较紧的时钟约束会让综合工具尽最大的能力去综合电路。   2、输入和输出的延迟如果没有较为准确的参考,一般可以设置为周期的一半,而且应该为同步系统的约束,如果为异步系统的约束则没有实际的意义,另外要尤其注意纯组合电路的情况。   3、合理的约束时序性能的原则,60/40原则: 逻辑延迟低于timing budget 的60%,这个时候时序很容易满足; 逻辑延迟在60%-80%之间,软件综合的时间就会 变大很多; 逻辑延迟超过80%时,时序将很难满足。   4、对于FPGA综合及布局布线而言,您的电路所占的资源最好不要超过整个FPGA的85%,否则FPGA不能够很好的工作,电路性能可能也不会很好,所以选择FPGA资源时最好根据您项目的情况进行预估算。   5、虚假路径(false path)和多周期路径(multi-period)要特殊对待。   6、跨时钟域的地方要用跨时钟域的处理方法保证其正确性,也可以通过跨时钟域检查的工具检查其合理性。
  • 热度 5
    2013-5-4 14:37
    2049 次阅读|
    4 个评论
    CMOS Sensor接口时序约束   详细的文档请参考: http://group.ednchina.com/GROUP_GRO_14596_1375.HTM SF-CY3/SF-SENSOR/SF-LCD开发套件:http://myfpga.taobao.com/ 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 的关系,HREF其实也可以归类到D 中一起分析,他们的时序关系基本是一致的(如果存在偏差,也可以忽略不计)。这个波形实际上表达的是从Sensor的芯片封装管脚上输出的PCLK和D 的关系。而在理想状况下,经过PCB走线将这组信号连接到其他的芯片上(如CPU或FPGA),若尽可能保持走线长度,在其他芯片的管脚上,PCLK和D 的关系基本还是不变的。那么,对于采集端来说,用PCLK的上升沿去锁存D 就变得理所当然了。而对于FPGA而言,从它的管脚到寄存器传输路径上总归是有延时存在的,那么PCLK和D 之间肯定不会是理想的对齐关系。而我们现在关心的是,相对于理想的对齐关系,PCLK和D 之间可以存在多大的相位偏差(最终可能会以一个延时时间范围来表示)。在时序图中,Tsu和Th虽然是PCLK和D 在Sensor内部必须保证的建立时间和保持时间关系,但它同样是Sensor的输出管脚上,必须得到保证的基本时序关系。因此,我们可以认为:理想相位关系情况下,PCLK上升沿之前的Tsu时间(即15ns)到上升沿后的Th时间(即8ns)内,D 是稳定不变的。同样的,理想情况下,PCLK的上升沿处于D 两次数据变化的中央。换句话说,在D 保持当前状态的情况下,PCLK上升沿实际上在理想位置的Tsu时间和Th时间内都是允许的。请大家记住这一点,下面我们需要利用这个信息对在FPGA内部的PCLK和D 信号进行时序约束。 OK,明确了PCLK和D 之间应该保持的关系后,我们再来看看他们从CMOS Sensor的管脚输出后,到最终在FPGA内部的寄存器进行采样锁存,这整个路径上的各种“艰难险阻”(延时)。 在这个路径分析中,我们不去考虑CMOS Sensor内部的时序关系,我们只关心它的输出管脚上的信号。先看时钟PCLK的路径延时,在PCB上的走线延时为Tcpcb,在FPGA内部,从进入FPGA的管脚到寄存器的时钟输入端口的延时为Tcl。再看数据D 的延时,在PCB上的走线延时为Tdpcb,在FPGA内部的管脚到寄存器输入端口延时为Tp2r。而FPGA的寄存器同样有建立时间Tsu和保持时间Th要求,也必须在整个路径的传输时序中予以考虑。 另外,从前面的分析,我们得到了PCLK和D 之间应该满足的关系。那么,为了保证PCLK和D 稳定考虑的得到传输,我们可以得到这样一个基本的关系必须满足: 对于建立时间,有: 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 之间的关系,其实从已知的关系中,我们不难推断出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
  • 热度 2
    2013-4-21 20:07
    1268 次阅读|
    1 个评论
    CMOS Sensor接口时序约束   我们再看看PCB的走线情况,算算余下和PCB走线有关的延时。 如图所示,这是PCLK和D 在SF-CY3核心板上的走线。 如图所示,这是PCLK和D 在SF-SENSOR子板上的走线,在这个板子上的走线由匹配电阻分两个部分。 根据前面的走线长度,我们可以换算一下相应的走线延时,如下表所示。因此,我们可以得到,Tcpcb_max = 0.35ns,Tcpcb_min = 0.35ns,Tdpcb_max = 0.36ns,Tdpcb_min = 0.31ns。 信号名 SF-CY3走线长度 SF-SENSOR走线长度1 SF-SENSOR走线长度2 总长度(mm) 延时(ns) PCLK 18 27.7 6 51.7 0.346023622 VD0 16.8 24.9 9.1 50.8 0.34 VD1 19.5 26.8 6 52.3 0.35003937 VD2 16.2 25 9.1 50.3 0.336653543 VD3 18.9 27.8 6 52.7 0.352716535 VD4 15.9 24.8 9.1 49.8 0.333307087 VD5 18.7 28.5 6 53.2 0.356062992 VD6 15.3 24.8 9.1 49.2 0.329291339 VD7 18.7 27.8 6 52.5 0.351377953 HREF 14.6 23.8 9.1 47.5 0.317913386 将上面得到的具体数值都代入公式,得到: 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 vdb vdb vdb vdb vdb vdb vdb vhref的set_max_delay做如下设置。 点击ContraintsàSet Minimum Delay,对vdb vdb vdb vdb vdb vdb vdb vdb vhref的set_min_delay做如下设置。 约束完成后,参照前面章节Update Timing Netlist并且Write SDC File…,接着就可以重新编译整个工程,再来看看这个时序分析的报告。在报告中,数据的建立时间有9-13ns的余量,而保持时间也都有7-11ns的余量,可谓余量充足。 另外,我们也可以专门找一条路径出来,看看它的具体时序路径的分析。vd 这条数据线的建立时间报告中,66ns的input max delay出现在了Data Arrival Path中。 而在vd 的保持时间报告中,7ns的input min delay则出现在了Data Arrival Path中。 详细的文档请参考: http://group.ednchina.com/GROUP_GRO_14596_1375.HTM SF-CY3/SF-SENSOR/SF-LCD开发套件:http://myfpga.taobao.com/
  • 2013-3-12 00:37
    899 次阅读|
    0 个评论
    请看两个连接: 1.http://blog.sina.com.cn/s/blog_489e45270100jo19.html 2. http://bbs.ednchina.com/BLOG_ARTICLE_2117657.HTM
广告