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