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

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

3天内不再提示

用ModelSim搭建可看代码覆盖率的千兆以太网控制器的仿真环境

FPGA技术江湖 来源:FPGA技术江湖 2023-01-13 10:14 次阅读

对于非微电子专业做FPGA的同学们来讲,常常把仿真验证环境的搭建给忽略了,为了追求所谓的“高效”,自己写的代码根本就没怎么仿真验证过,就急急忙忙的上板调试。有的同学说也做过仿真啊,后来一看发现竟然是用Vivado等FPGA综合工具自带的仿真器来简单的仿真了一下,其实这些都还仅仅是停留在模块级的个别功能点仿真。一个通信的FPGA样机或者是一款ASIC芯片的仿真验证,是需要仔细把所有的功能点细分之后串联起来做出来一个兼顾软硬件及各种应用场景的全流程的仿真验证。类似的有各种成熟的方法,如UVM等,但对于初学者而言,其实用ModelSim完全可以搭建出来一个稍微像样的可回归的能够看覆盖率的仿真验证环境的。近期发现很多同学不重视仿真验证环境搭建,认为没必要搭建仿真验证环境,结果没有充分验证的代码上板后发现BUG,费了长达一两周的时间不断的添加追踪信号看波形终于定位到了问题,结果一看是一个逻辑错误,用仿真的方法完全可以复现,如果有仿真环境,发现问题定位问题并解决问题可能就是一个小时就可以搞定的事情,结果因为没有仿真验证环境白白的浪费了大量的时间。

一、把所有代码分为设计代码文件夹hdl和仿真文件夹sim 315b87c2-92e3-11ed-bfe3-dac502259ad0.png 在hdl文件夹下是对应所有的设计代码,本文中选用opencores网站中十百千自适应的MAC控制器作为设计代码。

31687216-92e3-11ed-bfe3-dac502259ad0.png

sim文件夹下存放仿真环境搭建的各种文件。

31778e90-92e3-11ed-bfe3-dac502259ad0.png

testbench下存放最顶层的testbench.v;bfm文件夹下存放以太网phy的简单模型产生以太网数据包的激励,时钟复位产生模块及数据对比模块;filelist文件夹下存放验证环境中所有的.v文件列表文件,为了看覆盖率,一般要把设计代码文件列表和仿真代码文件列表分开成两个不同的文件(windows下自动生成verilog列表文件的源码本公众号之前也分享过,详见如何快速生成Verilog代码文件列表?(内附开源C代码));in_out下就存放每个不同的测试例对应的激励数据包和经过MAC核控制器后出去的数据包;run目录下存放运行的批处理文件和sim的tcl脚本文件;testcase下存在各种不同的测试例。

二、编写脚本

脚本分为run.bat批处理脚本和sim.do两个文件,都在上述run文件夹下,run.bat如下:

31875082-92e3-11ed-bfe3-dac502259ad0.png

其中vsim -c 一行中的-c用来表示是否启动Modelsim的图形界面,有-c就表示启动图形界面,没有就表示不启动。

sim.do就比较简单了,就是完成建ModelSim工程及仿真等动作:

31946ed4-92e3-11ed-bfe3-dac502259ad0.png

需要注意的一点是,上面把仿真代码文件列表和设计代码文件列表分开后,就可以单独的vlog,同时给设计代码添加上看覆盖率的命令。

本文后续内容是某天所做的更改记录,大家可以通过这些记录便能看出搭建改环境的一些较为核心的内容。

1、在data_cmp.v模块增加输入信号testcase_name,将测试例名字引入数据包比较模块,利用testcase_name信号,可以每次测试不同测试例的时候在数据记录文件夹in_out里面可以产生不同的数据记录log文件。

具体截图如下:

319f8724-92e3-11ed-bfe3-dac502259ad0.png

上图中增加了INITIAL_DATA_CMP的task,可以每次在不同的测试例开头对整个芯片进行复位的时候启动该task,即可建立对应该testcase的记录文件。

目前存在的问题是最开始复位的时候,testcase_name还未有实际的测试例名字,导致会产生两个没有用的文件。如下图:

