運用AI及形式驗證技術減少人工處理並達成更高的晶片驗證覆蓋率

鑑於現代半導體設計的規模與複雜性,功能性驗證(functional verification)已成為晶片開發流程中的主導階段。覆蓋率作為這一流程的核心指標,是評估驗證進度以及確認需要集中投入資源之處的最佳方式。暫存器傳輸層級(RTL)晶片設計的程式碼覆蓋率、驗證團隊指定的功能性覆蓋率,以及來自於斷言(assertions)的覆蓋率相結合,產生了用於驗證完整性的單一指標。

覆蓋率的目標要求通常相當高(95%或更高)且很難達成。晶片驗證工程師可能需要花費數週或數月的時間,試圖達到未實現的覆蓋目標,以確保設計得到充分驗證,並且不會遺漏任何漏洞。傳統上,這需要投入大量的人工操作,耗費了寶貴的人力資源並延遲專案進度。幸運的是,近年來已開發出多種強大的技術來自動化覆蓋流程,實現更快的覆蓋率收斂,並最終提高整體覆蓋率。


Synopsys.ai的深度技術展示

藉由Geetha Rangarajan的分享瞭解如何在系統的複雜性挑戰下,改變晶片設計流程以更快速地製造更多晶片。


NVIDIA測試晶片設計驗證工具

在2024年新思科技矽谷使用者大會 (SNUG Silicon Valley)中,NVIDIA展示了一項專案。該專案成果指出,測試分級(test grading)、不可達性分析(unreachability analysis)及人工智慧(AI)等晶片驗證覆蓋率增強技術大獲成功。NVIDIA團隊謹慎地衡量了這些技術在三個世代的相關晶片中的影響,並提供一個具有高度定量的案例研究。這些設計所涉及的規模非常龐大,覆蓋目標數量超過1億。許多模組被多重實例化(multiply instantiated),且每個實例都有自己獨特的終端連結(tie-offs)。

在基準線設計(baseline design)專案A中,這種設計的拓撲(topology)結構使得覆蓋收斂變得非常有挑戰性。此種終端連結讓每個實例都留下了大量無法觸及到的邏輯錐(cones of logic),沒有任何測試可以達成這些覆蓋目標。由於每個實例都需要自己一組獨特的覆蓋排除範圍,因此每個實例皆必須各自獨立完成覆蓋簽核。以下例子展示了對於某組覆蓋目標來說,使用限制隨機測試平台(constrained-random testbench)進行收斂的過程非常緩慢,並且需要大量人工操作才能實現覆蓋率簽核。

一些重要的設計錯誤直到專案後期才被發現,而這樣的狀況將會造成困擾。晶片驗證工程師希望加速覆蓋率以提早發現錯誤,並減少必須的人工操作量。他們在衍生專案B上嘗試的第一項技術是 Synopsys VCS®模擬器中的「測試分級(test grading)」功能。測試分級會分析模擬測試,並根據達成的覆蓋率進行排名,這使驗證工程師能夠設定模擬迴歸(simulation regressions),讓效果最好的測試更頻繁地運行,與效果較差的測試相比,也使用了更多隨機 seed。如此一來,即可更高效地達到覆蓋率收斂,節省專案資源。

測試分級是良好的第一步,但團隊仍面臨設計中許多無法達成的覆蓋目標挑戰。然而,他們利用Synopsys VC Formal 及其 Formal Coverage Analyzer (FCA) 應用程式找到了一個有效的解決方案,得以判定RTL設計中無法達成的覆蓋目標。這消除了驗證團隊面臨的傳統困境,也就是花費大量時間和資源,試圖實現永遠無法達成的覆蓋目標。

形式分析最終確認了無法達成的覆蓋目標,並將它們從未來的模擬考量中移除。這對整體覆蓋率計算有所助益:

排除無法達成的覆蓋目標後,藉由消除明顯但實際上無法達成的覆蓋漏洞,並減少模擬中需要達成的總覆蓋目標數量來提高總覆蓋率。這是一個完全自動化的過程。FCA應用程式會為設計中每個獨立實例生成一個排除檔案,列出無法達成的具體覆蓋點。如以下圖表所示,測試分級和不可達性分析相結合,使專案B在兩個關鍵里程碑上,實現了覆蓋率目標的大幅「左移(shift left)」。

