草榴社区

模拟回放(Simulation Replay)解決验证關鍵挑戰

英文原文:

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)的可選用設定檔,對於任何現代晶片设计來說都至關重要。

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