晶片中整合的電晶體數量不斷增加,造成電路設計與驗證挑戰遽增。面對日益縮短的上市時程壓力,晶片設計人員已開始改用運行速度更快且總體擁有成本(Total Cost of Ownership)更低的硬體模擬設備,取代傳統電路試驗板或軟體模擬器,以加速晶片驗證與除錯速度。
雖然摩爾定律現在規定約兩年內使積體電路中的電晶體數目增加一倍,但趨勢是設計/器件會繼續變得越來越大。
如今,平均設計尺寸達到或超過五千萬專用積體電路(ASIC)門,并且有些單個模組已超過一千萬門。大部分的半導體公司的高端設計通常超過一億門。處理器/圖形公司的最大設計已達到十億門,或許在不久的將來會超越這一數量級。
驅動設計復雜性急劇上升的因素是在現有產品中,或在全新設計中添加新特性和新功能的旺盛需求,如果說晶片硬體復雜性驟升得還不夠,實現產品差異化的嵌入式軟體暴漲又使驗證更為復雜。工程團隊難以承受讓產品更快推向市場的壓力,迫使工程人員必須不斷創新。
晶片復雜性高 電路試驗板無法驗證
雖然工程師擁有豐富的驗證選項,但其中大多數存在著固有缺點,在數位電路設計初期,晶片復雜性的范圍介于幾百門到幾千門,設計可透過電路試驗板進行原型驗證。使用嵌有電晶體-電晶體邏輯電路(TTL)邏輯器件(例如SSI/MSI晶片)的電路試驗板,可在晶片量產(Tape Out)前在目標系統環境中驗證和調試(Debug)設計。由于是在實際運行條件下測試設計,因此可確保功能正確性。
如果晶片復雜性達到一萬門,則電路試驗板將會無用武之地,并最終被基于事件驅動演算法的邏輯模擬器取代。這一變化催生了電子設計自動化(EDA)行業,EDA是電腦輔助工程(CAE)早期縮影。事件驅動模擬器支援精確的功能和時序驗證,目前仍在寄存器傳輸級(RTL)使用,不過鮮少在邏輯閘(Gate Level)級使用。
RTL軟體模擬器易于使用且經濟高效,具有先進的調試功能。不過,當設計尺寸達到一億門時,由于緩存未命中和記憶體交換,執行速度會迅速下降。雖然通過PC伺服器群與平行化軟體模擬器可以緩解執行時間驟降,但無法使用其來測試本質上屬于串列流程的嵌入式軟體。
在設計為在200MHz下運行的一億門電路中,即時執行1秒將需要執行兩億次回圈。即使對于最快的CPU(具有可觀緩存大小和巨量RAM),樂觀的假設是,如果每秒可執行一百次回圈,RTL軟體模擬器也需要三個多星期才能運行完整個設計。
模擬器執行效能低落會阻止事件驅動軟體模擬器有效率的測試設計正確性。事件驅動軟體模擬器最適合用于模擬實際電路行為的一小部分,這意味著有些功能性故障會檢測不到,工程團隊要承擔代價高昂的設計返工(Respin)。
針對形式(Formal)或靜態驗證方法的優點,可產生完全列舉的測試向量,卻無法針對電路設計的功能面進行驗證。采用動態測試是唯一的可用選項,特別是在必須測試嵌入式軟體(軟體驅動程式、即時操作系統或自訂應用程式)的情況下。 硬體驗證語言(HVL),例如e語言、Vera以及C/C++類測試功能庫,透過批量生成無法手動創建的測試來提高生產效率。功能驗證范圍工具可以提升工程師對用HVL創建的測試平臺的可信度,但不會減少應用這些測試所需的時間量,也無法用于開發嵌入式軟體。
硬體輔助驗證工具可以縮小工程師目標與傳統邏輯驗證結果間的差距。以下幾種驗證工具可協助減少目標與結果的差距:
現場可編程閘陣列(FPGA)原型
基于FPGA的原型可用于處理嵌入式軟體驗證。原型基本上都是電路試驗板,其中用FPGA取代SSI/MSI部件。
由于可程式設計器件問世,內部開發的FPGA原型也已出現。遺憾的是,隨著設計尺寸不斷加大,FPGA原型開發也呈指數增長。當所需的FPGA數超過十個左右的FPGA晶片時,FPGA原型將變得不可用。調試基于FPGA的原型比較棘手,這迫使工程師處理復雜的FPGA問題想辦法讓FPGA可容納晶片設計,而不是花時間調試晶片設計功能。經常聽說,當設計已進入投片階段時,自制的FPGA原型才可使用。
為解決這些缺點,幾年前一種家庭作坊式產業應用而生,其目標是提供可擴展的現成FPGA原型,而且這個趨勢正獲得青睞。此類產業除去繁瑣的內部開發流程,這正是其成功的主要原因。但對于最大配置,他們也只能處理具有約一億門的設計。
具有除晶片外的最快運行速度是FPGA原型驗證板的主要賣點。相反,用于將設計映射到原型驗證板的漫長布線/合成時間及相當有限的設計可視性是其兩個主要缺點。
硬體模擬
硬體模擬正成為一種流行的運行時問題解決方案,基于事件的軟體模擬器對此類問題卻無能為力。與通過RTL軟體模擬器實現的執行速度相比,該解決方案要快五至六個數量級。
硬體模擬器并不是一直受到青睞。以前,高昂的擁有成本限制工程團隊采用硬體模擬器來測試最大的設計,例如微處理器和圖形晶片。現在,隨著新一代硬體模擬器能夠處理高達幾十億或以上的ASIC閘并提供較低的總體擁有成本,這種情況已得到改進。這樣,工程團隊就可為廣泛的設計做出最佳選擇,而不用考慮復雜性和拓撲結構。
作為終極錯誤清除利器,硬體模擬可良好運行。就在晶片量產(Tape Out)前驗證SoC中硬體功能和測試硬體/軟體整合功能正確來說,硬體模擬具有極大價值。 如果硬體設計人員和軟體發展人員都使用硬體模擬,則可共用相同系統和電路設計表示方法。由于組合設計的軟體和硬體的對晶片功能的解讀,因此他們可一起調試硬體和軟體間的互動行為正確性,還可以跨越嵌入式軟體與底層硬體間的邊界跟蹤設計問題,以確定是軟體還是硬體出問題。
基于多個抽象層次的調試方法從最高層次的嵌入式軟體開始,然后逐步下移至低層次的抽象,以跟蹤各個硬體元素的行為。從數十億個時鐘周期的資料庫開始,軟體調試器可以將問題局限在數百萬個時鐘周期內。在這個層次上,軟體團隊可識別每個問題根源在軟體代碼的哪個部分。或者,他們也可通知硬體團隊使用軟體感知硬體調試方法放大到較低層次的抽象來追蹤分析問題。
這種多層次調試方法對RTL軟體模擬器并不適用,因為其速度太慢以至于不能有效地執行嵌入式軟體。同樣,該方法對基于FPGA原型也不適用,因為其缺乏對內部電路設計的可視性和訪問性,無法跟蹤硬體錯誤。
當今設計環境中的硬體模擬系統運行速度更快、更容易使用,并且初期擁有成本更低(圖1)。這些高度可擴展、經濟高效的工具可以處理多達幾十億ASIC門。具有較短的設置時間和編譯時間,可為多工平行使用者提供強大的調試環境和支援。機器本身都封裝在環保型(較不占空間,耗電低)空間中。
圖1 上述RTL軟體類比、FPGA原型和硬體模擬的對比是基于性能、設置/編譯時間、設計容量和設計調試。
更重要的是,硬體模擬器不僅可以連接真實周邊I/O子版(ICE)驅動的模擬系統,也可使用基于軟體(由模擬器送出Test Vector)的TestBench驅動的加速系統;硬體模擬針對TestBench可支援多種語言:Verilog、VHDL、SystemVerilog、C++及SystemC語言編寫,也包括可合成的測試Testnech或測試Vector直接將其包含在硬體模擬器內。
一千萬門設計的典型性能約為2MHz,一億門設計的最高速度可達1MHz。當設計尺寸增加時,相比于事件驅動電路模擬器,硬體模擬器的性能下降得更少。
隨著Time-To-Market壓力越來越大,以及強加給工程團隊的不斷升級的硬體/軟體整合和品質問題,使得驗證流程成為晶片設計中具有戰略意義的重要一步。新一代高性價比硬體模擬器為晶片設計提供理想選擇,這就是為什么硬體模擬已成為批量驗證神器的原因。