利用latch進行 Timing borrow 改善setup/hold violation


Timing borrow

http://www.mamicode.com/info-detail-2296344.html
https://blog.csdn.net/cy413026/article/details/89404998
http://bbs.eetop.cn/thread-488834-1-1.html?_dsign=5c11920d

相關的原理和解釋可以看下面兩個文章:

前一篇詳細解釋了如何利用timing borrow 來優化setup violation.

要修setup違例,將原本時序比較緊(arrival time比較長)的兩個DFF的后面一個換成高電平latch,利用高電平的透明時間,可以做到即使arrival time在下一個上升沿之后,latch也能將數據透明到Q端。這樣相當於借用了后一個周期的時間,最多借用半個周期。這種方法對再后一級DFF的setup有影響,只能再后面一級的setup slack比較充裕的情況下使用。
當然,對於這種情況,也可以使用useful skew。

后一篇詳細解釋了如何利用timing borrow 來優化hold violation.
利用latch修hold的原理是利用低電平latch, 因為低電平latch在高電平時間是鎖存的,所以當檢查latch之后的DFF的hold時,因為在高電平latch的輸出一直不變,所以一直滿足后級DFF的hold time,也就是說hold的slack=半周期-holdtime (忽略clk skew 和c-q), hold違例就能改善。

具體的做法可以看這里


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM