ICC_lab總結
最近在學習后端的流程,做lab是最好不過了。但是有時候做過了lab,過了一段時間之后就會忘記,因此需要自己總結一下,加強印象。
ICC_lab1:數據設置和基本流程
數據設置:
一、數據准備:
在啟動ICC之前,需要准備好下面的文件:
(1)非庫文件
①ICC啟動的環境設置文件:.synopsys_dc.setup文件,這個以后是需要我們書寫的。
主要的設置內容有:
·禁止顯示一些警告,比如創建庫、布局布線過程中的一些警告;
·設置一些有用的功能操作(ICC中沒有的),需要相應的設置文件
·設置一些變量開關狀態(開或者關)
·設置允許記錄shell的命令信息
·設置一些關聯命令
·邏輯庫設置(設置search_path ,target_libr,link_library,設置min庫:包括標准單元庫、IO庫、ram庫),這就需要庫了
·定義一些變量,這些變量內容是不同路徑下一些文件的名稱
②設計的verilog門級網表:.v文件,這個文件可以通過綜合完成,不需要我們生成。
③設計的平面布局圖:.def文件,這個文件在本次實驗中用到,這個通過布局規划得到,以后需要我們自己生成。
④時序約束文件:.sdc文件,主要是時序的約束,這個文件可以從.sdc(標准設計約束)文件得到,不需要我們書寫。
⑤時序和優化控制文件:opt_ctrl.tcl文件,主要是對設計進行優化的設置,這個以后是需要我們自己書寫的。
⑥檢查零互聯時的時序約束文件:zic_timing.tcl文件,主要是檢查設計在0負載的時候,時序的情況。這個以后需要我們自己書寫。
⑦創建電源和地的邏輯連接文件:derive_pg.tcl文件。顧名思義就是創建電源和地的邏輯連接;以后這個文件需要我們自己書寫。
(2)參考庫文件(ref文件夾),主要有:(參考庫不需要我們書寫,但是需要我們熟悉,因為在上面的設置中,需要用到這些庫)
·普通的庫文件(db):里面有標准單元庫、IO單元庫、RAM宏單元庫等
·參考的milkyway物理庫(mw_lib):里面有各種單元庫(IO單元、標准單元等)文件夾
·工藝庫文件夾(tech):主要是.tf工藝庫文件
·寄生參數庫(tlup):主要是RC參數(.tluplus庫文件),用來提取寄生參數用。.map文件主要是用來映射的文件。
二、創建milkyway設計庫
對於一個設計,需要根據參考可以,創建相應的milkyway庫。
啟動ICC后,第一件事就創建設計庫
create library:主要是填寫new library name(這個跟設計名稱一樣)、工藝庫名字,不需要導入物理庫;然后導入參考庫ref中的庫單元(ref中的sc、io、ram);勾選打開庫,然后確定之后就可以完成mw_lib的創建了
三、加載/讀入.v網表文件、tlu+(也就是RC參數)文件、約束以及控制文件
①確保設計庫打開的情況下,導入.v文件(FILE-import design),導入過程中,需要注意設置頂層設計。
②加載tlup+寄生文件:file -- set tlu+(寄生文件在ref的寄生文件夾下面),注意需要對於的文件(max、min還是.map)
③檢查物理庫和邏輯庫的一致性(check_library):
如果有缺失或者不匹配的標准單元庫(standard cells)、IP cells、IOpads(注意不是pin),那么需要修改庫,否則可以忽視警告消息。
④檢查tlu+文件是否添加(check_tlu_plus_files):有三個passed才算通過。
⑤驗證指定的已經加載的庫(list_lib):查看.synopsys_dc.setup文件中定義的庫是否正確。
⑥定義電源、地和網絡之間的連接,同時檢查是否有未連接的電源和地引腳:

⑦讀入時序約束文件,進行時序約束

·讀入時序約束之后,需要檢查一下是否缺失或者不一致的約束:

·查看是否有時序例外或者時序異常:

·檢查是否有禁止時序分析的路徑:

·檢查約束的模式是否正確:
檢查設計是否已針對特定的“模式”或“case”配置,例如“功能”與“測試”模式。 這是通過在定時分析和優化期間將控制引腳或端口約束為常量邏輯 0 或 1,而不是“硬連線”。 這有助於確認您的設計是否處於物理設計優化的正確“模式”:

·驗證時鍾是否正確建模:

⑧執行時序和優化腳本文件

⑨執行零互聯約束:
source script/zic_timing.tcl
ZIC 模式將線網的容性負載設置為零。
執行完之后,保存相應的時序報告,可以查看相應的時序報告:

⑩刪除理想的網絡:

“掃描使能”信號(scan_en)被定義為一個理想的網絡(見$ sdc_file),以防止綜合緩沖這個信號。 刪除理想的網絡定義,以便在物理設計期間進行緩沖插入。
⑪保存單元設計:

基本流程:
一、設計規划
①讀入布局規划文件:

這個.def在以后是需要我們進行設計生成的。
②確保標准單元不會放置在電源和接地金屬路徑下(此約束不是DEF 的一部分):

③保存設計規划后的設計:

二、布局
①進行布局,生成時序報告:

②布局完成之后,可以查看擁塞情況
③保存布局后的設計:

三、進行時鍾樹綜合
①使用默認設置生成時鍾樹。 然而,為了允許 ICCompiler在時鍾樹合成期間計算實際時鍾偏移,而不是結合來自約束的估計偏斜,首先去除“clockuncertainty,時鍾不確定性”。 此外,啟用保持時間修復:

最后那個是保持時序報告
②時鍾樹綜合之后,可以查看時鍾樹的形狀
③保存時鍾樹綜合后的設計:

四、布線
①布線操作:

②布線之后,就可以進行查看各種時序報告
③保存布線后的設計:

基本的流程就是這樣了。
最后,需要注意的是,當要打開某一個階段的設計時,需要重新加載時序和控制優化:

第一個lab到這里結束了。
數據准備:各種文件、庫文件-->創建milkway庫-->加載/讀入.v網表文件、tlu+(也就是RC參數)文件、約束以及控制文件(期間進行各種檢查,執行各種文件)
基本流程:設計/布局規划-->布局-->時鍾樹綜合-->布線
