
相關(guān)閱讀Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482邏輯庫的定義邏輯庫由半導(dǎo)體供應(yīng)商維護和分發(fā)包含每個單元的特性和功能信息例如單元名稱、引腳名稱、面積、時序弧和引腳負載。它們還定義了設(shè)計規(guī)則約束如線網(wǎng)的最大轉(zhuǎn)換時間等條件。此外邏輯庫還指定特定工藝技術(shù)的工作條件和線負載模型只用于線負載模式。Design Compiler支持使用非線性延遲模型(Non-Linear Delay Model, NLDM)和復(fù)合電流源模型(Composite Current Source Timing Model, CCST)或同時使用兩者。Design Compiler會根據(jù)邏輯庫的內(nèi)容自動選擇使用的時序模型。如果庫同時包含NLDM和CCST模型Design Compiler會使用CCST模型。在邏輯綜合和預(yù)布線優(yōu)化期間工具可能不會使用所有的CCST數(shù)據(jù)以節(jié)省運行時間。Design Compiler需要邏輯庫是.db格式。通常情況下半導(dǎo)體供應(yīng)商會提供.db格式的邏輯庫。如果只有邏輯庫的源代碼(例如.lib格式)則需要首先使用Library Compiler以前集成在Design Compiler中后脫離變成單獨的工具將其編譯為.db格式。邏輯庫的讀取邏輯庫可以使用兩種方式讀取第一種方式是自動讀取第二種是顯式讀取下面將分別介紹這兩種方式。自動讀取使用target_library和link_library變量可以指定目標(biāo)庫和鏈接庫該變量中可以包含邏輯庫文件名的絕對路徑、相對路徑或簡單路徑相對search_path變量的路徑如下所示這些邏輯庫會在必要時顯式/隱式鏈接隱式鏈接會在讀取類命令、綜合類命令、報告類命令、約束類命令等大部分命令時執(zhí)行自動讀取。dc_shell set_app_var link_library /home/zhangchen/topo/slow.db // 使用絕對路徑 dc_shell set_app_var link_library ./slow.db // 使用相對路徑 dc_shell set search_path /home/zhangchen dc_shell set_app_var link_library topo/slow.db // 使用簡單路徑Design Compiler會記錄被讀取的邏輯庫名及其所屬的邏輯庫文件名的絕對路徑如下所示。dc_shell list_libs Logical Libraries: ------------------------------------------------------------------------- Library File Path ------- ---- ---- gtech gtech.db /opt/Synopsys/syn/W-2024.09-SP2/libraries/syn standard.sldb standard.sldb /opt/Synopsys/syn/W-2024.09-SP2/libraries/syn slow slow.db /home/zhangchen/topo記錄邏輯庫文件名的絕對路徑可以避免自動讀取時出現(xiàn)覆蓋如果發(fā)現(xiàn)邏輯庫文件之前已讀取則不會重復(fù)讀取即使邏輯庫文件的內(nèi)容更改或target_library和link_library變量修改了例如用絕對路徑和相對路徑描述同一個邏輯庫文件。盡管邏輯庫文件名和邏輯庫名一般相同但這不是強制性的如下所示。dc_shell list_libs Logical Libraries: ------------------------------------------------------------------------- Library File Path ------- ---- ---- gtech gtech.db /opt/Synopsys/syn/W-2024.09-SP2/libraries/syn standard.sldb standard.sldb /opt/Synopsys/syn/W-2024.09-SP2/libraries/syn slow1 slow.db /home/zhangchen/topo顯式讀取使用read_db命令可以顯式讀取邏輯庫直接指定絕對路徑、相對路徑或簡單路徑相對search_path變量的路徑形式的邏輯庫文件名即可如下所示。dc_shell read_db ./slow.dbDesign Compiler會記錄被讀取的邏輯庫名及其所屬的邏輯庫文件名的絕對路徑如果強行重復(fù)讀取則會出現(xiàn)覆蓋Design Compiler需要保證內(nèi)存中的邏輯庫文件名的絕對路徑唯一即使它們中的邏輯庫名不同。邏輯庫的指定邏輯庫可以使用兩種方式指定第一種方式是間接指定即通過邏輯庫文件名間接指定邏輯庫第二種是直接指定即指定邏輯庫名下面將分別介紹這兩種方式。間接指定最常見的間接指定的方式就是用target_library和link_library變量指定目標(biāo)庫和鏈接庫目標(biāo)庫會在綜合時使用而鏈接庫則會在顯式/隱式鏈接、默認約束選擇例如默認線負載模型和默認工作環(huán)境等或某些命令不添加庫選項時使用例如set_wire_load_model命令和set_operating_condition命令。直接指定最常見的直接指定的方式是使用某些命令時添加庫選項指定邏輯庫名例如set_wire_load_model命令和set_operating_condition命令如下所示。dc_shell set_wire_load_model -name wl20 -library slow有些情況下僅僅指定邏輯庫名不足以唯一確定邏輯庫這時就要求使用其所屬的邏輯庫文件名的基本名注意這與簡單路徑不同作為前綴如果還是不能唯一確定即基本名相同則需使用其所屬的邏輯庫文件名的絕對路徑或相對路徑作為前綴如下所示。dc_shell set_wire_load_model -name wl20 -library slow // 不使用前綴 Error: slow doesnt specify a unique library Please use complete specification: full_file_name:library_name (UID-15) dc_shell set_wire_load_model -name wl20 -library slow.db:slow // 使用基本名前綴 Error: slow.db:slow doesnt specify a unique library Please use complete specification: full_file_name:library_name (UID-15) dc_shell set_wire_load_model -name wl20 -library /home/zhangchen/topo/slow.db:slow // 使用絕對路徑前綴 dc_shell set_wire_load_model -name wl20 -library ./slow.db:slow // 使用相對路徑前綴邏輯庫的保存如果將設(shè)計保存為ASCII格式的網(wǎng)表則邏輯庫信息會丟失這依賴用戶在之后進行額外設(shè)置如果將設(shè)計保存為二進制格式例如ddc的網(wǎng)表其中會包含所有SDC約束某些SDC約束需要使用邏輯庫信息例如set_wire_load_model命令和set_operating_condition命令因此其中還會包含邏輯庫名并以基本名作為前綴。當(dāng)用戶之后再次讀取保存為二進制格式的網(wǎng)表時會基于search_path變量和基本名自動讀取邏輯庫并恢復(fù)SDC約束因此邏輯庫文件的移動可能會導(dǎo)致恢復(fù)失敗。寫在最后需要注意的是邏輯庫的讀取和指定是兩個不同的步驟因此可以混合使用但自動讀取的使用情況較多如下所示。// 自動讀取、直接指定 dc_shell set_app_var link_library ./slow.db dc_shell set_wire_load_model -name wl20 -library slow // 該命令會導(dǎo)致自動讀取// 自動讀取、間接指定 dc_shell set_app_var target_library ./slow.db dc_shell compile_ultra // 該命令會導(dǎo)致自動讀取// 顯式讀取、間接指定 dc_shell read_db ./slow.db dc_shell set_app_var target_library ./slow.db dc_shell compile_ultra // 自動讀取不會進行因為已讀取// 顯式讀取、直接指定 dc_shell read_db ./slow.db dc_shell set_wire_load_model -name wl20 -library slow