當前位置:
首頁 > 最新 > 研發分享:數字後端設計論文

研發分享:數字後端設計論文

第一作者 |Yangyang Xia

共同作者 | Hong Yin,Miao Liu,Qianyi Zhang

上海楷登電子科技有限公司

201204 上海市浦東新區芳甸路1155號5樓

目的

伴隨著超大規模集成電路進入納米級別,電壓降(IR-Drop)成為制約高性能和高可靠性電路的重要因素。因為金屬互連線的寄生電阻電容的存在和電源供應不平均,晶元內將會存在電壓降,該壓降會引起電路時序的延緩,從而導致延時違例和信號完整性問題。因此,在電路設計中需要進行電壓降分析,並且修複電壓降違例。

通過一些客戶的反饋,在先進工藝下,尤其是7nm/12nm的良率分析,因為電壓降違例導致的良率問題非常嚴重。Cadence作為業內唯一一家有著業內領先的實現工具(Innovus),時序收斂驗收工具(Tempus)和功耗收斂驗收工具(Voltus)的EDA供應商,急客戶所急,推出本套成熟的基於時序的電壓降ECO流程。

電壓降分析主要用來驗證整顆晶元的供電是否正常。一般情況下,電壓降分析有兩種方式,靜態電壓降分析和動態電壓降分析。靜態電壓降分析基於功耗分析把器件模擬成一個恆流源並提取電源地網路的電阻進行分析。靜態電壓降分析主要跟電源網路的結構以及電源線的連接相關。對於動態電壓降,主要是由於電路正常工作時電流波動或者當大量晶體管和組合邏輯電路同時跳變時,晶元會產生很大的瞬時電流,這個電流會引發大的電壓降。

為了提升晶元的性能和可靠性,設計工程師很有必要在設計過程中進行電壓降的分析。本手冊將會提供一種基於時序的電壓降ECO的流程,用以輔助設計工程師進行電壓降違例的分析與修復,並且最大限度保證setup時序不受影響,和引入最小限度的DRC修復。

應用人員

該手冊為數字電路設計工程師尤其是先進工藝數字工程師必備,輔助設計工程師在Innovus/Tempus/Voltus中進行電壓降的分析與違例修復。

綜述

該手冊介紹了一種基於靜態電壓降分析的電壓降ECO的流程,主要在postroute階段使用Tempus進行ECO。電壓降分析和ECO的引擎已經集成到Tempus當中。設計工程師可以通過該流程獲得符合電路設計標準的電壓降分析和違例修復,並且不增加晶元的時序違例。相應的Innovus和Tempus的命令也包括在該手冊當中。

本流程用到的工具包含有Innovus, Tempus 和 Voltus。

手冊主要使用Legacy格式的命令。

基於時序的電壓降分析流程

基於時序的電壓降分析流程主要是使用了Tempus中集成的Voltus功耗分析和電壓降分析引擎。靜態電壓降主要是基於平均功耗進行分析的。因此,在進行靜態電壓降分析之前需要完成平均功耗分析。下面的圖主要介紹了該靜態電壓降分析和違例ECO流程。

下面的步驟詳細描述了基於時序的電壓降ECO的流程:

導入設計:將Innovus的postroute DB直接導入Tempus。

導入SPEF:將SPEF文件讀入Tempus。

產生電源網格視圖(PGV,power grid view ):PGV的產生需要包括標準單元,電源開關器件,Macro/IP,filler和decap單元等。PGV是器件或者電路模塊的電學和物理上一種對應表達方式,主要是根據電網路分布,提取電源網格的電學參數,包括電源網路分析的RC,電流,電容負載和物理位置等。

功耗分析:功耗分析主要是為靜態電壓降分析提供相應的電流數據。

電壓降分析:電壓降分析主要基於是PGV和功耗分析進行電壓降的分析。

電壓降debug:電壓降debug用來發現晶元中存在的電壓降違例。

ECO-opt-design:電壓降debug用來發現電壓降違例的實例。ECO-opt-design主要是對這些電壓降違例的實例進行修復。該修復過程會考慮到時序,最小限度的影響設計的時序。

Innovus ECO:電壓降違例修復結束後,Tempus會產生命名為eco_innovus.tcl 的tcl腳本。設計工程師需要在Innovus中執行該tcl腳本,工具會在tcl腳本的引導下對相應的違例器件進行替換。替換結束後,需要進行ECO繞線,用來修復在實例替換過程觸及的繞線。

