DaDa995 Hi 您好, 因為我都有空時才會看回覆及寫文章,所以沒有開啟私訊,
有想問的可能需要麻煩您留言,我如果剛好知道相關的知識會回覆您.
以下是關於我對CPPR的理解,
先描述一下CPPR在做甚麼,
以往我們在STA check timing的時候都會用最嚴謹的方式做sign off,
因為可以最保險降低出錯的機率,
所以大多時候我們都是over constraint的,
但是以現在的chip design來說,
我們希望可以省下更多的area或是power消耗,
雖然越嚴苛的條件可以讓你的chip容忍越大的variance,
副作用卻是增大了area和power,所以並不是沒有缺點的,
因此cppr就誕生了,
cppr目的就是要補償回我們曾經太嚴苛的條件,
實際上根本不會發生的case,
他所觀測的點是clk tree的common path.
在clk tree的建置過程,某種策略下希望common path越長越好然後到reg周遭開始branch開,
但是我們在分析timing時會因為希望預留OCV margin所以會給予一個uncertainty,
就是您於timing report中看到的derate項
在setup check下,
derate會對於launch path的timing總和乘上>1的倍率
對於capture path的timing總和乘上<1的倍率
可以想像成arrvial time我假設只要走1ps,但是我為了抓margin給他走1.1ps
對於require time 原本可以走1個cycle 2ps,但是為了抓margin給剩給他1.8ps
讓setup check 的require-arrival變緊達到預防ocv的效果
但是,這樣很純粹的算法會對common path的地方同時作放大跟縮小,
在預期上common path的路徑上不論對於req或arrival都是做出一樣的貢獻,
因此cppr就是在補償回原先這段path所多算的時間
可以參考下面這篇文章
https://vlsi.pro/common-path-clock-reconvergence-pessimism-removal/