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

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

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

3天內不再提示

介紹SystemVerilog幾種常用的調試功能

sanyue7758 ? 來源:芯片學堂 ? 2023-01-09 11:51 ? 次閱讀

在工作日里,如果你問驗證工程師在干嘛,多半時間他/她會告訴你在Debug。換句話說,一般在驗證周期內,工程師有超過一半的時間都消耗在了功能調試上,盡管這里面包含了驗證工程師跟自己“作對”的時間,即驗證環境或者測試用例本身存在bug。所以,調試這項工作還是很重要的!

調試這項工作除了要求工程師對設計規范(Specification)、DUT(Design Under Test)、測試環境(testbench)結構和用例(test case)的測試意圖有一定的了解,掌握必要的工具、方法和技巧也十分重要,它能夠幫助工程師獲得更多有效的信息,加速問題定位,提高工作效率。

方法4:可視化調試

可視化調試主要分為Post-process和Interactive這兩種模式。可視化調試工具是工程師在定位代碼問題時的有力工具,也是現在驗證工程師主流的調試工具。工具的使用一般可以參考官方的用戶手冊(User Guide),也能夠在官網上找到相應的培訓鏈接和視頻

常用的可視化調試工具有Synopsys家的Verdi,Siemens家的Visualizer,還有Cadence家的SimVision。對于個人用戶來說,可能沒有辦法去實操體驗,但通常所在公司會購買至少一家的License。三家公司的工具的操作流程和基礎調試功能都差不多,然后又分別有自己調試的獨特功能。

2a8e2f5c-8d49-11ed-bfe3-dac502259ad0.jpg

先介紹下后處理調試模式(post-process,即在仿真結束之后再去可視化和處理仿真結果,有些地方會叫做PPE,post-processing environment)的使用,因為這種方式在實際工作中用的比較多。在使用可視化調試工具之前,通常需要將testbench和RTL編譯到同一個數據庫中,該數據庫包含了文件信息、RTL例化層次信息、信號連接關系等等,以供調試工具的追蹤和分析。

如果使用Verdi工具,需要使用VCS在編譯(Compilation=Analysis+Elaboration)的時候,通過加參數-kdb -lca來生成KDB庫(Knowledge Database),其中lca(Limited Customer Availability Features)參數是為了指定工具特性。KDB數據庫格式是Verdi專用的格式,所以KDB庫有時候也可以叫Verdi庫。打開verdi的時候使用命令verdi加參數-elab來選擇該KDB庫。

如果使用Visualizer工具,需要使用Questa/ModelSim在對設計完成編譯(vlog/vcom)之后,使用vopt命令加參數-debug -designfile design.bin來生成.bin文件,同樣該文件格式是Visualizer專用的。打開Visualizer的時候使用命令visualizer加參數-designfile來選擇該bin文件,使用參數-wavefile來選擇db波形文件。

如果使用SimVision工具,需要在仿真階段使用NC仿真器或者XCelium仿真器(具有更高的仿真性能,比如支持多核等)將設計和波形都導出成shm格式。在仿真結束之后,你可以看到名為example.shm的目錄,該目錄下會有兩個文件:.dsn文件和.trn文件,前者包含的是設計的信息(類似于我們上面說的數據庫),后者包含的是波形信息。打開SimVision的時候使用命令simvision直接加example.shm來打開待調試的數據庫。

2a94671e-8d49-11ed-bfe3-dac502259ad0.jpg

再看看交互模式(interactive mode),交互模式相對于后處理模式增加了仿真控制的功能,即可以設置仿真斷點、控制仿真的暫停、運行和重啟等,并實時地觀察到信號的行為。交互模式下,上述EDA工具的界面上會多出來一些調試控件。不過這種模式的仿真運行速度比較慢,且在分發和重現代碼行為上不是很友好,所以在實際工作中也用的比較少,除非遇到非常棘手但卻摸不著頭腦的問題。以上提到的幾家工具都支持交互模式調試,操作流程也都差不多,并且跟后處理模式一樣也需要先編譯出來一個數據庫。

