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

    文章

    1397

    浏览量

    148262
  • 仿真器
    +关注

    关注

    14

    文章

    986

    浏览量

    82969
  • 代码
    +关注

    关注

    30

    文章

    4552

    浏览量

    66637
  • Vivado
    +关注

    关注

    18

    文章

    787

    浏览量

    65084

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

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

收藏 人收藏

    评论

    相关推荐

    最实用的Modelsim使用教程

    过程又有两种方法,一种是通过Quartus调用Modelsim,Quartus在编译之后自动把仿真需要的.vo文件以及需要的仿真库加到modelsi
    发表于 03-19 16:40

    fpga仿真文件怎么写

    首先,你需要选择一个FPGA仿真软件,如ModelSimVivado、Quartus II等。这些软件都提供了强大的仿真功能,可以帮助你验证FPGA设计的正确性。
    的头像 发表于 03-15 14:00 166次阅读

    如何使用 ModelSim 进行设计仿真

    ModelSim为HDL仿真工具,我们可以利用该软件来实现对所设计的VHDL或Verilog程 序进行仿真,支持IEEE常见的各种硬件描述语言标准。可以进行两种语言的混合仿真,但 推荐
    发表于 01-14 09:47 0次下载

    怎样单独使用modelsim仿真xilinx呢?

    直接在modelsim软件内执行.do文件进行仿真,不通过vivado调用modelsimvivado
    的头像 发表于 12-04 18:26 565次阅读
    怎样单独使用<b class='flag-5'>modelsim</b><b class='flag-5'>仿真</b>xilinx呢?

    Vivado2018版本中Modelsim的配置

    Vivado自带的仿真工具在一些基本功能的仿真测试时是可以满足的,但如果你的工程较为庞大,那么自带的仿真工具将有些勉强,除了在数据输出方面的卡顿,在
    的头像 发表于 11-08 14:47 679次阅读
    <b class='flag-5'>Vivado</b>2018版本中<b class='flag-5'>Modelsim</b>的配置

    如何用Python实现VivadoModelSim仿真自动化?

    我们在Windows系统下使用Vivado的默认设置调用第三方仿真器比如ModelSim进行仿真时,一开始
    的头像 发表于 09-13 09:23 749次阅读
    如何用Python实现<b class='flag-5'>Vivado</b>和<b class='flag-5'>ModelSim</b><b class='flag-5'>仿真</b>自动化?

    vivado仿真器改成modelsim仿真modelsim的transcript没法打印出e203实时运行的信息怎么解决?

    原来仿真使用的是vivado simulator,最近将vivado仿真器改成modelsim,发现仿
    发表于 08-11 09:47

    使用vivado仿真仿真时,modelsim的transcript界面无法输出C程序的printf语句是为什么?

    我现在将vivadomodelsim做了联合仿真,用来仿真蜂鸟e203协处理器扩展实现的功能。现在的问题是:使用vivado
    发表于 08-11 06:44

    vivado软件和modelsim软件的安装方法

    本文详细介绍了vivado软件和modelsim软件的安装,以及vivado中配置modelsim仿真设置,每一步都加文字说明和图片。
    的头像 发表于 08-07 15:48 1669次阅读
    <b class='flag-5'>vivado</b>软件和<b class='flag-5'>modelsim</b>软件的安装方法

    Vivado调用Modelsim仿真

    Modelsim是十分常用的外部仿真工具,在Vivado中也可以调用Modelsim进行仿真,下
    的头像 发表于 07-24 09:04 1951次阅读
    <b class='flag-5'>Vivado</b><b class='flag-5'>调用</b><b class='flag-5'>Modelsim</b><b class='flag-5'>仿真</b>

    modelsim自动化仿真实验 利用脚本实现modelsim自动化仿真

    大家好!今天给大家带来的是modelsim自动化仿真程序。我们在代码编写完成时,通常都需要先进行仿真,然后上板实验。但是如果我们每次仿真都要去新建一个工程,添加.v文件以及testbe
    的头像 发表于 07-19 10:10 1048次阅读
    <b class='flag-5'>modelsim</b>自动化<b class='flag-5'>仿真</b>实验 利用脚本实现<b class='flag-5'>modelsim</b>自动化<b class='flag-5'>仿真</b>

    vivado仿真流程

    vivado开发软件自带了仿真工具,下面将介绍vivado仿真流程,方便初学者进行仿真实验。
    的头像 发表于 07-18 09:06 2437次阅读
    <b class='flag-5'>vivado</b><b class='flag-5'>仿真</b>流程

    如何使用Xilinx的PCIE IP来产生读写请求

    通常我们都会用ModelsimQuesta等工具对工程进行仿真验证
    的头像 发表于 07-10 16:23 945次阅读
    如何使用Xilinx的PCIE IP来产生读写请求

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

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

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

    首先说明一下ModelsimQuesta Sim都可以与Vivado联调,也比较相似,但是Questa
    的头像 发表于 05-08 11:19 3240次阅读
    <b class='flag-5'>Vivado</b><b class='flag-5'>调用</b><b class='flag-5'>Questa</b> <b class='flag-5'>Sim</b><b class='flag-5'>仿真</b>中存在的一些问题