5,相同时钟域内的亚稳态------S/H时间违约 想象一下,在两个相邻的DFF中间,有一条很长很复杂的组合逻辑器件链条。因此从前一级DFF出发的数据,需要经过很久很久才能在后一级DFF的输入端稳定下来。这个时间甚至要接近时钟周期(如果时钟周期只比关键路径长一点,这种情况是很可能的)。那么这个信号在采样窗口开始之后,才稳定下来,因此DFF第一级没有足够时间正确无误地设置电平,从而导致亚稳态的出现。这种情况叫做设置时间违约(setup time violation)
Fig. 11. Setup time violation
由于这种情况的发生是由于组合逻辑传输时间过长引起的,所以在设计时,只需要考察最长的那些路径。
下面来看另一种情况。如果在第一周期上升沿,从前一级触发器出发的D0到达了下一级(这时时钟周期已经接近下一周期的上升沿了)。这时有一个在第二周期上升沿,从前一级触发器出发的D1经过一个非常短的路径到达了下一级。如果这个传输时间小于保持时间,那么,在上一个D0还没有完全结束采样的时候,D1会过来破坏这个采样。因此产生保持时间违约(hold time violation)。