top of page

運用 Xcelium Multi-Core 加速閘級模擬:Northrop Grumman 的實戰經驗

Jun 22
3 min read

Cadence Blog / Tyler Sherer

我們都知道閘級模擬(gate-level simulation, GLS)的好處,但也都領教過執行它的痛苦。在大型設計上設定與執行 GLS,對工程師而言是極為耗時的工作,但有沒有更好的方法?Northrop Grumman 的大型團隊在開發一顆大型 ASIC 時,正好面臨這個問題。他們找到了幾個巧妙的方法,大幅加速閘級模擬,並在 CadenceLIVE Boston 2023 的簡報中分享了這段經驗。

不過,設計規模這麼大,為什麼還要執行 GLS?首先,許多功能性錯誤(functional bug)光靠 RTL 模擬是找不到的。舉例來說,RTL 模擬無法運用 X 樂觀(X-optimism)策略來測試未知狀態(unknown state)的傳播,在模擬競賽(simulation race)、理想時序與其他時序錯誤的測試上也力有未逮。此外,合成與測試插入(test insertion)工具本身也可能產生功能性錯誤,這些都必須透過閘級模擬才能發現。即使使用了 lint、形式驗證(formal)與靜態時序分析(STA)工具,約束這些工具的規則、限制條件與豁免(waiver)仍可能掩蓋真正的問題。在這種情況下,搭配 SDF 標註(SDF annotation)的 GLS 便能與其他工具的結果相互交叉驗證。

然而,GLS 的速度通常相當緩慢。雖然重複使用 RTL 測試平台(testbench)執行 GLS 可以加快進度,但這麼做有一些挑戰。首先,RTL 測試平台通常不考慮時序;RTL 的代理(agent)沒有可調整的時序,且測試經常執行隨機重置(random reset),造成錯誤的時序與功能性失效。

除了將 RTL 測試平台改造為 GLS 適用之外,Northrop Grumman 也希望運用 Xcelium 的多核心功能,加速編譯(compilation)、詳細化(elaboration)與模擬時間。這是一組相當可觀的預期改善目標,而團隊已準備好迎接挑戰。

首先,他們著手解決測試平台的時序違規,方法是平移代理時脈(agent clock)。他們找到兩種做法:其一是平衡代理端延遲(DLY_agt)與時脈延遲(DLY_clk),這需要為每個有特定時序需求的區域建立新的 DLY_agt。若此法不可行或不合需求,也可以從 DUT 內部的時脈端點擷取代理時脈,此法適用於所有時序角落(timing corner),並可再用一組輔助的 DLY_agt 微調額外的時序需求。第二種方法所需的迭代較少,也更能善用 RTL 團隊已完成的工作。

解決時序違規的兩種方法
(圖一:解決時序違規的兩種方法)

為了替 RTL 與行為模型(behavioral model)加入時序,團隊建立了帶有延遲的包裝層(wrapper),並使用 SystemVerilog configuration 將原始實例替換為包裝層,讓系統得以在任何訊號傳遞至 DUT 之前,確保時脈已對齊。

包裝層與用於配置的 SystemVerilog 程式碼
(圖二:包裝層與用於配置的 SystemVerilog 程式碼)

那麼隨機時序檢查的問題怎麼解決?Northrop Grumman 團隊的做法是在重置進入(reset entry)與重置退出(reset exit)條件上設置中斷點(breakpoint)。對於打算採用類似策略的讀者,團隊建議建立一個輔助訊號,在實際的重置退出條件之前先觸發重置退出中斷點,如此可避免時序違規被實際的重置解除(reset de-assertion)所掩蓋。

不過,帶給 Northrop Grumman 最大速度提升的,是改用多核心模擬。透過使用 -mce、-mce_disable_nocellaccess、-mce_build_cpu_configuration single-socket -mce_build_thread_count 2 與 -mce sim_cpu_configuration single-socket -mce_sim_thread_count 32,搭配下列 LSF 選項,Northrop Grumman 只花了十一個小時,就完成帶有 SDF 標註的全晶片編譯與詳細化,時間不到單核心的一半。

LSF 選項

(圖三:LSF 選項)

在使用 8 執行緒、對三十三項測試執行帶 SDF 標註的區塊模擬時,Xcelium 讓 Northrop Grumman 達成 4.2 倍的執行時間縮減。其中一個案例,原本需要四十六小時的測試,只花十一小時就完成!考量部分測試在單核心下需要超過一週才能跑完,這樣的加速幅度非常可觀。

團隊也想以零延遲模式(zero-delay mode)搭配 Xcelium Multi-Core 測試頂層模擬,分別測試了八、十六與三十二執行緒。在一項三十二執行緒的測試中,單核心需要 20.5 小時的執行時間縮短為僅 5.5 小時!同樣地,以三十二執行緒執行帶 SDF 標註的頂層模擬時,一項原需八天的測試縮短為僅 2.7 天,平均執行時間縮減達 2 倍。

Comments


bottom of page