使用先進(jìn)技術(shù)來(lái)加速SoC驗證
增量編譯
本文引用地址:http://dyxdggzs.com/article/192738.htm在編譯過(guò)程中,VCS會(huì )創(chuàng )建設計/驗證的層次結構,當你重新編譯的時(shí)候,VCS只會(huì )就那些更改的設計單元進(jìn)行重新編譯,這樣可以縮短編譯時(shí)間?,F在增量編譯選項已經(jīng)成為VCS的默認選項。
分區編譯 (Partition Compile)
分區編譯是VCS提供的一個(gè)比較新的特性。這個(gè)特性可以讓我們把設計/驗證中的實(shí)例/模塊分成不同的大得區塊來(lái)編譯。這樣如果之后只對其中一部分區塊相關(guān)的文件進(jìn)行了修改,那么可以重用之前分區編譯的數據庫來(lái)減少其它區塊編譯的時(shí)間,只對修改的區塊進(jìn)行重新編譯即可。同時(shí)針對驗證環(huán)境中的package,比如像UVM標準庫或者一些算法庫,分區編譯也可以提前把它們分塊編譯好,然后這樣可以加速驗證環(huán)境的編譯速度。
運行性能的提升的方法
在仿真過(guò)程中,運行的時(shí)間以及內存消耗是單次仿真的主要瓶頸,因此本文會(huì )關(guān)注在運行過(guò)程中如何提升性能,包括如何找到運行過(guò)程的瓶頸以及使用多核技術(shù)來(lái)加速仿真。
運行性能分析工具
VCS提供了用于分析性能的Profile工具Simprofile,使用在仿真過(guò)程中生成時(shí)間/內存消耗的報告,然后可以通過(guò)對于報告的分析來(lái)找到限制當前仿真性能的瓶頸。使用方式:
編譯:%VCS –simprofile –lca –f filelist.f …
運行:%simv –simprofile time|mem
一般在運行后會(huì )自動(dòng)生成名為simprofile_dir的報告目錄,也可以后處理生成報告:
%profrpt –output_dir simprofile_dir –view time_all|mem_all
Simprofile會(huì )默認生成基于HTML的報告,然后可以進(jìn)行選擇查看相關(guān)的性能選項(支持模塊/功能/DPI/PLI/約束/覆蓋率等),同時(shí)支持對多次仿真的報告進(jìn)行比較。
多核仿真技術(shù)
VCS提供了多核仿真技術(shù)用于使用服務(wù)器的物理多核來(lái)加速仿真。使用多核技術(shù)可以把一次仿真的不同部分分配到多個(gè)物理運算單元上以達到加速仿真的目的?,F在提供了兩種多核模式:應用級并行技術(shù)(ALP)和設計級并行技術(shù)(DLP),ALP/DLP以及二者的組合通過(guò)多核CPU來(lái)優(yōu)化仿真進(jìn)程。
應用級多核技術(shù)(ALP)
應用級多核技術(shù)(ALP)是把按照應用把驗證的不同部分(Testbench、SystemVerilog斷言、覆蓋率統計、波形保存等等)放到多個(gè)處理核上去做并行運行。
例如:在一個(gè)4核服務(wù)器上我們可以把覆蓋率統計放到第一個(gè)核上,把斷言檢測放到第二個(gè)核上,把波形保存放到第三個(gè)核上,剩下的仿真放到最后一個(gè)核上。結果會(huì )看到仿真性能可以得到很大提升。表1是ALP支持的開(kāi)關(guān)參數以及推薦的使用示例
如果VCS使用了ALP+fsdb多核(+mtfsdb),那么會(huì )在控制臺看到如下打?。?br /> *Novas* : Multi-Thread VCS dumping is enabled
同時(shí)Verdi3自動(dòng)支持對FSDB進(jìn)行并行保存,如果使能了并行保存,那么會(huì )有如下信息:
*Novas* : Enable parallel dumping
設計級多核技術(shù)(DLP)
DLP允許我們可以把一個(gè)大的設計分成多個(gè)區塊,然后把不同的區塊放入不同的計算核去運行。DLP的一般會(huì )根據profiler的報告結果以及設計部件之間的相關(guān)性分析來(lái)做劃分。把劃分寫(xiě)入一個(gè)配置文件中,然后把這個(gè)配置文件讀入VCS進(jìn)行仿真,比如:
%vcs test.v –parallel+design=partition_cfg.cfg
同時(shí)DLP還支持自動(dòng)分區劃分??紤]到DLP的適用情況以及進(jìn)度,我們的項目上暫時(shí)沒(méi)有使用,會(huì )在后繼的項目中進(jìn)行嘗試。
其他進(jìn)行性能加速的模式
Debug參數
VCS支持-debug_pp/–debug/–debug_all參數,其中-debug_pp用于只進(jìn)行波形保存后處理模式,而debug用于交互式,debug_all交互式仿真同時(shí)可以開(kāi)啟單步調試模式,不同的調試粒度帶來(lái)更多方便的同時(shí),也會(huì )帶來(lái)性能的消耗。
對于前期testbench開(kāi)發(fā),建議開(kāi)啟debug_all/debug參數,用于我們自己的驗證環(huán)境的調試以及單步/斷點(diǎn)調試等;當驗證環(huán)境已經(jīng)穩定以后,目的是進(jìn)行DUT的驗證一般就只開(kāi)啟debug_pp/debug來(lái)進(jìn)行波形保存之后再調試。進(jìn)入回歸測試后,主要依賴(lài)驗證環(huán)境中的檢查器來(lái)做檢查,當發(fā)現錯誤的時(shí)候才會(huì )打開(kāi)debug_pp或者debug/debug_all來(lái)進(jìn)行進(jìn)一步的調試。
波形保存的方法
在影響仿真的性能參數中,文件I/O是占很大比重的一部分,所以對于性能的提升,可以從減少磁盤(pán)I/O讀取來(lái)入手,比較多的磁盤(pán)I/O訪(fǎng)問(wèn)操作就是波形保存的動(dòng)作。
評論