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

    文章

    814

    浏览量

    127666
  • DEBUG
    +关注

    关注

    3

    文章

    82

    浏览量

    19389
  • Vivado
    +关注

    关注

    18

    文章

    787

    浏览量

    65089
收藏 人收藏

    评论

    相关推荐

    ARM的三种中断调试方法

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

    数字信号的三种纠错方法

    数字信号的三种纠错方法
    发表于 08-20 12:49

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

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

    Altium Designer的三种画元器件封装方法

    下面跟大家分享Altium Designer画元器件封装的三种方法。如有错误,望大家指正。
    发表于 07-22 06:47

    嵌入式技巧:ARM的三种中断调试方法介绍

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

    启动Redis的三种方法

    Redis笔记(1)——安装、卸载、三种方法启动Redis,Redis命令使用(干货十足),Redis两种方法设置密码,时间复杂度(更完善哦~)
    发表于 06-08 16:09

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

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

    一灯双控的三种接线方法有哪些利弊

    一灯双控的三种接线方法有哪些利弊
    发表于 03-11 07:10

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

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

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

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

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

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

    Vivado调试ILA debug结果也许不对

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

    关于Vivado三种操作Debug的方式

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

    VCS独立仿真Vivado IP核的一些方法总结

    前年,发表了一篇文章《VCS独立仿真Vivado IP核的一些方法总结》(链接在参考资料1),里面简单讲述了使用VCS仿真Vivado IP
    的头像 发表于 03-22 10:31 3498次阅读

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

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