下图是上升沿触发的D触发器的一种典型的基于传输门的设计原理:
首先我们先把注意力集中在电路的前半部分。
假设CLK的初始状态为0,此时第一个传输门导通,信号走向为:
D -> a -> b -> c -> d 注:路径1
从以上信号走向可以看出,信号必须在CLK上升沿到来之前在d点保持稳定,否则如果在这之前D pin的信号发生变化,就会导致DFF锁住错误的信号。换句话说,如果假设路径1需要花费的时间为t0,那么D处的信号必须要在CLK上升沿之前的t0或更早的时间内保持稳定。此即setup的物理意义,也是timing report种library setup time所代表的含义。
接着,当CLK从0变成1后,D与a之间的传输门关闭,a与d之间的传输门导通,此时信号走向为:
d -> a -> -> b -> e -> f(Q) -> g -> h
需要注意的是,当信号从0变为1的过程中,在一段很短的时间内,所有传输门都可能导通,若此时D端信号发生变化而CLK的transition比较慢,则会发生新值覆盖旧值而导致信号错误的现象。因此,D段信号需要在传输门完成开/关过程中保持稳定,此即为hold的物理意义,也是timing report中library hold time代表的含义。
现在我们从DFF的构造上分析了setup和hold的原理,请大家思考这样一个问题:从上面的描述可以看出,library setup time和library hold time应该都是正值,但是它们是否有可能是负值?如果有可能,在什么情况下会为负呢?
3. setup和hold为负值浅析
为了探讨方便,此处将触发器解剖为两个锁存器用以分析,该触发器原理图如图3所示。
3.1 hold time为负值
当data从pin到锁存数据的锁存器的delay时间大于clock从pin到达锁存器CK端的delay时,那么当D结束于CLK上升沿之前,此时从REGISTER层面观测到的hold为负值,而实际上在锁存数据的锁存器端,由于之前data延迟大于clock延迟,CLK'对D'进行控制时,D'相对于CLK'一直保持到CLK'为高电平之后,也就是此时hold为正值,出现在上升沿右侧。
3.2 setup time为负值
当data从pin到锁存数据的锁存器的delay时间小于clock从pin到达锁存器CK端的delay时,那么当D开始于CLK上升沿之后,此时从REGISTER层面观测到的setup为负值,而实际上在锁存数据的锁存器端,由于之前data延迟小于clock延迟,CLK'对D'进行控制时,D'出现在了CLK'之前,也就是此时setup为正值,出现在上升沿左侧。
问:library setup time和library hold time应该都是正值,但是它们是否有可能是负值?如果有可能,在什么情况下会为负呢?
答:在实际设计中,它们均可能为负值,其根本原因在于当前很多DFF的标准单元中并非纯粹的D触发器结构,而是会包含数量不等的buffer/inverter。详细的内容请参看我收藏的这篇文章:
https://pan.baidu.com/s/1xLbwl1KnbuOUSZtiIBnmSw
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架