1. 開啟Tempus

# 以timing signoff solution ECO的模式開啟Tempus

tempus -tso

# 開啟tpsECOFeatureIRDropFix功能用來修複電壓降違例

setBetaFeature tpsECOFeatureIRDropFix 1

2. 導入設計文件

# 直接導入Innovus postroute DB 進入Tempus

3. 導入SPEF文件

# 導入SPEF 文件進入Tempus

read_spef -rc_corner xxx xxx.spef

4. 產生PGV

PGV是器件或者電路模塊的電學和物理上一種對應的表達方式,根據電源網路分布提取電源網格的電學參數,包含了電壓降分析和功耗分析所需要的信息。

PGV包括三種形式:Techonly,IR,EM。Techonly僅用於早期電壓降分析,IR和EM可用於整個設計階段和簽核。在電壓降分析中,要對標準單元和Macro/IP/IO進行PGV的建模,具體所需輸入文件如下面的表格所示。

以Tech only類型的抽取作為實例來描述PGV的產生。

# 在產生PGV之前,設計工程師需要定義產生view的模式。首先需要定義產生cell的類型,包括Tech only, Standards cells, 和Macros and I/Os,然後定義晶元的供電電源端和接地端。同時,設計工程師需要列出設計中用到的decap器件和filler器件。如果設計中存在電源開關器件,設計工程師還需要定義電源開關器件的相對應參數,例如電源開關器件的名稱,供電的電源端(supply),可開啟關斷的電源端(switched)以ohms為單位的開啟電阻(Ron),以毫安為單位的飽和電流(Idst)和泄漏電流(Ileak)。

set_pg_libaray_mode -celltype techonly

-power_pins

-groud_pins

-decap_cells *CAP*

-filler_cells FILL*

-powergate_parameters

{{ cell supply switched RonIdstIleak}}

-extraction_tech_file ***/QrcTechFile

# 設定好相應抽取PGV的模式之後,設計工程師可以通過下面的命令產生PGV。工具將會生成dir.PGlib_techonly.cl 的文件夾。

generate_pg_library -output ./ -libray_prefix dir.PGlib

注意:PGV只需要在第一次跑這個流程的時候產生一次。如果設計使用的器件單元類型沒有發生改變,工程師在之後的流程中可以直接使用第一次產生的PGV。

如果設計工程師需要產生其他類型的PGV,例如IR/EM ,那麼就需要準備更多的輸入文件。下面是Standards cells的產生IR/EM PGV的命令。

set_pg_libaray_mode -celltype stdcells

-power_pins

-groud_pins

-decap_cells *CAP*

-filler_cells FILL*

-powergate_parameters

{{ cell supply switched Ron Idst Ileak}}

-extraction_tech_file ***/QrcTechFile

-spice_models ***

-spice_corners **

-spice_subckts ***

-current_distribution propagation

5. 功耗分析

# 在進行功耗分析之前,設計工程師首先需要定義功耗分析數據的輸出路徑和文件夾,然後設定相應的功耗分析模式。

write_static_currents需要被設置成true用來產生 繞線的電流數據。

create_binary_db設置成true,定義binary_db_name ,用來保存二進位DB。

設定分析方式為靜態用來執行靜態的功耗分析。

ignore_control_signals 設置成true。

honor_nehative_energy設置成 true用來保存.lib中內部功耗表格中的negative internal energy numbers.

set_power_output_dir staticPowerResults

set_power_analysis_mode -method static

-write_static_currents true

-binary_db_name dynPower.db

-create_binary_db true

-ignore_control_signals true

-honor_negative_energy true

-analysis_view ***

# 設計工程師需要定義電路的switching activity ,如果有時鐘門控,還需設置門控比例。 如果設計工程師有信號網路的翻轉信息(TCF,toggle count format ) 文件, 可以直接讀入TCF。

set_default_switching_activity -input_activity 0.2

-seq_activity 0.1

-clock_gates_output_ratio 0.5

read_activity_file -format tcf ***.tcf

#定義功耗文件的格式.

report_power -rail_analysis_format VS

-outfile static.rpts

在功耗分析之後,工具將會產生很多.ptiavg文件,例如dybPower.db static_VDD.ptiavg 。這些 static_***_.ptiavg文件將會被用來進行電壓降的分析。

6. Rail分析

6.1 設置rail分析的模式

# 設計工程師需要定義rail 分析的模式

set_rail_analysis_mode -method static

-accuracy xd

