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

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

3天内不再提示

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

FPGA之家 来源:网络交换FPGA 作者:董勐 2021-09-02 10:12 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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方可。

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

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

b72ff162-0b49-11ec-8fb8-12bb97331649.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文件,其对应的源代码如下:

set filename [glob *_compile.do]

set content [open $filename r+]

set row 0while {![eof $content]} {

incr row

gets $content line

set list($row) $line

}

close $contentset filename2 “compile.do”;

set content [open $filename2 w+]

for {set i 1} {$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文件,保证仿真器不退出,其对应的源代码如下:

set filename compile.do

do $filenameset filename [glob *_simulate.do]

do $filenamelog -r /*

restart -force

run 1ms

例程

在使用该do文件之前,需要首先通过vivado调用modelsim/ questasim,然后将do文件拷贝到工程对应的behave文件夹下。仍以工程为例,当修改了代码内部分逻辑后,在QuestaSim的transcrip界面,输入命令do auto_update_sim.do即可自动重新编译、仿真,结果如图4所示(默认仿真时间设置为1ms)

b73a161a-0b49-11ec-8fb8-12bb97331649.png

图4 QuestaSim仿真波形

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

b74a2398-0b49-11ec-8fb8-12bb97331649.jpg

图5 QuestaSim仿真波形

完整源码

set filename [glob *_compile.do]

set content [open $filename r+]

set row 0while {![eof $content]} {

incr row

gets $content line

set list($row) $line

}

close $contentset filename2 “compile.do”;

set content [open $filename2 w+]

for {set i 1} {$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

编辑:jq

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

    关注

    5

    文章

    1849

    浏览量

    154892
  • 仿真器
    +关注

    关注

    14

    文章

    1048

    浏览量

    86746
  • 代码
    +关注

    关注

    30

    文章

    4940

    浏览量

    73116
  • Vivado
    +关注

    关注

    19

    文章

    846

    浏览量

    70454

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【产品介绍】Questa One Sim软件

    优势与平台支持优势行业领先的高性能多语言仿真器用于可测性设计(DFT)向量验证的最快仿真器高性能、高容量的集成调试环境覆盖率加速功能,助力更快实现覆盖率收敛智能编译(SmartCompile)和多核
    的头像 发表于 11-17 10:39 175次阅读
    【产品介绍】<b class='flag-5'>Questa</b> One <b class='flag-5'>Sim</b>软件

    【产品介绍】Modelsim:HDL语言仿真软件

    概述ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真仿真
    的头像 发表于 11-13 11:41 193次阅读
    【产品介绍】<b class='flag-5'>Modelsim</b>:HDL语言<b class='flag-5'>仿真</b>软件

    利用 NucleiStudio IDE 和 vivado 进行软硬件联合仿真

    本文利用NucleiStudio IDE 和 vivado 对 NICE demo协处理器进行软硬件联合仿真。 1. 下载demo_nice例程:https://github.com
    发表于 11-05 13:56

    Hbirdv2在vivado2018.3上的仿真工作

    一、队伍介绍 本篇为蜂鸟E203系列分享第一篇。本篇介绍的内容是Hbirdv2在vivado2018.3上的仿真工作。 二、前言 仿真前,我们首先需要获得仿真需要的.verilo
    发表于 10-31 08:43

    Vivado仿真之后没有出现仿真结果的解决方法

    ;Run Behavioral Simulation之后,会出现如下图界面,此时,在Tcl Console中并没有出现仿真结果。 没有出现仿真结果的原因是没有给Vivado时间进行仿真
    发表于 10-31 06:24

    利用vivado实现对e200_opensource 蜂鸟E203一代的仿真

    最后,点击run simulation进行 行为级仿真 得到最后的仿真结果如图所示 本文参考论坛内另外两篇文章: [1] 在Windows环境下用Vivado调试E203作者:leon [2
    发表于 10-31 06:14

    VIVADO中对NICE进行波形仿真的小问题的解决

    分别如下图 可以看到,输出运算结果的pritnf函数被#ifdef所定义,所以我们如果想在VIVADO的控制台看到输出结果,要先在main.c中定义DEBUG_INFO,如下图 这样,将编译后生成的.verilog文件再用VIVADO读入
    发表于 10-27 06:41

    vivado上进行benchmark跑分(微架构优化之前)

    已有的vivado工程中将simulation文件加入sim_source: 将top.v加入,并设置到顶层: 修改tb_top.v文件(https://www.rvmcu.com
    发表于 10-24 09:39

    vcs和vivado联合仿真

    我们在做参赛课题的过程中发现,上FPGA开发板跑系统时,有时需要添加vivado的ip核。但是vivado仿真比较慢,vcs也不能直接对添加了vivado ip核的soc系统进行
    发表于 10-24 07:28

    Nucleistudio+Vivado协同仿真教程

    编译完成后,我们会在工程目录下发现生成了.verilog文件,此即为我们仿真需用到的文件,可以将改文件复制保存在tb目录下 联合仿真 在我们前面创建的Vivado工程中添加仿真
    发表于 10-23 06:22

    如何在Vivado仿真蜂鸟SOC,仿真NucleiStudio编译好的程序

    如标题所示,我们分享如何在Vivado仿真蜂鸟SOC,仿真NucleiStudio编译好的程序 具体步骤 1. 将蜂鸟soc移植到Vivado 只要将端口映射好,注意配置好时钟和
    发表于 10-21 11:08

    vivado仿真时GSR信号的影响

    利用vivado进行设计xilinx FPGA时,写完设计代码和仿真代码后,点击run simulation(启动modelsim进行仿真)。
    的头像 发表于 08-30 14:22 1011次阅读
    <b class='flag-5'>vivado</b><b class='flag-5'>仿真</b>时GSR信号的影响

    西门子推出Questa One智能验证解决方案

    西门子数字化工业软件宣布推出 Questa One 智能验证软件产品组合,以人工智能(AI)技术赋能连接性、数据驱动方法和可扩展性,突破集成电路 (IC) 验证流程限制,助力工程团队有效提高生产效率。
    的头像 发表于 05-13 18:19 1167次阅读

    Vivado调用MIG产生DDR3的问题解析

    下面是调用的DDR3模块的,模块的倒数第二行是,模块的时钟输入,时钟源来自PLL产生的系统时钟的倍频。
    的头像 发表于 05-03 10:21 1214次阅读
    在<b class='flag-5'>Vivado</b><b class='flag-5'>调用</b>MIG产生DDR3的问题解析

    Vivado Design Suite用户指南:逻辑仿真

    电子发烧友网站提供《Vivado Design Suite用户指南:逻辑仿真.pdf》资料免费下载
    发表于 01-15 15:25 0次下载
    <b class='flag-5'>Vivado</b> Design Suite用户指南:逻辑<b class='flag-5'>仿真</b>