<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 使用先進(jìn)技術(shù)來(lái)加速SoC驗證

使用先進(jìn)技術(shù)來(lái)加速SoC驗證

——
作者:李響 時(shí)間:2013-11-27 來(lái)源:電子產(chǎn)品世界 收藏

  增量編譯

本文引用地址:http://dyxdggzs.com/article/192738.htm

  在編譯過(guò)程中,會(huì )創(chuàng )建設計/驗證的層次結構,當你重新編譯的時(shí)候,只會(huì )就那些更改的設計單元進(jìn)行重新編譯,這樣可以縮短編譯時(shí)間?,F在增量編譯選項已經(jīng)成為的默認選項。

  分區編譯 (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)作。



關(guān)鍵詞: SoC Synopsys GPU VCS 仿真 201312

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>