草榴社区

运用痴别谤诲颈互动式侦错,减少模拟侦错周转时间

對大多數验证工程師來說,新的一天始於瞭解並解決昨天迴歸測試中失敗的測試(failed testcase)。在對經過一夜的迴歸測試的所有失敗測試偵錯前,工程師通常會需要進行一些習慣的例行任務,作為偵錯的前置作業。這些例行任務包括查詢失敗的測試、重新生成偵錯資料庫、重新運行模拟以獲取更多資訊,並確保不同功能場景和測試向量(patterns)的正確性。每個階段通常都需要投入大量時間,有時還需要多次迭代(iterations),從而拉長了整個偵錯過程。

為了解决这个挑战,新一代草榴社区 Verdi?偵錯平台提供了許多功能,協助使用者避免在不同步驟間來回切換。然而,許多使用者對重複模拟的過程仍有疑問。此篇部落格文章將探討验证工程師在整個過程中可能遇到的考量因素,並解釋如何在互動模式下利用Verdi的功能来减少重复操作并缩短根本原因分析的时间。

经过一夜的迴归测试后,希望第二天早上侦错档案已经準备就绪

這確實可以透過運用「Verdi Instant Recall」功能來實現。在迴歸測試運行時,Verdi Instant Recall功能會與草榴社区 VCS?交互作用,提供偵錯資訊,以利用於其他的偵錯失敗測試案例。這些資訊記錄了該錯誤的發生位置和類型,有助於讓使用者釐清錯誤類型並確定要從何處開始進行偵錯工作,而無需手動為了生成更多偵錯資料而重新運行模拟。

草榴社区 Verdi Instant Recall– 減少迴歸偵錯周轉時間(TAT)

在偵錯期間,想進行「假設分析(what-if)」實驗,但又想避免重新編譯和重新運行模拟

啟用 Verdi 互動式偵錯模式後,使用者可以在同一個模拟中進行多種即時修改來設置和验证實驗。其中,模拟stimulus、更新隨機配置以及重新隨機化(re-randomization)等調整,都可以透過Verdi 在單次模拟中進行假設分析來完成。此外,Verdi不需仰賴預先存在的覆蓋率觀察程式碼,便可即時生成隨機值的機率分布圖(probabilistic distributions),以直觀地呈現SystemVerilog 限制條件求解器(constraint solver) 的解决方案空間(solution space)的交互式分析。此功能還能微調stimulus以涵蓋一系列使用者需要關注的數值,從而加速偵錯過程。

在侦错过程中,希望能查看之前某些时间点的数值变化,并透过更多实验观察该变化

Verdi可以透過反向偵錯(reverse debug)機制來實現這一目標。通常的偵錯流程,使用者需要在其所關注的時間點上添加一些偵錯模拟標誌,然後重新啟動模拟,以便在標誌設定的時間點暫停模拟。在 Verdi互動模式下,使用者可以高度靈活地控制模拟,無論是前進還是後退到任意的時間點,包括事件發生、物件建立或數值變化的時間點等。

草榴社区 Verdi Instant Recall– 減少迴歸偵錯周轉時間(TAT)

此外,這些實用的功能還能互相結合,以加速偵錯流程。例如,使用Instant Recall功能完成迴歸測試後,使用者可以根據錯誤類型選擇失敗的測試案例,並且將已生成的偵錯資料庫來載入Verdi立即開始進行偵錯。在偵錯過程中,如果需要回溯某個訊號在先前時間點的數值,反向偵錯功能可以讓使用者控制模拟器讓模拟回到某個特定的時間點。同時,使用者還可以使用不同配置再次執行隨機的過程,以觀察機率分布變化。

结论

如本篇部落格文章所述,草榴社区 Verdi 偵錯平台具備豐富的功能,可大幅提升偵錯效率。當工程師每天早上準備好進行偵錯時,Verdi 所提供的功能使他們能夠快速進入偵錯的主要工作。本文中分享的所有功能都有助於避免耗時的重新編譯和重新模拟。就用同一個模拟,來縮短偵錯周轉時間吧!