原创 TimeQuest就一定要搞定——取值为负数的建立时间

2007-5-9 22:31 13194 6 13 分类: FPGA/CPLD

前面的一篇文章中,给出了建立时间检查的基本公式: riple



1)寄存器-寄存器(Register-to-Register)路径检查:  riple


Clock Setup Slack = Data Required Time – Data Arrival Time


Data Arrival Time = Launch Edge + Clock Network Delay Source Register +μtco + Register-to-Register Delay


Data Required Time = Clock Arrival Time – μtsu – Setup Uncertainty


Clock Arrival Time = Latch Edge + Clock Network Delay to Destination Register


2)输入引脚-寄存器(Pin-to-Register)路径检查: riple


Clock Setup Slack Time = Data Required Time – Data Arrival Time


Data Arrival Time = Launch Edge + Clock Network Delay to Source Register + Input Maximum Delay of Pin + Pin-to-Register Delay


Data Required Time = Clock Arrival Time – μtsu


Clock Arrival Time = Latch Edge + Clock Network Delay to Destination Register


3) 寄存器-输出引脚(Register-to-Pin)路径检查: riple


Clock Setup Slack Time = Data Required Time – Data Arrival Time


Data Arrival Time = Launch Edge + Clock Network Delay to Source Register + μtco + Register-to-Pin Delay


Data Required Time = Clock Arrival Time – Output Maximum Delay of Pin


Clock Arrival Time = Latch Edge + Clock Network Delay to Destination Register


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


在前两组公式中,Data Required Time计算公式的第二项都是 -uTsu riple


但是在TimeQuest中对两级级联寄存器的时序分析中,执行report_timing -from [get_ports data_in] -to [get_registers reg1] -setup -npaths 1 -panel_name "Report Timing"却得到了如下图所示的结果,请注意图中Data Required Time的第三行中reg1uTsu取值: riple


点击看大图



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


Incr一列中,reg1uTsu取值为0.036ns,在计算公式中作为正数值计入了Data Required Time的结果中。 riple


发现这一现象以后,经过分析,我认为有两种可能: riple


1. 计算公式正确,但是TimeQuest计算错误。 riple


2. 计算公式正确,uTsu的真实取值是负数,在上图中负负为正,TimeQuest计算正确。 riple


我一直倾向于后一种可能,毕竟TimeQuestAltera的一个招牌工具,这样明显的错误早就该解决了。但是从Setup时间的定义上看,uTsu又不可能是负值。 riple


后一种可能虽然更合理,但是又没有充足的证据证明这一点,这一数据是Altera给定的,原值是正是负无从知晓,在help里查也没查到,所以我一直对于TimeQuest存有怀疑。 riple


直到今天,我偶然想起前些天计算一个输出引脚的建立时间余量时,在同样的位置看到过一个取值为负的数据。这样看来,Incr一列中,不是只能有正数值,也可以有负数值。 riple


如果这个负值是我指定的,在Incr一列中出现负值就不奇怪了;但是我很清楚地记得,没有什么特殊条件导致我会在时序约束中采用负值。那么,这个负号应该是TimeQuest在计算中刻意加入的。负号可以加入,自然也可以去除,上图中uTsu的负号就可能是TimeQuest去除的。 riple


下面,让我们通过输出引脚的建立时间检查(公式3)来证明一下: riple


仍然以两级级联寄存器为例,计算公式重写如下: riple


3) 寄存器-输出引脚(Register-to-Pin)路径检查: riple


Clock Setup Slack Time = Data Required Time – Data Arrival Time


Data Arrival Time = Launch Edge + Clock Network Delay to Source Register + μtco + Register-to-Pin Delay


Data Required Time = Clock Arrival Time – Output Maximum Delay of Pin


Clock Arrival Time = Latch Edge + Clock Network Delay to Destination Register


Data Required Time中第二项是可以人为指定的。我们通过set_output_delay -add_delay -max -clock clk_in 2.000 [get_ports data_out]来指定Output Maximum Delay of Pin的取值为2ns riple


执行TimeQuest建立时间检查命令report_timing -from [get_registers reg2] -to [get_ports data_out] -setup -npaths 1 -panel_name "Report Timing"。得到如下图所示的结果: riple


点击看大图



可以看到,我们在时序约束中指定的输出引脚延时2ns被作为负数加入了Data Required Time的计算公式中。这样一来,TimeQuest的计算和上面的计算公式就一致了。 riple


同理,在reg1的建立时间余量计算中,uTsu原本是负值,经过计算公式中的一次负号变换,就作为正数加入了Data Required Time的计算公式中。 riple


    这样看来,在Altera的器件中,uTsu是作为负值提供给TimeQuest进行计算的。这一负值是器件本身的特性,还是为了补偿计算误差的需要有意加入的,还需要进一步的考证。 riple


    相关链接: riple


请问负的hold时间和建立时间一般由什么引起的?  riple


优化逻辑分析仪对高速系统的建立/保持时间的调节 riple


google上搜索negative setup time riple


could anybody give me a clear picture of negative setup and negative hold ? riple


DAtum [Timinganalysis] Negative setup and hold riple


Negative setup and Negative hold riple


Calculating the setup and hold times at the pins of a chip 很好的公式推导 riple


Negative setup time and postive hold time? riple


