Verilog系列:【44】timing_borrow
iming Borrow技术又称为cycle stealing技术,其原理主要是利用latch的电平敏感特性,通过有效电平获取数据再通过无效电平保持被锁存的数据,主要用于解决路径时序不满足电路要求的情况.
本文为描述方便使用的latch为高电平有效,latch的使能信号为clk,在clk为高电平时输入被传输到输出,其中clk变为有效的边沿称为opening edge,clk变为无效的边沿称为closing edge.根据数据到达latch输入端的先后可分为三种情况:
1> 数据先于使能信号有效前;
2> 数据在使能信号有效和失效之间到达;
3> 数据在使能信号无效时到达;
当latch的输入数据在clk有效沿前到达时,此时latch的行为类似于触发器,即也有setup和hold约束要求,在clk有效后,输入数据会立刻传输至latch输出端;
当latch的输入数据在clk有效沿和失效沿之间到达latch时,输入数据立即更新至输出端,此时clk有效沿至数据到达latch输入端的时间即为该数据的timing borrow,而数据到达latch输入端到clk无效后的时间即为后级电路的可用时间;
【示例一】三级锁存器
【示例二】
【总结】
综上所述,使用Timing Borrow技术主要是利用latch为电平触发,在有效电平阶段为"全透明(transparent)",只要数据在有效电平的这个区间内完成传输即可,因此示例中的Timing Borrow的最大借用时间应该为半个时钟周期.同时通过Timing Borrow可以加速设计,当路径延迟较大时,可以通过借用latch的部分时间实现数据的锁存从而可以提高设计运行的速度(没有latch,设计如果时钟频率,那么后续的触发器不一定能够采样到有效的数据),同时采用Timing Borrow还能保证功能的正确性.目前设计中一般不采用latch主要是因为latch时序分析和测试比较复杂而已.这里需要注意的是,在使用该技术是一定要注意前级电路借用时间与后级电路剩余时间之间的关系.
欢迎指正文中不足,封面图片若有侵权,请及时沟通。