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

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

3天内不再提示

使用Vivado Simulator运行功能和时序仿真案例

电子设计 来源:CSDN博主 作者:FPGADesigner的博客 2020-12-31 10:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Vivado Simulator基本操作
Vivado Simulator是一款硬件描述语言事件驱动的仿真器,支持功能仿真和时序仿真,支持VHDL、Verilog、SystemVerilog和混合语言仿真。点击运行仿真后,工具栏中显示了控制仿真过程的常用功能按钮:

这些控制功能依次是:

  • Restart:从0时刻开始重新运行仿真;
  • Run All:运行仿真一直到处理完所有event或遇到指令指示停止仿真 ;
  • Run For:按照设定的时间运行仿真,每点击一次都运行指定时长;
  • Step:运行仿真直到下一个HDL状态;
  • Break:暂停仿真运行;
  • Relaunch Simulation:重新编译仿真源文件且restart仿真,当修改了源代码并且保存了文件后,只需要Relaunch即可,而不必关闭仿真再重新打开运行。

Scope窗口

Vivado Simulator中将HDL设计中的一个层次划分称作一个scope,比如实例化一个设计单元便创建了一个scope。在Scope窗口中可以看到设计结构,选中一个scope后,该scope中所有的HDL对象都会显示在Object窗口中。可以选择将Object窗口中的对象添加到波形窗口中,这样便可以观察到设计中的内部信号

pIYBAF9uKHCAb4GgAABhBV2NiYo015.png

Scope窗口中可以在Settings中设置显示哪种类型的scope,但注意当某一scope被关闭显示后,其内部的所有对象(不论什么类型)都会被隐藏。对某一scope右键,弹出菜单如下:

  • Add to Wave Window:将所有状态为可见的HDL对象添加到波形窗口,值从添加到仿真波形的时刻开始显示,想要显示插入之前的值,必须restart(注意不是relaunch,否则会耗费更多的时间);
  • Go to Source Code:打开定义选中scope的源代码;
  • Go to Instantiation Source Code:打开实例化选中实例的源代码(对于Verilog而言是module,对于VHDL而言是entity)
  • Log to Wave Database:可以选中记录当前scope的对象,或者记录当前scope的对象与所有下级的scope。相关数据会存储在project_name.sim/sim_1/behav目录下的wdb文件中。

Objects窗口
该窗口中显示了当前选中的scope所包含的HDL对象,不同类型或端口的对象显示为不同的图标,在Settings中可以设置显示的类型:

Object的右键菜单中有一些新的设置功能:

  • Show in Wave Window:在波形窗口中高亮选定的对象;
  • Radix:设置Objects窗口中选定对象的值的显示数字格式,包括默认、2进制(Binary)、16进制(Hexadecimal)、8进制(Octal)、ASCII码、无符号10进制(Unsigned Decimal)、带符号10进制(Signed Decimal)和符号量值(Signed Magnitude)。注意此处设置不会影响到波形窗口中的显示方式;
  • Defult Radix:设置Radix中Default所表示的值;
  • Show as Enumeration:显示SystemVerilog枚举信号的值,不选中时,枚举对象的值按radix的设置方式显示;
  • Force Constant:将选中对象的值强行定义为一个常量;
  • Force Clock:将选中对象强行设定为一个来回振荡的值(像时钟一样);
  • Remove Force:移除选定对象的所有Force设置。

Wave窗口
当运行仿真后,会自动打开一个波形窗口,默认显示仿真顶层模块中的HDL对象的波形配置。如果关闭了波形窗口,可以点击Window->Waveform重新打开。

窗口中的HDL对象和分组情况称作一个波形配置,可以将当前配置保存为wcfg文件,下次运行仿真时就不需要重新添加仿真对象或分组。窗口中还有游标、记号、时间尺等功能帮助设计者测量时间。右键菜单中有一些新的设置功能:

  • Show in Wave Window:在Object窗口中高亮选定的对象;
  • Find/Find Value:前者是搜寻某一对象,后者是搜索对象中的某一值;
  • Ungroup:拆分group或虚拟总线(virtual bus);
  • Rename/Name:前者设置用户自定义的对象显示名称,后者选中名称的显示方式:long(显示所处层次结构)、short(仅显示信号名称)、custom(Rename设置的名称);
  • Waveform Style:设置波形显示为数字方式或模拟方式;
  • Signal Color:设置波形的显示颜色;
  • Divider Color:设置隔离带的颜色;
  • Reverse Bit Order:将选定对象的数值bit显示顺序反转;
  • New Virtual Bus:将选定对象的bit组合为一个新的逻辑向量;
  • New Group:将选定对象添加到一个group中,可以像文件夹一样排列;
  • New Divider:在波形窗口中添加一个隔离带,将信号分开,便于观察。

Vivado Simulator会将配置(用户接口控制和Tcl命令)保存到仿真运行目录的xsimSettings.ini文件中,下此打开仿真时就会自动恢复相关设置。使用此功能时在Simulation Settings中关闭clean up simulation files,以防止重新运行仿真时配置文件被删除。如果想要恢复默认设置,则开启clean up simulation files,或直接删除xsimSettings.ini文件即可。

本文只对Wave窗口做了简单介绍,本系列第20篇对其中的具体术语和功能使用做了详细描述。

运行功能和时序仿真

