http://bbs.eetop.cn/thread-870295-1-1.html
1.IR drop的定義
IR drop是指在集成電路中 和地網絡上電壓下降和升高的一種現象。隨着半導體工藝的不斷演進,金屬互連線的寬度越來越窄,導致電阻值不斷變大(供電電壓也越來越小),IR drop的效應越來越明顯。因此,現在的芯片最后都把IR drop的分析做為芯片signoff的一個必要步驟。業界的signoff工具大部分采用的是Redhawk。
2.IR Drop的種類
IR drop主要分為兩種。一種是靜態的IR drop,另外一種則是動態的IR drop。
靜態IR drop現象產生的原因主要是電源網絡的金屬連線的分壓,是由於金屬連線的自身電阻分壓造成的。電流經過內部電源連線的時候產生電源壓降。所以靜態IR drop主要跟電源網絡的結構和連線細節有關。因此靜態IR drop主要考慮電阻效應,分析電阻的影響即可。
動態IR drop是電源在電路開關切換的時候電流波動引起的電壓壓降。這種現象產生在時鍾的觸發沿,時鍾沿跳變不僅帶來自身的大量晶體管開關,同時帶來組合邏輯電路的跳變,往往在短時間內在整個芯片上產生很大的電流,這個瞬間的大電流引起了IR drop現象。同時開關的晶體管數量越多,越容易觸發動態IR drop現象。
3.靜態IR Drop分析的流程
lef是指Std cell,IP,Memory,io,bond pad,子模塊的lef。除了子模塊的lef外,其他fab廠都會提供對應的文件。子模塊的lef可以由Milkyway來生成。這里需要注意的是tech lef必須寫在lef list中的第一個。lib是指design中所用到的standard cell,memory,ip,io等子模塊的lib文件,這些文件fab廠或者Vendor均有提供。
ploc文件也稱為PAD 文件,其中包含design中所有的供電點信息,比如power pad,center pad的instance名字,坐標位置,layer層次以及power net信息。spef文件為數字后端實現后抽取RC用來跑STA的spef文件。
tech文件是指Apache的tech文件,這個文件一般可以通過ircx2tech來產生。
具體命令如下:
ircx2tech -i rc_ircx.rc_cworst.ircx -o rc_ircx.rc_cworst.tech -v max -m IRCX2tech.mapping
Timing文件可以通過STA中的PT session來產生對應的Timing文件。具體產生步驟如下:
restore_session top.pt_session
source pt2timing.tcl
getSTA *
VCD(Value Change Dump)文件一般由 工程師提供。VCD文件是IEEE1364標准( 語言標准)中定義的一種ASCII文件。它主要包含了頭信息,變量的預定義和變量值的變化信息。正是因為它包含了信號的變化信息,就相當於記錄了整個仿真的信息,我們可以用這個文件來再現仿真,也就能夠顯示波形。因為VCD是 Verilog HDL語言標准的一部分,因此所有的verilog的仿真器都要能夠實現這個功能,也要允許用戶在verilog代碼中通過系統函數來dump VCD文件。我們可以通過Verilog HDL的系統函數$dumpfile 來生成波形,通過$dumpvars的參數來規定我們抽取仿真中某些特定模塊和信號的數據。
因為VCD記錄了信號的完整變化信息,我們還可以通過VCD文件來估計設計的功耗,而這一點也是其他波形文件所不具備的。 PrimeTime PX (Prime Power,這個工具其實是功耗分析的Signoff工具)都可以通過輸入網表文件,帶功耗信息的庫文件以及仿真后產生的VCD文件來實現功耗分析。
由於靜態IR Drop分析是基於power平均分布在每個instance上,因此我們在分析IR Drop前還需要給design中各個子模塊指定一個預估的功耗值。這個功耗值的確定需要根據以往的項目經驗或者實測功耗值,額外再添加點margin。這個功耗值如果設置不合理,分析出來的結果也是不具備參考價值的。另外,還需要設置合理的toggle rate值。
參考腳本如下:
# Setup anlysis mode
setup analysis_mode static
# Design Importing
import gsr top.gsr
setup design
# Power calculation
perform pwrcalc
# Extract PG RC
perform extraction -power -ground
perform gridcheck
#Perform anlysis
perform analysis -static
#perform emcheck -mode avg
#run Redhawk explorer
explore design
# -constrAInt_file "cons.rpt"
#save database
export db static_ir.db
4.動態IR Drop分析的流程
在項目前期,由於數字后端實現的database沒有ready,后仿可能也沒有時間做,所以此時動態IR Drop的分析一般都是基於Vectorless。而項目后期都是需要基於某個場景下,比如max power,去產生對應的VCD,然后再去做基於VCD的動態IR drop分析。基於VCD動態IR drop的分析一般可以不指定各個子模塊的功耗值,工具可以從VCD中獲取對應的power值,如果沒有對應的功耗值,則采用用戶設置的值。
參考腳本:
# Setup anlysis mode
setup analysis_mode dynamic
# Design Importing
import gsr top.gsr
setup design
# Power calculation
perform pwrcalc
# Extract PG RC
perform extraction -power -ground -c
perform gridcheck
#Perform anlysis
perform analysis -dynamic
#perform emcheck -mode avg
#run Redhawk explorer
explore design
# -constraint_file "cons.rpt"
#save database
export db dynamic_ir.db
5.IR Drop的影響
性能下降電壓降低后,gate的開關速度變慢,性能降低。因此,對於高性能的設計,必須將IR Drop控制在很小的范圍內。芯片功能錯誤在極端的情況下功能也會受影響的。在深亞微米下,如果power network做的不夠好,然后碰上了很不好的case,IR drop在某個局部區域特別大(特別是動態IR drop),從而導致STA階段signoff的timing 與實際情況不一致(考慮OCV仍然無法cover design的要求),導致setup或者hold的違例。setup的違例,可以通過抬高電壓來提升頻率,但是代價是功耗上去了,而且如果動態IR drop不夠robust,可能通過抬電壓,setup能提升的空間也有限。而一旦出現hold違例,那芯片就無法正常工作。因此在先進工藝中,IR drop的影響特別大,需要引起各位的高度重視。
6.改善IR drop的方法
提高power mesh密度
增加power switch cell 數量
插足夠多的decap cell(含decoupling capacitance)
將同時翻轉的寄存器攤開些擺放
少用 SLVT cell(在place 階段禁用 SLVT,后續再打開;或者在 PR 階段禁用,pt 修時序階段再打開)