2008-08-31

使用 C++ 建構邏輯設計的驗證平台

在一般邏輯設計的教學範例中大多是利用硬體描述語言(HDL)來實作測試程序(testbench),如下圖所示:

圖一: Testbench with Stimuli and DUT

使用這種方法有以下幾種缺點:
  1. 必需手動檢查 DUT 的輸出結果,以確認設計的正確性。
  2. HDL 不是針對實作測試程序而最佳化的語言。
  3. 不易實作大型且複雜的測試程序。

因此,在 IC 設計產業中,針對邏輯設計的自動驗證流程,便有了許多種不同的解決方案。基本上,它必具備以下功能:(如圖二所示)
  1. 隨機產生 stimuli 給 Functional Model(FM) 及 DUT (Design Under Test)。
  2. 自動比對 FM 及 DUT 的輸出結果 (Results Checker)。
  3. 當比對結果不一致時,記錄當時的組態及錯誤情形,以重製該項錯誤及除錯。
  4. 能夠有效率地設計並處理複雜的驗證程序。

圖二: Basic Verification Framework

現在,我打算試用 Teal/Truss ,它定義了一套完整的邏輯驗證架構,透過 PLI/VPI ,它可以使用 C++ 建構驗證程序,以驗證使用 Verilog 製作的設計;並且它是開放源碼的自由軟體,我們可以免費取得並使用它。