0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

Vivado仿真器和代碼覆蓋率簡析

OpenFPGA ? 來源:OpenFPGA ? 2023-08-03 09:23 ? 次閱讀

編寫 HDL 通常是 FPGA 開發(fā)中耗時最少的部分,最具挑戰(zhàn)性和最耗時的部分可能是驗證。根據(jù)最終應(yīng)用程序,驗證可能非常簡單,也可能非常復(fù)雜,簡單的話只需對大多數(shù)功能進行檢查或執(zhí)行完全獨立開發(fā)的測試平臺來演示功能和代碼覆蓋率。

功能和代碼覆蓋率在驗證中很重要,因為它們都提供有關(guān)設(shè)計及其驗證的不同方面的信息。理想情況下,我們希望兩者都能達到 100%。僅其中一項達到 100% 表明我們還有進一步驗證要做。

以下是兩者的常見定義:

代碼覆蓋率——是一種通過計算測試過程中被執(zhí)行的源代碼占全部源代碼的比例,進而間接度量軟件質(zhì)量的方法。例如,它可以指示是否遍歷所有分支和語句(如果切換了所有觸發(fā)器)。

功能覆蓋率 – 提供有關(guān)測試平臺覆蓋被測單元功能行為的程度的信息。為了實現(xiàn)這一點,開發(fā)人員/驗證工程師必須定義覆蓋組和覆蓋點。

代碼覆蓋率和功能覆蓋率之間的區(qū)別在于,功能覆蓋率需要使用需求。

當(dāng)然,代碼和功能覆蓋率都需要規(guī)劃代碼設(shè)計。代碼覆蓋率可能有一些限制,因為它無法識別缺失的功能,也無法識別是否已解決所有可能的邊界/極端情況值。代碼覆蓋率也不關(guān)心事件的順序。這就是功能覆蓋發(fā)揮作用的地方,因為它可以測試功能聲明。

通常,代碼和功能覆蓋率需要昂貴的仿真工具,但是,通過 Vivado 2021.1 的 Vivado 仿真器就可以實現(xiàn)。使用 Vivado 時,開發(fā)人員能夠驗證其設(shè)計并確保 RTL 功能符合要求。

對于代碼覆蓋率,我們需要在項目設(shè)置中的“仿真”選項卡和細化設(shè)置下做的第一件事就是設(shè)置覆蓋類型。在Vivado中我們可以設(shè)置以下選項:

Line / Statement (s) 行/語句

Branch (b) 分支

Condition (c) 條件

Toggle (t) 切換

6f3f4424-3195-11ee-9e74-dac502259ad0.png

我們還可以定義覆蓋率報告名稱和覆蓋率目錄的位置。

運行仿真結(jié)束時生成覆蓋信息。將能夠在elaboration設(shè)置中指定的位置看到 codeCov 目錄。

為了創(chuàng)建功能覆蓋,我們需要在 RTL 內(nèi)創(chuàng)建覆蓋組。

6f697d20-3195-11ee-9e74-dac502259ad0.png

這是獲取報告的數(shù)據(jù)庫。我們需要在 Vivado 中進行更多處理,將數(shù)據(jù)庫轉(zhuǎn)換為報告。

如果想了解 Vivado 仿真器的功能和代碼覆蓋率,最好的起點是UG937 Vivado 設(shè)計套件教程:邏輯仿真。

這提供了幾個設(shè)計示例,可用于測試 Vivado 仿真器功能的不同方面,包括代碼/功能覆蓋范圍以及 UVM 支持。

功能和代碼覆蓋率示例基于 AXI VIP 參考設(shè)計。完成本教程并添加覆蓋組將提供功能和代碼覆蓋率。

仿真完成后,我們需要運行 xcrg 命令來創(chuàng)建 HTML 報告。

6fa0e38c-3195-11ee-9e74-dac502259ad0.png

生成的 HTML 報告可以在任何瀏覽器中打開

6fcbc9e4-3195-11ee-9e74-dac502259ad0.png

單擊組按鈕將打開有關(guān)覆蓋范圍組的詳細信息,在本示例中這比較簡單。

6ff1f204-3195-11ee-9e74-dac502259ad0.png

運行代碼覆蓋率轉(zhuǎn)換,可以看到生成的代碼覆蓋率報告。

701456d2-3195-11ee-9e74-dac502259ad0.png

單擊右上角文件將顯示每個文件的結(jié)果。

70409d6e-3195-11ee-9e74-dac502259ad0.png

總而言之,Vivado 仿真器的功能還是比較強大的。使用這些功能將幫助開發(fā)人員創(chuàng)建最佳設(shè)計,并有望減少調(diào)試硬件所花費的時間。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 仿真器
    +關(guān)注

    關(guān)注

    14

    文章

    1018

    瀏覽量

    83746
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    385

    瀏覽量

    59789
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    812

    瀏覽量

    66539
  • FPGA開發(fā)板
    +關(guān)注

    關(guān)注

    10

    文章

    122

    瀏覽量

    31506
  • HDL語言
    +關(guān)注

    關(guān)注

    0

    文章

    47

    瀏覽量

    8916

