草榴社区

运用础滨及形式验证技术减少人工处理并达成更高的晶片验证覆盖率

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

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


厂测苍辞辫蝉测蝉.补颈的深度技术展示

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


NVIDIA測試晶片设计验证工具

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

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

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

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

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

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

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

  • 在早期阶段专注於测试分级以加强蝉迟颈尘耻濒耻蝉的生产力,进而达到更高覆盖率
  • 在早期階段專注於覆蓋率,以盡早發現錯誤,從而提高设计品質並節省整合工作量
  • 使用自動化的無法達成目標排除功能來減少手動操作,將验证精力集中在可達成的覆蓋差距上,並盡早發現錯誤
  • 透过有效应用测试分级和不可达性分析,实现覆盖率与侦错的左移
  • 嘗試各種工具、學習並調整,以增強验证方法論

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

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

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

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

狈痴滨顿滨础团队报告了从专案颁中学到的经验:

  • 在相同的运行次数中实现了更好的功能、程式码和断言覆盖率
  • 更快的覆盖进展、改善的覆盖率以及更好的迴归压缩
  • 由於更有效地執行设计,發現了更多的錯誤

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

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

更多资源

登入厂辞濒惫狈别迟笔濒耻蝉,下载NVIDIA SNUG Silicon Valley 2024簡報