如果使用Synopsys家的工具,在設置完必要的環境變量之后,比如VCS_HOME和VERDI_HOME,需要使用VCS命令vcs -kdb -lca -debug_access+all 編譯出KDB庫和simv可執行的仿真文件,然后在執行simv的時候加上參數-verdi就可以打開交互模式下的Verdi了,這個時候調試器和仿真器是關聯起來的。

如果使用Siemens家的工具,同樣在設置完必要的環境變量并使用命令vopt編譯出design.bin文件之后,可以使用命令vsim -visualizer=design.bin -qwavedb=+signal+class -f 打開交互模式下的Visualizer,便可以在調試工具界面去控制仿真器。

如果使用Cadence家的工具,那就相對復雜一點,因為Cadence前前后后有幾個仿真器,比如verilog、ncsim、irun,并且進交互調試模式的方法也比較多樣,但大致可以分兩種:一種是可以通過參數-gui直接開啟帶SimVision的仿真器,另一種方式是單獨啟動SimVision,使用參數-connect host/pid連接到運行在本地或者遠端的仿真上。

以上命令只是展示大概的使用過程,實際應以對應版本的用戶手冊為準哈。當你打開可視化調試工具調試界面之后,有這么幾種常用的調試功能:

通過Hierarchy等窗口瀏覽源代碼的例化層次結構,類繼承關系等;

通過查找Driver和Load來定位信號的傳播通路(這個是用的最多的);

通過Filter來分類查看當前文件包含的輸入輸出信號、參數、變量等;

通過查找來定位某一個module例化出來的所有模塊;

原理圖和狀態機跳轉圖可以有限地幫助你理解代碼行為;

配合波形文件查看各種信號隨時間變化的行為;

調試工具的功能還有很多,具體可以查看各個工具的官方介紹和培訓視頻。

方法5:SVA斷言在調試中的應用

概述:SystemVerilog Assertion(斷言)主要用于驗證設計的行為,并且可以提供功能覆蓋率信息。Assertion可以應用于兩種不同的驗證方法中,一種是在動態仿真中去動態地檢查各個既定屬性(property)是否滿足,另一種測試用于Formal驗證工具去證明設計是否符合規范。

作用:如果你剛接觸,可以把斷言簡單理解成checker或者monitor,它指的是在設計中嵌入一些工程師根據待測特性自行定義的一些屬性,仿真的時候仿真工具會去判斷這些屬性是否成立,以此來判斷某個特性是否實現正確。SVA在本文中作為調試的方法來介紹,就是因為斷言可以幫助我們監測屬性,為我們報出來哪些時刻行為正常、哪些時刻行為異常,且這些行為可以是有時序的!

分類:在SystemVerilog中,斷言大致可以分為兩類:立即斷言(immediate assertion)和并發斷言(concurrent assertion)。立即斷言是基于仿真事件(simulation event)的,當它被執行到的時候就會立即對多定義的屬性做出判斷并給出結果;而并發斷言是基于時鐘的,斷言的評估(evaluate)發生在時鐘邊沿,這也使得并發斷言具有監測的能力,這也是下面要主要介紹的。

結構:斷言的具體實現依賴于更基礎的元素,比如sequence和property。Sequence是最底層的元素,它可以復用和嵌套。Sequence可以用來定義簡單的布爾表達式,也可以用來描述多周期的時序行為。Property則可以實現跟sequence一樣的內容,也可以通過組合不同的sequence來構造更加復雜的時序行為。為了規范化,建議將嵌入的時鐘信號@(posedge clk)放在property這一層,而將sequence跟時鐘獨立開來,方便基礎sequence的復用。

