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

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

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

Modelsim的仿真之路

FPGA技術(shù)江湖 ? 來(lái)源:FPGA技術(shù)江湖 ? 作者:FPGA技術(shù)江湖 ? 2022-10-24 09:06 ? 次閱讀

01

對(duì)于仿真的激勵(lì)測(cè)試,其實(shí)會(huì)有代碼覆蓋率一說(shuō),不過(guò)我們平常可能更多是功能覆蓋,代碼覆蓋估計(jì)關(guān)注的人要少些,不過(guò)作為相對(duì)系統(tǒng)性的學(xué)習(xí),還是大概看下這個(gè)功能吧~

02

涉及到的測(cè)試代碼文件就文末自行獲取了,直接開(kāi)始正題吧。

把文件準(zhǔn)備好后,打開(kāi)Modelsim,將路徑切換到對(duì)于的文件路徑

例:cd E:/Soft_File/Sim_File/coverage

接著創(chuàng)建工作庫(kù)(work)=> 編譯.v文件(指定覆蓋測(cè)試的類項(xiàng))

vlib work 
vlog *.v +cover=bcesxf

附:代碼覆蓋率,在Modelsim中提供了以下幾種覆蓋的類型,簡(jiǎn)單說(shuō)明一下

A-語(yǔ)句覆蓋(Statement coverage):逐行統(tǒng)計(jì)每個(gè)語(yǔ)句的執(zhí)行情況

B-分支覆蓋(Branch coverage):統(tǒng)計(jì)每個(gè)條件“if/then/else”和“case”的執(zhí)行情況

C-條件覆蓋(Condition coverage):算是分支覆蓋的擴(kuò)展吧,把判斷條件都覆蓋到

D-表達(dá)式覆蓋(Expression coverage):和條件覆蓋又有點(diǎn)相似,就表達(dá)式左右側(cè)的比對(duì)

E-跳轉(zhuǎn)覆蓋(Toggle coverage):邏輯節(jié)點(diǎn)的跳轉(zhuǎn),狀態(tài)發(fā)生變化的意思

F-FSM覆蓋(FSM coverage):有限狀態(tài)機(jī)的狀態(tài)、轉(zhuǎn)換還有路徑統(tǒng)計(jì)

G-SystemVerilog類覆蓋(SystemVerilog class coverage):這部分沒(méi)咋涉及過(guò),應(yīng)該是SV的類統(tǒng)計(jì)

然后命令中的 +cover=bcesxf大概就知道是指什么了吧?除了x要特殊一丟丟

branch, condition,expression, statement, extended toggle, finite state machine

03

啟動(dòng)覆蓋測(cè)試吧~

vsim -coverage test_sm

先關(guān)注這個(gè)界面,通過(guò)這個(gè)界面可以執(zhí)行指定的的覆蓋測(cè)試,然后分析的結(jié)果會(huì)以那個(gè)小圖標(biāo)的形式顯示出來(lái),或者,然后有對(duì)應(yīng)的右下標(biāo)字母,字母和剛剛介紹的一個(gè)意思,還會(huì)有個(gè)E的字樣,就是被排除在覆蓋測(cè)試之外產(chǎn)生的一些狀態(tài)。

89ac5902-5331-11ed-a3b6-dac502259ad0.png

可以在這選對(duì)應(yīng)的覆蓋測(cè)試

89bab89e-5331-11ed-a3b6-dac502259ad0.png

稍微運(yùn)行一下,做語(yǔ)句覆蓋測(cè)試,結(jié)果發(fā)生改變

run 1ms

89c1a1f4-5331-11ed-a3b6-dac502259ad0.png

在Files的窗口也能看到相應(yīng)的代碼覆蓋率

89f203da-5331-11ed-a3b6-dac502259ad0.png

打開(kāi)sim的窗口,選中不同的目標(biāo),在右側(cè)的分析窗口會(huì)變成相應(yīng)的代碼覆蓋情況

89f94a32-5331-11ed-a3b6-dac502259ad0.png

直接雙擊對(duì)應(yīng)的目標(biāo),會(huì)直接顯示其在源碼中的位置

8a0175b8-5331-11ed-a3b6-dac502259ad0.png

接著在分析界面將覆蓋類型換成Toggle,然后選中test_sm,分析界面再點(diǎn)dat,詳細(xì)說(shuō)明的界面就會(huì)出現(xiàn)對(duì)應(yīng)的跳轉(zhuǎn)情況

8a08a7e8-5331-11ed-a3b6-dac502259ad0.png

要是沒(méi)這個(gè)Details的界面,可以在菜單里,View > Coverage > Details 將其使能

8a10f18c-5331-11ed-a3b6-dac502259ad0.png

切換到sim窗口,選中test_sm,然后View > Objects,再然后右鍵后Show All Columns

這時(shí)可以看到相應(yīng)跳變的靜態(tài)指示

8a3b1552-5331-11ed-a3b6-dac502259ad0.png

04

