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

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

3天内不再提示

Vivado使用技巧:debug仿真设计的三种调试方法

454398 来源:FPGADesigner的博客 作者:FPGADesigner的博客 2020-12-29 15:57 次阅读

源代码级别调试
Vivado Simulator提供了在仿真过程中debug设计的特性,通过为源代码添加一些可控制的执行条件来检查出问题的地方。总的来说有三种调试方法:

1.使用Step逐行调试
Step命令一次只执行HDL代码中的一行,从而验证和调试设计。运行仿真后,点击Run->Step或工具栏中的Step可执行该命令。Restart可以将时间复位到TestBench的开始。当前执行的代码会高亮显示并且前方有箭头指示:

pIYBAF9uJreAZy5wAABFND7-SlY040.png

运行Step后会打开与顶层设计单元相关的HDL文件窗口,在窗口名称上右键->新建水平分组或新建垂直分组即可同时查看HDL和波形窗口。

2.使用断点(breakpoint)调试
Step调试的缺点是在大型设计中很繁琐且花费大量时间。设计者可以在源代码中自行指定运行停止的点,称为断点。运行仿真时,仿真器遇到断点就会暂停。可设置断点的行前有一个空心圈,点击可设置断点,转变为实心圈。

o4YBAF9uJrmAW9drAABDHP9CHnU407.png

对应的Tcl命令为“add_bp file_name line_number”。仿真调试过程中,断点和Step调试是可以一起使用的。在实心圈上右键,或Run菜单中点击Delete All Breakpoints可以删除所有断点。

3.条件调试
在设计中添加条件断点,仿真器检测到条件为真时就会暂停当前仿真。条件必须用Tcl命令添加,示例如下:
add_condition #命令模板
add_condition {reset == 1 && clk == 1} {puts “Reset went to high”; stop}
#当clk与reset同时为高暂停仿真,控制台打印消息输出

遇到条件断点并暂停后,只有等到下一个仿真命令才会继续运行仿真。

将对象强制到特定值
Vivado Simulator提供了Force功能将信号、wire或reg强制为某一值,该操作会重写信号定义在HDL设计中的行为。考虑如下应用情况:

  • TestBench中没有对某一信号进行驱动,可以使用Force功能给予激励;
  • Debug过程中使用Force纠正错误的值,以继续进行仿真分析。

使用Force Constant、Force Clock、Remove Clock相关命令配置Force功能,而且仿真restart后仍然会保留已经设置了的Force特性。

1.Force Constant功能
该命令会将信号固定为一个常数值,重写了其HDL代码中的赋值。在Objects窗口或波形窗口中选中某一对象,右键->Force Constant,打开如下窗口:

Force value按照value radix选择的基数设置常数值;设置的值开始于Starting after time offset设置的时间,如果不带单位则默认为ns;Cancel after time offset设置的时间后会取消应用Force功能。

2.Force Clock功能
该命令会使信号以一定速率在两个值之间来回转换,类似于时钟信号一样(但不局限于生成时钟信号,可以定义任意振荡的值)。在Objects窗口或波形窗口中选中某一对象,右键->Force Constant,打开如下窗口:

Leading edge value和Trailing edge value分别指定两个振荡状态的值;Duty cycle和Period设置占空比和周期。右键菜单中的Remove Force用来清除设置。灵活使用Force特性可以加快设计仿真的调试验证,而不需要修改HDL代码。

编辑:hfy


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

    关注

    30

    文章

    816

    浏览量

    128040
  • DEBUG
    +关注

    关注

    3

    文章

    89

    浏览量

    19843
  • Vivado
    +关注

    关注

    19

    文章

    803

    浏览量

    66194
