為了充分利用系統級芯片(SoC)設計帶來的優點,業界需要一種可以擴展的驗證解決方案,解決設計周期中各個階段的問題,縮短驗證鴻溝。本文將探討可擴展驗證解決方案為何能夠以及如何解決SoC設計目前面臨的功能方面的嚴峻挑戰,以達到提高設計生產力、保證設計質量、縮短產品上市時間以及提高投資回報率的目的。
功能驗證是電子設計人員目前面臨的主要挑戰之一,為了使自己的產品在競爭中脫穎而出,人們正在將越來越多的功能集成進自己的產品,其中包括模擬/混合信號內容、嵌入式處理器及其各自的軟件,總體系統變得日益復雜。隨著設計實現尺寸縮小、集成度提高,驗證的復雜性也在大幅上升,測試向量的長度和數量也在增加。如果設計中存在錯誤,人們將越來越難以發現造成錯誤的原因,而且日后更改以及重新生產的成本也是非常高昂的。
功能驗證危機
功能錯誤是造成設計重新流片的首要原因,這對投資回報率和產品上市時間造成了不利和負面的影響。在所有芯片設計中,有60%需要至少兩次重新流片。而就所有重新流片的設計而言,其中62%是由功能錯誤造成的。不幸的是,功能驗證方法多年以來并未出現任何重大變化,驗證技術已經落后于設計和制造能力,形成了一個驗證鴻溝,而且這個鴻溝還在不斷擴大,使得設計潛能的發揮變得紙上談兵,虛無縹緲。出于同樣的原因,模擬和驗證成為整個設計流程的瓶頸,給提高設計生產率造成了障礙(圖1)。
為了解決驗證鴻溝問題,提高系統級芯片的驗證水平,產品經理需要通過積極的態度,將功能驗證作為總體設計方法的一個有機組成部分加以解決。實現這一目標的最有效途徑就是采用一種能夠在不同工具和不同抽象級別之間實現可擴展的驗證方法。功能驗證策略必須以整個系統為目標,其中包括數字硬件、嵌入式軟件和混合信號內容,必須考慮到每個設計層次以及設計流程的每個階段。
尺寸和復雜性方面的挑戰
隨著設計在尺寸和復雜性方面穩步發展,功能驗證的重要性不斷提升。設計的復雜性主要體現在嵌入式軟件和模擬電路所占比例正在不斷提高。
設計組件不僅越來越多樣化,單個芯片上集成的功能組件也越來越多。多樣化組件包括高性能RISC CPU、數千兆位高速I/O、RAM、系統時鐘管理、模擬/混合信號、嵌入式軟件和專用數字信號處理器,因而這些組件之間的互連狀況對總體功能性能的影響變得日益重要。它們之間的交互作用已經成為驗證工作的關鍵點。芯片上軟件和模擬組件采用量的增加也使得系統復雜性問題日益突出,并對傳統的作業方式構成了挑戰,數字工程師必須面臨和解決其不甚熟悉的模擬問題。眾多硬件設計要求采用固件或低層次軟件并使其正常工作,以便對RTL功能進行驗證處理,這就要固件設計人員在硬件設計中發揮重要作用,并通過細致到位的方式解決硬件和軟件之間的相互影響問題。
設計規模意味著龐大的晶體管數目,也就是系統級芯片中的門數概念。2001年,國際半導體組織預測系統級芯片在2006年之前將會包含幾十億個晶體管,而現在一款系統級芯片就已達到了數千萬門的規模。設計規模增大意味著出錯的可能性也在增加,驗證任務的復雜性正以指數函數的速度飆升。
一個單獨的工具或者一項單獨的技術都無法通過適當的方式解決目前所面臨的驗證問題,因為這些工具都是針對設計流程中的某個特定對象進行優化的,即使是硬件描述語言(HDL)仿真引擎也需要采用多種解決方案。有些方案在模塊級上發揮較好作用,有些則在芯片或系統級上表現較好。因此,設計團隊需要通過一套能夠相互協同工作的工具,形成一條從RTL仿真到在線仿真乃至形式驗證的完整解決方案,這就要求各種驗證技術能夠在廣度和深度上解決日益突出的由設計尺寸、復雜性和性能問題所帶來的驗證挑戰。
可擴展驗證解決方案必須支持所有各主要語言,其中包括Verilog、VHDL、C++以及SystemC語言,這樣它就可以在所有各個抽象層次上開展工作。它必須是一種采用開放標準的解決方案,以便沿襲和利用原有的和第三方有知識產權的驗證IP。驗證工具也可以憑借各自的特性而被選用,而不是因為它們適合特定EDA供應商的工具環境。一個理想的工作環境必須能夠處理各種不同的設計語言,并支持該行業各個主要標準,從而確保原有設計和測試臺可以重復使用。
應對方案
為了解決日益突出的設計尺寸縮小、復雜性和性能日益膨脹的問題,驗證方法必須能夠在不同的工具和設計層次之間實現擴展。它還需要在各個驗證域之間實現擴展,并能在模擬、協同驗證、仿真和模數混合模擬之間進行通信。此外,它能夠動態適應,并可以自由擴展。例如引入形式等價檢查工具就是超大規模設計提出的一項需求,尤其是對于在門級網表上進行眾多修改設計。
工具本身具有可擴展性也是必要的,因為不同類型的驗證手段覆蓋不同的性能范圍,提供不同的解決方案。每項解決方案都必須在驗證完整性和工作效能之間做出折衷。例如設計人員需要為驗證系統級DSP算法采用高級驗證工具,針對此類任務運用HDL模擬器就無法發揮作用。反過來講,對于HDL仿真器可以迅速解決的芯片設計中相當細小的子模塊驗證問題,用現場仿效驗證就不是很適當。認識到哪些工具是執行當前驗證任務的最佳選擇并獲得這些工具,將使設計人員達到最佳效能。下面是設計人員在開展數字設計驗證過程中可以采用的備選方案:
·軟件模擬:模塊級驗證的理想選擇,因為它具有非常快速的轉換和糾錯能力。
·軟硬件協同模擬:能夠將嵌入式軟件帶入驗證環境,為加快處理器、存儲器和總線操作驗證提供一種途徑,它也可以用作在測試臺對硬件驗證時提供激勵。
·協同建模(基于任務的加速仿真):它具有軟件測試臺的靈活性和仿真的高性能,為系統驗證提供了豐富的解決方案。協同建模仿真是連接高級抽象測試平臺與整個芯片RTL實現的理想橋梁。
·在線仿真:它在真實的系統內提供大容量和高性能驗證,仿真可賦予設計人員充分的信息,使他們自信其芯片將在實際的系統中發揮正確功能。
·形式驗證/等效檢查:它擁有必要的容量和速度,可以確保在設計流程后期進行的網表修改不會改變其功能特性和行為特征。
有必要指出的是,通過硬件輔助或面向硬件的高性能驗證解決方案對我們在系統級實現驗證完備性具有關鍵性意義,現場仿效驗證可以徹底避免昂貴的設計重復。
各個抽象層次之間的可擴展性也同樣重要。隨著驗證作業變得越來越抽象,仿真模型和任務處理器的抽象級別日益提高,工程設計團隊及早開展驗證可對設計決策產生建設性影響。抽象工作通過排除所有不相關信息可加速驗證進度,縮短開發時間,加速糾錯進程,并使得測試平臺更具復用性。
開展抽象工作的重要理由是,就復雜的系統級芯片而言,在RTL或門級上完成所有這一切要耗費太多時間,困難也太大,以至于根本無法實現。人們認識到,在設計中采用更高層次的抽象表示方法變得絕對必要,這項工作不僅針對設計流程,也適用于測試平臺的建設。
為了使這項多層次抽象化戰略行之有效,僅僅擁有必要的工具還是不夠的。IP的積累也同樣重要。如果不讓設計人員建立在各抽象概念級別之間進行切換并將各抽象級別聯系在一起的模型,那么允許開展多抽象層次的仿真技術也就沒有用武之地。多抽象層次驗證解決方案可將技術和知識產權融為一體。
在將一套任務處理器作為設計的基礎界面時,分層驗證將成為可能。這樣就允許對不同的設計抽象層次進行融合,組裝為測試平臺或驗證環境以便檢查某項實現是否能夠與更高級別抽象模型功能一致。這種驗證策略的優勢在于它不要求所有模型都必須以單個級別抽象概念存在,其靈活性允許團隊在規定時間范圍內獲得由不同抽象層次融合起來的一個驗證平臺。
然后在該系統內部提取單個級別或單個模塊(或利用開展任務處理所必需的IP)將它們替代成為更為具體的實現層次。它們可以在系統中作為即時測試平臺運行,設計團隊立刻就可以實實在在地把它引入到現有的測試平臺中,向該子模塊提供真實的驗證激勵。其結果是設計的驗證效率和驗證質量都得到了保證。
基于任務處理的界面可以在所有抽象系統模型與該設計之間建立鏈接,提供理想的系統級測試平臺。采用協同建模仿真技術和在線仿真驗證技術,還可以高速運行基于任務處理的系統級驗證環境,其驗證速度能夠滿足在無線數據傳輸設計中找出誤碼率,可直接觀察MPEG設計的視頻處理效果,以及在驗證環境中直接運行應用程序代碼。
我們認為,驗證工作需要采用可擴展的驗證解決方案,它必須解決數字、模擬和軟件內容的復雜性問題,必須在整個電子系統中支持不同的抽象層次。
·模塊級:在模塊級上,設計人員的關注重點是功能和時序的細節驗證,保證這些模塊達到技術規格的要求,沒有明顯問題存在。其目標是盡可能多地發現設計錯誤,因為模塊級驗證是發現并糾正這些錯誤成本最低和最有效的階段。模擬和數字電路之間的交互也應該在模塊級別上開展驗證。在這一階段中,各種功能和代碼將得到全面執行,并完成驗證簽收工作。HDL仿真器是這一階段理想的工具,因為它易于使用而且糾錯能力強。
·模擬/混合信號模塊:采用模擬和混合信號組件的系統級芯片設計產品數量在不斷增加,它要求模擬驗證環境能夠像數字電路的功能驗證一樣執行相同的驗證功能。通過Mentor公司ADVance MS驗證套件工具,ModelSim為模擬HDL行為仿真以及模擬模塊的SPICE仿真提供了平滑的接口界面。該界面允許在同一個糾錯環境中對數字和模擬事件的仿真進程進行同步處理和查看。ADVance MS模擬器針對復雜模擬/混合信號設計的驗證工作提供了單一內核的驗證環境。
·子系統級:對所有模塊完成充分驗證之后,將進入模塊集成階段,多個模塊組成更高層次的模塊,乃至整個芯片集成。在子系統驗證階段,模塊間通信、控制、時序和協議實現對確保子系統的功能正確性都是非常重要的;因此,通過執行協議檢查或采用斷言來驗證總線數據交換的工具是非常有用的。硬件加速仿真工具或仿效驗證工具可以在這一階段配置使用,其驗證測試平臺可以采用HDL、C、System C和Verisity等其它高級驗證語言來實現。
·系統級芯片級:芯片級驗證涉及各個模塊的進一步集成以及設計流程的其余部分,例如設計的嵌入式軟件和物理實現的過程。在設計人員將較小模塊集成進越來越大的模塊過程中,需要仿真的內容越來越多,運行時間越來越長,設計驗證要求開展更多仿真工作,提出了多項驗證任務的需求,比如芯片和系統的功能測試,設計綜合后與布線后結果的驗證,驗證綜合或布線工具的處理并沒有改變設計的任何行為特征。
在這一驗證層次,也可以使用等效檢查、硬件仿真器陣列或仿效驗證工具,確保整個設計在后端處理過程中沒有改變設計的任何特性——這通常稱作回歸測試。采用硬件仿真器陣列可以為用戶提供比較高的數據吞吐能力,對規模較小的測試向量測試提供完備的解決方案。對于規模較大的測試向量測試則建議采用仿效驗證工具(如Vstation),因為它擁有驗證大規模芯片設計的能力和容量。硬件仿真器陣列和仿真驗證工具是互為補充的解決方案,可以在不同的應用環境中加以有效使用。
絕大多數系統級芯片都采用了嵌入式軟件,這也是必須加以驗證的,嵌入式軟件包括應用程序代碼、實時操作系統、器件驅動程序、硬件診斷程序和自啟動ROM程序等。在這一階段,功能性固然是重要因素,但數據吞吐能力以及其它系統級性能問題也同樣必須獲得重視。我們應用硬件和軟件糾錯工具以及硬件加速和仿真手段,確保芯片實現正常的功能和性能特性。
評論