設計驗證是芯片產業鏈中關系到芯片質量的重要環節,隨著芯片規模擴大及片上系統(SoC)設計復雜度提升,驗證目標從功能正確、性能達標向滿足業務應用快速適配部署的需求發展,其難度和重要性不斷提高。
閃存主控驗證由于其業務應用的特點,需要關注前端接口協議處理、后端閃存吞吐以及針對不同業務讀寫均衡和異常處理的需求。其導向隨著“軟件定義存儲”的發展,更加強調與業務系統實際應用中的配合;其復雜程度也隨芯片計算存儲融合的發展而不斷提高。為了在有限的市場窗口周期內快速迭代,縮短整體芯片及業務方案的研發周期,需要綜合應用各類驗證技術和工具來有效提高閃存主控的開發效率和質量。以下是對閃存主控驗證工作的業務梳理、目標概述和全流程的簡要介紹。
1.閃存主控驗證業務分析
1.1 特點:系統構成復雜。
閃存主控和網絡通信、圖像處理等芯片不同,它不是單純的輸入輸出數據流業務處理的模型。其系統由定制算法、數據調度、通用計算處理、總線仲裁、內外存儲、數據接口以及外采三方等多功能單元構成。對于不同類型的功能單元,其驗證流程及策略各有其特點。
1.2 需求:功能性能功耗平衡
閃存主控數據流的調度效率除硬件本身的吞吐率和延遲指標外,還受片上運行的處理調度算法的性能影響。因此其驗證策略上需要重視芯片在不同數據業務模式下的功能準確、性能達標和相應的功耗表現。
1.3 問題:單元與系統偏差
閃存主控的內部功能單元均有預期的質量指標。但功能單元質量滿足目標與實際業務滿足需求仍舊存在偏差,其契合度依賴于固件和硬件的協同處理。例如數據粒度,內外存分配管理策略等,都會對系統應用產生影響。為了達到功能、性能和功耗的有效平衡,需要固件的反復調試,甚至硬件架構的調整迭代,其開發周期較長。
2.閃存主控驗證流程策略
為了滿足芯片產品高效能、快產出、低風險的需求,憶芯通過架構和實踐,實現了適配閃存主控設計驗證的驗證方法論及相關流程策略等。
2.1 ESL設計驗證流程概述
ESL(電子系統層次)設計驗證方法是以能夠緊密配合的方式開發、優化和驗證復雜的系統架構及嵌入式固件的方法學,它提供了寄存器傳輸級(RTL)實現的驗證基礎。通俗的說法,可以認為它提供了同時開展原型系統研發、軟硬件劃分、固件開發、硬件驗證的方法,讓芯片未實現之前就可以著手片上軟件開發工作,縮短開發周期。
對于閃存主控設計來說,ESL方法利用事務傳輸的軟件模型模擬硬件模塊劃分;利用處理器的模擬軟件進行業務調度;利用數據結構+命令接口模擬閃存的模型;在設計初期通過軟件原型系統了解調用其中的瓶頸或者高頻訪問的業務部分,分析系統吞吐帶寬,重點加速突破,快速迭代,整體加速了研發的進程。關于設計方法細節本文就不加以贅述了。
而對于驗證來說,基于ESL方法論的平臺開發與應用方式與傳統芯片驗證有較大不同。
傳統方法中的設計驗證迭代策略如下圖所示:
傳統流程在原型系統軟硬劃分完成后,首先開始硬件的設計以及驗證仿真工作。在發現問題時,直接做硬件結構的迭代優化,而極少反饋到原型系統改動。但是此時并發的片上軟件研發仍是基于原始抽象的事務流程開展的,其控制接口定義乃至處理流程都可能與硬件系統形成差異。為了彌補該差異,通常會進行FPGA平臺的軟件開發調試使其適應于硬件的迭代演進。但該方法受限于硬件開發,需要單元驗證穩定后才能夠開展。同時,由于FPGA平臺與實際芯片存儲和總線的差異,關于性能及功耗的驗證無法固定軟件方案,需要進行耗時的芯片性能前端仿真加以確認和修改;芯片實際生產后,仍需要進行后續研發適配以及較長周期的迭代優化。可以認為片上軟件方案對于FPGA/ASIC分別都是部分定制性質的。即使硬件規格不做任何改動完全符合原始設計規格需求,其實際硬件與固件的開發適配仍舊需要二次迭代,這是由軟件和硬件研發平臺的分立特點決定的。
而基于ESL的驗證平臺系統的開發是從系統層次的業務需求開始的,從最初實現就體現了軟硬件協同和一致性導向。其與傳統驗證方法的根本區別是開發的調度軟件或者功能模型可以和硬件實例配合,在混合系統里進行協同仿真驗證;
同時基于標準接口開發的各組件可以幾乎無縫的適配軟件功能原型平臺和硬件仿真系統。以下是ESL的一種典型開發方式的示意圖,定制硬件設計的同時,軟件實現固件、架構、集成、驗證仿真、分析的多類迭代的一致性出口,使得整體的開發過程不依賴于硬件設計的完備程度,且能為反向快速迭代硬件提供有力平臺保障。
2.2 設計驗證的平臺化
為了系統快速迭代,需要對軟硬件接口形式進行統一管理,實現標準定義下軟硬件的寄存器,接口,連接關系和基礎測試模板的自動化生成。其中利用了標準化的IP-XACT定義規范。示圖如下:
2.3 驗證架構策略
對于閃存主控驗證實現的方法策略分為兩類情況加以闡述。
2.3.1 新架構
對于全新架構的芯片,由于大部分硬件均為首次實現,需要進行自下而上的設計驗證開發。其主要需求是規范的單元模塊驗證平臺,能夠提供可復用的激勵和采樣的接口定義和主、被動模式靈活調整的激勵,檢查單元組件以及與上下游單元的接口連接關系文件。而且要求參數化定義接口,來靈活適配不同項目的配置調用。
該策略配合ESL平臺,可以在硬件架構出現小范圍改動時第一時間一致更新原型系統、軟件模型及新硬件。當單元功能開發通過回歸測試達到一定穩定性后,可以逐步進行部分的系統聯合測試。單元集成過程通過上下游功能模塊的接口定義自動連接完成。
其基本關系適配的情況如下圖所示:
由圖所示,通過功能單元的原型描述生成軟件系統事務級的接口以及實際核心功能的參考模型框架,并開發實現C和Systemverilog的功能模型。對于仿真平臺需要使用的激勵和采樣監控等功能,該流程也提供了接口、存儲和寄存器訪問層適配等基礎組件。信號內聚的行為組件和外延的接口組件兩部分統一,構成了功能單元的參考模型,最終會以IP功能單元的設計實例作為比較對象,對其進行驗證。
向上集成的流程會分步驟進行行為組件+接口組件和成熟功能單元的混合連接,對于部分已完成設計的功能單元進行子系統級別的驗證,最終實現全實際硬件系統的驗證。開發某中間階段閃存控制芯片系統驗證示例如下:
由圖可見,驗證子系統由部分軟件模型和硬件實例混合構成。硬件實例的驗證借助于實例上下游的軟件模型,對于數據通路的相關部分加以探測及數據采集。各個子模塊的業務比較可以通過內置或者外接的記分板、斷言等對采集的數據進行靈活應用。
2.3.2 迭代架構
閃存主控芯片架構成熟后的開發多考慮迭代演進,其片上系統的主體架構不變,只更新某些功能單元或調整部分架構。驗證開發可以用更新模塊的ESL模型并結合功能單元的參考模型進行部分系統的替代進行原型系統驗證。
對新單元模塊,為了保障流程上不受到多模塊聯合調試初始階段異常查錯難以定位的影響,可以通過其上游單元參考模型為需要驗證的子模塊提供接口激勵,同時配合該單元的下游功能單元的數據采集進行驗證,其他模塊內部可以空置,以加速該模塊的驗證過程。而片上系統的整體驗證則可以基于ESL級別的C程序控制架構及流程進行平臺遷移,保證調度程序的一致性和無縫切換。其部分子模塊驗證示意如下:
灰色部分即是純空接口的模型。為了驗證新設計數據搬運的功能,使用了CPU的模型以及部分存儲模型。
2.4 性能及功耗驗證
對于閃存主控來說性能指標和各類工況的功耗指標是產品競爭力的關鍵體現。對于系統的并發度、吞吐率和響應延遲都有明確的驗證要求。我們這里借用了軟件工程的測試方法來闡述。例如負載測試、壓力測試、沉浸測試、尖峰沖擊測試、配置測試、隔離測試等。負載和尖峰沖擊測試基于仿真平臺進行,重點在系統的瞬時和持續極端硬件性能的驗證。而壓力和沉浸測試會基于FPGA平臺進行,對于系統長時間運行穩定的硬件信號基礎進行驗證。配置測試和隔離測試則會對芯片業務不同模式下的功耗需求和模塊開關定義進行驗證。
2.4.1 性能的分段驗證
系統整體性能滿足需求的前提是確保單元模塊性能達標。為此首先對各單元的數據流水延遲和吞吐速率統計分析驗證。接著模擬真實業務功能模塊,真實總線配合理想的內外存吞吐,通過統計計算保證總線能夠有效的進行上游數據的接受和分發。該步驟可能會進行內外存尺寸,訪問方式等各類優化。然后在該系統上通過功能單元仿真模型擬合的延遲和吞吐的綜合測試實際內外存、存儲接口。以上各部分在前端仿真平臺可實現。其結構如下各圖所示。
2.4.2 性能的綜合驗證
通過單元的性能驗證能夠保證理想工況下硬件的單元性能。而真正結合調度控制邏輯,對于閃存主控前后端通路進行調度效率和性能驗證調優在芯片投片前會分兩步驟進行。
一、通過FPGA進行關鍵業務通路性能的等效計算。
其驗證關注前端接口吞吐率及延遲,系統核心與片上內存吞吐率及延遲和后端閃存接口的吞吐率及延遲。因為系統時鐘頻率以及FPGA的內外存都與實際芯片不同,所以全流程業務性能不作為該階段驗證目標。
二、采用硬件加速器進行真實操作系統連帶設備驅動接口的驗證。
由于實際硬件加速器對外物理接口是標準頻率但仿真芯片系統運行在較低頻率,需要操作系統驅動的修改以防止協議訪問超時的情況。
2.4.3 功耗的單元驗證
系統低功耗設計基于ESL軟件模型代碼調用統計分析,軟硬件劃分之后開始實施功能單元的低功耗驗證工作。其驗證關注低功耗控制序列在單元上執行時各功耗狀態切換流程的可靠性。內容包括而不限于時鐘的調節、關斷;復位的控制;電壓的切換;電源的隔離管理;內存工作狀態調整以及整體子電源域控制等部分。
通過內部信號探針及斷言,驗證可有效保證功能單元確實經歷過低功耗的各個定義狀態(PST)以及正常恢復功能應用。例如帶有動態切換頻率及電壓的功能設計,頻率切換通過網表+時序約束文件進行多頻率節點仿真,保證時序裕量;對于電壓的變換則通過仿真的電源狀態覆蓋率(PST coverage)來確定。整體的功耗控制描述均由IEEE-1801規范確定的UPF文件來定義。不同狀態功耗估值也可通過對仿真波形計算統計得到結果。
對于功耗控制單元(PMU)的驗證,除了利用參考模型與硬件輸出控制狀態比較來保證各單元功耗狀態切換過程靈活、準確,對于實際系統多個單元低功耗狀態的銜接配合,也會以交叉的功能覆蓋率加斷言的形式加以驗證。
2.4.4 功耗的整體驗證
對于實際整體片上系統功耗,首先通過帶有UPF的系統級前端仿真來驗證,確定各個不同模式下電源域、時鐘域的切換準確。UPF迭代穩定后,通過硬件加速器業務仿真來確定功耗符合預期范圍。在網表綜合階段,通過形式化驗證來保證插入的電源隔離、電源控制和電壓控制等單元符合設計時的UPF描述定義。
布局布線后,通過網表仿真(PowerGating-Gatesim),保證其實際業務切換時延及相應的控制流程準確,因為僅形式化驗證對某些特殊處理無法給出結論。其示意如下:
2.5 形式化驗證
對于安全加密使用的模塊,除了保證功能性能以外,其自身的安全性如何保障是通過形式化驗證的方法進行的,其目標是所有的代碼功能有效及失效分析均可以通過數學公式加以論證,為提高安全單元的可靠性提供保障。其抽象示意如下圖。
關于模塊、系統的異常處理部分也可以作為驗證目標,基于形式化驗證的方法進行失效分析和安全策略調試。
2.6 總結
ESL方法使得驗證可以利用基于軟件仿真器+ESL平臺開發的閃存主控固件開展,和硬件設計基本同步開始,并可以通過標準協議提供控制接口移植至FPGA進行開發。同時調度程序也可無縫移植到硬件加速器進行系統驗證。在實際系統開發過程中,兩者的應用保證團隊可以快速獲得硬件以及固件驗證的結果并可以相互配合分析迭代,加速整體研發進程。在開發時,各團隊并發同步,且回片可即刻進行全流程的綜合調試及固件的調優過程,降低時間成本。同時,分層驗證組件的構架提供可互換的軟硬件模型,可加快整體系統的實現和調試節奏。形式化驗證則提供了安全可信的功能設計基礎。
3.問題提示
實際閃存主控驗證需要關注外部業務接口發生錯誤后易混淆的部分,需要著重加強可測性設計以及提供充分的業務測試,特別針對協議規定的異常處理以及避免整體系統失效的處理設計,要加以重點驗證。
評論
查看更多