利用SystemVerilog規劃SoC設計驗證
關鍵字:SoC 驗證 SystemVerilog
隨著SoC設計中採用的技術愈加複雜,驗證工程師的計劃過程也需不斷改進。傳統基於測試的計劃正被更複雜的追蹤覆蓋和聲明驗證計劃所取代。引起這種變化的原因之一,是支援功能覆蓋點、聲明和測試平台約束規格的SystemVerilog在業界不斷普及,而另一項重要因素,則是越來越多的約束隨機測試平台正在取代手動編寫測試。
傳統的驗證過程必須識別設計中的所有重要特性,定義一整套驗證這些特性的直接測試,以及手動編寫測試,並在模擬環境中執行和除錯這些測試。這種方法適合小型設計,但SoC元件需要上千個手動編寫的直接測試才能完成所有特性的驗證。工具租用限制、上市壓力和編寫測試的繁瑣單調等,都意味著迫切需要一種更好的方法。而約束隨機測試平台要求驗證小組指定用於定義設計輸入規則的約束條件。
一旦這些設置工作完成,測試平台自動化工具或模擬器就能產生輸入激勵來驗證設計。透過改變約束條件、選擇不同隨機種子或對輸入產生的值進行偏置,都可能在所產生的測試中導致變化。而SystemVerilog可提供定義約束、種子和偏置所必要的結構。
從直接測試發展到約束隨機測試,也要求驗證規劃過程必須有相應的變化。傳統測試規劃包括設計特性列表、驗證每個特性的測試和測試狀態。隨著測試的編寫、執行和除錯,它們的狀態將在驗證規劃中不斷更新。這些規劃可用文件或電子表格的形式進行手動維護,也能作為驗證過程自動化(VPA)流程的一部份實現自動更新。
直接測試主要用於驗證設計的特殊部份,而約束隨機測試可同時驗證設計的許多部份。這就形成了很大的挑戰,因為在特性和測試之間不再有明顯的分界線。
對驗證小組來說,匹配自動測試與相應設計特性的最佳方法,是透過功能覆蓋指標規定。設計師和驗證工程師能規定代表重要設計行為的功能覆蓋點。這些點中有一些代表了正常作業,而其它點則反映了無法覆蓋的功能點條件,此處最可能潛伏缺陷。隨著重點從追蹤測試向追蹤功能覆蓋轉移,傳統測試規劃必須加以改良。
在目前的驗證規劃中,特性會被更精確地定義,以便在每個特性和功能覆蓋點之間呈現對應關係。隨著驗證的不斷進展,規劃可作為VPA流程的一部份而獲得自動更新。
SystemVerilog提供了兩種定義功能覆蓋的基本機制。第一種是源自硬體驗證語言的覆蓋組(cover group)。覆蓋組可包含多個單獨的覆蓋點,允許‘儲藏’多個值,支援交叉覆蓋以便追蹤組合值。由於一些RTL工具不支援覆蓋組,因此覆蓋組經常在測試平台中被定義。
另外一種機制是能在設計或測試平台中規定的覆蓋屬性(cover properties)。覆蓋屬性結構是SystemVerilog Assertions(SVA)子集的一部份,與聲明規格共享臨時序列和其它構造模組。覆蓋組和覆蓋屬性指標可在模擬器中進行收集和報告。一些允許SVA聲明的形式工具也支援覆蓋屬性。現代驗證規劃也能用來追蹤設計和測試平台中規定的SystemVerilog聲明。
在計劃早期,特性是在驗證規劃中確定的。可增加針對覆蓋點和聲明的文件描述。隨著覆蓋點和聲明被加進設計和測試平台,鏈接將被增加到規劃中。最後根據規劃報告覆蓋結果(覆蓋或未覆蓋)和聲明結果(通過或失敗)。
約束隨機測試平台、功能覆蓋和聲明的採用可無縫匹配SystemVerilog的採用。隨著驗證規劃過程從簡單測試規劃發展成VPA驅動的驗證規劃,這些技術的價值也進一步獲得增強。下一步SoC驗證改善所需的所有工具和方法目前都已經具備。
作者:Thomas L. Anderson
產品總監
Cadence設計系統公司
社區今日頭條 |
---|