前言
最近又从验证岗转回设计岗,对设计方向的东西关注又变多了。最近想把之前看过的一些小知识和电路归纳下,以备万一。
继续上次的这两个题来写一写,哈哈起始就是引个流。
setup time的一些思考点
hold time的一些思考点
这次的题目是偶然看到的,楞凭着小脑袋瓜记了住,分享一下。
题目
电路图如上所示,时钟周期为Tcyc,其他时序信息已在途中标注,已知两个寄存器是相同规格器件,那么求解寄存器的setup time和hold time要满足的条件。
分析
要确定满足的关系呢,我发现必须得定一个0时刻,这样后面分析起来都会顺很多,那么就定D1上升沿时刻为0时刻。
之后观察D2寄存器:
数据到达时刻为——T1+T2
时钟到达时刻为——Tcyc+T3
那么对于D2寄存器,可以得到两个需要满足的条件:
1.时钟到达时间 - 数据到达时间 > Tsetup
即Tcyc+T3-T1-T2 > Tsetup
2.时钟周期 - 数据setup > Thold
即Tcyc - (Tcyc+T3-T1-T2)> Thold
进一步求解为:
Tsetup < Tcyc + T3 - T1 - T2
Thold < T1 + T2 - T3
推进
上面这个式子的左侧是要求的setup/hold time,右侧是实际的setup/hold time,上学时候老师跟我们说过的:
时钟最早的到达时间 - 数据最晚要求的到达时间 = 实际的Tsetup
时钟周期 - (时钟最晚的到达时间 - 数据最早要求的到达时间)= 实际的Thold
当然了,左右一减,也就得到了另外一个公式:
Setup slack = 实际的Tsetup - 要求的Tsetup
Hold slack = 实际的Thold - 要求的Thold