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

    文章

    1739

    浏览量

    150400
  • 仿真器
    +关注

    关注

    14

    文章

    1020

    浏览量

    84150
  • 代码
    +关注

    关注

    30

    文章

    4857

    浏览量

    69524
  • Vivado
    +关注

    关注

    19

    文章

    819

    浏览量

    67256

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

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

收藏 人收藏

    评论

    相关推荐

    【紫光同创盘古100Pro+开发板,MES2L676-100HP教程】盘古676系列——Modelsim的使用和do文件编写

    就没问题了。然后点击 OK,开始仿真。 可以看到会弹出一个新的选项卡叫”sim”,然后看红框部分,当点击 OK 后,实际上 Modelsim 自动输入一 句命令 vsim -gui
    发表于 02-25 18:36

    RTX 5880 Ada 驱动51Sim实现端到端仿真与数据合成新飞跃

    。 51Sim 由 51WORLD 于 2017 年孵化,是国内领先的 AI 合成数据及仿真平台公司,在智能驾驶仿真和数据闭环领域有着卓越的产品竞争力和商业化能力。现核心产品包括智能驾驶与机器人
    的头像 发表于 02-13 12:46 160次阅读
    RTX 5880 Ada 驱动51<b class='flag-5'>Sim</b>实现端到端<b class='flag-5'>仿真</b>与数据合成新飞跃

    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>

    SIM卡座按结构类型可划分成哪些

    在探讨SIM卡座按结构分类的不同类型时,我们首先需要了解SIM卡座的基本定义和功能。SIM卡座是手机其他电子设备中用于放置SIM卡的卡槽,
    的头像 发表于 01-13 18:22 628次阅读
    <b class='flag-5'>SIM</b>卡座按结构类型可划分成哪些

    使用modelsim时的问题分析

    仿真对于FPGA设计来说至关重要,我们经常使用modelsim来进行功能仿真或者时序仿真,这样就需要将modelsim和设计软件(quart
    的头像 发表于 10-24 18:15 673次阅读
    使用<b class='flag-5'>modelsim</b>时的问题分析

    Vivado使用小技巧

    有时我们对时序约束进行了一些调整,希望能够快速看到对应的时序报告,而又不希望重新布局布线。这时,我们可以打开布线后的dcp,直接在Vivado Tcl Console里输入更新后的时序约束。如果调整
    的头像 发表于 10-24 15:08 547次阅读
    <b class='flag-5'>Vivado</b>使用小技巧

    Efinity FIFO IP仿真问题 -v1

    几个文件  我们来看下modelsim.do文件,里面vlog了fifo_tb.sv文件,另外还调用了flist文件里的文件,flist只有一个文件那就是fifo_sim.v。所以这个仿真
    的头像 发表于 10-21 11:41 1235次阅读
    Efinity FIFO IP<b class='flag-5'>仿真</b>问题 -v1

    如何在ModelSim中添加Xilinx仿真

    今天给大侠带来在FPGA设计应用中如何在ModelSim中添加Xilinx仿真库,话不多说,上货。 注意:ModelSim一定要安装在不带空格的目录下,即不要安装在“Program
    发表于 07-03 18:16

    使用SIM卡座带卡托有哪些注意事项

    ,以帮助读者更好地了解和使用。 首先,SIM卡座带卡托的设计使得插入和取出SIM卡变得非常简单方便。用户只需轻轻推动卡托,即可将SIM卡插入取出。这种设计避免了传统
    的头像 发表于 07-02 16:26 774次阅读
    使用<b class='flag-5'>SIM</b>卡座带卡托有哪些注意事项

    SIM卡座的接口定义

    SIM卡座连接器的接口定义是移动通信设备中不可或缺的一部分,确保了SIM卡与设备之间的稳定通信和数据传输。在本文中,连欣科技将详细探讨一下SIM卡座的接口定义,包括其结构、引脚功能、以及接口标准,为
    的头像 发表于 06-17 17:47 5478次阅读
    <b class='flag-5'>SIM</b>卡座的接口定义

    FPGA入门必备:Testbench仿真文件编写实例详解

    在编写完HDL代码后,往往需要通过仿真软件Modelsim或者Vivadao自带的仿真功能对HDL代码功能进行验证,此时我们需要编写Testbench文件对HDL功能进行测试验证。
    发表于 04-29 10:43 2433次阅读

    Vivado 使用Simulink设计FIR滤波器

    ,选择好需要观测的信号后直接右键单击Xilinx Add to Viewer。这时启动仿真将自动打开vivado的Waveform窗口,可以在时域上观察每一个点的数据。 上图为单个25M正弦波
    发表于 04-17 17:29

    ISE 关联 Modelsim 详细操作

    在两者之间即可,然后保存。 第三步,打开ISE,在菜单Edit-Preferences…,调出设置窗口。 设置好之后就到了最后一步,在新建工程时,选择对应的modelsim即可,在看仿真时正常打开就行了。
    发表于 03-22 18:55

    最实用的Modelsim使用教程

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

    fpga仿真文件怎么写

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