0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Modelsim的仿真之路

FPGA技术江湖 来源:FPGA技术江湖 作者:FPGA技术江湖 2022-10-24 09:06 次阅读

01

对于仿真的激励测试,其实会有代码覆盖率一说,不过我们平常可能更多是功能覆盖,代码覆盖估计关注的人要少些,不过作为相对系统性的学习,还是大概看下这个功能吧~

02

涉及到的测试代码文件就文末自行获取了,直接开始正题吧。

把文件准备好后,打开Modelsim,将路径切换到对于的文件路径

例:cd E:/Soft_File/Sim_File/coverage

接着创建工作库(work)=> 编译.v文件(指定覆盖测试的类项)

vlib work 
vlog *.v +cover=bcesxf

附:代码覆盖率,在Modelsim中提供了以下几种覆盖的类型,简单说明一下

A-语句覆盖(Statement coverage):逐行统计每个语句的执行情况

B-分支覆盖(Branch coverage):统计每个条件“if/then/else”和“case”的执行情况

C-条件覆盖(Condition coverage):算是分支覆盖的扩展吧,把判断条件都覆盖到

D-表达式覆盖(Expression coverage):和条件覆盖又有点相似,就表达式左右侧的比对

E-跳转覆盖(Toggle coverage):逻辑节点的跳转,状态发生变化的意思

F-FSM覆盖(FSM coverage):有限状态机的状态、转换还有路径统计

G-SystemVerilog类覆盖(SystemVerilog class coverage):这部分没咋涉及过,应该是SV的类统计

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

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

03

启动覆盖测试吧~

vsim -coverage test_sm

先关注这个界面,通过这个界面可以执行指定的的覆盖测试,然后分析的结果会以那个小图标的形式显示出来,或者,然后有对应的右下标字母,字母和刚刚介绍的一个意思,还会有个E的字样,就是被排除在覆盖测试之外产生的一些状态。

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

可以在这选对应的覆盖测试

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

稍微运行一下,做语句覆盖测试,结果发生改变

run 1ms

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

在Files的窗口也能看到相应的代码覆盖率

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

打开sim的窗口,选中不同的目标,在右侧的分析窗口会变成相应的代码覆盖情况

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

直接双击对应的目标,会直接显示其在源码中的位置

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

接着在分析界面将覆盖类型换成Toggle,然后选中test_sm,分析界面再点dat,详细说明的界面就会出现对应的跳转情况

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

要是没这个Details的界面,可以在菜单里,View > Coverage > Details 将其使能

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

切换到sim窗口,选中test_sm,然后View > Objects,再然后右键后Show All Columns

这时可以看到相应跳变的静态指示

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

04

在Files的界面中双击beh_sram.v打开源码界面,然后看到40行,条件覆盖没满足的情况,点Xc那个图标,在详细界面可以看到对应的描述

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

接着将覆盖次数显示出来,Tools > Code Coverage > Show coverage numbers

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

软件大小有点问题,50001只显示到了0001......

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

关掉数字的显示,恢复图标显示的情况,鼠标直接放到对应的代码位置,也能显示

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

05

在Files界面,可以选定要排除覆盖测试的文件,右键 > Code Coverage > Exclude Selected File ,Cancel...就可以取消排除。

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

然后可以看到整体发生变化,代码界面的√和×都变为了E的字样

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

E*指的就是被排除在外,但测试时还是被击中过,E就是完全被排除在外了,可以点那个图标,然后看详细描述里的信息理解。

06

完成代码覆盖的测试后,可以将其导出,Tools > Coverage Report > Text ,类型就看自己需要了

(也可以在Instance, sim, files 界面右键找对应的导出键)

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

根据要的内容做报告

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

导出后,文件内容

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

导出那个HTML就相对图形化显示

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

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

如果要把使用了排除覆盖测试的文件状态也导出,就可以用这个

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

基本就这样了,结束本次仿真吧~

quit -sim

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 仿真
    +关注

    关注

    50

    文章

    3872

    浏览量

    132161
  • ModelSim
    +关注

    关注

    5

    文章

    172

    浏览量

    46757
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66771

