精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

分析那些對仿真速度影響較大的編碼風格

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-08-11 09:26 ? 次閱讀

做動態仿真驗證通常會遇到要等待仿真結果的情況,特別是在調試某個測試用例的時候。很多時候,工程師們會自然地認為仿真速度大部分依賴于跑仿真任務的服務器本身的性能,以及EDA仿真工具的能力。而實際上,高效的驗證環境以及代碼質量也是影響仿真速度的關鍵因素。

另一方面,提高仿真速度這回事,對于芯片工程師來說本身就是“求人不如求己”。提高服務器機器性能意味著更大的資金投入,更高性能的仿真工具也不是一時半會能達成的。而探索更高效的驗證方法學,構建更高執行效率的代碼是當下就能做的事情。

本文的主要內容參考來自于Cliff Cummings在2019年DVCon會議上發表的文章:Yikes! Why is My SystemVerilog Still So Slooooow. 這篇文章主要探討了SystemVerilog仿真速度跟Coding風格之間的關系,文章中有詳細的實驗目標、方法和數據結果呈現。本文將摘錄和分析那些對仿真速度影響較大的編碼風格。

使用向量操作代替單bit操作

仿真器在做完整向量計算的速度比單bit計算要高。根據參考文獻的數據,在某款仿真工具下,最高提速可以達到3倍以上。 下面是一個例程,分別呈現不同的代碼實現風格。

8fa84634-190e-11ed-ba43-dac502259ad0.png

避免在循環中實例化對象

這個技巧關系到內存的分配和回收。低效的內存管理會導致嚴重的cache miss、堆棧管理開銷和垃圾回收開銷,盡管這些都是操作系統幫我們做的。 當我們需要一種新的數據結構時,可以使用結構體struct就不用class,類的例化和垃圾回收都是開銷。創建一個對象的時候,不要上來就是一個new,可以考慮是否可以重用之前創建過的對象。 如下例程,應用這個技巧在三款主流仿真工具上都能帶來仿真速度收益,最高有超過一半的速度提升。

8fcb1038-190e-11ed-ba43-dac502259ad0.png

條件判斷字符串處理

在仿真過程中不斷地打印信息或者讀寫文件會導致仿真速度非常慢,畢竟調用計算機IO效率并不高。在UVM中有健全的report管理機制,可以根據設定的verbosity等級來判斷是否需要打印信息出來。 除了信息打印,字符串的格式處理也是很大的開銷。如果借用report的管理機制來判斷是否有必要進行字符串格式處理,可以非常有效地提高仿真速度。 如下例程,帶有條件判斷的代碼在三款主流仿真工具上都能帶來仿真速度收益,而且這個收益非常大,達到了33倍~100倍。

8ff502b2-190e-11ed-ba43-dac502259ad0.png

減少不必要的端口采樣或驅動

這是另一種減少不必要操作的技巧。要知道在UVM中,操作TLM analysis port是開銷比較大的,因為端口的驅動行為,都會通過回調機制來執行關聯到該端口的所有consumer的端口動作。理解這個實現機制,其實還得看看UVM的源碼,這里就不做展開解析了。 此外,某些個analysis port是否連接到其他component是依賴于當前的驗證環境的,如果根據analysis port的狀態判斷是否進行端口驅動,可以減少一些不必要的操作。 如下例程,在monitor的run_phase中根據其analysis port狀態來進行端口采樣和廣播給其他組件,可以帶來一部分的仿真速度收益。

901ac16e-190e-11ed-ba43-dac502259ad0.png

用回調函數代替低效的隨機約束

SystemVerilog提供了很多種隨機化變量和添加隨機約束的方法,具體可以參考公眾號的另外兩篇文章《暗藏玄機的SV隨機化》《五花八門的SystemVerilog隨機約束》。在設計隨機約束的時候,除了要確保約束不沖突(即約束有解)之外,還需要避免產生無效的約束解。 其實,SV已經提供了pre_randomize() / post_randomize()兩個分別在求解隨機值前后會執行的回調函數。靈活使用這兩個函數可以避免一些非常低效的約束行為。 如下例程,使用post_randomize對隨機后的數列進行排序,可以避免在約束中使用循環去限制每一個數列元素,從而獲得數十倍的仿真速度提升。

903fb50a-190e-11ed-ba43-dac502259ad0.png

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 仿真
    +關注

    關注

    50

    文章

    4044

    瀏覽量

    133420
  • 仿真器
    +關注

    關注

    14

    文章

    1016

    瀏覽量

    83644
  • bit
    bit
    +關注

    關注

    0

    文章

    48

    瀏覽量

    31989

