原创 recovery时序优化一例

2009-8-26 19:23 6052 8 14 分类: FPGA/CPLD

recovery时序优化一例<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


    TimeQuest中的recovery/removal检查是对工程中的各种异步控制信号(包括异步复位信号、异步使能信号等)的时序进行分析。recovery时间是指在有效时钟沿到来之前异步控制信号必须保持稳定的一段时间,和数据的建立时间概念是相似的;removal时间是指在有效时钟沿到来之后异步控制信号必须保持不变的一段时间,和数据的保持时间概念是相似的。它们的时序余量计算公式也和建立时间、保持时间相似。


如图1所示,查看TimeQuest中的recovery检查报告,它对该实例工程的3个异步清除信号(sysrst_nr2sdwrad_clrvga_validr)进行检查。sysrst_nr2是该工程的系统复位信号,而sdwrad_clrvga_validr是由内部逻辑产生的,它们既作为内部逻辑的同步清除信号(不进行recovery/removal检查),也分别作为内部两个FIFO的异步复位信号(这部分路径将进行recovery/removal检查)。


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


点击看大图


1


    由于数据setup time/hold time检查和控制信号的recovery/removal检查都是对信号与时钟沿关系的时序分析,而且它们的分析计算公式都是类似的,所以一般信号的路径进行setup time/hold time检查,而异步控制信号的路径将进行recovery/removal检查。TimeQuest不会同时对信号既进行setup time/hold time检查,又进行recovery/removal检查,只是二者取一。


    在该工程中,sdwrad_clr的产生是由5.4s定时器cnt5s控制。当状态机sdinit_nstate处于SD_DELAY状态时,cnt5s开始计数,值为28'hffffff0sdwrad_clr将产生一个时钟周期宽度的高脉冲,这个高脉冲将作为FIFO的异步清除信号。下述代码即sdwrad_clr信号的产生逻辑。


reg[27:0] cnt5s;    //5.4s定时计数器


 


    //5.4s计数


always @(posedge clk or negedge rst_n)


    if(!rst_n) cnt5s <= 28'd0;


    else if(sdinit_nstate == SD_DELAY) cnt5s <= cnt5s+1'b1;


    else cnt5s <= 28'd0;


 


//SDRAM写控制相关信号清零复位信号,高有效


wire sdwrad_clr = (cnt5s == 28'hffffff0);  


 


    下面来看看时序分析报告中异步清除信号sdwrad_clrrecovery检查。如图2所示。由于时序分析的起点和终点都是以寄存器为基础的,所以作为wiresdwrad_clr不会出现在recovery检查的“From Node”中,取而代之的是直接控制sdwrad_clr输出的计数器cnt5s的全部28位寄存器。很显然,这里需要进行recovery检查的路径会比我们的预想多得多。这里最坏recovery检查slack=11.453ns(远远满足我们的要求了)。



点击看大图


2


    如图3和图4所示,分别是从Chip Planner中查看到cnt5s[27:0]在器件中的布局(右侧深蓝色部分)以及扇出路径。



点击看大图


3




点击看大图


4


    单从功能和时序上,上述代码已经满足了要求,只是最后的布局布线上让人有些不满意。显然,它可以进一步的优化,办法很简单,只要把异步复位信号sdwrad_clr的输出用一个寄存器锁存一拍后再输出即可。下面是优化后的代码。


reg[27:0] cnt5s;    //5.4s定时计数器


 


    //5.4s计数


always @(posedge clk or negedge rst_n)


    if(!rst_n) cnt5s <= 28'd0;


    else if(sdinit_nstate == SD_DELAY) cnt5s <= cnt5s+1'b1;


    else cnt5s <= 28'd0;


 


reg sdwrad_clr;     //SDRAM写控制相关信号清零复位信号,高有效


always @(posedge clk or negedge rst_n)


    if(!rst_n) sdwrad_clr <= 1'b0;


    else if(cnt5s == 28'hffffff0) sdwrad_clr <= 1'b1;


    else sdwrad_clr <= 1'b0;


 


    如图5所示,优化后的recovery检查的路径大大减少,只有原来的1/28。现在的“From Node”是寄存器sdwrad_clr。最坏的recovery检查slack=14.077ns,相比之前有了大幅度的提高。



点击看大图


5


    下面来看看代码优化后布局布线的变化,如图6和图7所示,分别为代码优化后从Chip Planner中查看到的cnt5s[27:0]在器件中的布局(右侧深蓝色部分)以及扇出路径。很明显,计数器cnt5s[27:0]的布局布线较之前有了很大的改观。



点击看大图


6



点击看大图


7


    从这个实例中,我们可以很深刻的体会到使用一些简单的代码优化技巧后给系统时序性能的改善带来的变化。尤其是FPGA内部产生的控制信号(不论是要作为后续电路的同步还是异步控制的信号),该信号在输出前应尽可能的减少组合逻辑数量,如果有可能,可以像我们的实例中那样先用寄存器锁存一拍再输出,尽量让控制信号“干干净净”的驱动后级电路。


 


 

文章评论6条评论)

登录后参与讨论

用户1633069 2013-8-5 09:08

上一节在计算output max/min delay的时候PCB延时还是0.42和0.22ns,到了这里怎么变成1ns和0ns了额。。。。。

sunce_464022046 2013-6-25 16:29

下载

用户598309 2009-9-7 19:25

嗯 学习了

用户559876 2009-9-3 16:48

前几天从你拿买的USB下载线不好使,想跟你交流一下,我的qq是522598632

ilove314_323192455 2009-8-31 18:13

对于该实例是的

用户182915 2009-8-31 15:37

看完这篇文章学到很多! 然后请问两位,如何在语句上实现提前一个周期触发? 是不是在计数时,计数器少计一个数(即一个周期)? 谢谢!

ilove314_323192455 2009-8-27 17:53

说得对

ash_riple_768180695 2009-8-27 08:26

图文并茂的好文!补充两点:1.增加一级寄存器,会引入一拍的延迟,计数器也应该提前一拍触发复位信号,以弥补引入的一拍延迟;2.给计数器输出增加一个寄存器的技巧也可以用在状态机的时序优化中,同样也需要计数器提前一个周期触发,这一技巧被称作“pre-calculation”。
相关推荐阅读
特权ilove314 2016-06-30 21:16
例说FPGA连载6:FPGA开发所需的技能
例说FPGA连载6:FPGA开发所需的技能 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   前面的文字已经做了很多铺垫,相信读...
特权ilove314 2016-06-28 21:09
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-28 21:05
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-26 22:11
例说FPGA连载4:FPGA语言与厂商介绍
例说FPGA连载4:FPGA语言与厂商介绍 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   Verilog与VHDL 说到FP...
特权ilove314 2016-06-23 21:26
例说FPGA连载3:FPGA与其它主流芯片的比较
例说FPGA连载3:FPGA与其它主流芯片的比较 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   FPGA、ASIC和ASSP...
特权ilove314 2016-06-21 20:32
例说FPGA连载2:FPGA是什么
例说FPGA连载2:FPGA是什么 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   2015年伊始,Intel欲出资百亿美金收...
我要评论
6
8
关闭 站长推荐上一条 /2 下一条