-power_grid_library {***.cl}

-enable_rlrp_analysis false

-verbosity true

-analysis_view ***

-temperature *

注意:對於分析模式的精確度來說,工具有兩種精確度模式:XD 和HD。 XD (accelerated definition) 被用來進行晶元設計流程中早期的電壓降和電遷移分析。 HD (high definition) 用來進行設計流程最後電壓降和電遷移的分析和驗證。 XD 和HD 分別用在不同時期的電壓降和電遷移的分析和驗證,具體如下表所示。

6.2 創建和設置電源凸點(power pad)

# 在進行rail分析之前,設計工程師需要創建和設置電源凸點。命令-auto_fetch將會選取設計中所有的電源點。設計工程師使用電源凸點的**.pp文件來進行rail分析,該文件包含了電源凸點的物理信息。

create_power_pads -net VDD -auto_fetch -vsrc_file vdd.pp

create_power_pads -net VSS -auto_fetch -vsrc_file vss.pp

# 在設置電源凸點之前,工程師被推薦重置設計中原始的電源凸點。重置好電源凸點之後,需要指定電源凸點的形式和電壓源信息的文件。工具包含五種格式的電源凸點形式 (defpin, pdcell, xy, boundary and xyiv) 。以xy為例,它表示電壓源的位置是由x和y的坐標點進行標記。推薦客戶使用XY坐標點的電源凸點文件。

set_power_pads -reset

set_power_pads -net VDD -format xy -file vdd.pp

set_power_pads -net VSS -format xy -file vss.pp

6.3 設定功耗數據

# 設計工程師需要定義功耗數據的格式,然後將功耗數據導入Tempus。例如,使用-format current定義**.ptiavg文件是功耗分析產生的電流文件。同樣,在設置功耗數據文件之前,推薦設計工程師將設計中原始的功耗數據重置。

set_power_data -reset

set_power_data –format current

{ staticPowerResults/static_VDD.ptiavg

StaticPowerResults/static_VSS.ptiavg }

6.4 設定pg信息

# 在rail分析之前,需要對pg線進行設定。設計工程師需設定pg線的名稱,供電電壓值和pg線上承載的電壓閾值。電壓閾值用於後期生成電壓降違例。定義force用來跳過對電源線有效性的檢測。設計工程師同樣被推薦先重置設計中原始的pg線信息,然後再去根據設計需求定義pg線的信息。

set_pg_nets -reset

set_pg_nets -net VDD -voltage 1.0 -threshold 0.9 -force

set_pg_net -net VSS -voltage 0.0 -threshold 0.05 -force

6.5 設定rail分析域

# rail分析之前,設計工程師需要設定用以進行rail分析的電源域。對於可以開啟關斷的電源域,工程師只需要設定一直處於開啟狀態的電源線。如果工程師只需要對某條電源線進行rail分析,那麼則不需要定義分析的域。

Set_rail_analysis_domain -name ALL -pwrnets { VDD } -gndnets VSS

6.6 Rail分析

# Rail分析是基於電源域或者電源線進行分析的,因此設計工程師需要定義rail分析的模式是基於電源域還是電源線。

analyze_rail -name ALL -results_directory ./staciRailResults -type domain all

6.7 Rail 分析結果

工具將會在用戶定義的路徑下面產生對應的分析結果,例如,ALL_0c_avg_1。Rail分析的結果將會被用來進行電壓降debug。設計工程師可以在Reports的路徑下面檢查相應的報告,並且在以電源線命名的路徑下面檢查對應電源線的rail分析結果。在本手冊中,以 VDD_CPU為例。設計工程師可以檢查電壓降分析的分布圖,或者可以檢查log文件來查看壓降分析的範圍和比例。下圖所示的為電壓降的分布圖和log文件中顯示的壓降分布區間和比例。

注意:IR壓降結果的顯示有兩種類型,線性結果和有限結果。就線性結果而言,工具會將從0到設定的電壓值行平均分配,然後顯示出每個電壓範圍內的實例佔比。至於有限結果,該結果的顯示和設計工程師的設定有關。在設定PG線信息時,工程師會定義每條電源線上的閾值,當線上的實際電壓值高於或者定於設定的閾值時,工具便會將對應的實例標記為電壓降違例。同時,工具會將高於或者低於閾值和設定的標準電壓之間的範圍進行平均分配,並且顯示對應區間範圍內的實例佔比。

7. 電壓降debug