原文標題:SystemVerilog高效仿真技巧

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    這些電源常用仿真軟件,你都知道嗎?

    應用的器件建模和分析模組,配合MATLAB的其他工具可進行復雜的建模和數理分析。軟件仿真精度高但仿真速度較慢,適合復雜數字控制與邏輯功能的實現。 ▍ Pspice Pspice是由美國
    發表于 10-25 14:20

    磁電編碼器和光電編碼器的區別

    磁電編碼器和光電編碼器是兩種不同類型的編碼器,它們在原理、結構、性能和應用領域上都有所不同。 磁電編碼器和光電編碼器的區別 1. 引言
    的頭像 發表于 10-12 09:54 ?706次閱讀

    如何提升Pspice仿真速度

    OrCAD PSpice A/D和高級分析技術(A/A)結合了業界先進的模擬、模數混合信號以及分析工具,以提供一個完整的電路仿真和驗證解決方案。
    的頭像 發表于 10-09 15:15 ?291次閱讀
    如何提升Pspice<b class='flag-5'>仿真速度</b>

    OPA820同樣的建波電路mutisim仿真與TINA輸出結果差異較大,原因是什么?

    同樣的建波電路 mutisim 仿真與TINA 輸出結果差異較大,原因是什么?如何調整電路才能讓兩個軟件仿真結果一致,實現檢波?
    發表于 08-07 07:45

    旋轉編碼器控制電機速度

    旋轉編碼器控制電機速度
    發表于 06-24 09:16 ?4次下載

    怎么用編碼器控制變頻器速度

    編碼器控制變頻器速度是一種常見的工業自動化控制方式,它通過編碼器實時監測電機的轉速、位置等信息,并將這些信息反饋給變頻器,從而實現對電機的精確控制。本文將詳細介紹編碼器控制變頻器
    的頭像 發表于 06-23 15:22 ?2342次閱讀
    怎么用<b class='flag-5'>編碼</b>器控制變頻器<b class='flag-5'>速度</b>?

    怎么用編碼器控制變頻器速度

    編碼器控制變頻器速度是一種常見的工業自動化控制方式,它通過編碼器實時監測電機的轉速、位置等信息,并將這些信息反饋給變頻器,從而實現對電機的精確控制。本文將詳細介紹編碼器控制變頻器
    的頭像 發表于 06-17 15:11 ?1208次閱讀

    基于PSpice System Option接口的直流電機控制系統設計

    概述基于仿真速度和結果精度之間的權衡,在設計的第一階段使用高精度模型不是一種有效的方法。高精度模型會使仿真速度變的非常慢,建議在設計過程中的每個階段使用合適的模型。可能會發現,合適的模型會更容易優化
    的頭像 發表于 04-29 08:12 ?530次閱讀
    基于PSpice System Option接口的直流電機控制系統設計

    CAE熱仿真中的芯片物性等效建模方法分析

    的特性、精度和仿真速度有著不同要求。因此,根據需求提供滿足一定要求的仿真模型是建模工作的關鍵。 本文在于研究用 ANSYS icepak/Flotherm建模的時候,主要探討對芯片等材料屬性的選取與設置,以及本體模型如何構建。文中給出相關
    的頭像 發表于 04-28 09:25 ?1010次閱讀
    CAE熱<b class='flag-5'>仿真</b>中的芯片物性等效建模方法<b class='flag-5'>分析</b>

    電路仿真分析的方法步驟

    電路仿真分析是一種通過計算機軟件模擬電路的工作原理和性能的方法。它可以幫助電路設計師在設計過程中更好地了解和預測電路的行為,減少實際的試錯成本。本文將介紹電路仿真分析的方法步驟。 第一
    的頭像 發表于 04-21 10:25 ?2102次閱讀

    MATLAB電路仿真時間要考慮那些因素

    MATLAB電路仿真是一種常用的工具,用于模擬和分析電子電路的性能。在進行電路仿真時,需要考慮各種因素,以確保仿真結果的準確性和可靠性。下面是一些需要考慮的主要因素: 電路拓撲結構:電
    的頭像 發表于 04-21 09:27 ?671次閱讀

    STM32F429做的PIL仿真速度非常慢的原因?

    ,但是速度非常慢。不知道是否STM32F429的參數設定有問題。有沒有哪位大神做過相關的仿真。補充下:仿真中控制器開關頻率是5000khz,采樣時間為5e^-5s。 先謝謝了!
    發表于 04-11 07:28

    ADXL345各軸加速度值有較大波動的原因?

    ADXL345各軸加速度值有較大波動 1、如靜止不動,其測得的各軸加速度值有近30%-50%的波動 2、芯片轉換個位置,靜止不動,各軸測的加速度值有十分大的變化,為什么。 難道芯片
    發表于 01-02 08:22

    編碼器與PLC的接線方法

    編碼器分為旋轉編碼器和線性編碼器兩種。旋轉編碼器用于檢測旋轉位置和速度,而線性編碼器用于檢測直線
    發表于 12-22 09:20 ?1364次閱讀
    <b class='flag-5'>編碼</b>器與PLC的接線方法

    影響SaberRD仿真速度的因素有哪些呢?

    目前,專業仿真軟件的功能不斷增加,仿真領域不斷擴大,處理的對象越來越復雜,這一切都使得軟件自身顯得越來越龐大,而硬件的更新速度也往往慢于軟件更新的速度,這就造成了我們的
    的頭像 發表于 12-06 11:30 ?610次閱讀