Friday, September 15, 2006

使用協同模擬實現RTL設計功能驗證

上網時間 : 2006年09月14日

EDA專家一直警告,隨著設計越來越複雜,驗證設計過程也將需要更高成本和大量時間,在很多情況下甚至比設計本身更複雜。在過去幾年中,雖然複雜性越來越高,但是隨著小型化設計趨勢以及在單一元件中整合多功能單元的趨勢,用於控制、訊號處理和通訊等應用的高性能嵌入系統仍不斷湧現。

為克服複雜性不斷增加所帶來的影響,設計師們開始採用可測試性設計方法,其優勢在於:在設計過程中,‘基於模型的設計’(Model-Based Design)可執行模型進行位元真(bit-true)模擬以找到和修正缺陷;自動產生程式碼以快速設立原型設計;透過協同模擬,利用原始的可執行模型直接驗證最終實現結果。本文將介紹第三項優勢,即利用原始可執行模型進行驗證和確認,本文還指出透過協同模擬進行系統級驗證正成為驗證和確認RTL實現結果的一種有效途徑。更高階系統設計環境和高性能HDL模擬器之間的快速雙向協同模擬介面使這種方法成為可能(圖1)。

克服設計瓶頸

由於設計整體複雜性不斷增強,設計驗證任務也隨之變得複雜,硬體驗證本身越來越具有挑戰性,驗證時間正變得越來越長。根據Collett International Research所作的一項調查顯示,只有39%的設計在第一次矽驗證時沒有缺陷,60%包含邏輯或功能缺陷,20%以上需要三次或者多次矽驗證。另外一項Collett調查還顯示,全部工程時間中,約50%是用來驗證。

在設計過程後期檢測到缺陷帶來的成本非常高,除了費用增加、喪失市場機會外,有時甚至會導致計劃的放棄。雖然徹底避免RTL驗證並不現實,但是對佔用約50%可用設計資源和時間的任務採用簡化流程非常有意義。如果執行正確,則對此部份設計流程進行的改進將帶來許多好處,包括減少錯誤、縮短投入市場的時間、降低整體成本。

低階測試基準

由於設計和測試基準(testbench)一般都使用VHDL、Verilog或其它低階語言編寫,因此硬體設計師是受到慢速模擬器和更慢介面影響最大的人員。由此,硬體驗證目前成為硬體設計過程中最費時的任務。

採用VHDL或Verilog測試基準的不利之處在於,因為HDL模擬器固有特性而驗證過程非常慢。由於快速協同模擬介面的出現,因而可以利用原始系統規格作為測試基準。透過僅對那些將真正合成到硬體中的系統部份在HDL中模擬,而將其餘測試基準仍保留在規格環境中,工程師可以對MATLAB和VHDL或Verilog進行快速協同模擬。一些設計團隊已經嘗試以HDL製作設計並以C編寫測試基準,因而改進性能和減少驗證時間。

協同模擬


以C或其它語言製作測試基準並用來測試和驗證以VHDL或Verilog編寫的待測試元件時,將依賴於兩個環境的協同模擬處理。對在不同環境中設計各種設計組件進行模擬並非什麼新概念,但是多年以來,這種想法一直受限於不同設計環境之間的性能低下的協同模擬介面,它無法提供足夠的能力或合理的模擬速度。

除了協同模擬介面性能低下外,設立和維護C或其它程式測試基準的成本也非常高。此外,測試基準環境中沒有內建擴展適用於製作測試激勵、使結果可視化以及製作和維護參考設計,以便工程師能夠將待測元件的結果或輸出與之比較。但是,EDA業界的一致觀點認為如果正確完成,RTL模擬器和系統級模擬器之間的協同模擬可以顯著改善硬體驗證瓶頸。


圖1:在基於模型的設計中,您可以利用快速雙向協同模擬介面製作可執行的設計規格,並作為系統級測試基準以測試、驗證和確認硬體設計

基於模型的設計

解決驗證瓶頸問題的關鍵並不在於如何對設計進行驗證,而是在於開始時如何設計一個系統。現在一種得到廣泛認知和認可的觀點是,透過採用一種針對系統設計定義、設計和模擬的基於模型的設計方法,設計團隊可以得到很多好處,如減少開發時間、降低開發成本以及取得更好的整體設計。

