数字电路基础知识——锁存器与触发器的建立时间和保存时间(二)
考虑时钟偏斜时,为tskew 1)对于建立时间,组合逻辑考虑最大延迟T2max 因此建立时间裕量:= tcycle - (tcq + T2max) + tskew - Tsu 根据建立时间裕量 > 0 即 tcycle - (tcq + T2max) + tskew - Tsu >= 0 故: Tsu <= Tcycle - (tcq + T2max) + tskew 若不考虑寄存器的输出延迟和时钟偏斜,则 Tsu <= Tcycle - T2max
2)对于保持时间,组合逻辑考虑最小延迟T2min 如果触发器D2的输入信号还在保持的时候,这时候D1已经通过组合逻辑传来改变了D2,因此会破坏D2本来的保持的数据,因此组合逻辑延时太小也不好。 保持时间裕量:= tcq + T2min - tskew - Thd 根据建立时间裕量 > 0 即 tcq + T2min - tskew - Thd >= 0 故: Thd <= tcq + T2min - tskew 若不考虑寄存器的输出延迟和时钟偏斜 (tcq = tskew = 0),则 Thd <= T2min
3)关于考虑组合逻辑的最大延迟和最小延迟问题。 由于组合逻辑有关键路径,即关键路径对应最大延迟,也有最小延迟,即对应数据最快到达输出端。 因此 对于建立时间来说,考虑到最恶劣的情况就是必须考虑到这些最大的延迟; 因此 对于保持时间,我们需要考虑到下一个信号最快传输到D2的情况,那么最小的延时也就是代表着最快的传输
因为在不同的情形下,例如不同的温度,电压,loading等等,每一段电路的delay是不同的,所以对于同一段电路,其delay可以在如下范围中:
Min_delay<= Delay <= max_delay
1. 建立时间 Tperiod - (Tc->q_FF1 + Tcomb_logic) + Tskew - Tsetup >= 0 Tskew = Tclk_delay_FF2 - Tclk_delay_FF1 即: Tclk_delay_FF1 + Tc->q_FF1 + Tcomb_logic + Tsetup <= Tclk_delay_FF2 + Tperiod 应该满足: MAX_data_path_delay + Tsetup <= MIN_clk_path_delay + Tperiod 才能保证电路是可靠的。所以在实际电路中:
Tdata_path_max + Tsetup <= Tclk_path_min + Tperiod
对应上图,该公式应该是:
2ns+ 11ns + 2ns + 9ns + 2ns + 4ns <= 2ns + 5ns + 2ns + Tperiod
所以: 30 <= 9 + 15.因为违反了该公式,所以该电路出现了setup violation。
2. 保持时间 Tc->q_FF1 + Tcomb_logic - Tskew - Thold >= 0 即: Tclk_delay_FF1 + Tc->q_FF1 + Tcomb_logic –Thold>= Tclk_delay_FF2 应该满足: MIN_data_path_delay – Thold >= MAX_clk_path_delay 才能保证电路是可靠的。所以在实际电路中:
Tdata_path_min - Thold >= Tclk_path_max 对应上图,该公式应该是:
1ns +9ns + 1ns + 6ns + 1ns – 2ns >= 3ns + 9ns + 3ns
所以: 16ns >= 15ns,满足公司要求,所以该电路无holdviolation。
在某些电路中,可以认为clk tree上面没有延迟,可以认为wire没有延迟,那么setup和hold公式就得到简化。
参考博客: https://blog.csdn.net/FBICIACCC/article/details/52683901