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核的各种功能更加的熟悉。

审核编辑 :李倩

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

    关注

    114

    文章

    17870

    浏览量

    195065
  • 以太网
    +关注

    关注

    41

    文章

    6177

    浏览量

    181530
  • 仿真
    +关注

    关注

    55

    文章

    4534

    浏览量

    138654

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    芯片测试覆盖率99%就够了吗?给DFT设计提个醒

    。模拟故障模型复杂,测试项(如增益、带宽、THD)的通过/失败标准是一个范围。覆盖率难以像数字电路那样量化。常用方法是基于故障仿真,注入典型工艺偏差和缺陷模型(如电阻开路、电容短路),评估现有测试项能否
    发表于 02-06 11:06

    DP83816:10/100 Mb/s集成PCI以太网控制器的深度解析

    DP83816:10/100 Mb/s集成PCI以太网控制器的深度解析 在当今的网络通信领域,以太网控制器扮演着至关重要的角色。DP83816作为一款单芯片10/100 Mb/s
    的头像 发表于 01-31 15:20 861次阅读

    探索Microchip LAN9211:高性能以太网控制器的卓越之选

    探索Microchip LAN9211:高性能以太网控制器的卓越之选 在嵌入式应用领域,一款性能强劲、功能丰富且易于集成的以太网控制器至关重要。Microchip LAN9211就是这
    的头像 发表于 01-22 16:50 696次阅读

    TNETE2201B 1.25 - 千兆以太网收发:性能与应用解析

    TNETE2201B 1.25 - 千兆以太网收发:性能与应用解析 在高速数据传输的领域中,以太网收发扮演着至关重要的角色。今天我们要深
    的头像 发表于 12-31 17:30 1651次阅读

    KSZ8851SNL/SNLI:单端口以太网控制器的卓越之选

    KSZ8851SNL/SNLI:单端口以太网控制器的卓越之选 在当今数字化时代,以太网控制器在各种电子设备中扮演着至关重要的角色。KSZ8851SNL/SNLI 作为一款单端口
    的头像 发表于 12-28 14:45 827次阅读

    深度剖析TLK1211RCP千兆以太网收发:设计应用指南

    深度剖析TLK1211RCP千兆以太网收发:设计应用指南 在现代高速数据传输领域,以太网收发扮演着至关重要的角色。今天我们要深入探讨的是
    的头像 发表于 12-27 11:05 797次阅读

    解析 LAN9215i:16 位非 PCI 10/100 以太网控制器的卓越之选

    解析 LAN9215i:16 位非 PCI 10/100 以太网控制器的卓越之选 在嵌入式应用领域,一款性能出色、灵活性高且成本可控的以太网控制器至关重要。今天,我们就来深入剖析 Mi
    的头像 发表于 12-25 16:50 566次阅读

    SM91604L LAN变压:助力千兆以太网设计

    SM91604L LAN变压:助力千兆以太网设计 在电子工程师的日常工作中,LAN变压是网络设备设计里的关键组件。今天,我们就来深入探讨一下BOURNS的SM91604L LAN变
    的头像 发表于 12-23 14:55 510次阅读

    KSZ8851SNL/SNLI单端口以太网控制器:设计与应用全解析

    KSZ8851SNL/SNLI单端口以太网控制器:设计与应用全解析 在当今数字化的时代,以太网通信在各种电子设备中扮演着至关重要的角色。KSZ8851SNL/SNLI作为一款单端口以太网
    的头像 发表于 12-23 14:45 689次阅读

    DP83561-SP:高辐射环境下的千兆以太网PHY解决方案

    DP83561-SP:高辐射环境下的千兆以太网PHY解决方案 在高辐射的航天环境中,电子设备的可靠性和稳定性面临着巨大的挑战。德州仪器(TI)的DP83561-SP
    的头像 发表于 12-17 10:55 561次阅读

    LAN8814 4端口千兆以太网收发数据手册总结

    Microchip Technology LAN8814 4端口千兆以太网收发是低功耗、四端口、三速(10BASE-T/100BASE-TX/1000BASE-T)以太网物理层收发
    的头像 发表于 10-14 10:50 1214次阅读
    LAN8814 4端口<b class='flag-5'>千兆</b><b class='flag-5'>以太网</b>收发<b class='flag-5'>器</b>数据手册总结

    LAN8831千兆以太网收发技术解析与应用指南

    Microchip Technology LAN8831千兆以太网收发(带GMII/MII/RGMII )是完全集成的三速 (10BASE-T/100BASE-TX/1000BASE-T
    的头像 发表于 10-13 11:51 1211次阅读
    LAN8831<b class='flag-5'>千兆</b><b class='flag-5'>以太网</b>收发<b class='flag-5'>器</b>技术解析与应用指南

    基于LAN8830千兆以太网收发的工业应用技术解析

    Microchip Technology LAN8830千兆以太网收发(具有RGMII功能)是集成式三速 (10Base-T/100Base-TX/1000Base-T) 以太网物理
    的头像 发表于 10-13 11:43 951次阅读
    基于LAN8830<b class='flag-5'>千兆</b><b class='flag-5'>以太网</b>收发<b class='flag-5'>器</b>的工业应用技术解析

    LAN8804四端口千兆以太网收发技术解析

    Microchip Technology LAN8804 4端口千兆以太网收发是低功耗、四端口、三速(10BASE-T/100BASE-TX/1000BASE-T)以太网物理层收发
    的头像 发表于 10-11 11:47 1816次阅读
    LAN8804四端口<b class='flag-5'>千兆</b><b class='flag-5'>以太网</b>收发<b class='flag-5'>器</b>技术解析

    Microchip LAN9211-ABZJ 集成 10/100 以太网 PHY的以太网控制器

    Microchip LAN9211-ABZJ 集成 10/100 以太网 PHY的以太网控制器
    的头像 发表于 06-04 14:56 1300次阅读
    Microchip LAN9211-ABZJ 集成 10/100 <b class='flag-5'>以太网</b> PHY的<b class='flag-5'>以太网</b><b class='flag-5'>控制器</b>