在整個芯片開發(fā)中,芯片設(shè)計的驗證階段就像一場前線戰(zhàn)斗,可以說是整道防線上成敗的關(guān)鍵。 在芯片進(jìn)入生產(chǎn)之前,需要保證其設(shè)計完全符合需求規(guī)格,解決所有潛在的風(fēng)險,并修正所有的缺陷。 這樣可以避免在流片后發(fā)現(xiàn)無法修正的硬件bug,降低后期的問題風(fēng)險。 隨著芯片規(guī)模和功能的復(fù)雜度增加,驗證的難度也隨之上升,而如何在降低驗證復(fù)雜度的同時保證其正確性和效率,正是驗證的核心問題。
核心角色是DUT(Design under Test),即待測試設(shè)計,也就是我們所設(shè)計的RTL(寄存器傳輸級)代碼。 驗證流程從需求收集開始,將需求劃分為子系統(tǒng)模塊,進(jìn)一步細(xì)化為功能模塊,然后編寫RTL級別的硬件描述語言文件。 驗證人員便基于這些設(shè)計文件構(gòu)建測試平臺(Testbench),用于模擬和控制DUT的輸入和環(huán)境,包括生成功能模型、輸入激勵、或在線數(shù)據(jù)交互等,如圖1所示。 可以說,整個驗證流程就是確認(rèn)DUT的正確性,確保芯片產(chǎn)品符合規(guī)格要求。
圖1 驗證人員構(gòu)建的測試平臺
面對復(fù)雜的設(shè)計代碼,我們?nèi)绾未_保其準(zhǔn)確性? 功能驗證就是這場戰(zhàn)斗的關(guān)鍵過程。 工程師們通常使用的驗證方法包括軟件仿真、硬件仿真和原型驗證等。 這些不同的驗證方法都有各自的優(yōu)點,也有各自的不足。 在不同設(shè)計階段選擇不同的驗證工具,提高生產(chǎn)效率,加速驗證的收斂顯得尤為重要。 而所有這些都圍繞著DUT進(jìn)行。 接下來,我們將詳細(xì)探討軟件仿真、硬件仿真和原型驗證這三種方法是如何圍繞DUT進(jìn)行工作的。
軟件仿真
軟件仿真是基于硬件描述語言對數(shù)字電路設(shè)計進(jìn)行功能和特性的仿真和驗證。 它會通過在計算機(jī)環(huán)境中模擬硬件行為,驗證電路設(shè)計是否符合原意。 仿真過程是正確實現(xiàn)設(shè)計的關(guān)鍵環(huán)節(jié),它以硬件描述語言(如VHDL或Verilog)編寫的模型為基礎(chǔ),檢驗設(shè)計中的功能是否正確無誤。
一個簡化的仿真驗證系統(tǒng)如圖2所示:在這個過程中,測試向量(TestVector)運(yùn)行在測試平臺(Testbench)上,DUT 和Testbench一起通過仿真系統(tǒng)(基于軟件)運(yùn)行,最終運(yùn)行出來的結(jié)果通常會和預(yù)期結(jié)果做比較。
圖2 仿真驗證系統(tǒng)
但是隨著芯片設(shè)計規(guī)模的增大,傳統(tǒng)使用Verilog/SystemVerilog編寫的測試平臺不足以高效覆蓋測試場景需求。 例如,測試平臺中的基本組件之間的通信、以及這些組件之間的建立、管理和重用性問題。 因此UVM(Universal Verification Methodology)應(yīng)運(yùn)而生。
在復(fù)雜的系統(tǒng)級芯片設(shè)計中,UVM提供了一個健壯的測試平臺,能夠處理大量的設(shè)計和驗證任務(wù)。 UVM的主要優(yōu)勢在于其重復(fù)使用性,可以使設(shè)計人員在多個項目中重復(fù)使用同一驗證環(huán)境,大大提高了設(shè)計效率。 此外,由于UVM是一個行業(yè)標(biāo)準(zhǔn),因此使用UVM可以方便地與其他設(shè)計團(tuán)隊進(jìn)行協(xié)作,并使用他們創(chuàng)建的UVM組件。 圖3是一個典型的UVM驗證平臺框圖。
圖3 典型的UVM驗證平臺框圖
一般來說,軟件仿真分為功能仿真、綜合后仿真和時序仿真,分別對應(yīng)于RTL設(shè)計輸入后、綜合完成后、布局布線完成后等步驟。
功能仿真:即RTL仿真,這是仿真驗證的第一步,也叫前仿真,目標(biāo)是在理想的情況下,確認(rèn)設(shè)計的功能是否符合預(yù)期。 在這個階段,我們通過模擬設(shè)計在特定輸入下的輸出來驗證其行為。 這就像對待測試設(shè)計(DUT)進(jìn)行“預(yù)演”,在沒有物理硬件的情況下就可以發(fā)現(xiàn)設(shè)計中的邏輯錯誤。
綜合后仿真:在綜合后的仿真階段,目標(biāo)是確認(rèn)綜合后的電路結(jié)構(gòu)是否符合設(shè)計的意圖。 在這個階段,我們使用綜合工具將硬件描述語言(HDL)代碼轉(zhuǎn)化為邏輯網(wǎng)表。 然后,我們使用這個邏輯網(wǎng)表進(jìn)行仿真,以確認(rèn)綜合后的電路行為是否和設(shè)計的意圖一致。
時序仿真:最后,在時序仿真或后仿真階段,我們將考慮設(shè)計在實際硬件和工藝中可能遇到的時序問題。 這包括元件的延時、布線延時、電源和熱問題等。 在這個階段,我們會使用更復(fù)雜的仿真模型,比如考慮了延時信息的模型,以更準(zhǔn)確地模擬硬件的行為。
圖4 軟件仿真的應(yīng)用
在每個階段,我們都通過建立測試平臺(Testbench)提供對DUT的輸入和環(huán)境的控制,并將DUT的輸出與預(yù)期進(jìn)行比較。 而這三種仿真應(yīng)用的共同目標(biāo),都是要確保我們的芯片設(shè)計在各個階段都能滿足預(yù)期的功能和性能。
以思爾芯的PegaSim芯神馳軟件仿真工具為例,其為一款高性能、多語言混合的商用數(shù)字軟件仿真工具,采用了創(chuàng)新的架構(gòu)算法,實現(xiàn)了高性能的仿真和約束求解器引擎,對System Verilog語言、Verilog語言、VHDL語言和UVM方法學(xué)等提供了廣泛的支持, 同時支持時序反標(biāo)和門級后仿真,并可提供功能覆蓋率、代碼覆蓋率分析等功能。 同時創(chuàng)新的軟件架構(gòu)允許仿真器支持不同的處理器架構(gòu)——x86-64、RISC-V、ARM等。
雖然軟件仿真技術(shù)對工程師來說非常有必要,但就現(xiàn)有的商業(yè)模式來說,軟件仿真的仿真能力和算力都與軟件許可證(software license)掛鉤。 供應(yīng)商提供的商用軟件仿真服務(wù)會以license的形式收費。 但在實際使用時,工程師們難以依賴經(jīng)驗進(jìn)行有效算力與工具需求計算的匹配。 如圖5所示。
圖5 設(shè)計驗證中的算力難題
思爾芯的PegaSim芯神馳軟件仿真工具除了傳統(tǒng)license合作模式外,還采用了創(chuàng)新的商業(yè)模式,提供了一個即算即用的在線仿真云平臺。 在對DUT進(jìn)行回歸測試和覆蓋范圍隨即驅(qū)動時,可實現(xiàn)如圖6所示。 可以很好地滿足企業(yè)多樣化的需求,幫助企業(yè)解決license使用緊張、算力不足、license被設(shè)計工程師長期占用等問題。 為工程師提供按需和無限的仿真能力,提高驗證團(tuán)隊的工作效率。
圖 6 芯神馳提供的在線仿真云平臺
硬件仿真
雖然軟件仿真易于使用,成本效益高,并且具有復(fù)雜的調(diào)試能力,但一旦碰到大規(guī)模數(shù)字電路設(shè)計,結(jié)構(gòu)越是復(fù)雜,仿真所需要的時間就越長,軟件仿真的效益得到了限制。 所以通過專門的設(shè)備在硬件上調(diào)試芯片設(shè)計,如硬件仿真和原型驗證,是其重要的解決方案之一。
硬件仿真的運(yùn)行速度和調(diào)試效率比軟件仿真可要高很多,因為它可以對完整的芯片設(shè)計進(jìn)行自動化的加速仿真并調(diào)試,多應(yīng)用于大規(guī)模SoC設(shè)計前期的RTL功能驗證。
硬件仿真首先將硬件設(shè)計(通常以HDL,例如Verilog或VHDL編寫)編譯,然后加載編譯后的設(shè)計。 在一些系統(tǒng)中,設(shè)計可能被加載到專門的硬件中(例如FPGA)。 一旦設(shè)計被加載,硬件仿真就可以運(yùn)行設(shè)計,并觀察其行為。 硬件仿真通常會提供觀察和調(diào)試設(shè)計內(nèi)部狀態(tài)的工具。 最后,工程師可以根據(jù)結(jié)果分析設(shè)計的正確性,查找并解決問題,以優(yōu)化設(shè)計。
硬件仿真可以提供比軟件仿真更快的仿真速度,同時還能模擬出硬件在實際運(yùn)行中的實際行為。 這使得它們在硬件設(shè)計和驗證過程中,尤其是在處理復(fù)雜和大規(guī)模硬件系統(tǒng)時,非常有用。 硬件仿真系統(tǒng)主要由硬件和軟件兩部分構(gòu)成。 以思爾芯的OmniArk芯神鼎企業(yè)級硬件仿真系統(tǒng)為例,其中硬件部分是由眾多的FPGA搭成,最多可擴(kuò)展至上百顆FPGA。 軟件部分由 編譯(Compile) 、 運(yùn)行(Runtime) 、 調(diào)試(Debug) 組成,如圖7所示。
圖7 芯神鼎硬件仿真系統(tǒng)的軟件部分
編譯:編譯階段通過完全自動化軟件將待測設(shè)計(DUT)映射到硬件仿真系統(tǒng)上,便可以進(jìn)行高速仿真。 編譯的流程如圖8所示。
圖8 芯神鼎硬件仿真系統(tǒng)的編譯流程
運(yùn)行:運(yùn)行時Runtime軟件控制整個硬件仿真的運(yùn)行過程,它可以控制硬件仿真以支持不同的用戶模式,它的核心組成部分是運(yùn)行數(shù)據(jù)庫、運(yùn)行庫、軟硬件接口以及用戶交互接口,例如ICE(In-circuit Emulation)、TBA(Transaction-based Acceleration)以及QEMU模式等。 還可支持多用戶同時進(jìn)行使用設(shè)備。
調(diào)試:硬件仿真有著接近軟件仿真的調(diào)試能力。 可以通過靜態(tài)探針(static probe),動態(tài)探針(dynamic probe)及內(nèi)置邏輯分析儀(ILA)可以觀測信號的數(shù)據(jù),以及實現(xiàn)信號全可視(Full Visibility)。 同時,通過ReadBack/WriteBack功能可以實現(xiàn)對信號進(jìn)行賦值或恢復(fù)。
此外,硬件仿真還會配備專門的驗證核(VIP),為硬件仿真系統(tǒng)提供了所需的驗證接口。 例如芯神鼎可以支持APB、AHB、AXI4、AXI4-Stream、AXI4-Lite、UART、SPI、I2C、DDR、Ethernet、USB、PCIe、SPI Flash、NAND Flash等。 基本覆蓋了常用的接口協(xié)議,可以滿足絕大部分驗證應(yīng)用需求。 后續(xù)思爾芯也可以根據(jù)客戶需求進(jìn)行開發(fā)。
芯神鼎在提供硬件加速平臺的同時也提供各種功能的創(chuàng)新配套軟件:用戶設(shè)計語法自動糾錯、Smart P&R技術(shù),ABS(Auto-Block Select)技術(shù),多樣化信號采集手段等等,讓用戶實現(xiàn)MHz級仿真加速、全自動智能編譯流程、強(qiáng)大調(diào)試能力,以及多種仿真驗證模式。 更擁有豐富的VIP庫,適合超大規(guī)模高端通用芯片設(shè)計的系統(tǒng)級驗證,可以滿足不同驗證場景需求。
總之,硬件仿真通常集成了專門的電路和邏輯,以加速仿真過程。 其速度通常可以達(dá)到幾百kHz甚至MHz級別,軟件仿真中的功能仿真通常運(yùn)行速度通常在幾十至幾百Hz,相比之下,硬件仿真比軟件仿真快幾千倍至幾十萬倍。 因此,硬件仿真在驗證復(fù)雜設(shè)計時非常有用。 它們能夠以更高的速度執(zhí)行仿真,更快地提供反饋和結(jié)果,這對于設(shè)計的驗證和調(diào)試至關(guān)重要。
原型驗證
在復(fù)雜的集成電路設(shè)計中,原型驗證是另一項關(guān)鍵的“驗證”技術(shù)方法。 其目的是在早期階段就通過與最終芯片接近的原型硬件來測試和驗證電路設(shè)計,通過接近最終芯片的運(yùn)行速度確保設(shè)計出正確的芯片。 原型驗證將設(shè)計映射到FPGA陣列,通過模擬芯片的功能和應(yīng)用環(huán)境,來驗證芯片整體功能,并提供片上軟件開發(fā)環(huán)境。 因為相比硬件仿真,原型驗證的運(yùn)行速度更接近于真實芯片,可以配合軟件工程師來進(jìn)行底層軟件的開發(fā)。 這一流片前的軟硬件協(xié)同開發(fā),是其最不可替代的地方。
以下是DUT在原型驗證流程中的關(guān)鍵步驟,包括設(shè)計分割、分割后的系統(tǒng)級時序分析、編程和下載、功能驗證調(diào)試等步驟。
設(shè)計分割: 在開始階段,我們需要將復(fù)雜的設(shè)計即DUT分割以適應(yīng)FPGA的資源限制。 通常,由于單個FPGA無法容納超大規(guī)模的設(shè)計,我們需要利用特定工具將設(shè)計邏輯分割成更小的部分。 每一部分被映射到一個或多個FPGA中,這需要在保持整體設(shè)計完整性的同時,盡量減少跨FPGA信號數(shù)量以減少系統(tǒng)間的路徑延時,從而提高系統(tǒng)性能。 一種典型的RTL級分割流程如圖9所示。
其中的邏輯綜合是將DUT轉(zhuǎn)化為FPGA可以理解的網(wǎng)表。 對分割后的設(shè)計插入TDM也是影響分割后系統(tǒng)性能的關(guān)鍵步驟。 通常分割后設(shè)計的FPGA之間存在遠(yuǎn)遠(yuǎn)超過物理連接數(shù)量的互聯(lián)信號,插入TDM是通過時分復(fù)用的方式來將這些互聯(lián)信號通過有限的物理資源來傳輸。 映射和布局布線是將綜合后的設(shè)計映射到FPGA的特定資源上,包括查找表、觸發(fā)器、DSP模塊等,然后進(jìn)行布局布線。
圖9 芯神瞳RTL級設(shè)計分割流程
時序分析:時序分析確保設(shè)計在FPGA上運(yùn)行時滿足所有的時序要求,這包括各個FPGA的時序要求以及整個系統(tǒng)的時序要求。 由于對用戶原始設(shè)計進(jìn)行了分割,在做時序分析時需要考慮被分割的時序路徑延時。 這部分時序延時主要來源于TDM的延時和跨FPGA連線的延遲,這兩種延時通常能達(dá)到幾十ns。 當(dāng)存在不滿足時序要求的路徑,可能導(dǎo)致設(shè)計無法正常工作。 這種情況下,可以通過優(yōu)化時序約束、設(shè)計優(yōu)化、流水線設(shè)計、分割邊界調(diào)整、布局布線優(yōu)化等方式改善時序性能,使得設(shè)計滿足預(yù)期的時鐘頻率,減少路徑的延遲。
由于原型驗證系統(tǒng)能夠運(yùn)行的頻率是衡量系統(tǒng)性能的一個關(guān)鍵因素,所以如何提高系統(tǒng)運(yùn)行頻率也是經(jīng)常需要考慮的一個問題。 通常的做法有調(diào)整分割邊界、分割結(jié)果TDM優(yōu)化、使用布局布線約束、使用時序驅(qū)動的分割算法等,達(dá)到降低關(guān)鍵路徑的延遲、提高系統(tǒng)性能的目的。
編程和下載:將映射和布局布線后的設(shè)計編譯為FPGA的比特文件;搭建各個FPGA之間的互聯(lián)組網(wǎng)結(jié)構(gòu),然后將比特文件下載到對應(yīng)的各個FPGA上。下載完成后根據(jù)需要對全局時鐘、全局復(fù)位以及其他外圍IP進(jìn)行配置。這確保了DUT可以在原型上正確地運(yùn)行。
功能驗證調(diào)試:這個階段主要是測試DUT在FPGA上運(yùn)行時的功能的正確性。我們可以通過實際的硬件接口或虛擬IO接口對DUT進(jìn)行測試,以驗證其是否符合預(yù)期。
如何對分割后的設(shè)計進(jìn)行調(diào)試也是原型驗證中需要重點考慮的問題。通常,除了用戶設(shè)計中自帶的應(yīng)用級調(diào)試監(jiān)控工具,設(shè)計人員還需要抓取設(shè)計運(yùn)行時的信號波形進(jìn)行分析。對于該應(yīng)用場景, 思爾芯提供的MDM Pro調(diào)試解決方案 ,支持多顆FPGA協(xié)同調(diào)試,支持最大125MHz的高速采樣頻率,最大波形存儲容量可達(dá)64GB,能有效解決原型驗證中多顆FPGA的協(xié)同調(diào)試問題。
以思爾芯的Prodigy芯神瞳原型驗證解決方案為例,芯神瞳就提供了基于時序驅(qū)動的RTL級分割算法,能夠?qū)崿F(xiàn)全自動的分割編譯流程。其內(nèi)置的增量編譯算法功能可以幫助用戶完成快速迭代的版本迭代,大大提高用戶開發(fā)驗證效率。
總之,因為原型驗證內(nèi)部處理和真實芯片一樣都是可以做并行運(yùn)算,其高效性能可以透過硬件子卡對接真實數(shù)據(jù)來發(fā)現(xiàn)更多隱蔽的bug。相較之下,軟件仿真使用的激勵源模型和真實數(shù)據(jù)是有一定差別,因此并不能將Corner Case全覆蓋,此時就需要原型驗證。通過原型驗證,在流片前我們就可以在SoC的基本功能驗證通過后,立刻開始驅(qū)動開發(fā)。甚至可以在流片前就給有需求的客戶進(jìn)行芯片演示,進(jìn)行預(yù)售。這就大大縮短了整個驗證周期,加速了產(chǎn)品上市時間。
總結(jié)
軟件仿真、硬件仿真、原型驗證這三種方法通過各自的優(yōu)點和功能,共同為芯片設(shè)計提供了一種全面而高效的驗證手段,有助于加速整個芯片開發(fā)周期,同時確保設(shè)計的正確性。
在先進(jìn)工藝的推動下,異構(gòu)計算架構(gòu)已逐漸成為設(shè)計芯片的主流方式。由于不同的運(yùn)算單元具有各自獨特的架構(gòu)設(shè)計和信息處理方式,因此需要采用符合其特性的驗證方法。為了縮短芯片的上市周期,各大芯片設(shè)計公司已達(dá)成共識,即在不同設(shè)計階段選擇不同的仿真驗證工具,以提升驗證效率,這一策略已被廣泛應(yīng)用于各大芯片領(lǐng)域。
思爾芯的異構(gòu)驗證方法就是在這個背景下產(chǎn)生。它使用多種不同的驗證手段,如軟件仿真(芯神馳)、硬件仿真(芯神鼎)和原型驗證(芯神瞳),整合多種驗證方法,不斷創(chuàng)新驗證工具和驗證流程,圍繞著待測試設(shè)計(DUT)進(jìn)行協(xié)同仿真和交叉驗證,以確保設(shè)計出正確的芯片。思爾芯一系列EDA工具對DUT進(jìn)行詳盡全面的檢查,檢查其在各個層次、各個方面的功能和性能。這一系列的工作能夠有效地識別和修復(fù)設(shè)計中的問題,從而大大縮短芯片的開發(fā)周期。
關(guān)于思爾芯 S2C
思爾芯(S2C)自2004年設(shè)立上海總部以來始終專注于集成電路EDA領(lǐng)域。作為業(yè)內(nèi)知名的EDA解決方案專家,公司業(yè)務(wù)聚焦于數(shù)字芯片的前端驗證,已覆蓋驗證云服務(wù)、架構(gòu)設(shè)計、軟件仿真、硬件仿真、原型驗證等工具。已與超過600家國內(nèi)外企業(yè)建立了良好的合作關(guān)系,服務(wù)于人工智能、高性能計算、圖像處理、數(shù)據(jù)存儲、信號處理等數(shù)字電路設(shè)計功能的實現(xiàn),廣泛應(yīng)用于物聯(lián)網(wǎng)、云計算、5G通信、智慧醫(yī)療、汽車電子等終端領(lǐng)域。
公司總部位于上海,并建立了全球化的技術(shù)研發(fā)與市場服務(wù)網(wǎng)絡(luò),在北京、深圳、西安、香港、東京、首爾及圣何塞等地均設(shè)有分支機(jī)構(gòu)或辦事處。
思爾芯在EDA領(lǐng)域的技術(shù)實力受到了業(yè)界的廣泛認(rèn)可,通過多年耕耘,已在原型驗證領(lǐng)域構(gòu)筑了技術(shù)與市場的雙領(lǐng)先優(yōu)勢。 并參與了我國EDA團(tuán)體標(biāo)準(zhǔn)的制定,承擔(dān)了多項國家及地方重大科研項目。
-
軟件仿真
+關(guān)注
關(guān)注
1文章
21瀏覽量
14048 -
原型驗證
+關(guān)注
關(guān)注
0文章
22瀏覽量
10727 -
eda
+關(guān)注
關(guān)注
71文章
2708瀏覽量
172866 -
硬件仿真
+關(guān)注
關(guān)注
1文章
30瀏覽量
19281 -
思爾芯
+關(guān)注
關(guān)注
0文章
116瀏覽量
1286
原文標(biāo)題:一文讀懂 | 軟件仿真、硬件仿真、原型驗證是如何工作的?
文章出處:【微信號:S2C_Corporation,微信公眾號:思爾芯S2C】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論