原文标题:Modelsim的仿真之路(代码覆盖率)

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    怎样单独使用modelsim仿真xilinx呢?

    直接在modelsim软件内执行.do文件进行仿真,不通过vivado调用modelsim,vivado仅用于生成IP核。
    的头像 发表于 12-04 18:26 591次阅读
    怎样单独使用<b class='flag-5'>modelsim</b><b class='flag-5'>仿真</b>xilinx呢?

    Modelsim SE中如何指定altera仿真

    Modelsim SE中如何指定altera仿真
    发表于 09-09 17:50 44次下载

    Altera ModelSim 6.5仿真入门教程

    Altera ModelSim 6.5仿真入门教程,需要的可自行下载。 平台 软件:ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition 内容 1 设计流程 使用
    发表于 08-15 15:40 255次下载
    Altera <b class='flag-5'>ModelSim</b> 6.5<b class='flag-5'>仿真</b>入门教程

    MODELSIM仿真(适合xilinx ISE)

    基于Xilinx ISE的modelsim仿真教程
    发表于 11-30 15:52 8次下载

    使用 ModelSim 进行设计仿真详解

    本章为ModelSim的初级教程,读者读完本章可以较为熟练的使用ModelSim进行设计仿真,本章没有也不可能涉及ModelSim的各个方面,要想全面的掌握
    发表于 12-24 18:29 0次下载

    modelsim仿真详细过程(功能仿真与时序仿真

    modelsim仿真详细过程(功能仿真与时序仿真).ModelSim不仅可以用于数字电路系统设计的功能仿
    发表于 12-19 11:14 6.4w次阅读
    <b class='flag-5'>modelsim</b><b class='flag-5'>仿真</b>详细过程(功能<b class='flag-5'>仿真</b>与时序<b class='flag-5'>仿真</b>)

    仿真软件ModelSim及其应用,ModelSim仿真流程

    ModelSim不仅可以用于数字电路系统设计的功能仿真,还可以应用于数字电路系统设计的时序仿真ModelSim的使用中,最基本的步骤包括创建工程、编写源代码、编译、启动
    的头像 发表于 12-29 11:35 9261次阅读

    Modelsim仿真教程Modelsim的基础入门基础教程免费下载

    笔者一直以来都在纠结,自己是否要为仿真编辑相关的教程呢?一般而言,Modelsim等价仿真已经成为大众的常识,但是学习仿真是否学习Modelsim
    发表于 04-30 18:24 23次下载
    <b class='flag-5'>Modelsim</b><b class='flag-5'>仿真</b>教程<b class='flag-5'>Modelsim</b>的基础入门基础教程免费下载

    如何使用Modelsim实现一个工程的仿真

    之前玩过Altera的板子,不不, 现在应该叫intel PSG。在QuartusII13.0上老喜欢用modelsim_ae做仿真,小工程用起来也方便,但是我做IIC配置摄像头的时序仿真时,就显得有些吃力,所以还是用
    发表于 04-10 08:00 1次下载
    如何使用<b class='flag-5'>Modelsim</b>实现一个工程的<b class='flag-5'>仿真</b>

    基于ModelSim使用四ModelSim手动仿真教程

    4.1 新建仿真工程 在开始动手仿真之前,首先,我们需要创建一个文件夹用来放置我们的 ModelSim 仿真工程文件,这里我们就在之前创建的 Quartus 工程目录下的 simula
    的头像 发表于 07-23 11:10 3579次阅读

    如何夹带modelsim仿真波形白底黑线

    Modelsim使用技巧—波形白底黑线设置 在发表期刊或者论文时,我们需要夹带modelsim仿真波形在我们的论文里,在modelsim默认模式下的波形一般是黑底绿线白字,如图1所示
    的头像 发表于 08-26 11:23 3511次阅读

    ModelSim手动仿真教程

    在开始动手仿真之前,首先,我们需要创建一个文件夹用来放置我们的 ModelSim 仿真工程文件,这里我们就在之前创建的 Quartus 工程目录下的 simulation 文件夹中创建
    的头像 发表于 07-11 10:58 4540次阅读

    芯片设计之Modelsim仿真工具

    Modelsim仿真将设计以树状表示,设计中的每一个实体,每一个module、每一个进程(always块、initial块等)在Modelsim仿真中以对象的形式展现。
    的头像 发表于 08-12 15:04 2232次阅读

    Modelsim仿真之路(Memory小技能)

    许久没更新了,间歇性来写写,还是继续Modelsim中关于内存的操作,涉及的文件可在文末自行获取,本篇对应memory的文件夹。
    的头像 发表于 10-24 10:16 906次阅读

    Vivado调用Modelsim仿真

    Modelsim是十分常用的外部仿真工具,在Vivado中也可以调用Modelsim进行仿真,下面将介绍如何对vivado进行配置并调用Models
    的头像 发表于 07-24 09:04 2001次阅读
    Vivado调用<b class='flag-5'>Modelsim</b><b class='flag-5'>仿真</b>