31ad51f6-92e3-11ed-bfe3-dac502259ad0.png

2、在data_cmp.v中增加名为OVER的task,在每个测试例运行结束后可以关闭掉为该测试例新建的文件指针。

OVER任务具体实现如下:

31b9e5ec-92e3-11ed-bfe3-dac502259ad0.png

在不同的testcase末尾调用该task:

31c7c806-92e3-11ed-bfe3-dac502259ad0.png

3、手动将文件列表文件rtl.f拆分成设计代码文件列表hdl_filelist.v和仿真代码文件列表sim_filelist.v。

31d33a1a-92e3-11ed-bfe3-dac502259ad0.png

并修改运行脚本,使得运行结束后可以看到设计代码文件的覆盖率。

31dff91c-92e3-11ed-bfe3-dac502259ad0.png

修改批处理文件,使用modelsim图形界面的方式

31f1875e-92e3-11ed-bfe3-dac502259ad0.png

发现第二个测试例中间的数据包计数未从0开始,修改代码

31fed454-92e3-11ed-bfe3-dac502259ad0.png

在所有testcase中增加一行代码,让data_cnt和i都从0开始。

320df1d2-92e3-11ed-bfe3-dac502259ad0.png

修改后就能每个testcase都从0开始运行:

321c1b54-92e3-11ed-bfe3-dac502259ad0.png

此时在modelsim图形界面下也能看到设计代码对应的覆盖率情况:

322aa976-92e3-11ed-bfe3-dac502259ad0.png

双击某个文件就能打开对应代码是否被验证到的情况:

323983e2-92e3-11ed-bfe3-dac502259ad0.png

目前只是验证了百兆模式下100个随机帧和千兆模式下100个随机帧,大家可以在上面的基础上不断的去增加测试例。后续内容就需要大家不断的增加测试例来完成对所有代码的全覆盖仿真,并且在此过程中也能够对MAC核的各种功能更加的熟悉。

审核编辑 :李倩

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

    关注

    112

    文章

    16385

    浏览量

    178377
  • 以太网
    +关注

    关注

    40

    文章

    5432

    浏览量

    171886
  • 仿真
    +关注

    关注

    50

    文章

    4094

    浏览量

    133687

原文标题:用ModelSim搭建可看代码覆盖率的千兆以太网控制器的仿真环境

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

