原创 读SRAM时序约束分析

2009-2-12 19:31 10322 7 31 分类: FPGA/CPLD

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

 


         SRAM使用的是ISSI61LV51288位宽,19条地址线。FPGA内部有一个地址产生计数单元,因此数据读操作时输出管脚的时序起点就是这些地址产生单元。因为希望快速读SRAM,所以状态机代码读SRAM是第一个时钟周期送地址(SRAMOE#信号始终接地),第二个时钟周期读数据。系统时钟使用的是50MHz20ns),SRAM的标称读写速度可以达到8ns。感觉上20ns操作一个8nsSRAM似乎很可行。


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


点击看大图


         上面SRAM的读时序中,tRC=8ns,也就是说地址稳定后最多等待8ns数据总线上的数据是有效的(上面的说明只是相对于SRAM管脚而言,不考虑其它条件)。那么在地址稳定后的08ns之间的数据可能是有效的也可能是无效的我们无从得知(也许不到8ns数据就已经有效了,可以说8ns是一个很保守的读取时间),但是8ns以后一直到数据地址发生变化的tOHA时间内的数据一定是稳定的。


         上面罗嗦了一大堆,下面步入正题。我们要计算FPGASRAM的数据总线接口上的input delay值,按照公式:Input max/min delay = 外部器件的max/min Tco + 数据的PCB延时 – PCB时钟偏斜。


我们先计算一下地址总线最终稳定在SRAM输入管脚的时间,应该是FPGA内部时钟的launch edge开始到FPGA输出管脚的延时加上地址总线在PCB上从FPGA管脚到SRAM管脚的延时。前者的值为5.546ns9.315ns(由FPGA时序分析得到,不包括launch edge clock network delay),后者的值为0.081ns0.270ns(由PCB走线长度换算得到)。那么地址总线最终稳定在SRAM输入管脚的时间max=9.585ns,min=5.627ns


         其次,我们可以从SRAMdatasheet查到(也就是上面的时序图的tRC)地址稳定后Tco=8ns数据稳定在SRAM数据总线的输出管脚上。数据总线从SRAM管脚到达FPGA输入管脚的PCB延时为0.085ns0.220ns


         从上面的一堆数据里,我们需要理出一条思路。首先需要对这个时序进行建模,和FPGA内部的寄存器到寄存器的路径和类似,这个时序模型也是从FPGA内部寄存器(输出管脚)到FPGA内部寄存器(输入管脚),不同的是这个寄存器到寄存器间的路径不仅在FPGA内部,而是先从寄存器的输出端到FPGA的输出管脚,再从PCB走线到外部器件SRAM的输入管脚,然后经过了SRAM内部的Tco时间后,又从SRAM的输出管脚经PCB走线达到FPGA的输入管脚,这个输入管脚还需要有一些逻辑走线后才达到FPGA内部寄存器的输入端。整个模型就是这样,下面看这个输入管脚的Input delay如何取值。大体的这个路径如下图,也可以简单的把两个寄存器之间的路径理解为FPGA内部的一个大的组合逻辑路径。


        


 点击看大图


         根据Input delay的定义,加上我们这个模型的特殊性,我个人认为input delay的路径应该是从CLKlaunch edge开始一直到FPGADATA总线的输入端口。那么所有的路径延时值在前面都给出了。最后计算得到input max delay = 17.765input min delay = 13.731


无疑,上面得出的input delay参数都有些偏高了(由于该工程使用器件为Altera MAX ii EPM570,内部资源有限速度也无法做得太高,加之工程的其它控制模块也相对有些复杂,所以这对于该工程在20ns内操作8nsSRAM带来了一定的挑战。),下面进行时序分析即建立时间和保持时间余量的计算。


 


建立时间:


Data Arrival Time = Launch Edge + Clock Network Delay + Input Maximum Delay of Pin + Pin-to-Register Delay = 0+3.681ns+17.765ns+ Pin-to-Register Delay = 21.446ns + Pin-to-Register Delay


Data Required Time = Latch Edge + Clock Network Delay to Destination Register - utSU = 20ns + 3.681ns – 0.333ns = 22.348ns


Clock Setup Slack = Time Data Required - Time Data Arrival Time = 22.348ns – (21.446ns + Pin-to-Register Delay) = 0.902ns - Pin-to-Register Delay


         若满足时序要求,则:0.902ns - Pin-to-Register Delay > 0 Pin-to-Register Delay < 0.902ns


 


         保持时间:


Data Arrival Time = Launch Edge + Clock Network Delay +Input Minimum Delay of Pin Pin-to-Register Delay = 0+3.681ns+13.731ns+ Pin-to-Register Delay = 17.412ns+ Pin-to-Register Delay


Data Required Time = Latch Edge + Clock Network Delay to Destination Register + utH = 0+3.681ns+0.221ns = 3.901ns


Clock Hold Slack = Time Data Arrival - Time Data Required Time = 17.412ns+ Pin-to-Register Delay – 3.901ns = 13.511ns + Pin-to-Register Delay


若满足时序要求,则:13.511ns + Pin-to-Register Delay > 0


 


Pin-to-Register Delay 时间从时序报告里得出在4.711ns6.105ns范围内。那么建立时间余量显然不满足,建立时间时序违规。而保持时间则不会违规。


 


虽然这个工程如此这般分析下来,似乎在这个工程条件下用50MHz的速率来读存取时间为8nsSRAM是不可行的。但是在我初步调试这个工程的时候,没有进行时序约束和时序分析的情况下就进行了板级调试,而且调试的最终结果是正确的,读写SRAM的操作好像没有出现预想之外的问题。这让我很是纳闷,为什么理论上进行静态时序分析不可行的时序最后却通过了板级调试了呢?思考了很久,归纳了以下几种可能性:


1,  首先不排除上文里时序分析的方法有误,很期待各位高手指点;


2,  时序分析的有些太苛刻了,可能有些地方都是想到了最坏的情况(当然这是必要的,有些时序违规不是一天两天能出现的,甚至听说过恩年出现一次的问题,这是最让人郁闷的事,记得我们部门里的机器在实验过程中出现了一点问题立刻大群人马围坐分析,毕竟我们搞的都是~~不是一般的马虎不得的东西呵呵);


3,  有些违规最严重的路径可能是地址的高位,因为我们操作的时候都是递增地址读数据的,高位地址变化周期长,它的时序违规表现的不是那么明显;


4,  还真有那么一次,发现一个从SRAM读出的很小块的显示图片区错误了,不排除是读时序问题造成的;


5,  SRAM标称的8ns是最大的等待时间,或许和开篇提到的一样,SRAM实际上数据有效等待时间不需要那么长,也就是上面分析中外部器件的Tco减小了。


这是我能想到的可能的情况,也许还有别的问题,也期待各位提出自己的一些看法。


 


 

PARTNER CONTENT

文章评论24条评论)

