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

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

3天内不再提示

Vivado调用第三方仿真软件查看波形的过程中存在的一些问题

FPGA技术江湖 来源:网络交换FPGA 2023-02-10 16:28 次阅读

Vivado调用Questa Sim或ModelSim仿真中存在的一些自动化问题的解决方案。

Vivado调用Questa Sim仿真中存在的一些问题

首先说明一下Modelsim与Questa Sim都可以与Vivado联调,也比较相似,但是Questa Sim比Modelsim功能更加广泛,对于System Verilog的语法支持更加完善,本文以Questa Sim为例说明一下Vivado调用第三方仿真软件查看波形的过程中存在的一些问题。

1、添加新的观测信号需要重新仿真

Vivado直接调用Modelsim/QuestaSim进行仿真时,波形文件里默认只会出现仿真最顶层中包含的信号,若此时将仿真运行一段时间后,想要查看其他模块信号波形时,需要重新仿真或者运行do XXX_simulate.do方可。 以图1所示工程为例,

2907441a-a91a-11ed-bfe3-dac502259ad0.jpg

图1 vivado示例工程

在这个工程中,我们调用Questa Sim进行仿真,可以看到顶层模块会自动跑100ns,如图2所示。

2922d414-a91a-11ed-bfe3-dac502259ad0.jpg

图2 QuestaSim仿真波形

此时,我们若想查看l_ethernet_0_pkt_gen_mon这个模块的波形时,直接进入波形界面进行添加,结果如图3所示。

293f6dae-a91a-11ed-bfe3-dac502259ad0.jpg

图3 QuestaSim仿真波形

从图3中可以看到,当模块的信号被添加进来后,已经运行过的仿真时间内,新加入的信号没有仿真结果。

2、修改逻辑代码后,需要重新调用仿真器

在代码调试过程中,修改部分逻辑代码后(不包括IP核),如果想要查看修改后工程的仿真结果,需要关闭当前的仿真器,从vivado中重新调用方可。

其原因是vivado在生成XXX_compile.do文件时,会在其末尾自动添加“quit -force”语句,而更改了相应的代码文件后,我们需要执行“do XXX_compile.do”命令重新编码整个库,然而在运行此文件时,当前的仿真器会被强制退出。

解决方案

为了解决上述问题,同时更加方便使用,本文使用TCL语言,编写了一个较为方便的do文件,其可以实现如下功能:

1、对XXX_compile.do自动修改

对XXX_compile.do自动修改,去除其末尾的“quit -force”,并生成新的compile.do文件,其对应的源代码如下:

setfilename[glob*_compile.do]
setcontent[open$filenamer+]
setrow0
while{![eof$content]}{
incrrow
gets$contentline
setlist($row)$line
}
close$content
setfilename2"compile.do";
setcontent[open$filename2w+]
for{seti1}{$i<= $row} {incr i} {
    if {![string match "quit -force" $list($i)]} {
        puts $content $list($i)
    }    
};
close $content