Method of HDL simulation considering hard macro core with negative setup/hold time  riple


 


    上午给Altera发了一个Service Request,下午就得到了回复: riple


点击看大图 riple


    但是这个回复没有解决我的疑惑,还要继续问: riple


点击看大图 riple


    隔了一个周末,正当我为自己是否说错了话而忐忑时,回复出来了。 riple


点击看大图 riple


    感谢Roger,TimeQuest在这一点上是没错的。负的建立时间是特定时序模型的特点,模型在器件上不同的位置具有不同的特征参数。负的建立时间和寄存器靠近引脚有关。我们不必关心,交给工具去处理好了。 riple

文章评论9条评论)

登录后参与讨论

用户414967 2012-2-21 16:54

安国au9520智能卡读卡器单芯片方案,支持两个7816卡槽。支持T=0和T=1协议,标准PcSC读卡器解决方案,支持Windows、Linux、WINCe、Mac OS、Android等。

用户171806 2008-10-24 11:39

智能卡,一卡通,门禁,考勤,消费,安防 技术文章,解决方案,服务厂商! 找你想要的!

ash_riple_768180695 2007-11-14 10:35

把你的认识也整理出来吧,“写作是最好的学习方式”。

用户111215 2007-11-13 15:07

从你这里看了时序分析,真是受益匪浅!

 

computer00 2007-7-22 21:20

来加入我的USB专区吧:

http://group.ednchina.com/93/

 

讨论和学习USB的空间。现在USB技术已经很流行了,就像以前的串口一样。以前的电子工程师不会搞串口通信就落伍了,而现在的电子工程师如果不会搞USB通信,那就落伍了。电子工程师门,还等什么,赶紧加入小组来学习USB吧……

ash_riple_768180695 2007-5-30 20:11

谢谢啊,非常棒的评论。

email:ash_riple@hotmail.com

用户15873 2007-5-29 23:16

还有,service request 一般都达不到效果。看了他们对于你的问题的回复,感觉还是格式化的敷衍而已。

但是往往好的公司对于menu 什么的都写的很详细,包括一些技术实现等。当时我就是这么学来的,把cadence 的online 都看了一遍,不懂的再打印出来研究。altera 的东西没怎么用过,不过文档应该还是有的,不要急着用工具,先看文档事半功倍。我是leon。email:   liam.noel.L@gmail.com

看你博客写的很多,一起学习啊。

用户15873 2007-5-29 23:05

负的setup 和 hold time 还是比较好理解的。

讨论一下setup time violation 的形成---因为信号比clock 后到达DFF,或者说到达的时间太晚了,这个时候这个DFF就没有办法采样到这个信号,于是就出现了slak。

假设你对一个DFF做优化,你会怎么做?---打包这个DFF,假设为DFFA。在DFFA中把clock加delay,再连接到原DFF。这样你的信号就可以走的慢一点,慢到比clock还慢都没有问题---而这个时候setup time 就被你给优化到负的值了。同样的可以解释负的hold time。

ash_riple_768180695 2007-5-15 12:16

学到了,非常感谢。

用户1053025 2007-5-15 10:57

riple,图片是很多网站发布没有解决的问题。如果图片不够大,很多细节看不到。如果图片太大,会自动缩小,版面看上去又不清晰了。

如果你想要尝试一下好看的图片,用photoshop或者acdsee,把图片resize到400的宽度,上传。

相关推荐阅读
ash_riple_768180695 2015-12-18 11:06
学习示例程序:FPGA快速系统原型设计--敏捷实践
        学习与开发板配套的示例程序,是敏捷实践的起点。示例程序是厂商针对开发板上提供的硬件资源和接口量身定做的工程,可以展示其FPGA芯片的功能和性能特点。从示例程序入手最大的好处就是:示...
ash_riple_768180695 2015-11-03 16:46
开发板选取:FPGA快速系统原型设计--敏捷实践
    既然是“实践”,就不能只谈编码和仿真,必须要上板运行、调试。这个虚拟项目的目标是实现一块兼容Intel82574L以太网控制器的千兆网卡,需要运行在一块具备PCIe接口和10/100/10...
ash_riple_768180695 2015-10-22 12:41
开篇:FPGA快速系统原型设计--敏捷实践
    虽然借用了 “系统原型开发”的标题,本系列文章将围绕FPGA IP级别的开发这个主题展开,如果可能的话,将扩展至FPGA System级别的开发。     先上一篇PPT:RSPwFP...
ash_riple_768180695 2013-08-26 10:21
学习SystemVerilog(二)——学习它的理由
    学习SystemVerilog的理由也很多,我在阅读SystemVerilog for Design 和 SystemVerilog for Verification两本书前言的过程中,总...
ash_riple_768180695 2013-08-26 10:19
学习SystemVerilog(一)——不学习它的理由
    想要学习SystemVerilog已经很久了。曾经尝试通过Accellera网站上给出的LRM学习,怎奈内容众多,找不出入手点和重点,只能望而却步。虽然手头有三本SystemVerilog...
ash_riple_768180695 2011-06-26 23:20
Hardware-Assisted IEEE1588 Implementation Analysis
06/18/11 11:00:05 PM         最近一段时间在研究IEEE1588-2008精确时间同步协议(PTP)。该协议可以在软件中实现,如果需要提高时间同步...
我要评论
9
6
关闭 站长推荐上一条 /2 下一条