首页 > > > SetupHold Time释疑.pdf

SetupHold Time释疑.pdf

SetupHold Time释疑.pdf

上传者: majijuncekong 2011-05-07 评分1 评论0 下载26 收藏10 阅读量561 暂无简介 简介 举报

简介:本文档为《SetupHold Time释疑pdf》,可适用于IT书籍领域,主题内容包含(转载)flyingwave(白云飞浪)于年月日::星期天提到:学习synopsys时对setupholdtime有些疑问。我知道建立时间是有效时钟符等。

(转载) flyingwave (白云飞浪) 于 2002 年 11 月 10 日 14:46:08 星期天 提到: 学习 synopsys 时,对 setup/hold time 有些疑问。我知道建立时间是有效 时钟沿到来 之前,数据必须稳定不变的时间,保持时间就是有效时钟沿到来之后,数据必须 保持不 变的时间,二者都是工艺的要求,在工艺库中指定。建立时间确定了时序通路的 最大延时 ,这不难理解,但为什么说保持时间决定时序通路的最小延时了?一个时序通路 的延时不 是越小越好吗? 我看了 sold 中的 user guide 和 reference manual,还有 CIC 的讲稿,他 们对 setup check 和 hold check 进行了图解,但我还是不很清楚,希望各位指点。 memcad (memcad) 于 2002 年 11 月 10 日 19:07:15 星期天 提到: 我想应该这样解释吧:如果 hold time=0。3ns,那么从上一个触发器 输出到你的下一个触发器输入的逻辑延迟应该小于此值,否则下一个 触发器的输入不符合 hold time,我认为从 CLK 到 Q 的延迟应该抵消这个 hold time,所以设计里面一般不会考虑 hold time. 抛砖引玉希望大家互相切磋 我也想问一下,大家是否知道在 Verilog 中的状态机一般都要用 parameter 来指定各个状态如:IDLE=2'B00,STATE1=2'B01 等 不知道 DC 综合时候是否会将这个优化,比如将 state1 变成 10. 本想在工作站上求证一下,最近机房工作站很紧张,TELNET 上去 经常无法正常编辑,不知如何搞定! MPW (卧薪又尝胆,得意莫忘形) 于 2002 年 11 月 10 日 20:08:31 星期天 提到: 不会的吧 除非你用 FSM compiler flyingwave (白云飞浪) 于 2002 年 11 月 11 日 09:16:40 星期一 提到: 你是不是说反了,因为 setup time 对应的才是 timing path 的最大时延, hold time 对应的是最小时延。 欢迎大家对该问题进行讨论! 至于你说的状态机优化问题,在 synopsy 里有两条对应的优化指令: //synopsys state_vector vector name //synopsys enum enum_name e.g. parameter [1:0] //synopsys enum state state_A=2'b00,state_B=2'b01, state_C=2'b10,state_D=2'b11; //synopsys state_vector present always @(present or ...) begin ... end ******************************************* viterbi (归去来兮~~~~) 于 2002年 11月 11日 15:37:47 星期一 提到: vhdl 里定义一下 enum 类型就可以了. memcad (memcad) 于 2002 年 11 月 11 日 20:15:32 星期一 提到: 哦,是我也错了,hold time 对应最小延时,是不是不加你所说的那两条优化指 令它就不 会对状态变量进行优化? suibianla (布局民工) 于 2002 年 11 月 11 日 23:28:57 星期一 提到: 个人觉得可能和 D触发器的两级锁存机构有关! alanzheng (alan) 于 2002 年 11 月 13 日 19:32:10 星期三) 提到: 你对 setup time 的理解是对的,而 hold time 的定义也确是在有效时钟沿到来 之后,数据 必须保持不变的时间,但是对它的正确的理解是这样的: 我们先举个例子:在一个移位寄存电路中,两个相邻的 register 之间没有任 何组合逻辑 ,如果前一个 register 的 hold time 不够(hold time < 最小延时)的话,那 么结果是--输 入信号发生直通,这样就不会有移位的效果。原因是后一个 register 本来是想 “采”D端前 一个状态,但是现在前一个 register 的 Q 端到后一个 register 的 D 端的延时太 小了,所以最后 “采”的却是前一个 register 的 Q 端的值,所以就像直通一样。 但是,我们为什么经常不太 care 这个 hold time violation 呢?原因是在大 部分电路中, register 之间都会有组合逻辑,所以一般延时都会大于最小延时的。所以说时 序通路的延 时越小越好是不对的,这一点在很多地方都有体现,例如:clock tree. 希望新手好好体会,觉得我有什么说的不对的地方,欢迎提出来! applepine (鄙视你...) 于 2002 年 11 月 13 日 22:51:12 星期三 提到: 我觉得我这么理解的 数据从输入 D到输出 Q有一个延时 Tdq 有效沿到来后数据有一个保持时间 Thold 如果 Thold 太小且通路之间延时为 0 那么这时候就会有新进来的数据出现在 Q端后 又继续被下一级的寄存器采样到 出现直通... 注释二、 时钟周期为 T,触发器 D1 的建立时间最大为 T1max,最小为 T1min。组 合逻辑电路最大延迟为 T2max,最小为 T2min。问,触发器 D2 的建立时间 T3 和保持时间应满 足什么条件。 ------------------------------ --------- 这个问题其实并不复杂,但出题的人那么出也确实是容易把人弄混。 可以先不管题怎么出,先把自己理解清楚的公式摆上去,再解不等式就 好了。 首先,我们还是应该假设 Setup 和 Hold 时间是不变的,那么可以改变 的是自己设计的组合电路的延时 T2max 和 T2min。计算 Setup violation 时是用延时最长的路径来计算的,只要最长的路径没有 setup violation, 整个设计就不会有;而计算 hold violation 时是用延时最短的路径来计算 的,只要最短的路径没有 hold violation,整个设计就不会有。所以: Tcko + T2max + Tsetup < T T2min > Thold - Tcko 其中 Tcko 指从寄存器的时钟跳变到输出的时间。 OK,然后就解不等式就好了,无论考官出什么题,这两个公式不变就 可以。 如果要忽略 Tcko,就把里面的 Tcko 去掉就好了。 有人提出对于 hold 时间,忽略掉 Tcko 后,如果 T2min 为 0,那 hold 时 间岂不也应该为 0? 正是如此!但是由于寄存器的 hold 时间不可能为 0,所以这时必须插入 buffer 增大 T2min 使它大于 Thold 才可以满足 hold 时间的要求。 然后,我们再把时钟的因素考虑进来。由于时钟到达各个寄存器的时间 不同,会引起时间差。注意,对于不同的寄存器之间,这时间差可能为 正也可能为负,综合工具不可能为对每一对寄存器之间都一一计算,因 而记这些时间差绝对值的最大值为 Tskew。也称 uncertainty。 对于建立时间,时钟 skew 的最坏情况是时钟往前偏移了 Tskew 时间; 对于保持时间,时钟 skew 的最坏情况是时钟往后偏移了 Tskew 的时间。 因此关系式变为: Tcko + T2max + Tsetup < T - Tskew T2min > Thold - Tcko + Tskew 一般来说,在不考虑时钟 skew 的情况下,Thold 总是小于 Tcko 的,所 以即使是 T2min 等于 0,保持时间的约束也是满足的,因而我们大多时 候对保持时间不需要考虑太多,只要我们的组合逻辑满足周期约束(也 就是 setup 的约束啦,计算周期约束肯定是要将 setup 时间算进去的)就 可以。需要考虑 hold time 约束的情况就是在有时钟 skew 的情况下,由 于时钟 skew 的存在, Thold-Tcko + Tskew 很可能会大于 0,因此,T2min 如果等于 0 就不能满足条件,此时就需要加入 buffer 以增大组合逻辑的 延时来满足这个条件。而在 FPGA 设计中,一般也无需考虑 Hold 时间 的问题。 注释三、 1.从采集数据角度:建立时间-clock 上升沿到来前,被采集数据稳定不变的时间. 时间过少,则采不到数据. 保持时间-clock 上升沿到来后,被采集数据稳定不变的时间.时间过少,则采不 到数据.如图: 2.触发器角度: 建立时间:触发器在时钟沿来到前,其数据输入端的数据必须保持不变的时 间;决定了触发器之间的组合逻辑的最大延迟. 保持时间:触发器在时钟沿来到后,其数据输入端的数据必须保持不变的时 间.决定了触发器之间的组合逻辑的最小延迟. 3. Why???? 网上的部分言论. setup time is the time required to charge the input capacitance of the FF(D input) to a correct logic(i.e to the VDD for logic-1 and VSS for logic-0); hold time is required to for two reasons1.to take care of clock skew effec 2.to allow the internal nodes of FF to charge/discharge to correct voltage levels. 1、setup time 的意义:为什么 Data 需要在 Clock 到达之前到达? 其实在实际的问题中,setup time 并不一定是大于零的,因为 Clock 到达时 刻并不等同于 latch 的传输门 A关闭的时刻(更何况这种关闭并不是绝对的和瞬 间完成的),这之间有一个未知的延迟时间。 为使问题简化,假设 Clock 的到达时刻为传输门 A关闭、传输们 B打开的时刻。 如果 Data 没有在这之前足够早的时刻到达,那么很有可能内部的 feedback 线路 上的电压还没有达到足够使得 inv1 翻转的地步(因为 inv0 有延时,Data 有 slope,传输门 B打开后原来的 Q值将通过 inv2 迫使 feedback 保持原来的值)。 如果这种竞争的情况发生,Q的旧值将有可能获胜,使Q不能够寄存住正确的Data 值;当然如果 feedback 上的电压已经达到了足够大的程度也有可能在竞争中取 胜,使得 Q能够正确输出。 如果 inv0、inv1 和 inv2 的延时较大(Data 的变化影响 feedback 和 Q 的时间越 长),那么为了保证正确性就需要更大的 setup time。所以在实际测量 setup time 的时候,需要选取工艺中最慢的 corner 进行仿真测量。 2、、hold time 的意义:为什么 Data 在 Clock 到达之后仍然要保持一段时 间? 和 setup time 的情况不一样,因为 Clock 到达时刻并不等同于 latch 的传输门 A完全关闭的时刻。所以如果 Data 没有在 Clock 到达之后保持足够长 的时间,那么很有可能在传输门 A完全关闭之前 Data 就已经变化了,并且引起 了 feedback 的变化。如果这种变化足够大、时间足够长的话,很有可能将 feedback 从原本正确的低电压拉到较高电压的电压。甚至如果这种错误足够剧 烈,导致了 inv1 和 inv2 组成的 keeper 发生了翻转,从而彻底改变了 Q的正确 值,就会导致输出不正确。当然,如果这种错误电压不是足够大到能够改变 keeper 的值,就不会影响到 Q的正确输出。 如果 inv0、inv1 和 inv2 的延时较小(Data 的变化影响 feedback 和 Q 的时 间越短),那么为了保证正确性,就需要更大的 hold time。所以在实际测量 hold time 的时候,需要选取工艺中最快的 corner 进行仿真测量。

该用户的其他资料

  • 名称/格式
  • 评分
  • 下载次数
  • 资料大小
  • 上传时间

用户评论

0/200
    暂无评论
上传我的资料

相关资料

资料评价:

/ 7
所需积分:2 立即下载
返回
顶部
举报
资料
关闭

温馨提示

感谢您对爱问共享资料的支持,精彩活动将尽快为您呈现,敬请期待!