在SNUG 演講中,NVIDIA的工程師報告了以下從專案B中學到的經驗:

  • 在早期階段專注於測試分級以加強stimulus的生產力,進而達到更高覆蓋率
  • 在早期階段專注於覆蓋率,以盡早發現錯誤,從而提高設計品質並節省整合工作量
  • 使用自動化的無法達成目標排除功能來減少手動操作,將驗證精力集中在可達成的覆蓋差距上,並盡早發現錯誤
  • 透過有效應用測試分級和不可達性分析,實現覆蓋率與偵錯的左移
  • 嘗試各種工具、學習並調整,以增強驗證方法論

在專案 B 取得結果後,驗證團隊迫不及待地想要嘗試其他技術,以進一步左移驗證流程。針對專案 C,他們從Synopsys VSO.ai驗證空間最佳化解決方案開始嘗試基於AI的技術。該解決方案包括一個覆蓋推論引擎(Coverage Inference Engine),根據模擬stimulus和RTL設計來協助定義覆蓋點。此外,它還使用連結引擎和基於機器學習(ML)的求解器,來定位難以鎖定的覆蓋點。

驗證團隊在專案 C 的後期階段首度嘗試Synopsys VSO.ai,使用一個符合UVM的限制隨機測試平台。僅只使用測試分級和不可達性目標分析,結果卻讓人印象深刻:加入VSO.ai後,在相同數量的測試運行中實現了33%的功能覆蓋率提升,同時將迴歸測試套組的規模減少了 5 倍。在相同次數的運行中,程式碼覆蓋率(code coverage)和斷言覆蓋率(assertion coverage)提高了 20%,而迴歸壓縮更是令人驚豔地高出基準線 16 倍。

使用一組不同的基準線迴歸測試後,工程師們嘗試了Synopsys VCS的智慧覆蓋優化(Intelligent Coverage Optimization, ICO)功能。ICO使用強化學習來增強測試多樣性,從而加快迴歸週轉時間(TAT)、加速覆蓋率收斂、提高達成的覆蓋率,並發現更多的設計和測試平台錯誤。ICO提供測試平台的可見性和分析工具,包括stimulus分佈直方圖和多樣性指標。另外,它還提供低覆蓋率的根本原因分析,例如stimulus分佈偏差或限制過多/過少的問題。

如下圖所示,與基準線相比,應用ICO、VSO.ai和不可達性分析後,在相同的測試運行次數中覆蓋率提升了 17%,而迴歸測試壓縮率則提高了 3.5 倍,同時發現了四個獨特的錯誤。

NVIDIA團隊報告了從專案C中學到的經驗:

  • 在相同的運行次數中實現了更好的功能、程式碼和斷言覆蓋率
  • 更快的覆蓋進展、改善的覆蓋率以及更好的迴歸壓縮
  • 由於更有效地執行設計,發現了更多的錯誤

SNUG演講最後總結了三個晶片專案的結果。不可達性目標分析帶來了最大獲益,只需要最小的努力就能將覆蓋率指標提升 10-20%。而晶片驗證技術的結合,使所有測試平台的功能覆蓋率提升了33%,並實現了2至7倍的迴歸壓縮。他們發現ICO能找到獨特的錯誤,而VSO.ai則可以在橫跨所有專案的里程碑中使用。

NVIDIA 的驗證工程師建議,從專案一開始就應該使用測試分級來提高stimulus的有效性。在早期里程碑階段,當stimulus還不成熟時,應使用VSO.ai以實現高度迴歸壓縮,而該解決方案並應該持續應用於後期里程碑階段,以實現進一步壓縮並增加總覆蓋率。最後,應該在專案中期啟用ICO和不可達性目標分析,以減少運算資源,將覆蓋率進程左移至少一個里程碑,並盡早發現獨特的錯誤。這四種技術的協作,將使任何複雜的晶片專案有所助益。

更多資源

登入SolvNetPlus,下載NVIDIA SNUG Silicon Valley 2024簡報