formality的一點經驗總結

一、 總結:

解決dc綜合出現fail點的基本思路:
1. set synopsys_auto_setup true,記得undriven的選項單獨再設置一下,undriven要識別成不定態x,對設計驗證更充分。
2. set_svf,能更好的進行name_rule匹配,門控匹配等等。
3. dft_mode/test_mode/bypass_mode等,要設置爲常值,只檢查正常工作模式。因爲這幾個測試模式,設計主要依賴後端團隊;pre-gate步驟不需要關心。
4. dc設置的set_case_analysis,要都設置在formality裏。因爲當前formality的主要意義,是檢查綜合步驟的正確性。
5. 出現failing point,第一步驟是依賴formality工具的analysis功能;會有基本分類,有些分類,一眼就能看出問題原因,比如undriven導致的比較失敗。這一步驟,只解決簡單的問題。
6. pattern視角分析。留意c0/c1/und關鍵詞。留意reference/implement兩欄中,有一欄是空的電路邏輯圖。
7. 電路邏輯圖,結合pattern一起分析,debug更有效果。
8. 另外,綜合前,做nLint靜態代碼檢查,是很有必要的。formality檢查之前,看綜合日誌也是很有必要的。流程完整,可以節省很多不必要的debug時間。

二、 netlist和svf的配套一致

gpu當前的綜合過程是
1. 底層IP先綜合成網表;
2. gpu_top_wrapper,吃底層IP的網表進行的頂層綜合。

formality對應的,應是這樣的步驟
1. 底層IP formality,吃IP綜合的svf。比較的是ip-rtl和ip-netlist
2. 頂層formality,吃底層IP綜合的ip-netlist。比較的是(頂層-rtl+底層ip-netlist)和gpu_top_wrapper-netlist
之前是(頂層-rtl+底層ip-rtl)和gpu_top_wrapper-netlist。這種方法,比較出來的結果是大量不匹配;原因估計是svf文件無法對應,因爲gpu頂層吃的是底層IP網表。

三、 formality遇到的坑

  1. set verification_clock_gate_hold_mode collapse_all_cg_cells【解決clock gating問題】
  2. set synopsys_auto_setup true【結合svf,更大限度的減少不必要的比對。】
  3. 以上兩點,在set_svf命令之前設置。
  4. 因爲formality驗證,主要是應用於檢查綜合結果質量。如果綜合過程中遇到set_case_analysis的設置,就需要在formality裏設置相應端口爲固定值。
  5. 吃dc吐出的svf文件時,會有svf的報告,裏面如果有大量rejected guidance的話,需要分析確認。解決辦法,一是把svf rejected的命令,翻譯成formality語句;或者更換formality版本,新版本解決不了,舊版本也有可能解決的。
    這裏寫圖片描述

四、 pattern match視角

  1. pattern是指出現fail point的比較碼;
  2. 留意c0/c1、und這樣的關鍵詞,是constant常值0、1、undriven的意思。
  3. 先解決undriven

五、 IP/IO/standcell的處理

  1. 按照綜合流程的吃法,都吃.lib即可。
  2. 儘量不用blackbox;blackbox,因爲輸入輸出端口的原因,經常給formality檢查帶來不必要的困難麻煩。

參考文檔:
Formality_Debugging_Failing_Verifications_Presentation_圖文_百度文庫
https://wenku.baidu.com/view/095b02077cd184254b353550.html?pn=51

發佈了191 篇原創文章 · 獲贊 174 · 訪問量 85萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章