編寫 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) 切換
我們還可以定義覆蓋率報告名稱和覆蓋率目錄的位置。
運行仿真結(jié)束時生成覆蓋信息。將能夠在elaboration設(shè)置中指定的位置看到 codeCov 目錄。
為了創(chuàng)建功能覆蓋,我們需要在 RTL 內(nèi)創(chuàng)建覆蓋組。
這是獲取報告的數(shù)據(jù)庫。我們需要在 Vivado 中進行更多處理,將數(shù)據(jù)庫轉(zhuǎn)換為報告。
如果想了解 Vivado 仿真器的功能和代碼覆蓋率,最好的起點是UG937 Vivado 設(shè)計套件教程:邏輯仿真。
這提供了幾個設(shè)計示例,可用于測試 Vivado 仿真器功能的不同方面,包括代碼/功能覆蓋范圍以及 UVM 支持。
功能和代碼覆蓋率示例基于 AXI VIP 參考設(shè)計。完成本教程并添加覆蓋組將提供功能和代碼覆蓋率。
仿真完成后,我們需要運行 xcrg 命令來創(chuàng)建 HTML 報告。
生成的 HTML 報告可以在任何瀏覽器中打開
單擊組按鈕將打開有關(guān)覆蓋范圍組的詳細信息,在本示例中這比較簡單。
運行代碼覆蓋率轉(zhuǎn)換,可以看到生成的代碼覆蓋率報告。
單擊右上角文件將顯示每個文件的結(jié)果。
總而言之,Vivado 仿真器的功能還是比較強大的。使用這些功能將幫助開發(fā)人員創(chuàng)建最佳設(shè)計,并有望減少調(diào)試硬件所花費的時間。
審核編輯:劉清
-
仿真器
+關(guān)注
關(guān)注
14文章
1018瀏覽量
83746 -
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)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論