基於模型的設計一個並不為大多數人所了解的優點是,如果能夠在設計環境和HDL模擬器之間提供一個可行的協同模擬介面,則用於製作‘黃金基準’的模型也可作為測試基準。

協同模擬介面

為發揮效用,模擬器和協同模擬介面必須:

1. 在測試基準環境中提供豐富的功能特性以製作和維護黃金基準模型或設計;

2. 為製作複雜的測試基準提供支援,包括測試激勵產生和先進的可視化;

3. 具有模擬速度高於傳統HDL模擬器的更高階的設計環境;

4. 在測試基準環境和HDL模擬器之間提供快速協同模擬;

5. 支援對多個硬體實體進行分散式同時驗證。

基於模型的設計正越來越多地用於對很多硬體系統進行規格定義、設計和模擬,特別是那些實現訊號處理和通訊等應用的硬體系統。這樣,工程師就可以對設計執行位元真模擬以便在設計過程的初期找到和修正設計缺陷。設計一旦完成,就可以用於作為藍圖在硬體中實現和驗證該設計。

這種在允許工程師維護位元真可執行規格的環境中開始設計方法正贏得更多人的認可,特別是在更複雜的系統設計中。其中一個原因是這種方法可以縮短的投入市場的時間和保證更好的產品品質,提供顯著的競爭優勢。因此,對投入市場時間或最終產品品質有所考慮的任何設計都可獲益於基於模型的設計方法。

顯然,如果硬體工程師能夠使用同樣的更高級別的規格來測試和驗證最終實現結果,就能顯著減少驗證困擾。

從MATLAB驗證硬體設計

如前面所提到的,節省大量驗證時間的關鍵在於設計環境本身。大多數訊號處理應用都是在MATLAB環境中開始的。因此,大多數訊號處理應用的黃金參考也趨向於留在此環境中。現在讓我們考慮如何從MATLAB驗證硬體設計。

例如,圖2顯示對以VHDL實現的Fibonacci隨機數位產生器進行的分析和驗證。



圖2:透過Link for ModelSim執行的協同模擬在MATLAB中實現可視化、運算和分析

為設置協同模擬,用戶選擇一個VHDL實體並在MATLAB中定義一個回調函數。這通常涉及到選擇M-file和時序模型。

模擬透過MATLAB命令窗口中的命令啟動。當模擬開始執行時,協同模擬介面執行快速雙向數據傳輸。MATLAB腳本顯示傳入的原始數據並運算和繪製柱狀圖。利用此方法,工程師在指定和維護訊號處理他們的黃金訊號處理應用參考模型所使用的MATLAB全面分析和可視化功能,現在也適用於對硬體設計進行可視化、測試、除錯和驗證。

由於可以直接使用最初的規格,因此與傳統方法相較,驗證任務變得輕鬆了。此外,由於測試基準使用高階語言,需要模擬的VHDL程式碼的數量大量減少,因此驗證過程變得更快。利用MATLAB中內建的傳統測試基準環境所沒有的可視化和分析能力,工程師可以更好地觀察他們的硬體實現結果,讓他們更容易在設計過程的初期發現潛在的設計缺陷。

系統標準驗證

關於系統級驗證的基本好處還可用另一種方式來表述,即以更高階語言製作的測試基準使工程師能夠很容易地根據系統標準來驗證硬體設計。

在許多設計中,認可和性能的標準是一些量化指標,如均方誤差、訊息噪音比、誤碼率等。以HDL或C/C++製作測試基準在合理的時間內計算和驗證這些標準是非常困難的,在一些情況下甚至不可能實現。

用基於模型的設計驗證硬體

基於模型的設計將系統標準的驗證觀念在抽象和效率方面提高到了一個新的水準。許多工程師團隊現在透過同時使用Simulink和基於模型的設計開始更廣泛地使用高階語言,如使用MATLAB進行訊號處理應用設計。