登录后参与讨论

ilove314_323192455 2010-9-29 11:00

带着这些为什么好好去研究,怕就怕问题出的不明不白,解决得也不明不白。

用户25268 2010-9-29 00:27

我现在外部时钟使用100MHz的CLK,读写的速率为15ns, 如果按照你上面分析的,我根本没有办法解决正常的读写操作。 我现在不太会用TIMEQUEST,只是用class timming做了一下时序约束,具体设置的值分别为tsu6ns, tco30ns, tpd6ns, th0.4ns,至于为什么这么设置,我也不太清楚,我只是看了一下时序分析报告,然后把slack调整至较少的红色告警而已。 我选择了一些综合的选项,如speed, retiming。现在测试下来的结果,65MHz的读写基本上没有问题。我也不清楚为什么?但是有一下选项非常关键,那就是retiming这项,具体为什么,不清楚。 希望有机会能够和你学习一下。 我的QQ:3320662,有机会交流。我只是一个fpga的菜菜菜菜菜,刚刚会写代码而已。

用户311713 2010-9-29 00:26

我现在外部时钟使用100MHz的CLK,读写的速率为15ns, 如果按照你上面分析的,我根本没有办法解决正常的读写操作。 我现在不太会用TIMEQUEST,只是用class timming做了一下时序约束,具体设置的值分别为tsu6ns, tco30ns, tpd6ns, th0.4ns,至于为什么这么设置,我也不太清楚,我只是看了一下时序分析报告,然后把slack调整至较少的红色告警而已。 我选择了一些综合的选项,如speed, retiming。现在测试下来的结果,65MHz的读写基本上没有问题。我也不清楚为什么?但是有一下选项非常关键,那就是retiming这项,具体为什么,不清楚。 希望有机会能够和你学习一下。 我的QQ:3320662,有机会交流。我只是一个fpga的菜菜菜菜菜,刚刚会写代码而已。

ilove314_323192455 2010-5-10 19:31

是的,可以用Set_Input_Delay和Set_Output_Delay来分析

用户1359586 2010-5-8 23:40

我觉得如果使用Set_Input_Delay和Set_Output_Delay的话,就不用考虑FPGA reg2pin,pin2reg的时间了,因为Set_Input_Delay和Set_Output_Delay命令是针对port(FPGA的引脚)而言的。 Set_Input_Delay max =tco max + data PCB delay max - clock PCB delay min Set_Input_Delay min =tco min + data PCB delay min - clock PCB delay max 请多指教

用户1359586 2010-5-8 23:14

为什么不使用 Set_Input_Delay和Set_Output_Delay让timequest来分析呢?

用户598309 2009-8-26 21:07

嗯 谢谢您的建议。我再看看去。

ilove314_323192455 2009-8-26 19:25

不是很明白您的疑问,我想您应该是对SRAM的时序不是很熟悉,建议您先找相关SRAM的datasheet看看

用户598309 2009-8-26 11:39

最近在看sram,读了您的《sram一点通》,还是有点疑惑。望能指点。。。 所以状态机代码读SRAM是第一个时钟周期送地址(SRAM的OE#信号始终接地),第二个时钟周期读数据。 如上所描述,假设时钟周期为20ns,那么第二个时钟周期到来的时候,data的保持时间已经过了,此时怎么读数据呢? 谢谢

ilove314_323192455 2009-7-16 20:30

上级寄存器选通信号的输出时间+RAM从选通到有效数据输出的时间
相关推荐阅读
特权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欲出资百亿美金收...
EE直播间
更多
我要评论
24
7
关闭 站长推荐上一条 /3 下一条