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

    文章

    1011

    浏览量

    83583
  • questasim
    +关注

    关注

    0

    文章

    5

    浏览量

    7477
  • Vivado
    +关注

    关注

    19

    文章

    803

    浏览量

    66200
  • MODELSIM仿真
    +关注

    关注

    0

    文章

    15

    浏览量

    7273

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

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

收藏 人收藏

    评论

    相关推荐

    如何用Python实现Vivado和ModelSim仿真自动化?

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

    如何打开第三方软件

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

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

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

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

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

    第三方dll调用问题!!!

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

    LabVIEW与第三方软件交互问题

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

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

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

    头文件包含第三方文件

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

    第三方数字认证

    第三方数字认证 、实验目的: 熟悉数字证书的申请过程,了解数字证书的使用。二、实验前准备: 先查看本机的证书状况,在IE中点工
    发表于 03-18 18:23 2930次阅读
    <b class='flag-5'>第三方</b>数字认证

    基于Vivado设计的第三方仿真器版本说明

    本文列出了能够与 Vivado 设计套件联用的支持性第三方仿真器。 这些也在随该软件起发布的“Viva
    发表于 11-15 16:18 2087次阅读

    如何将Vivado IP和第三方综合工具配合使用

    观看视频,学习如何将 Vivado IP 和第三方综合工具配合使用。 此视频将通过个设计实例引导您完成创建自定义 IP 的步骤;用第三方综合工具IP黑盒子来审查所需 IP 输出;整合
    的头像 发表于 11-21 06:34 5050次阅读

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

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

    在SpringBoot重试调用第三方API教程

    作为后端程序员,我们的日常工作就是调用一些第三方服务,将数据存入数据库,返回信息给前端。但你不能保证所有的事情直都很顺利。像有些第三方AP
    的头像 发表于 05-11 10:43 673次阅读

    Vivado关联第三方编辑器的方法

    Vivado个非常强大的工具,但是在一些方面可能不能完全满足我们的需求,比如代码编辑器的功能。幸运的是,Vivado允许我们关联第三方
    的头像 发表于 05-16 16:36 1526次阅读
    <b class='flag-5'>Vivado</b>关联<b class='flag-5'>第三方</b>编辑器的方法

    调用第三方 API 接口会遇到哪些问题

    了 11、接口时好时坏 12、文档和接口逻辑不致 13、欠费了   前言 在实际工作,我们经常需要在项目中调用第三方API接口,获取数据,或者上报数据,进行数据交换和通信。 那么,
    的头像 发表于 05-29 14:31 1415次阅读