調度:SystemVerilog的仿真基于事件驅動模型,事件的調度機制在SV語言標準中有明確說明。該調度機制將每個仿真時刻(time slot)再劃分成多個region,如下圖所示,每個region都有自己明確的操作。仿真調度算法的確定,可以使得仿真環境跟DUT交互時顯示出同步的效果。其中跟SVA相關的region有Preponed、Observed和Reactive。在Preponed中,SVA會對有關聯的變量完成采樣;在Observed中,多有的property完成評估,即判斷斷言描述是否成立;在Reactive中,執行斷言評估結果需要采取的對應的操作。

2a9f994a-8d49-11ed-bfe3-dac502259ad0.png

應用:斷言的應用主要可以分成四個步驟:1、構造基礎布爾表達式;2、構造sequence序列;3、構造斷言屬性property;4、將屬性代碼插入或綁定(bind)到待測模塊中。SVA提供了一些好用又強大的功能:判斷信號邊沿和狀態、添加延時來構造信號時序行為、支持構造不定周期的時序窗口、判斷過去的信號狀態、支持斷言的邏輯運算等等,本文篇幅顯然是不夠的了。

方法6:軟件調試方法的借鑒和應用

這一節的內容更像是討論,有哪些軟件開發中用到的調試方法,或者問題定位策略是可以借鑒過來應用到芯片驗證中的。

有個前提需要明確的是,硬件仿真始終是基于事件驅動的程序執行過程,盡管仿真調度機制簡潔明了,但往往待測設計規模龐大(具體表現為硬件行為具備并行性質,一個時鐘信號的翻轉事件關聯著成千上萬的信號動作),所以硬件仿真的運行速度會非常的慢,這是跟單純軟件程序的一個顯著區別。

運行速度上的差異帶來了調試方法上的一些不同。軟件調試中交互式的操作非常多,比如解釋執行的腳本(比如Python)不需要編譯就可以馬上得到執行的結果,又比如基于斷點的調試可以非常容易地檢查變量值和堆棧跟蹤。反觀硬件調試,工程師很難快速地知道在哪里設置斷點,往往需要反復的嘗試,這會浪費掉很多時間。因此硬件的調試更多依賴于信息的導出,其形式通常是仿真日志和波形文件。

如何提高硬件調試的交互性可能是軟件調試帶來的啟示,有這么一些不成熟的想法,比如是否可以增加調試信息(代碼、波形和仿真日志)之間的關聯,實現自動化跳轉;是否可以增加工具對代碼的理解或者記錄調試過程來進行自動化分析;是否可以在增量編譯的概念上實現增量仿真;等等等等。







審核編輯:劉清

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

    關注

    4

    文章

    265

    瀏覽量

    31718
  • VCS
    VCS
    +關注

    關注

    0

    文章

    78

    瀏覽量

    9590
  • DUT
    DUT
    +關注

    關注

    0

    文章

    189

    瀏覽量

    12348