收藏 人收藏

    评论

    相关推荐

    TOSUN 车载以太网仿真测试解决方案

    TOSUN车载以太网仿真测试解决方案随着自动驾驶、车联网和智能化系统的广泛应用,车载电子组件和传感的数量与复杂性都在持续增加,为了满足这些更为复杂性的需求,车载以太网作为一种新型车载
    的头像 发表于 12-07 01:07 460次阅读
    TOSUN 车载<b class='flag-5'>以太网</b><b class='flag-5'>仿真</b>测试解决方案

    TMS320C645x DSP上千兆以太网媒体访问控制器的软件操作

    电子发烧友网站提供《TMS320C645x DSP上千兆以太网媒体访问控制器的软件操作.pdf》资料免费下载
    发表于 10-16 10:21 0次下载
    TMS320C645x DSP上<b class='flag-5'>千兆</b>位<b class='flag-5'>以太网</b>媒体访问<b class='flag-5'>控制器</b>的软件操作

    synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?

    公司某个项目用到了这个DW:DW_fpv_div,但是scan跑完,这个模块覆盖率只有60%多,现在要我TMAX软件,通过功能去覆盖,我看了下rpt报的faults点,尝试去写了几个特殊值去做除法
    发表于 10-15 18:38

    使用C2000 EtherCAT从站控制器的SMI进行以太网PHY配置

    电子发烧友网站提供《使用C2000 EtherCAT从站控制器的SMI进行以太网PHY配置.pdf》资料免费下载
    发表于 09-07 10:37 0次下载
    使用C2000 EtherCAT从站<b class='flag-5'>控制器</b>的SMI进行<b class='flag-5'>以太网</b>PHY配置

    利用TSN以太网特性改善工业以太网控制器的时序

    电子发烧友网站提供《利用TSN以太网特性改善工业以太网控制器的时序.pdf》资料免费下载
    发表于 08-30 10:53 0次下载
    利用TSN<b class='flag-5'>以太网</b>特性改善工业<b class='flag-5'>以太网</b><b class='flag-5'>控制器</b>的时序

    以太网端口和千兆端口的区别

    以太网端口和千兆端口在多个方面存在显著的区别,这些区别主要体现在速度、应用范围、技术规格以及网络性能等方面。
    的头像 发表于 08-07 15:42 1336次阅读

    MSP432E401Y Simplelink™ 以太网控制器数据表

    电子发烧友网站提供《MSP432E401Y Simplelink™ 以太网控制器数据表.pdf》资料免费下载
    发表于 08-05 10:05 0次下载
    MSP432E401Y Simplelink™ <b class='flag-5'>以太网</b>微<b class='flag-5'>控制器</b>数据表

    MSP432E401Y Simplelink™ 以太网控制器数据表

    电子发烧友网站提供《MSP432E401Y Simplelink™ 以太网控制器数据表.pdf》资料免费下载
    发表于 08-05 10:04 0次下载
    MSP432E401Y Simplelink™ <b class='flag-5'>以太网</b>微<b class='flag-5'>控制器</b>数据表

    MX60千兆以太网非接触式连接解决方案

    MX60千兆以太网非接触式连接解决方案是无线收发,可提供高速固态无线连接,以取代传统的机械连接。为了简化设计,MX60千兆
    发表于 07-17 16:15 272次阅读

    DM9000单芯片快速以太网MAC控制器英文手册

    电子发烧友网站提供《DM9000单芯片快速以太网MAC控制器英文手册.pdf》资料免费下载
    发表于 07-16 17:30 0次下载

    单元测试工具TESSY 新版本亮点速览:提供测试驾驶舱视图、超级覆盖率代码访问分析、增强覆盖率审查

    各种测试对象和方法的所有覆盖率测量结果,并记录在新的测试总结报告中。 了解更多TESSY新版本功能详情或申请免费试用,欢迎咨询TESSY中国授权分销商——龙智。 新版本功能亮点速览: 1、超级覆盖率 逐行评估源代码。 基于标准
    的头像 发表于 07-08 16:20 450次阅读
    单元测试工具TESSY 新版本亮点速览:提供测试驾驶舱视图、超级<b class='flag-5'>覆盖率</b>、<b class='flag-5'>代码</b>访问分析、增强<b class='flag-5'>覆盖率</b>审查

    TNETE2201B 1.25千兆以太网收发数据表

    电子发烧友网站提供《TNETE2201B 1.25千兆以太网收发数据表.pdf》资料免费下载
    发表于 07-03 11:42 0次下载
    TNETE2201B 1.25<b class='flag-5'>千兆</b><b class='flag-5'>以太网</b>收发<b class='flag-5'>器</b>数据表

    工业以太网和普通以太网区别在哪

    的应用环境和需求不同。普通以太网主要应用于办公和家庭网络环境,而工业以太网则是为满足工业自动化和控制系统的需求而设计的。 1.1
    的头像 发表于 06-11 10:30 2784次阅读

    智嵌物联100/1000BASE-T1千兆车载以太网交换机

    转换、车载以太网交换机来使用。 功能特点: DC9~36V宽压供电设计,支持12V/24V的供电系统。 5个千兆车载以太网接口
    的头像 发表于 06-06 09:29 1175次阅读
    智嵌物联100/1000BASE-T1<b class='flag-5'>千兆</b>车载<b class='flag-5'>以太网</b>交换机

    如何使用Vitis自带的LWIP模板进行PS端千兆以太网TCP通信?

    开发板有两路千兆以太网,通过RGMII接口连接,本实验演示如何使用Vitis自带的LWIP模板进行PS端千兆以太网TCP通信。
    的头像 发表于 04-28 10:44 3509次阅读
    如何使用Vitis自带的LWIP模板进行PS端<b class='flag-5'>千兆</b><b class='flag-5'>以太网</b>TCP通信?