在Files的界面中雙擊beh_sram.v打開(kāi)源碼界面,然后看到40行,條件覆蓋沒(méi)滿足的情況,點(diǎn)Xc那個(gè)圖標(biāo),在詳細(xì)界面可以看到對(duì)應(yīng)的描述

8a43a258-5331-11ed-a3b6-dac502259ad0.png

接著將覆蓋次數(shù)顯示出來(lái),Tools > Code Coverage > Show coverage numbers

8a4db7a2-5331-11ed-a3b6-dac502259ad0.png

軟件大小有點(diǎn)問(wèn)題,50001只顯示到了0001......

8a58845c-5331-11ed-a3b6-dac502259ad0.png

關(guān)掉數(shù)字的顯示,恢復(fù)圖標(biāo)顯示的情況,鼠標(biāo)直接放到對(duì)應(yīng)的代碼位置,也能顯示

8a81c560-5331-11ed-a3b6-dac502259ad0.png

05

在Files界面,可以選定要排除覆蓋測(cè)試的文件,右鍵 > Code Coverage > Exclude Selected File ,Cancel...就可以取消排除。

8aac1ff4-5331-11ed-a3b6-dac502259ad0.png

然后可以看到整體發(fā)生變化,代碼界面的√和×都變?yōu)榱薊的字樣

8ab34374-5331-11ed-a3b6-dac502259ad0.png

E*指的就是被排除在外,但測(cè)試時(shí)還是被擊中過(guò),E就是完全被排除在外了,可以點(diǎn)那個(gè)圖標(biāo),然后看詳細(xì)描述里的信息理解。

06

完成代碼覆蓋的測(cè)試后,可以將其導(dǎo)出,Tools > Coverage Report > Text ,類型就看自己需要了

(也可以在Instance, sim, files 界面右鍵找對(duì)應(yīng)的導(dǎo)出鍵)

8abcd042-5331-11ed-a3b6-dac502259ad0.png

根據(jù)要的內(nèi)容做報(bào)告

8ac56554-5331-11ed-a3b6-dac502259ad0.png

導(dǎo)出后,文件內(nèi)容

8ad8a0e2-5331-11ed-a3b6-dac502259ad0.png

導(dǎo)出那個(gè)HTML就相對(duì)圖形化顯示

8adf0fcc-5331-11ed-a3b6-dac502259ad0.png

8ae4cdea-5331-11ed-a3b6-dac502259ad0.png

如果要把使用了排除覆蓋測(cè)試的文件狀態(tài)也導(dǎo)出,就可以用這個(gè)

8b09963e-5331-11ed-a3b6-dac502259ad0.png

基本就這樣了,結(jié)束本次仿真吧~

quit -sim

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

    關(guān)注

    50

    文章

    4025

    瀏覽量

    133344
  • ModelSim
    +關(guān)注

    關(guān)注

    5

    文章

    174

    瀏覽量

    47095
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4726

    瀏覽量

    68248

原文標(biāo)題:Modelsim的仿真之路(代碼覆蓋率)

