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

    文章

    1043

    浏览量

    85637
  • TCL
    TCL
    +关注

    关注

    11

    文章

    1787

    浏览量

    90208
  • Vivado
    +关注

    关注

    19

    文章

    835

    浏览量

    69146
  • MODELSIM仿真
    +关注

    关注

    0

    文章

    15

    浏览量

    7553

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    cadence画板中遇到的一些问题

    cadence画板中遇到的一些问题,在这里分享给大家,多多指教
    发表于 02-25 16:01 ?0次下载

    关于红外通信的一些问题知识点

    关于红外通信的一些问题知识点。
    发表于 05-05 17:40 ?4次下载

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

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

    基于saber仿真中一些问题的处理方法

    来源:电源网 由于saber仿真要求较高,所以给初学者造成了一些困扰,现在我们交流下一些常见错误的解决方法: 1)设置元件属性时加了单位,这就要抽脸了,初犯可以宽恕。 2)元件名文件名路径名有重复
    的头像 发表于 10-12 01:57 ?1793次阅读

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

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

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

    Vivado调用Questa Sim或ModelSim仿真中存在
    的头像 发表于 09-02 10:12 ?9362次阅读
    <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 仿真器支持混合语言项目文件及混合语言仿真。这有助于您在 VHDL 设计中包含 Verilog 模块,反过来也是样。 本文主要介绍使用
    的头像 发表于 10-28 16:24 ?3509次阅读

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

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

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

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

    关于Vivado Non-project,我们应知道的一些问题

    ,同时也便于工程管理。Non-Project模式编译时间会比Project模式短,因为所有数据存储在内存,直接内存读取数据比硬盘读取要快一些。这里我们探讨下使用Non-Project模式时可能碰到的一些问题
    的头像 发表于 12-15 13:51 ?2654次阅读

    Questa Sim不支持-novopt问题

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

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

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

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

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

    Vivado调用Modelsim仿真

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