相關閱讀
Synopsyshttps://blog.csdn.net/weixin_45791458/category_12812219.html?spm=1001.2014.3001.5482
? ? ? ? 對于Synopsys的EDA工具(如Design Compiler、PrimeTime、IC Compiler)等,設計對象(Design Objects)是組成整個設計的抽象表示(其實設計本身也是一種設計對象),本文就將介紹一些常見的設計對象。
單元
? ? ? ? 單元指的是那些在設計中被實例化的模塊,一個模塊可以多次實例化以創建多個不同的單元。如果該模塊是用戶定義的,則相應的單元被稱為層次單元(Hierarchical Cell);如果該模塊來自邏輯庫,則相應的單元被稱為葉單元(Leaf Cell),關于葉單元的更詳細介紹,參考下面的博客。
靜態時序分析:Leaf Cell(葉單元)https://chenzhang.blog.csdn.net/article/details/140306133? ? ? ?
????????使用get_cells命令可以得到一個單元集合(Collection),以用于其他SDC命令;使用report_cell命令可以報告單元信息;使用list_attributes -class cell -application命令可以顯示一個單元可以擁有的屬性(Attribute),這些屬性用于記錄單元的詳細信息;使用get_attribute命令可以得到單元的任意一個屬性值。
時鐘
? ? ? ? 時鐘指的是在設計中模擬周期、不確定度、抖動等因素的對象,使用create_clock命令或create_generated命令可以分別創建時鐘和生成時鐘,關于這兩者的更詳細介紹,參考下面的博客。
靜態時序分析:ideal_clock、propagated_clock以及generated_clock的關系及其延遲計算規則(一)https://chenzhang.blog.csdn.net/article/details/139998035
????????使用get_clocks命令可以得到一個時鐘集合,以用于其他SDC命令;使用report_clock命令可以報告時鐘信息;使用list_attributes -class clock -application命令可以顯示一個時鐘可以擁有的屬性,這些屬性用于記錄時鐘的詳細信息;使用get_attribute命令可以得到時鐘的任意一個屬性值。
設計
????????設計指的是被讀取的模塊,如單元描述中說的那樣,一個設計可以在另一個設計中實例化為單元。使用get_designs命令可以得到一個設計集合,以用于其他SDC命令;使用report_design命令可以報告設計信息;使用list_attributes -class design?-application命令可以顯示一個設計可以擁有的屬性,這些屬性用于記錄設計的詳細信息;使用get_attribute命令可以得到設計的任意一個屬性值。
線網
? ? ? ? 線網用于連接單元之間引腳,使用get_nets命令可以得到一個線網集合,以用于其他SDC命令;使用report_net命令可以報告線網信息;使用list_attributes -class net?-application命令可以顯示一個線網可以擁有的屬性,這些屬性用于記錄線網的詳細信息;使用get_attribute命令可以得到線網的任意一個屬性值。
引腳
? ? ? ? 引腳指的是設計中單元的引腳,它的方向可以是輸入、輸入和輸入輸出(雙向)。使用get_pins命令可以得到一個引腳集合,以用于其他SDC命令;使用list_attributes -class pin -application命令可以顯示一個引腳可以擁有的屬性,這些屬性用于記錄引腳的詳細信息;使用get_attribute命令可以得到引腳的任意一個屬性值。
端口
? ? ? ? 端口指的是設計的端口,它的方向可以是輸入、輸入和輸入輸出(雙向)。使用get_ports命令可以得到一個端口集合,以用于其他SDC命令;使用report_port命令可以報告端口信息;使用list_attributes -class port -application命令可以顯示一個端口可以擁有的屬性,這些屬性用于記錄端口的詳細信息;使用get_attribute命令可以得到端口的任意一個屬性值。
時序組
? ? ? ? 時序組用于將一些時序路徑組合為一個整體,計算代價函數和時序報告是根據時序組進行的,關于這時序組的更詳細介紹,參考下面的博客。
靜態時序分析:時序組(Path Group)的概念https://chenzhang.blog.csdn.net/article/details/145471386
????????使用get_path_groups命令可以得到一個時序組集合,以用于其他SDC命令;使用report_path_group命令可以報告時序組信息;使用list_attributes -class path_group -application命令可以顯示一個時序組可以擁有的屬性,這些屬性用于記錄時序組的詳細信息;使用get_attribute命令可以得到時序組的任意一個屬性值。
時序路徑
? ? ? ? 時序路徑是由時序弧構成的路徑,靜態時序分析會分別對每條有約束的時序路徑進行時序檢查(例如建立時間檢查、保持時間檢查、移除時間檢查、恢復時間檢查、最大延遲檢查、最小延遲檢查、門控時鐘檢查、數據到數據檢查、最小脈沖寬度檢查等),關于這時序路徑的更詳細介紹,參考下面的博客。
靜態時序分析:典型與非典型時序路徑的約束詳解(一)https://chenzhang.blog.csdn.net/article/details/136521221
????????使用get_timing_paths命令可以得到一個時序路徑集合,以用于其他SDC命令;使用list_attributes -class timing_path -application命令可以顯示一個時序路徑可以擁有的屬性,這些屬性用于記錄時序路徑的詳細信息;使用get_attribute命令可以得到時序路徑的任意一個屬性值。
單元時序弧
????????單元時序弧是單元引腳之間的時序弧,使用get_timing_arcs命令可以得到一個單元時序弧集合,以用于其他SDC命令;使用list_attributes -class timing_arc -application命令可以顯示一個單元時序弧可以擁有的屬性,這些屬性用于記錄單元時序弧的詳細信息;使用get_attribute命令可以得到單元時序弧的任意一個屬性值。
庫
? ? ? ? 庫指的是被讀取的邏輯庫,一般情況下,target_library變量和link_library變量中指定的庫會被自動讀取,而無需顯式讀取,關于這兩者的更詳細介紹,參考下面的博客。
Design Compiler:目標(target)庫、鏈接(link)庫、符號(symbol)庫、綜合(synthetic)庫和物理(physical)庫的詳細解析https://chenzhang.blog.csdn.net/article/details/143029536
????????使用get_libs命令可以得到一個庫集合,以用于其他SDC命令;使用report_lib命令可以報告庫信息;使用list_attributes -class lib -application命令可以顯示一個庫可以擁有的屬性,這些屬性用于記錄庫的詳細信息;使用get_attribute命令可以得到庫的任意一個屬性值。
庫單元
? ? ? ? 庫單元指的是被讀取的邏輯庫中的單元,與單元不同的是,庫單元表示庫中未實例化的單元。使用get_lib_cells命令可以得到一個庫單元集合,以用于其他SDC命令;使用report_lib命令并指定一個庫單元名作為參數可以報告庫單元信息;使用list_attributes -class lib_cell -application命令可以顯示一個庫單元可以擁有的屬性,這些屬性用于記錄庫單元的詳細信息;使用get_attribute命令可以得到庫單元的任意一個屬性值。
庫單元引腳
? ? ? ? 庫單元引腳是庫單元的引腳,與庫單元不同的是,庫單元引腳的細粒度更高,并描述了引腳特定信息。使用get_lib_pins命令可以得到一個庫單元引腳集合,以用于其他SDC命令;使用report_lib_pins命令可以報告庫單元引腳信息(僅限Library Compiler);使用list_attributes -class lib_pin?-application命令可以顯示一個庫單元引腳可以擁有的屬性,這些屬性用于記錄庫單元引腳的詳細信息;使用get_attribute命令可以得到庫單元引腳的任意一個屬性值。
庫單元時序弧
? ? ? ? 庫單元時序弧是庫單元引腳之間的時序弧,使用get_lib_timing_arcs命令可以得到一個庫單元時序弧集合,以用于其他SDC命令;使用report_lib_timing_arcs命令可以報告庫單元時序弧信息(僅限Library Compiler);使用list_attributes -class lib_timing_arc -application命令可以顯示一個庫單元時序弧可以擁有的屬性,這些屬性用于記錄庫單元時序弧的詳細信息;使用get_attribute命令可以得到庫單元時序弧的任意一個屬性值。