2、使用“log -r /*”命令

该命令可以让modelsim/Questa Sim在进行仿真中,对所有信号同步进行仿真,从而解决新加入的观测信号没有仿真结果的问题;

3、保证仿真器不退出

当修改工程中的逻辑代码(不含IP核)后,只需要运行该do文件,其自动进行编译和仿真,且使用修改后的compile.do文件,保证仿真器不退出,其对应的源代码如下:

setfilenamecompile.do
do$filename
setfilename[glob*_simulate.do]
do$filename
log-r/*
restart-force
run1ms

例程

在使用该do文件之前,需要首先通过vivado调用modelsim/ questasim,然后将do文件拷贝到工程对应的behave文件夹下。

仍以图1所示工程为例,当修改了代码内部分逻辑后,在QuestaSim的transcrip界面,输入命令do auto_update_sim.do即可自动重新编译、仿真,结果如图4所示(默认仿真时间设置为1ms)

29857fec-a91a-11ed-bfe3-dac502259ad0.png

图4 QuestaSim仿真波形

添加了l_ethernet_0_pkt_gen_mon这个模块,可以发现仿真过的时间内同样有仿真结果,如图5所示。

2998bbfc-a91a-11ed-bfe3-dac502259ad0.jpg

图5 QuestaSim仿真波形

完整源码

setfilename[glob*_compile.do]
setcontent[open$filenamer+]
setrow0
while{![eof$content]}{
incrrow
gets$contentline
setlist($row)$line
}
close$content
setfilename2"compile.do";
setcontent[open$filename2w+]
for{seti1}{$i<= $row} {incr i} {
    if {![string match "quit -force" $list($i)]} {
        puts $content $list($i)
    }    
};
close $content
set filename compile.do
do $filename
set filename [glob *_simulate.do]
do $filename
log -r /*
restart –force
run 1ms





审核编辑:刘清

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

    关注

    14

    文章

    988

    浏览量

    82997
  • questasim
    +关注

    关注

    0

    文章

    5

    浏览量

    7436
  • Vivado
    +关注

    关注

    18

    文章

    790

    浏览量

    65105
  • MODELSIM仿真
    +关注

    关注

    0

    文章

    15

    浏览量

    7238

原文标题:Vivado调用Questa Sim仿真小技巧

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

收藏 人收藏

    评论

    相关推荐

    如何打开第三方软件

    请问大神们 谁知道如何在Labview 打开第三方软件,我现在想打开工程后 自动打开USB视频采集卡,然后就直接显示出采集卡采集到的图像了请问如何打开在这先谢过了
    发表于 09-11 16:26

    求高手讨教!求指点!求鄙视!各种求!调用第三方软件

    各位大神,目前在做个项目其中有个功能,要求我对加载过来的TCL脚本 进行编译查看脚本是否正确! 我想调用第三方软件(ActiveTCL)编
    发表于 04-25 10:44

    如何把第三方库加到PROTEUS

    新手求教,弱弱的问下,下了第三方库,说是要先安装,再添加路径,可是我下来的第三方库没有看到安装文件啊。还望指教如何添加!
    发表于 06-15 22:32

    如何在LabVIEW嵌入第三方软件界面

    如何把第三方软件的界面嵌入到labview,并且能够在LabVIEW的前面板第三方软件进行
    发表于 04-27 23:06

    labview 通过API调用第三方软件 无法通过ID获取窗口元素的句柄

    labview 通过API调用第三方软件无法通过ID获取窗口元素的句柄
    发表于 12-11 17:41

    第三方dll调用问题!!!

    第三方dll,没有.h,labview怎么实现调用,dll可以用VS打开,类库说明也有
    发表于 05-11 09:14

    LabVIEW与第三方软件交互问题

    现在做软件,就是通过LabVIEW去与第三方软件进行交互操作!已经通过百度找到了利用user32.dll调用FindWindowA与Po
    发表于 12-26 17:13

    国内知名第三方检测认证机构排名

    的建立和政策的完善、人们对检测行业的认识加深以及检测机构自身健康发展等多重因素推动下,第三方检测机构更具有了市场运作潜力和上升的空间。然而我国国内的检测机构和国外的检测还是存在定的差距,我国的
    发表于 07-19 16:57

    关于LabVIEW调用第三方exe,如何去控制第三方exe按钮的问题

    我想调用第三方的exe,但并没有给出任何接口,就单单个exe程序,通过查资料得出可以用window自带的user32.dll可以控制第三方软件
    发表于 08-12 16:37

    buildroot如何添加支持第三方软件

    iMX6ULL终结者Buildoot文件系统构建篇buildroot添加支持第三方软件
    发表于 04-02 06:06

    头文件包含第三方文件

    macrocmake如果源文件(例如 CPP)包含第三方头文件,但是头文件(例如 hpp)不包含该第三方文件头,采用 PRIVATE。如果源文件和头文件中都包含该
    发表于 08-18 08:10

    labview 控制第三方软件界面或控件的方式

    labview 控制第三方软件界面或控件等,如操控烧录软件等除了模拟鼠标和键盘来实现之后,还可以考虑另外种方式,使用窗口句柄来直接操作程序如下面图片实例,操作串口助手,修改串口和波特
    发表于 11-16 16:00

    鸿蒙开源第三方组件资料合集

    、鸿蒙开源第三方件组件——轮播组件BannerBanner般位于APP的顶部或中部,通过循环播放和手动滑动的方式对一些图片进行展示,其底部通常放置行圆圈状的指示器,表示当前正在展示
    发表于 03-23 09:53

    在Framework下调用第三方的C++算法库

    我这里是JNI调用个语音处理库,这些库厂商会以非开源的so库文件形式提供。JNI在编译时需要依赖它,所以需要先预编译安装第三方库。解决方法:在同个Android.mk
    发表于 11-24 17:37

    Vivado调用Questa Sim或ModelSim仿真小技巧

    调用第三方仿真软件查看波形过程中
    的头像 发表于 09-02 10:12 7390次阅读
    <b class='flag-5'>Vivado</b><b class='flag-5'>调用</b>Questa Sim或ModelSim<b class='flag-5'>仿真</b>小技巧