模擬回放(Simulation Replay)解決驗證關鍵挑戰

英文原文:Simulation Replay Tackles Key Verification Challenges

2024年9月12日於《Semiconductor Engineering》刊登

現今系統單晶片 (SoC)設計的龐大尺寸與複雜性,持續對模擬器的執行時間與記憶體使用量帶來壓力。

模擬是每個半導體開發專案中驗證和矽前驗證(pre-silicon validation)的核心。在實驗室上線階段(bring-up)才發現功能或功率問題為時已晚,並將導致成本高昂的晶片修正。在投片(tape out)前進行完整模擬,再加上全面的覆蓋率指標,是避免矽晶片出現意外的唯一方法。然而,當今 SoC 設計的龐大規模與複雜性,對模擬器的執行時間和記憶體用量持續帶來壓力。即使在擁有最強大算力的伺服器上執行單一模擬測試,可能就需要花費數小時的時間。而在正式簽核(signoff)前,會需要進行上千次、甚至數百萬次這類型的測試。

為因應這一挑戰,電子設計自動化(electronic design automation, EDA)廠商已開發出加速模擬演算法、優化記憶體用量,並在可行狀況下利用平行運算(parallelism)等創新技術;而另一個更有效模擬的方法是僅執行子集(subset)模擬。這或許看起來有違直覺,但事實證明,有些重要的驗證任務不需要模擬整個晶片即可執行,這有助於縮短周轉時間(TAT)並提高處理能力(throughput)。手動分割設計既費時又容易出錯,因此自動化的方法不可或缺。

模擬回放(Simulation Replay)已發展可用來模擬部分設計的關鍵方法。這一過程包括:

  • 在 SoC 設計中定位一個區塊(或 SoC 測試平台中的一個元件)
  • 擷取與該子設計(sub-design)相關的模擬活動,並將其儲存於快速訊號資料庫(fast signal database, FSDB)追蹤文件(trace file)中
  • 從擷取到的模擬活動自動建立一個新的子設計測試平台
  • 將模擬活動應用於獨立模擬中的子設計

如先前的部落格文章所闡述,在設計佈局之前進行功率計算的邏輯閘級模擬(gate-level simulation, GLS) 是模擬回放的一個相當成熟的應用方式。GLS 的速度遠低於暫存器轉換層級(RTL)模擬,並且只能在整個 RTL 晶片設計完成和合成(synthesize)後進行。透過擷取正常作用的 RTL 模擬,並在GLS中回放,可免除移植晶片級(chip-level)測試平台或建立區塊級(block-level)測試平台的所有手動工作。功率模擬可以在任何子設計上進行,因此可以在整個 RTL 設計完成及合成之前執行。

還有許多其他的模擬挑戰,可以透過模擬回放大幅加快速度並簡化流程。對通用驗證方法論(Universal Verification Methodology, UVM)的測試平台及其檢查器除錯就是一個例子。當測試失敗時,可能是設計錯誤或測試平台的編碼錯誤所導致的。利用Simulation Replay,整個待測設計(design under test, DUT)可以被自動生成的測試平台stub所取代以回放模擬活動。在對測試平台進行偵錯時,將設計移出測試範圍可以加速模擬效能,並且大幅縮短周轉時間(TAT)。由於 UVM 代碼複雜,通常需要多次嘗試才能解決問題,因此快速的周轉時間變得更加重要。

類似的方法對斷言IP (assertion IP, AIP) 驗證而言很有價值。AIP 的主要用途通常是在形式驗證(formal verification)中,其中 SystemVerilog 斷言(SVA)可用於指定目標和限制。由於驗證形式分析不會考慮與測試平台不一致的情境,將 AIP 用於模擬也很重要。透過使用只附帶stub待側設計的快速模擬,可以縮短周轉時間並實現更快速的迭代(iteration)結果。如果發現AIP錯誤,偵錯時間就會和測試平台一樣縮短。

另一項一直以來都非常緩慢的任務是模擬由自動測試向量生成(ATPG)所產生的測試向量。量產測試(production testing)中使用的測試程式,需要同時具備stimulus和結果。ATPG 工具生成stimulus,而結果則來自具有完整時序回傳標註(back-annotated full timing)的全晶片(full-chip)邏輯閘級模擬(GLS)。另一種加快結果產出時間(time to result, TTR)的方式是跳過SoC設計需要的長初始化序列(long initialization sequence)的重複模擬。可以從某個測試向量擷取初始化活動,然後使用模擬回放,只執行其餘模式中有差異的部分。生成的測試平台會載入初始化運行結束時的狀態值,以確保結果的準確性。

當設計包含來自外部的 IP時,就會出現最後的挑戰。這是幾乎所有 SoC 設計中都會遇到的情況。當模擬測試失敗時,可能是SoC 驗證團隊使用 IP 的方式不正確,或者 IP 本身即存在錯誤。無論是哪種情況,SoC客戶通常會尋求IP供應商協助進行偵錯。問題在於,由於完整的晶片設計和測試平台通常包含高度專有的晶片內容,以及來自其他來源的 IP,因此無法將整個設計和測試平台交付出去。使用模擬回放,SoC 團隊只需向其供應商提供IP層級的快速訊號資料庫(FSDB),IP驗證團隊就能執行快速的獨立模擬,來確認其設計是否存在錯誤,或者是否因使用不當而出現問題。

這五個「使用案例」理論上都可以透過手動擷取活動資訊,並建立特定任務的測試平台來處理。然而,此過程顯然效率極低,會消耗寶貴的驗證資源。更糟糕的是,隨著SoC專案中設計或測試平台的發展,許多步驟都需要重複執行。因此,一個完全自動化的模擬回放流程以及為進階用戶提供細粒度控制(fine-grained control)的可選用設定檔,對於任何現代晶片設計來說都至關重要。

Synopsys VC Replay涵蓋了Synopsys PowerReplay的所有功能,後者是一個經過驗證、使用GLS進行早期功率計算的解決方案。最近的附加功能和創新技術擴展Synopsys VC Replay解決方案,使其得以處理上述所有任務和使用案例。該解決方案可以自動擷取活動、建立子設計測試平台,並執行更快速且範圍精細的模擬。Synopsys VC Replay的運行速度比全晶片和全測試平台模擬快上10至100 倍,顯著減少了周轉時間和偵錯時間。而最終實現的結果是將驗證流程「左移(shift left)」,以縮短SoC 專案進度並加快上市時程(time to market, TTM)。