這樣,工程師就可以組合使用多速率、定點、基於訊框的訊號處理設計組件。工程師首先設計和模擬完整系統,然後使用同一個模型驗證實際的硬體實現結果。透過執行這些位元真和週期精準的模擬,工程師能夠在初期找到和修正大部份設計缺陷。系統設計完畢後,將那些最終會合成到硬體中的一個或幾個模擬組件更換成等效RTL實體然後使用RTL模擬器(如ModelSim)協同模擬模型即可完成驗證。這樣,工程師就不再需要將高階測試基準轉換成低階RTL或C/C++測試基準,或者從頭開始製作低階測試基準。

例如,圖3是一個Manchester接收器,該接收器以VHDL實現,測試基準的其餘部份使用Simulink。



圖3:以VHDL實現並以ModelSim模擬的Manchester接收器,在系統級模擬並以Simulink驗證

在這種情況下,初期為了在設計階段找到和修正缺陷製作了完整的位元真和週期精準(cycle-accurate)的端到端系統模擬,該模擬在測試和驗證階段可以直接作為測試基準。

透過對基於模型的設計使用Simulink,工程師可以使用多數據類型和執行多速率模擬。由於模擬速度很快,因此可以容易地確定更改設計參數後的效果。在本例中,設計師可以選擇修改因傳輸訊息通道導致的頻率誤差,並研究它對誤碼率的影響。

先進的模組集(Blockset,如訊號處理模組集和通訊模組集)還可提供更多功能用以製作和維護全面、完整的系統規格,這些規格在硬體驗證時也可作為高性能的測試基準。此外,現在可以在系統級加入和量化模型覆蓋範圍以及測試覆蓋範圍。

混合語言模擬

在過去幾年中,工程師可以使用他們原來的C/C++程式碼以及MATLAB程式碼在Simulink中進行基於模型的設計並模擬完整系統。由於可以與快速HDL模擬器進行直接協同模擬鏈接,工程師現在可以向此工具和語言組合中增加VHDL和Verilog。

分散式硬體驗證

對硬體驗證的速度和效果的另外一個主要提升源於在一個整合模擬中使用了多個HDL模擬器。工程師可以透過在一個系統級測試基準中整合多個HDL實體,在多台機器上同時執行多個RTL模擬器來執行分散式硬體驗證。但是直至最近,仍沒有簡單的方法能夠使這些不同的HDL實體同步,也沒有辦法確保HDL實體在模擬期間以正確的間隔時間接收到數據類型正確的準確數據。

對於基於模型的設計,新的協同模擬介面在系統級模擬器和RTL模擬器之間也提供這種支援,使分散式驗證對用戶是透明的且有效。

圖4是三個VHDL實體的簡單實例,它們透過Simulink連接在一起,可以使用一個‘Link for ModelSim’協同模擬介面在多台機器上的多個ModelSim會話中執行。



圖4:透過Simulink連接的多個VHDL實體可以配置成在多台機器上的多個ModelSim會話中執行,以顯著加速大型硬體設計驗證速度

本文小結

硬體驗證是硬體設計過程中最耗費時間的任務,目前也就已經在多個方向取得了重大進展,其中在模擬器和協同模擬介面方面的進展可以為工程師提供關於功能硬體驗證的多項重大改進:

在更高階環境中製作和維護比HDL模擬器更快的測試基準;

方便地驗證系統性能標準,如均方誤差、訊息噪音比以及BER;

只以HDL實現可合成的設計部份,在系統級和HDL模擬器之間提供快速協同模擬;

支援對多個硬體實體進行分散式驗證以明顯提高速度。

基於模型的設計正得到越來越多的工程師關注和應用,因此,很多公司也推出各種相關的產品和技術來幫助硬體工程師在FPGA和ASIC上實現、最佳化和驗證訊號處理應用,包括:AccelChip的AccelChip DSP Synthesis和AccelWare DSP libraries、The MathWorks的Filter-Design HDL Coder、Xilinx的System Generator for DSP、Altera的DSP Builder,以及Synplicity的Synplify DSP。

這種趨勢將在未來一段時間內繼續。此外,基於模型的設計將擴展以包含和支援更多先進的驗證需求,例如在系統級的基於聲明和形式的硬體驗證。

作者:Arun Mulpur博士

產品經理

arun.mulpur@mathworks.com

The MathWorks公司

0 Comments:

Post a Comment

<< Home