收藏 人收藏

    评论

    相关推荐

    ARM的三种中断调试方法

    ARM的三种中断调试方法1 嵌入式软件开发流程   参照嵌入式软件的开发流程。第一步:工程建立和配置。第二步:编辑源文件。第步:工程编译和链接。第四步:软件的
    发表于 09-17 15:32

    【分享资料】ARM的三种中断调试方法简介

    ARM的三种中断调试方法简介1 嵌入式软件开发流程   参照嵌入式软件的开发流程。第一步:工程建立和配置。第二步:编辑源文件。第步:工程编译和链接。第四步:软件的
    发表于 03-19 09:29

    ARM的三种中断调试方法介绍

    址处的代码,实现动态改变中断处理函数。具体方法是:嵌入式技巧:ARM的三种中断调试方法介绍嵌入式软件开发流程参照嵌入式软件的开发流程。第一步:工程建立和配置。第二步:编辑源文件。第
    发表于 10-18 09:28

    三种电路仿真软件比较及器件模型加入方法

    摘要:在比较了ORCAD/PSPICE,PROTEL,Electronics Workbench三种仿真软件各自特点的基础上,介绍了把基于SPICE语言的器件模型加入三种软件的方法,实
    发表于 05-10 09:03 95次下载

    噪声系数测量的三种方法

    噪声系数测量的三种方法 本文介绍了测量噪声系数的三种方法:增益法、Y
    发表于 05-07 13:38 2139次阅读

    Vivado+FPGA:如何使用Debug Cores(ILA)在线调试

    Vivado下在线调试是利用ILA进行的,Xilinx官方给出了一个视频,演示了如何使用Vivadodebug cores,下面我根据这个官方视频的截图的来演示一下: 官方的视频使
    发表于 02-08 08:52 2507次阅读

    Vivado中使用debug工具步骤与调试技巧

    在ISE中称为ChipScope而Vivado中就称为in system debug。下面就介绍Vivado中如何使用debug工具。 Debug
    发表于 11-17 14:05 5.9w次阅读
    <b class='flag-5'>Vivado</b>中使用<b class='flag-5'>debug</b>工具步骤与<b class='flag-5'>调试</b>技巧

    基于Proteus嵌入式仿真平台中三种源码调试的方式分析

    就是能对嵌入式系统(硬、软件)及其外围电路进行协同、动态、交互式的仿真,并提供了仿真中进行源码调试三种方式。
    的头像 发表于 03-29 08:19 3747次阅读
    基于Proteus嵌入式<b class='flag-5'>仿真平台中三种</b>源码<b class='flag-5'>调试</b>的方式分析

    如何使用Vivado Logic Analyzer与逻辑调试IP进行交互

    了解Vivado中的Logic Debug功能,如何将逻辑调试IP添加到设计中,以及如何使用Vivado Logic Analyzer与逻辑调试
    的头像 发表于 11-30 06:22 3332次阅读

    Vivado调试ILA debug结果也许不对

    FPGA的调试是个很蛋疼的事,即便Vivado已经比ISE好用了很多,但调试起来依旧蛋疼。即便是同一个程序,FPGA每次重新综合、实现后结果都多多少少会有所不同。而且加入到ila中的数据会占用RAM资源,影响布局布线的结果。
    的头像 发表于 03-08 17:35 1.1w次阅读

    关于Vivado三种操作Debug的方式

    Vivado中提供了多种Debug的操作方式,下面就来总结一下: 1. 代码中例化ILA IP核 第一,直接例化ILA IP核: 需要探测多少个信号,信号的位宽是多少,直接选择即可: 下面界面可以
    的头像 发表于 11-11 17:07 1.1w次阅读
    关于<b class='flag-5'>Vivado</b>中<b class='flag-5'>三种</b>操作<b class='flag-5'>Debug</b>的方式

    python统计词频的三种方法

    python统计词频的三种方法方法
    发表于 05-25 14:33 2次下载

    一文解析Vivado三种封装IP的方式

    Vivado提供了三种封装IP的方式:(1)将当前工程封装为IP;(2)将当前工程中的BD(IPI 设计)封装为IP;(3)将指定的文件目录封装为IP。 IP Packager支持的输入文件HDL
    的头像 发表于 08-10 18:09 6646次阅读
    一文解析<b class='flag-5'>Vivado</b>的<b class='flag-5'>三种</b>封装IP的方式

    FPGA应用之vivado三种常用IP核的调用

    今天介绍的是vivado三种常用IP核:时钟倍频(Clocking Wizard),实时仿真(ILA),ROM调用(Block Memory)。
    发表于 02-02 10:14 3274次阅读

    MCUXpresso IDE下在线联合调试双核MCU工程的三种方法

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是MCUXpresso IDE下在线联合调试i.MXRT1170双核工程的三种方法
    的头像 发表于 08-08 15:18 427次阅读
    MCUXpresso IDE下在线联合<b class='flag-5'>调试</b>双核MCU工程的<b class='flag-5'>三种方法</b>