新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 使用先進技術來加速SoC驗證

        使用先進技術來加速SoC驗證

        ——
        作者:李響 時間:2013-11-27 來源:電子產品世界 收藏

          增量編譯

        本文引用地址:http://www.104case.com/article/192738.htm

          在編譯過程中,會創建設計/驗證的層次結構,當你重新編譯的時候,只會就那些更改的設計單元進行重新編譯,這樣可以縮短編譯時間。現在增量編譯選項已經成為的默認選項。

          分區編譯 (Partition Compile)

          分區編譯是VCS提供的一個比較新的特性。這個特性可以讓我們把設計/驗證中的實例/模塊分成不同的大得區塊來編譯。這樣如果之后只對其中一部分區塊相關的文件進行了修改,那么可以重用之前分區編譯的數據庫來減少其它區塊編譯的時間,只對修改的區塊進行重新編譯即可。同時針對驗證環境中的package,比如像UVM標準庫或者一些算法庫,分區編譯也可以提前把它們分塊編譯好,然后這樣可以加速驗證環境的編譯速度。

          運行性能的提升的方法

          在過程中,運行的時間以及內存消耗是單次的主要瓶頸,因此本文會關注在運行過程中如何提升性能,包括如何找到運行過程的瓶頸以及使用多核技術來加速

          運行性能分析工具

          VCS提供了用于分析性能的Profile工具Simprofile,使用在仿真過程中生成時間/內存消耗的報告,然后可以通過對于報告的分析來找到限制當前仿真性能的瓶頸。使用方式:
          編譯:%VCS –simprofile –lca –f filelist.f …
          運行:%simv –simprofile time|mem

          一般在運行后會自動生成名為simprofile_dir的報告目錄,也可以后處理生成報告:
          %profrpt –output_dir simprofile_dir –view time_all|mem_all

          Simprofile會默認生成基于HTML的報告,然后可以進行選擇查看相關的性能選項(支持模塊/功能/DPI/PLI/約束/覆蓋率等),同時支持對多次仿真的報告進行比較。

          多核仿真技術

          VCS提供了多核仿真技術用于使用服務器的物理多核來加速仿真。使用多核技術可以把一次仿真的不同部分分配到多個物理運算單元上以達到加速仿真的目的。現在提供了兩種多核模式:應用級并行技術(ALP)和設計級并行技術(DLP),ALP/DLP以及二者的組合通過多核CPU來優化仿真進程。

          應用級多核技術(ALP)

          應用級多核技術(ALP)是把按照應用把驗證的不同部分(Testbench、SystemVerilog斷言、覆蓋率統計、波形保存等等)放到多個處理核上去做并行運行。

          例如:在一個4核服務器上我們可以把覆蓋率統計放到第一個核上,把斷言檢測放到第二個核上,把波形保存放到第三個核上,剩下的仿真放到最后一個核上。結果會看到仿真性能可以得到很大提升。表1是ALP支持的開關參數以及推薦的使用示例

          如果VCS使用了ALP+fsdb多核(+mtfsdb),那么會在控制臺看到如下打印:
          *Novas* : Multi-Thread VCS dumping is enabled

          同時Verdi3自動支持對FSDB進行并行保存,如果使能了并行保存,那么會有如下信息:
          *Novas* : Enable parallel dumping

          設計級多核技術(DLP)

          DLP允許我們可以把一個大的設計分成多個區塊,然后把不同的區塊放入不同的計算核去運行。DLP的一般會根據profiler的報告結果以及設計部件之間的相關性分析來做劃分。把劃分寫入一個配置文件中,然后把這個配置文件讀入VCS進行仿真,比如:
          %vcs test.v –parallel+design=partition_cfg.cfg

          同時DLP還支持自動分區劃分。考慮到DLP的適用情況以及進度,我們的項目上暫時沒有使用,會在后繼的項目中進行嘗試。

          其他進行性能加速的模式

          Debug參數

          VCS支持-debug_pp/–debug/–debug_all參數,其中-debug_pp用于只進行波形保存后處理模式,而debug用于交互式,debug_all交互式仿真同時可以開啟單步調試模式,不同的調試粒度帶來更多方便的同時,也會帶來性能的消耗。

          對于前期testbench開發,建議開啟debug_all/debug參數,用于我們自己的驗證環境的調試以及單步/斷點調試等;當驗證環境已經穩定以后,目的是進行DUT的驗證一般就只開啟debug_pp/debug來進行波形保存之后再調試。進入回歸測試后,主要依賴驗證環境中的檢查器來做檢查,當發現錯誤的時候才會打開debug_pp或者debug/debug_all來進行進一步的調試。

          波形保存的方法

          在影響仿真的性能參數中,文件I/O是占很大比重的一部分,所以對于性能的提升,可以從減少磁盤I/O讀取來入手,比較多的磁盤I/O訪問操作就是波形保存的動作。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 永安市| 玉田县| 宿松县| 北流市| 察雅县| 大石桥市| 礼泉县| 肇东市| 临高县| 武功县| 临沂市| 贵港市| 岳阳市| 海口市| 宁乡县| 彭州市| 宜阳县| 新昌县| 翁牛特旗| 尤溪县| 乌拉特中旗| 祁门县| 临泉县| 曲阳县| 河池市| 张家港市| 邮箱| 灵川县| 西青区| 桂林市| 门源| 黄平县| 张家川| 宣恩县| 大城县| 桑植县| 砚山县| 成安县| 乌拉特前旗| 泸溪县| 郁南县|