原文標題:SystemVerilog | 這些Debug調試方法你都知道嗎?| Part II

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【AI技術支持】ESP32無線Wi-Fi常用調試API

    Wi-Fi常用調試API在使用esp32調試Wi-Fi功能時,由于場景和各種因素的影響,難免會遇到各種連接不上,Wi-Fi斷連等問題。下面介紹
    的頭像 發表于 10-26 08:00 ?272次閱讀
    【AI技術支持】ESP32無線Wi-Fi<b class='flag-5'>常用</b><b class='flag-5'>調試</b>API

    室內北斗定位系統常用幾種定位方式

    隨著科技的不斷進步,室內定位技術日益成熟,為人們的日常生活和工作帶來了極大的便利。特別是在室內環境中,北斗衛星定位系統通過一系列創新技術,實現了高精度、高可靠的定位服務。接下來就由深圳滄穹科技給大家具體介紹室內北斗定位系統常用幾種
    的頭像 發表于 09-23 10:00 ?305次閱讀

    幾種常用的共模電感磁芯類型

    電子發燒友網站提供《幾種常用的共模電感磁芯類型.docx》資料免費下載
    發表于 09-20 11:27 ?0次下載

    幾種常用單片機的在線升級能力比較

    電子發燒友網站提供《幾種常用單片機的在線升級能力比較.pdf》資料免費下載
    發表于 03-24 09:39 ?2次下載

    在Vivado Synthesis中怎么使用SystemVerilog接口連接邏輯呢?

    SystemVerilog 接口的開發旨在讓設計中層級之間的連接變得更加輕松容易。 您可以把這類接口看作是多個模塊共有的引腳集合。
    的頭像 發表于 03-04 15:25 ?888次閱讀
    在Vivado Synthesis中怎么使用<b class='flag-5'>SystemVerilog</b>接口連接邏輯呢?

    常用封裝尺寸資料介紹

    電子發燒友網站提供《常用封裝尺寸資料介紹.zip》資料免費下載
    發表于 02-29 09:23 ?0次下載

    介紹6種常見的反調試方法

    是一種防止逆向的方案。逆向人員如果遇到復雜的代碼混淆,有時會使用調試器動態分析代碼邏輯簡化分析流程。例如惡意軟件通常會被安全研究人員、反病毒廠商和其他安全專業人員分析和調試,以了解其行為和功能,并
    的頭像 發表于 01-15 09:53 ?3570次閱讀
    <b class='flag-5'>介紹</b>6種常見的反<b class='flag-5'>調試</b>方法

    常用的角速度傳感器包括幾種類型

    常用的角速度傳感器包括幾種類型? 常用的角速度傳感器包括以下幾種類型: 1. 陀螺儀:陀螺儀是最常見的角速度傳感器之一。它通過測量旋轉物體相對于某個參考點的角速度來確定旋轉物體的角度變
    的頭像 發表于 01-03 17:13 ?1338次閱讀

    開關電源常用幾種保護

    開關電源常用幾種保護 開關電源是一種將交流電轉換為直流電的電子設備,廣泛應用于各種電子設備和系統中。由于開關電源在工作過程中會受到各種電氣和環境參數的影響,因此需要有一系列的保護措施來確保其
    的頭像 發表于 12-15 14:14 ?3233次閱讀

    STM32單片機一般有幾種調試方式

    JTAG調試*:這是一種常用調試工具,可以用于單步執行、斷點調試等操作。在STM32單片機中,可以使用ST-Link、STMicroelectronics IDE等工具進行JTAG
    的頭像 發表于 12-13 10:31 ?3074次閱讀

    IDEA的調試功能

    工具和功能。本文將詳細介紹IDEA的調試功能,包括使用方法、常用技巧和調試過程中的注意事項等。
    的頭像 發表于 12-06 14:07 ?683次閱讀

    幾種常用的產生負電源的方法

    幾種常用的產生負電源的方法
    的頭像 發表于 12-05 15:54 ?1327次閱讀
    <b class='flag-5'>幾種</b><b class='flag-5'>常用</b>的產生負電源的方法

    如何調試AR8031 PHY功能

    本篇文章我們將跟大家介紹在開發 i.MX8QM 的過程中,如何調試 AR8031 PHY 功能
    的頭像 發表于 12-04 13:48 ?900次閱讀
    如何<b class='flag-5'>調試</b>AR8031 PHY<b class='flag-5'>功能</b>

    單片機程序調試常見問題 STM32單片機一般有幾種調試方式

    SWD是STM32單片機常用調試模式之一。它通過單一的調試引腳(SWDIO)和時鐘引腳(SWCLK)來進行調試和編程操作。使用SWD調試
    的頭像 發表于 12-02 17:14 ?3346次閱讀

    使用SystemVerilog調試布局方法

    System Verilog調試布局由三部分組成。左上角Design Browser,可以訪問仿真對象,右上角為Source Browser,用來展示源碼,下側窗口為Waveform window,用來顯示波形。
    的頭像 發表于 12-02 16:08 ?981次閱讀
    使用<b class='flag-5'>SystemVerilog</b><b class='flag-5'>調試</b>布局方法