????????PrimeTime(PT)是Synopsys的sign-off quality的靜態時序分析工具。PrimeTime可以集成于邏輯綜合和物理綜合的流程,讓設計者分析并解決復雜的時序問題,并提高時序收斂的速度。
一、概述
? ? ? ? PT最大的兩個特點是:
- 基于時序路徑進行分析
- 由約束(constraint)驅動
????????PT可以進行一系列的時序檢查
????????有一些額外的檢查可以在庫中指定,例如:
????????clock separation:這是對主/從鎖存器的約束,在兩個時鐘之間的最小要求的時鐘間隔,以避免鎖存器成為transparent。
? ? ? ??nonsequential:這類似于兩個數據引腳之間的數據到數據的設置和保持檢查。
- constraint check:由使用者指定的約束檢查(如 set_output_delay)
- library check:由供應商在庫中為特定的子單元指定的檢查(如 setup/hold)
? ? ? ? STA是基于時序路徑進行檢查的,在STA中,對時序路徑的定義如下:
? ? ? ? 一共有四類路徑,我們使用report_global_timing命令就可以查看違例的時序路徑:
? ? ? ? 此外,我們可以使用report_analysis_coverage命令來查看一個簡單的匯總報告:
? ? ? ? PT具有非常多的功能,而在使用PT之前,我們首先要知道PT的使用要求,即其最基本的輸入要求:
?????????其中,SPEF 是 IEEE標準的寄生交換格式,GPD是synopsys公司寄生交換格式。
二、PT 的 Analysis Flow?
? ? ? ? PrimeTime的時序分析主要有以下幾步:
- 載入設計與相關庫文件
- 讀入相關寄生參數
- 載入約束文件,包括時序約束
- 進行分析并產生報告
- 保存session
- 退出
- 恢復session
? ? ? ? 這個STA流程需要反復迭代進行,直到達到sign off的要求。?
1、讀入設計與相關庫文件
? ? ? ? 使用read_verilog命令即可讀入設計文件,而current design命令是用來設置Top的。
? ? ? ? ?其中,list_designs的標識含義如下:
- * :指明該design是current design
- L:指明該design已經鏈接
- N:指明該design不在memory中(未載入PT中)
- l:指明該design部分鏈接
? ? ? ? 在PT讀入設計及相關庫文件之前,常常設置兩個路徑變量,以方便地解決文件查找的問題:
? ? ? ? 1、指定Prime Time搜索設計、邏輯庫和其他設計數據的目錄,如時序模型。通過設置search_path變量來完成此任務:
pt_shell> set_app_var search_path "目錄路徑"
????????Prime Time會按照你指定的順序搜索這些目錄。
? ? ? ? 2、通過設置 link_path 變量來指定 PrimeTme 在設計層次中尋找庫文件。
pt_shell> set_app_var link_path "目錄路徑"
????????該變量可以包含短線(-)、庫名和文件名。*指示PrimeTime在內存中搜索設計。Prime Tme按照你指定的順序搜索庫。主庫是link_path中的第一個庫。
? ? ? ? 使用link_design就可以讀入相關的庫文件:
?2、讀入相關寄生參數
? ? ? ? 利用read_parasitics命令即可讀入寄生參數相關文件,使用-format即可指定讀入的文件格式:
? ? ? ? PrimeTime支持以下格式的文件:
- Galaxy Parasitic Database(GPD)
- Standard Parasitic Exchange Format(SPEF)
- Detailed Standard Parasitic Format(DSPF)
- Reduced Standard Parasitic Format(RSPF)
- Milkyway(PARA)
???????? PrimeTime推薦使用GPD以及SPEF格式的文件。
? ? ? ? 在讀入寄生參數后,我們可以利用以report_annotated_parasitics命令來檢查寄生參數標記的情況:
? ? ? ? ?需要注意的是,read_parasitics命令會自動顯示該報告,我們也可以在read_parasitics時檢查PARA- RC-Warnings。
????????任何未被標記的pin to pin nets都需進一步檢查。Driveless 和Loadless nets 通常是未使用的pin造成的,這些未標記的nets一般來說是正常的。
3、讀入約束文件
? ? ? ? 使用read_sdc讀入設計約束文件:
? ? ? ? ?再讀入約束文件后,需要進行約束完整性的檢查,使用check_timing -verbose命令:
? ? ? ? ?最后,一些單周期靜態STA的例外情況有以下幾種,即需要單獨進行分析:
- False path
- Multi-cycle path
- set_max_delay and set_min_delay
? ? ? ? 而沒有正確指定的例外情況需要忽略,使用report_exceptions -ignore命令進行查看:
?4、進行分析
?????????PBA: Path Based Analysis
? ? ? ? 在save_session前運行PBA選項可以避免在恢復session后重新計算。
? ? ? ? ?而使用report_timing命令,配合其選項可以產生更詳盡的報告:
?????????GBA:Graph Based Analysis
5、保存session
? ? ? ? 使用save_session可以保存session
pt_shell>save_session $session_directory
????????一個保存好的session包含以下信息用于恢復。
- 鏈接的設計和加載的庫
- 時鐘、時序例外和其他約束條件
- 操作條件
- 反標SDF的延遲和寄生參數
- 變量設置
- 網表編輯(insert buffer、size cell、swap cell)。
- 分析數據
- 交叉耦合(cross-coupled)的延遲數據和噪聲數據
? ? ? ? 其目錄格式如下(以orca項目為例):
6、退出
? ? ? ? 一般使用以下命令完成退出
?????
? ? ? ? 當然,也可以單獨使用這兩個指令:
7、恢復session????????
????????使用restore_session可以保存session
pt_shell>restore_session $session_directory
三、配置文件及腳本
? ? ? ? setup file是PrimeTime的配置文件,其文件名為 .synopsys_pt.setup,當PT運行時會自動執行,完成配置工作。
? ? ? ? setup file一共有三個層級,其優先級如下:
? ? ? ? 可以使用synopsys提供的RMgen(reference methodology generate)工具生成PT運行腳本的模板:
? ? ? ? 其中,pt.tcl就是PT的運行腳本,其內容如下: