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

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

3天内不再提示

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

FPGA之家 来源:网络交换FPGA 2023-05-08 11:19 次阅读

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所示工程为例,

82f11584-ec2f-11ed-90ce-dac502259ad0.jpg

图1 vivado示例工程

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

8319ad82-ec2f-11ed-90ce-dac502259ad0.jpg

图2 QuestaSim仿真波形

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

8329584a-ec2f-11ed-90ce-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)

8348360c-ec2f-11ed-90ce-dac502259ad0.png

图4 QuestaSim仿真波形

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

8359db32-ec2f-11ed-90ce-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
  • TCL
    TCL
    +关注

    关注

    10

    文章

    1661

    浏览量

    87936
  • Vivado
    +关注

    关注

    18

    文章

    790

    浏览量

    65105
  • MODELSIM仿真
    +关注

    关注

    0

    文章

    15

    浏览量

    7239

原文标题:[源码]Vivado调用Questa Sim仿真小技巧

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    在AD10 仿真中出现could not find sim model 是怎么回事啊?

    在AD10 仿真中出现could not find sim model 是怎么回事啊?求详细解决方法。
    发表于 12-21 21:13

    时序仿真中怎么查看内部信号的变化

    quartus中调用modelsim进行gate level仿真,但是在sim窗口中的信号变得很怪,不能像rtl仿真中一样往wave窗口中加信号
    发表于 08-27 16:14

    如何初始化Questa sim env var LM_LICENSE_FILE

    刚安装在Linux上的Mentor Graphics上的Questa sim(Prime),但是当我们运行vsim时出现LM_LICENSE_FILE未设置的错误。无法找到有关如何初始化环境的脚本或
    发表于 11-27 14:26

    MVC框架所存在一些问题和解决方案

    本文将重点介绍当前供软件开发人员和独立软件供应商使用的MVC框架所存在一些问题,然后利用内存内应用程序引擎Starcounter提供了解决方案。为了尽可能地真实,几个源于实际项目的例子使用了
    发表于 05-24 07:32

    仿真执行自定义custom指令时,只能执行软件程序中所调用条是为什么?

    学识渊博的人你好,我们在编写软件程序的时候出现的一些问题。在仿真执行自定义custom指令时,只能执行软件程序中所调用条,而后在仿真中
    发表于 08-16 07:07

    基于linux系统实现的vivado调用VCS仿真教程

    在linux系统上实现vivado调用VCS仿真教程 作用:vivado调用VCS仿真可以加快工
    的头像 发表于 07-05 03:30 1.1w次阅读
    基于linux系统实现的<b class='flag-5'>vivado</b><b class='flag-5'>调用</b>VCS<b class='flag-5'>仿真</b>教程

    VCS独立仿真Vivado IP核的一些方法总结

    前年,发表了一篇文章《VCS独立仿真Vivado IP核的一些方法总结》(链接在参考资料1),里面简单讲述了使用VCS仿真Vivado IP
    的头像 发表于 03-22 10:31 3511次阅读

    解析Vivado如何调用DDS的IP进行仿真

    本次使用Vivado调用DDS的IP进行仿真,并尝试多种配置方式的区别,设计单通道信号发生器(固定频率)、Verilog查表法实现DDS、AM调制解调、DSB调制解调、可编程控制的信号发生器(调频调相)。
    的头像 发表于 04-27 16:33 5706次阅读
    解析<b class='flag-5'>Vivado</b>如何<b class='flag-5'>调用</b>DDS的IP进行<b class='flag-5'>仿真</b>

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

    Vivado调用Questa Sim或ModelSim仿真中存在
    的头像 发表于 09-02 10:12 7390次阅读
    <b class='flag-5'>Vivado</b><b class='flag-5'>调用</b><b class='flag-5'>Questa</b> <b class='flag-5'>Sim</b>或ModelSim<b class='flag-5'>仿真</b>小技巧

    Vivado仿真器进行混合语言仿真一些要点

    本文主要介绍使用 Vivado 仿真器进行混合语言仿真一些要点。
    发表于 08-01 09:25 1044次阅读

    使用VCS仿真Vivado IP核时遇到的问题及解决方案

    前年,发表了一篇文章《VCS独立仿真Vivado IP核的一些方法总结》(链接在参考资料1),里面简单讲述了使用VCS仿真Vivado IP
    的头像 发表于 08-29 14:41 1619次阅读

    Questa Sim不支持-novopt问题

    仿真中为防止信号被优化,会在modelsim仿真的do文件中使用vsim -novopt项,但是Questa Sim已经不支持,并会提示以下信息。所以要观察信号第一步先要解决该问题。
    的头像 发表于 12-23 10:34 3881次阅读
    <b class='flag-5'>Questa</b> <b class='flag-5'>Sim</b>不支持-novopt问题

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

    首先说明一下Modelsim与Questa Sim都可以与Vivado联调,也比较相似,但是Questa Sim比Modelsim功能更加广
    的头像 发表于 02-10 16:28 2577次阅读

    使用Vivado调用questasim仿真报错的原因及其解决办法

    有一天使用Vivado调用questasim(modelsim估计也一样),仿真报错
    的头像 发表于 05-08 17:12 1897次阅读

    Vivado调用Modelsim仿真

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