在rail分析之後,需要進行電壓降debug,用以識別晶元上不同區域的電壓降違例,並且提供相應的違例信息供工具進行電壓降違例的修復。

# 電壓降debug需要指定rail分析產生的結果目錄,例如該手冊中的ALL_0c_avg_1。如果用戶需要基於電源域來進行電壓降debug,需要設定相應電源域的名稱。推薦設計工程師定義eco_report,用來產生包含電壓降信息的的文件,該文件可以用來在Tempus中進行ECO修複電壓降違例。設計工程師使用Nregion定義設計應當分為幾個區域來進行分析,通過nworst_instance定義多少個違例應該被報告出來。

debug_irdrop-state_directory./staticResults/ALL_0c_avg_1

-domain ALL

-output_directory pre-eco_latest

-nworst_instances ***

-eco_report

-nregion *

設計工程師可以在pre-eco_latest的目錄下面檢查debug報告,或者直接在log文件中查看相應的違例實例的具體數目。Log文件的結果顯示具體如下圖所示。

8. 電壓降違例ECO

電壓降debug會識別出設計中的IR壓降違例,設計工程師需要進行ECO對電壓降違例進行修復。本手冊的流程推薦工程師在Tempus中進行修復。

# 設定ECO的優化模式retime為 path_slew_propagation,工具會根據路徑實際slew值,基於 PBA? 重新計算路徑的時序延時。

set_eco_opt_mode -retime path_slew_propagation

# 設計工程師通過設定 max_slack, max_paths和nworst分別來定義來定義ECO過程中允許的最大slack值,每個終點對應的最差路徑的數目和 每個終點可以列舉的路徑數目。

set_eco_opt_mode -max_slack * -max_paths * -nworst *

# 設定allow_multiple_incremental 為true,允許工具可以進行多次的優化來進行電壓降違例的修復。

set_eco_opt_mode -allow_multiple_incremental true

# 設定load _irdrop _db去載入電壓降debug的結果。

set_eco_opt_mode -load_irdrop_db ***

#設定verbose為 true用來列印詳細的電壓降違例ECO的信息進入log文件。

set_eco_opt_mode -verbose true

# 設定 fix_max_tran and fix_max_cap 為false來阻礙工具修復DRV。這裡,重要的是要設定fix_ir_drop為true,該命令將會開啟Tempus的電壓降違例ECO功能。

set_eco_opt_mode -fix_max_tran false

-fix_max_cap false

-fix_ir_drop true

# 設定setup_recovery 為true用來修復因為電壓降違例修復引起的時序違例。

set_eco_opt_mode -setup_recovery true

#使用eco_opt_design開始進行ECO修複電壓降的違例,設計工程師需要定義-drv用來觸發ECO的功能。

eco_opt_design -drv

9. 在Innovus進行ECO

在Tempus中通過eco_opt_design修複電壓降違例之後,工具將會產生以eco_innovus.tcl命名的腳本文件,該腳本具體的內容由下圖所示。

該eco_innovus.tcl腳本包含需要被ECO替換的實例信息,例如實例的位置,實例的單元名稱,和單元的方位。

下面的步驟介紹了在Innovus中進行ECO 的流程。需要注意的是,在完成ECO替換單元之後,設計工程師需要進行ECO繞線用以修復因為換單元而被觸及的繞線。

開啟Innovus,導入postroute的DB。

執行eco_innovus.tcl

ecoRoute

10. 驗證電壓降ECO之後的時序結果

在Innovus中完成ECO之後,需要驗證ECO之後的時序結果。設計工程師可以直接在Innovus中調用timeDesign的引擎去報時序結果,或者抽取SPEF文件,在Tempus中驗證時序和電壓降結果。

總結

該手冊用來幫助設計工程師在postroute的階段進行電壓降違例ECO修復。工具將會通過對標準單元進行放大或者縮小,替換不同閾值電壓的標準單元進行電壓降違例的修復。該手冊推薦的流程將會最小限度的擾亂設計原始的時序信息,並且修複電壓降違例。

通過應用該手冊,設計工程師可以最小限度的觸及設計時序去修複電壓降違例。

參考文獻

Innovus User Guide Product Version 17.10

Innovus Text Command Reference Product Version 17.10

Tempus User Guide Product Version 17.10

Tempus Text Command Reference Product Version 17.10

Voltus User Guide Product Version 17.10

Voltus Text Command Reference Product Version 17.10


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Cadence楷登 的精彩文章:

TAG:Cadence楷登 |