文章出處:【微信號(hào):HXSLH1010101010,微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Altera ModelSim 6.5仿真入門教程

    Altera ModelSim 6.5仿真入門教程,需要的可自行下載。 平臺(tái) 軟件:ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition 內(nèi)容 1 設(shè)計(jì)流程 使用
    發(fā)表于 08-15 15:40 ?255次下載
    Altera <b class='flag-5'>ModelSim</b> 6.5<b class='flag-5'>仿真</b>入門教程

    Modelsim的功能仿真和時(shí)序仿真

    ModelSim 進(jìn)行功能仿真,進(jìn)行功能仿真首先要檢查設(shè)計(jì)的語(yǔ)法是否正確;其次檢查代碼是否達(dá)到設(shè)計(jì)的功能要求。下文主要介紹仿真步驟和測(cè)試激勵(lì)的加載。
    發(fā)表于 11-13 15:35 ?9145次閱讀

    MODELSIM仿真(適合x(chóng)ilinx ISE)

    基于Xilinx ISE的modelsim仿真教程
    發(fā)表于 11-30 15:52 ?8次下載

    使用 ModelSim 進(jìn)行設(shè)計(jì)仿真詳解

    本章為ModelSim的初級(jí)教程,讀者讀完本章可以較為熟練的使用ModelSim進(jìn)行設(shè)計(jì)仿真,本章沒(méi)有也不可能涉及ModelSim的各個(gè)方面,要想全面的掌握
    發(fā)表于 12-24 18:29 ?0次下載

    modelsim仿真詳細(xì)過(guò)程(功能仿真與時(shí)序仿真

    modelsim仿真詳細(xì)過(guò)程(功能仿真與時(shí)序仿真).ModelSim不僅可以用于數(shù)字電路系統(tǒng)設(shè)計(jì)的功能仿
    發(fā)表于 12-19 11:14 ?6.7w次閱讀
    <b class='flag-5'>modelsim</b><b class='flag-5'>仿真</b>詳細(xì)過(guò)程(功能<b class='flag-5'>仿真</b>與時(shí)序<b class='flag-5'>仿真</b>)

    仿真軟件ModelSim及其應(yīng)用,ModelSim仿真流程

    ModelSim不僅可以用于數(shù)字電路系統(tǒng)設(shè)計(jì)的功能仿真,還可以應(yīng)用于數(shù)字電路系統(tǒng)設(shè)計(jì)的時(shí)序仿真ModelSim的使用中,最基本的步驟包括創(chuàng)建工程、編寫(xiě)源代碼、編譯、啟動(dòng)
    的頭像 發(fā)表于 12-29 11:35 ?9554次閱讀

    Modelsim仿真教程Modelsim的基礎(chǔ)入門基礎(chǔ)教程免費(fèi)下載

    筆者一直以來(lái)都在糾結(jié),自己是否要為仿真編輯相關(guān)的教程呢?一般而言,Modelsim等價(jià)仿真已經(jīng)成為大眾的常識(shí),但是學(xué)習(xí)仿真是否學(xué)習(xí)Modelsim
    發(fā)表于 04-30 18:24 ?23次下載
    <b class='flag-5'>Modelsim</b><b class='flag-5'>仿真</b>教程<b class='flag-5'>Modelsim</b>的基礎(chǔ)入門基礎(chǔ)教程免費(fèi)下載

    Modelsim與MATLAB的聯(lián)合仿真

    總體思想是現(xiàn)在 MATLAB 中產(chǎn)生仿真所需要的輸入信號(hào),以十六進(jìn)制形式存放在數(shù)據(jù)文件中,在modelsim 中用 vhdl 語(yǔ)言編寫(xiě)測(cè)試文件,做時(shí)序仿真,最后將結(jié)果存入另外一個(gè)數(shù)據(jù)文件,最后在 matlab中將
    發(fā)表于 06-01 10:31 ?33次下載

    基于ModelSim使用二聯(lián)合Quarus自動(dòng)仿真教程

    3 ModelSim工程實(shí)戰(zhàn)之自動(dòng)仿真說(shuō)完了 ModelSim 的使用流程,接下來(lái)我們將會(huì)對(duì)每個(gè)流程進(jìn)行詳細(xì)的操作演示,一步步、手把手帶領(lǐng)大家學(xué)習(xí)使用 ModelSim 軟件。首先我們
    的頭像 發(fā)表于 07-23 10:51 ?2011次閱讀
    基于<b class='flag-5'>ModelSim</b>使用二聯(lián)合Quarus自動(dòng)<b class='flag-5'>仿真</b>教程

    基于ModelSim使用四ModelSim手動(dòng)仿真教程

    4.1 新建仿真工程 在開(kāi)始動(dòng)手仿真之前,首先,我們需要?jiǎng)?chuàng)建一個(gè)文件夾用來(lái)放置我們的 ModelSim 仿真工程文件,這里我們就在之前創(chuàng)建的 Quartus 工程目錄下的 simula
    的頭像 發(fā)表于 07-23 11:10 ?4000次閱讀

    如何夾帶modelsim仿真波形白底黑線

    Modelsim使用技巧—波形白底黑線設(shè)置 在發(fā)表期刊或者論文時(shí),我們需要夾帶modelsim仿真波形在我們的論文里,在modelsim默認(rèn)模式下的波形一般是黑底綠線白字,如圖1所示
    的頭像 發(fā)表于 08-26 11:23 ?3879次閱讀

    ModelSim手動(dòng)仿真教程

    在開(kāi)始動(dòng)手仿真之前,首先,我們需要?jiǎng)?chuàng)建一個(gè)文件夾用來(lái)放置我們的 ModelSim 仿真工程文件,這里我們就在之前創(chuàng)建的 Quartus 工程目錄下的 simulation 文件夾中創(chuàng)建一個(gè)
    的頭像 發(fā)表于 07-11 10:58 ?5048次閱讀

    芯片設(shè)計(jì)之Modelsim仿真工具

    Modelsim仿真將設(shè)計(jì)以樹(shù)狀表示,設(shè)計(jì)中的每一個(gè)實(shí)體,每一個(gè)module、每一個(gè)進(jìn)程(always塊、initial塊等)在Modelsim仿真中以對(duì)象的形式展現(xiàn)。
    的頭像 發(fā)表于 08-12 15:04 ?2565次閱讀

    Modelsim仿真之路(Memory小技能)

    許久沒(méi)更新了,間歇性來(lái)寫(xiě)寫(xiě),還是繼續(xù)Modelsim中關(guān)于內(nèi)存的操作,涉及的文件可在文末自行獲取,本篇對(duì)應(yīng)memory的文件夾。
    的頭像 發(fā)表于 10-24 10:16 ?1330次閱讀

    Vivado調(diào)用Modelsim仿真

    Modelsim是十分常用的外部仿真工具,在Vivado中也可以調(diào)用Modelsim進(jìn)行仿真,下面將介紹如何對(duì)vivado進(jìn)行配置并調(diào)用Models
    的頭像 發(fā)表于 07-24 09:04 ?3462次閱讀
    Vivado調(diào)用<b class='flag-5'>Modelsim</b><b class='flag-5'>仿真</b>