Innovus update_io_latency


在Innovus中從ccopt 后的timing report中可以看到clock delay是從負值開始算起的,這個是因為在ccopt過程中進行了的update latency的動作。

 

 

基於block level的設計進行分析,假設在sdc中對clock 沒有設置source&network  latency(就是0),在ccopt之前clock模式是ideal的,所有的clock latency都是按照0計算。

 

當cts完成之后,clock模式切換為propagate ,工具會計算到達每個sink 點的latency 長度。

 

如下圖所示,cts之后,latency  (insertion delay)為3.5ns。圖中兩邊虛線框代表block 的IO,左邊為input port,右邊為 output port。如果不進行update latency,對於input port(假設下圖中io和內部寄存器都約束在同一個clk下),setup timing會樂觀很多,對於ouput port ,setup timing會悲觀很多,因為寄存器有latency,io clock latency為0。

 

所以,工具對root點的pin 反標一個負的latency,在理想完全balance情況下,在timing rpt中可以看到到達內部寄存器的值為0,這樣就可以確保io timing不會過於樂觀和悲觀。控制這個過程的property 是update_io_latency。

 

set_ccopt_property update_io_latency true

 

需要注意下面兩點:

  •  如果是在做top only的pr實現,或者整個設計是flat進行的,要設置update_io_latency為false,可以考慮一下為什么。

  • 在ccopt之前不要設置clock 模式為propagate


免責聲明!

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



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