靜態時序分析和動態時序仿真各有什么特點
回答一:
IC時序驗證用兩種方法實現:一是動態時序分析,即根據電路中提取的延時參數,通過仿真軟件動態的仿真電路以驗證時序是否滿足要求。二是靜態時序分析,即通過分析設計中所有可能的信號路徑以確定時序約束是否滿足時序規范。
動態時序分析的時序確認通過仿真實現,分析的結果完全依賴於驗證工程師所提供的激勵。不同激勵分析的路徑不同,也許有些路徑(比如關鍵路徑)不能覆蓋到,當設計規模很大時,動態分析所需要的時間、占用的資源也越來越大。
靜態時序分析根據一定的模型從網表中創建無向圖,計算路徑延遲的總和,如果所有的路徑都滿足時序約束和規范,那么認為電路設計滿足時序約束規范。靜態時序分析的方法不依賴於激勵,且可以窮盡所有路徑,運行速度很快,占用內存很少。它完全克服了動態時序驗證的缺陷,適合大規模的電路設計驗證。對於同步設計電路,可以借助於靜態時序分析工具完成時序驗證的任務。
回答二:
動態時序分析就是通常我們所說的仿真,該仿真可以驗證功能,也可以驗證時序,首先確定測試向量,輸入硬件模型,進行仿真。由於為了完整地測試每條路徑的功能或者時序是否都滿足,測試向量需要很大,也不能保證100%的覆蓋率。如果到了門級的仿真將非常消耗時間。
靜態時序分析只能分析時序要求而不能進行功能驗證。不需要測試向量,能比動態時序分析快地多的完成分析。靜態時序分析只能對同步電路進行分析,而不能對異步電路進行時序分析。但是它卻可以驗證每一條路徑,發現時序的重大問題,比如建立時間和保持時間沖突,slow path以及過大的時鍾偏移。
靜態時序分析的優缺點
靜態時序分析可以大大提高仿真時間,並能100%覆蓋所有的路徑。它通過預先計算所有的延時來提高速度。包括內部門延時以及外部的線延時。靜態時序分析並不是簡單的把各個延時相加,而是引入真值表,分析各種輸入情況下所有可能經過的路徑,而且能識別flase path。但是由於在深亞微米的工藝條件下,靜態時序分析不能完整的把所有影響延時的因素給包含進去,因此在關鍵路徑方面,便可以用STA工具導出關鍵路徑的spice網表,用門級或者管級仿真工具進行電路仿真,以確定時序的正確性。
關於后仿真
步驟: 1.沒有違例情況和功能報錯
2.log對應文件的延時反標確認加入
3.波形正確
一定要同時確認violation和功能
① 出現時序violation但是功能正確的情況處理:
首先尋找關於make對應產生的log文件.然后找到有violation的位置,對應描述有setup、hold等在xx 例化模塊在xx ns出現問題。
其次在post.v文件中找到對應的例化模塊,在inc_lib的路徑找到對應的輸入輸出描述。Z,ZN,Q,QN表示輸出,其余表示輸入。在verdi里面找到該cell對應的信號。在inc_lib的smic 0.13um的verilog模型庫找到對應的輸入輸出關系,確定信號名對應的后仿真名稱。在verdi里面將報的violation時間輸入,對應前仿真結果,觀察violation產生的原因。
例如上次遇到ssc_det_reg_reg模塊顯示如圖所示的時序違例情況

如圖所示,當周期為20的時候,出現仿真時ssc_det_reg_reg的hold時間不足。首先要清楚我們無法修改setuptime和holdtime。Setup Time是時鍾上升沿之前的數據所需要的(最小)有效時間,Hold Time是時鍾上升沿之后的數據所需要的(最小)有效時間。
檢查波形時發現由於D(ssc_det)的信號和clk的下降沿離的太近,HOLD時間不滿足,造成QN(ssc_det_reg)出現亞穩態,所以QN信號顯示為未知狀態從而造成了這個時間violation。下面是波形圖。

為了解決這個問題,只能延長時鍾周期或者縮短input_delay.將時鍾周期修改為19.2的原因是最大工作的頻率要在52Mhz,為了留有余量,所以周期不能大於19.2.同時將input_delay縮短為5.4.這樣修改之后沒有時序問題.檢查功能波形也正確.這個后仿真PASS.
②出現沒有violation但是仿真結果錯誤的情況處理:

當沒有violation出現時,我去查看功能,發現功能全部失敗。如此一來,我需要加載debussy波形觀察哪里出現問題。

通過觀察,發現state沒有正確的調到讀狀態,造成此原因的信號觀察,發現dt_cnt和rev_dat的對應出現了問題。排查后發現,如圖中虛線處所示,由於SSC信號沒有按照應該的時間拉低,導致sclk第二個時鍾沒有被dt_cnt讀進去,發現問題后,通過將周期修改大一些之后,解決了這個問題。
如何正確的觀察后仿真是否正確:
1.沒有violation
2.log文件中延時反標是否成功加入
3.txt文件有反饋的case正確
4.沒有反饋的case的debussy是否正確
