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的行为类似于触发器,即也有setuphold约束要求,clk有效后,输入数据会立刻传输至latch输出端;

latch的输入数据在clk有效沿和失效沿之间到达latch,输入数据立即更新至输出端,此时clk有效沿至数据到达latch输入端的时间即为该数据的timing borrow,而数据到达latch输入端到clk无效后的时间即为后级电路的可用时间;

latch的输入数据在clk失效后到达latch,latch输出端将不受本次输入影响,将继续保持前次锁存的数据;


【示例一】三级锁存器



G1的上升沿之后,数据从L1传输到L2,当数据在G2L2上升沿之前到达L2,此时数据要满足L2setup要求,数据在G2L2上升沿之后立即更新至输出端,其工作类似于一级触发器,此时数据要传输至后级latch(L3)需要满足的时间应该为setup_2a;当数据在G2L2上升沿之后到达L2,此时数据从L1传输至L2的时间为setup1和部分G2L2有效时间(Borrowed time即借用的L2有效电平的时间),而此时剩余的G2L2有效时间部分为留给数据再从L2传输至L3(Available time),即数据从L1传输至L2用时越多,那么留下给数据从L2传输至L3的时间就越少,因为数据是在L2为有效电平期间传输穿过,所以数据传输至L3的耗时为setup_2b,此时数据传输不需要满足L2setup要求,下图为上述描述的时序关系;当数据从L1传输至L2,L2有效电平之后到达时,L2此时处于关闭状态,数据将不会被L2锁存,也不会传输至L3,该数据将被丢弃.

【示例二】


数据在FF0成功缓存后,经过path1 Delay到达L1D,此时当数据在Opening Edge之前到达L1,此时数据仅需要满足L1setup等时序要求即可立即更新至L1Q端;当FF0发送至L1D端的数据在Opening EdgeClosing Edge之间到达L1,此时因为L1处于全开状态,D端数据会立即更新至L1Q,并且可以在L1处于无效状态时保持Q端为在L1全开时传输的数据,此时留给FF1的时间就为path2 Delay.这里如果L1为一个触发器,那么因为path1 Delay发生在L1有效沿之后,时序将很为紧张并且极易出现时序违例,因此此例中通过L1可以解决路径的延迟较大的问题.下图为上述描述的时序关系:

【总结】

综上所述,使用Timing Borrow技术主要是利用latch为电平触发,在有效电平阶段为"全透明(transparent)",只要数据在有效电平的这个区间内完成传输即可,因此示例中的Timing Borrow的最大借用时间应该为半个时钟周期.同时通过Timing Borrow可以加速设计,当路径延迟较大时,可以通过借用latch的部分时间实现数据的锁存从而可以提高设计运行的速度(没有latch,设计如果时钟频率,那么后续的触发器不一定能够采样到有效的数据),同时采用Timing Borrow还能保证功能的正确性.目前设计中一般不采用latch主要是因为latch时序分析和测试比较复杂而已.这里需要注意的是,在使用该技术是一定要注意前级电路借用时间与后级电路剩余时间之间的关系.

图片图片图片图片图片图片图片图片图片图片图片图片图片图片图片图片

欢迎指正文中不足,封面图片若有侵权,请及时沟通。



全部评论
学到了,不过感觉这个好复杂啊
点赞 回复 分享
发布于 2022-08-13 17:43

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务