工程创建好后,便可运行行为级仿真(behavioral simulation),在成功地综合和实现之后,可以运行功能仿真(functional simulation)和时序仿真(timing simulation)。在Flow Navigator中点击Run Simulation,弹出菜单中选择需要运行的仿真:

  • 综合后功能仿真:综合后,通用的逻辑转换为器件相关的原语,综合后功能仿真可以确保综合优化不会影响到设计的功能性。运行时,会生成一个功能网表,并使用UNISIM库。
  • 实现后功能仿真:实现后,设计已经在硬件中完成布局和布线工作,实现后功能仿真可以确保物理优化不会影响到设计的功能性。运行时,会生成一个功能网表,并使用UNISIM库。
  • 综合后时序仿真:该仿真使用器件模型中估算的时间延迟,并且不包括内部连线延迟。通用的逻辑转换为器件相关的原语后,可以使用估算的布线和组件间延迟。使用此仿真可以在实现之前查看潜在的时序严苛路径。
  • 实现后时序仿真:该仿真使用真实的时间延迟。使用该仿真来检查设计功能是否能工作在设定的速度上,可以检测出设计中未约束的路径、异步路径时序错误(比如异步复位)。

添加仿真启动脚本文件

设计者可以创建一个批处理文件,添加到工程中,其中的命令将在仿真开始后运行,常用的流程步骤如下所示:
1. 创建一个包含仿真命令的Tcl脚本,比如如果想仿真运行到5μs,添加“run 5us”命令;如果想监测设计内部信号,将其添加到波形窗口中,添加“add_wave/top/I1/signalName”命令;
2. 将脚本文件命名为post.tcl并保存;
3. 将post.tcl文件以仿真源文件的形式添加到工程中,会显示在Sources窗口的Simulation文件夹下;
4. 在仿真工具栏中点击“Relaunch”重新编译运行仿真,Vivado会自动读取并执行文件中的命令。

编辑:hfy


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

    关注

    0

    文章

    7

    浏览量

    8344
  • Vivado
    +关注

    关注

    19

    文章

    848

    浏览量

    70517
  • 时序仿真
    +关注

    关注

    0

    文章

    14

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    一文详解SystemC仿真库的编译

    AMD Vivado 设计套件以文件和库的形式提供仿真模型。仿真库包含器件和 IP 的行为和时序模型。编译后的库可供多个设计项目使用。用户必须在设计
    的头像 发表于 12-12 15:08 3731次阅读
    一文详解SystemC<b class='flag-5'>仿真</b>库的编译

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

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

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

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

    vivado时序分析相关经验

    vivado综合后时序为例主要是有两种原因导致: 1,太多的逻辑级 2,太高的扇出 分析时序违例的具体位置以及原因可以使用一些tcl命令方便快速得到路径信息
    发表于 10-30 06:58

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

    小问题,在上述帖子的评论区也有很多同学问过,所以分享一下。 一、运行之后,发现控制台没有打印main.c函数中的内容,而是如下图所示 这是因为仿真时间1000ns太短,设置运行时间为100us
    发表于 10-27 06:41

    vcs和vivado联合仿真

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

    如何在vivado上基于二进制码对指令运行状态进行判断

    vivado仿真运行判断状态是否正确。 获取二进制代码 在Nucleistudio中打开相关项目的Properties,按路径打开C/C++ Build -&gt;setting,找到
    发表于 10-24 06:46

    vivado上基于二进制码对指令运行状态进行判断

    vivado仿真运行判断状态是否正确。 获取二进制代码 在Nucleistudio中打开相关项目的Properties,按路径打开C/C++ Build -&gt;setting,找到
    发表于 10-24 06:31

    Nucleistudio+Vivado协同仿真教程

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

    AMD Vivado设计套件2025.1版本的功能特性

    随着 AMD Spartan UltraScale+ 系列现已投入量产,解锁其功能集的最快途径便是采用最新 AMD Vivado 工具版本( 2025.1 或更高版本)和全新操作指南资源。该集
    的头像 发表于 09-23 09:15 1246次阅读
    AMD <b class='flag-5'>Vivado</b>设计套件2025.1版本的<b class='flag-5'>功能</b>特性

    vivado仿真时GSR信号的影响

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

    翼辉信息飞行仿真平台DEEP UAV Simulator介绍

    翼辉信息面向无人机领域推出飞行仿真平台 DEEP UAV Simulator,旨在为无人机的研发、测试和训练过程提供安全、高效且成本可控的虚拟环境。该平台通过高精度的环境仿真、真实的物理引擎以及硬件
    的头像 发表于 07-30 09:22 1426次阅读

    FPGA时序约束之设置时钟组

    Vivado时序分析工具默认会分析设计中所有时钟相关的时序路径,除非时序约束中设置了时钟组或false路径。使用set_clock_groups命令可以使
    的头像 发表于 04-23 09:50 983次阅读
    FPGA<b class='flag-5'>时序</b>约束之设置时钟组

    一文详解Vivado时序约束

    Vivado时序约束是保存在xdc文件中,添加或创建设计的工程源文件后,需要创建xdc文件设置时序约束。时序约束文件可以直接创建或添加已存在的约束文件,创建约束文件有两种方式:Con
    的头像 发表于 03-24 09:44 4432次阅读
    一文详解<b class='flag-5'>Vivado</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>