原文標題:【Vivado那些事兒】Vivado 仿真器和代碼覆蓋率

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    一文詳解Modelsim代碼覆蓋率功能使用

    作者:默宸? Modelsim代碼覆蓋率功能Code coverage,能報告出statement(語句)、branch(分支)、condition(條件)、expression(表達
    的頭像 發(fā)表于 12-09 11:45 ?5830次閱讀

    怎么用Vivado覆蓋率分析

    在做仿真的時候往往會去做代碼覆蓋率和功能覆蓋率的分析,來保證仿真是做的比較充分完備的。
    的頭像 發(fā)表于 01-03 12:34 ?1720次閱讀
    怎么用<b class='flag-5'>Vivado</b>做<b class='flag-5'>覆蓋率</b>分析

    嵌入式仿真平臺SkyEye的覆蓋率分析相關(guān)資料下載

    代碼執(zhí)娜行覆蓋情況的功能,來檢測代碼中未執(zhí)行覆蓋情況。在覆蓋率分析時需要分析嵌入式軟件的指令覆蓋率
    發(fā)表于 12-17 07:27

    關(guān)于SpinalHDL中的驗證覆蓋率收集簡單說明

    在做RTL仿真驗證時,覆蓋率收集往往是我們在驗證中需要注意的地方,本篇就SpinalHDL中的驗證覆蓋率收集做一個簡單說明。sbt配置在SpinalHDL里進行仿真驗證時,我們的待測試
    發(fā)表于 06-24 15:56

    重點厘清覆蓋率相關(guān)的概念以及在芯片開發(fā)流程中跟覆蓋率相關(guān)的事項

    。提個小建議,即使對SV相關(guān)語法很熟悉,實現(xiàn)覆蓋率模型的時候還是使用最直接和最簡單的方式。這樣可以提高可讀性,便于維護和評審。03 代碼覆蓋率代碼
    發(fā)表于 09-14 11:57

    Verilog代碼覆蓋率檢查

    Verilog代碼覆蓋率檢查是檢查驗證工作是否完全的重要方法,代碼覆蓋率(codecoverge)可以指示Verilog代碼描述的功能有多少
    發(fā)表于 04-29 12:35 ?8430次閱讀

    嵌入式代碼覆蓋率統(tǒng)計方法和經(jīng)驗

    代碼覆蓋率是衡量軟件測試完成情況的指標,通常基于測試過程中已檢查的程序源代碼比例計算得出。代碼覆蓋率可以有效避免包含未測試
    的頭像 發(fā)表于 01-06 15:06 ?3169次閱讀
    嵌入式<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>統(tǒng)計方法和經(jīng)驗

    嵌入式代碼覆蓋率如何進行統(tǒng)計有哪些方法和經(jīng)驗

    代碼覆蓋率是衡量軟件測試完成情況的指標,通?;跍y試過程中已檢查的程序源代碼比例 計算得出。代碼覆蓋率可以有效避免包含未測試
    的頭像 發(fā)表于 01-09 11:12 ?3082次閱讀
    嵌入式<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>如何進行統(tǒng)計有哪些方法和經(jīng)驗

    統(tǒng)計嵌入式代碼覆蓋率的方法和經(jīng)驗

    代碼覆蓋率是衡量軟件測試完成情況的指標,通?;跍y試過程中已檢查的程序源代碼比例計算得出。代碼覆蓋率可以有效避免包含未測試
    的頭像 發(fā)表于 03-29 11:58 ?1954次閱讀
    統(tǒng)計嵌入式<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>的方法和經(jīng)驗

    怎么才能寫出高覆蓋率的Verilog代碼?

    設(shè)計的角度上來討論,如何寫出高覆蓋率的Verilog代碼。assign慎用按位運算邏輯, | ^ ^~和三目運算符,慎用。使用這樣的描述方式本身功能并沒有什么問題,而且寫起來很爽,但是在很多
    的頭像 發(fā)表于 06-01 10:13 ?2631次閱讀

    覆蓋率的Verilog代碼的編寫技巧

    設(shè)計工程師需要關(guān)心的主要有行覆蓋率(Block),條件覆蓋率(Expression),翻轉(zhuǎn)覆蓋率(Toggle),狀態(tài)機覆蓋率。本文從ASIC設(shè)計的角度上來討論,如何寫出高
    的頭像 發(fā)表于 05-26 17:30 ?4286次閱讀

    更好地測量代碼覆蓋率的 9 個技巧

    。? 測量測試覆蓋率,也稱為代碼覆蓋率,對于嵌入式系統(tǒng)變得越來越重要。在許多情況下,這些設(shè)備對安全或業(yè)務(wù)至關(guān)重要。流程基于物聯(lián)網(wǎng)設(shè)備,患者依賴工作起搏和智能胰島素泵,沒有嵌入式軟件就
    的頭像 發(fā)表于 07-14 15:58 ?3028次閱讀
    更好地測量<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>的 9 個技巧

    代碼覆蓋率工具的重要性

    測試覆蓋率是軟件質(zhì)量的重要指標,也是軟件維護的重要組成部分。它通過提供不同承保項目的數(shù)據(jù)來幫助評估測試的有效性。這種洞察力允許通過為未經(jīng)測試的代碼定義新的測試用例來改進測試,從而提高代碼質(zhì)量,最終增加
    的頭像 發(fā)表于 12-08 15:13 ?1470次閱讀
    <b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>工具的重要性

    EDA仿真驗證環(huán)境中的激勵、檢查和覆蓋率

    下圖是一個典型的EDA仿真驗證環(huán)境,其中主要的組件就是激勵生成、檢查和覆蓋率收集。
    的頭像 發(fā)表于 04-15 10:13 ?1719次閱讀

    代碼覆蓋率記錄

    為確保具體的產(chǎn)品(例如,醫(yī)療或航空電子市場)質(zhì)量合格, 通常需要提供語句覆蓋與判定覆蓋認證證明。對于各種嵌 入式系統(tǒng),規(guī)范要求高度優(yōu)化的代碼需要實時測試。禁止 代碼插裝和運行時篡
    發(fā)表于 11-03 11:02 ?0次下載
    <b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>記錄