在进行FPGA调试的过程中,进行行为仿真,能观察设计的逻辑是否正确,通常情况下需要进行run all的运行,这样才能看到信号在运行过程中的状态,

在调试的过程中遇到如下的报错:

# ** Failure: ERROR:add_1 must be in range [-1,DEPTH-1]
#    Time: 128 ns  Iteration: 1  Protected: /top_tb/DmodInst0/FirD40/U0/<protected>/<protected>/<protected>/<protected>/<protected>/<protected> File: D:/Xilinx/Vivado/2019.1/data/ip/xilinx/axi_utils_v2_0/hdl/axi_utils_v2_0_vh_rfs.vhd
# Break in file D:/Xilinx/Vivado/2019.1/data/ip/xilinx/axi_utils_v2_0/hdl/axi_utils_v2_0_vh_rfs.vhd
run -all
# ** Failure: ERROR:empty_1 and not_empty_1 are inconsistent
#    Time: 128 ns  Iteration: 1  Protected: /top_tb/DmodInst0/FirD40/U0/<protected>/<protected>/<protected>/<protected>/<protected>/<protected> File: D:/Xilinx/Vivado/2019.1/data/ip/xilinx/axi_utils_v2_0/hdl/axi_utils_v2_0_vh_rfs.vhd
# Break in file D:/Xilinx/Vivado/2019.1/data/ip/xilinx/axi_utils_v2_0/hdl/axi_utils_v2_0_vh_rfs.vhd
run -all
# ** Failure: ERROR:rd_avail asserted when rd_valid deasserted
#    Time: 160 ns  Iteration: 1  Protected: /top_tb/DmodInst0/FirD40/U0/<protected>/<protected>/<protected>/<protected>/<protected>/<protected> File: D:/Xilinx/Vivado/2019.1/data/ip/xilinx/axi_utils_v2_0/hdl/axi_utils_v2_0_vh_rfs.vhd
# Break in file D:/Xilinx/Vivado/2019.1/data/ip/xilinx/axi_utils_v2_0/hdl/axi_utils_v2_0_vh_rfs.vhd

用的是vivado 2019.1联合modelism 10.7进行的仿真过程,用vivado内置的仿真也是同样的报错信息,建议用modelsim进行仿真,速度快。

因为存在报错,所以仿真程序是不能连续运行的。如何解决这个报错,让程序连续运行?

如下为解决这个问题的思路:
1.从打印的报错信息来看,这个错误的字段是add_1和empty_1和rd_avail的错误,但是实际上自己编写的Verilog代码是没有这个变量的,所以这个应该是其他内部的错误。
2.判断是哪个内部的错误,基本上可以判断是调用的IP核的内部报错,但是如何判断是哪个IP核使用过程中引起的呢,在利用vivado内部的仿真工具是是无法看到其他信息的,但是在利用modeisim仿真的时候,可以看到程序停止时,停在了打开的fir_complier_v7_2_vh_rfs_vhd,在这里判断应该是调用的Fir的IP核引起的错误。

3.定位了IP核,因为每个人使用IP核的习惯可能不同,所以最直观有效的办法是把用的fir的IP核都注释掉,让程序运行,看是否还存在该报错信息。通过自己的测试,注释掉之后确实可以,接下来对IP核的使用过程重新例化。
4.在不使用如下的ARESET和ACLKEN时,共有六个接口,可以逐一排查,

FirR your_instance_name (.aclk(aclk),                              // input wire aclk.s_axis_data_tvalid(s_axis_data_tvalid),  // input wire s_axis_data_tvalid.s_axis_data_tready(s_axis_data_tready),  // output wire s_axis_data_tready.s_axis_data_tdata(s_axis_data_tdata),    // input wire [31 : 0] s_axis_data_tdata.m_axis_data_tvalid(m_axis_data_tvalid),  // output wire m_axis_data_tvalid.m_axis_data_tdata(m_axis_data_tdata)    // output wire [63 : 0] m_axis_data_tdata
);

在排查的时候重点是s_axis_data_tvalid和s_axis_data_tready,这个两个信号一个输入,一个输出,这个是可以利用输出与其他信号做逻辑运算然后给到输入的,重点是在初始化的时候保证s_axis_data_tvalid要有效,因为本人在例化的时候没有采用aclken接口,而且没有注意输入信号的初始状态,导致s_axis_data_tvalid信号在开始时存在一段不确定状态,为X,导致了上述的报错内容。
5.把信号的初始状态搞定,不让存在X即解决了该错误,最终程序能够run all,不报错。

总结:出现这种add_1等的内部IP核的错误的时候,要有一个清晰的思路,在不确定的时候用控制变量法,一点点增加,然后注意保证IP例化的过程中数据一直有状态,而不是X,这样的思路去解决问题最后应该都能够解决

FPGA:调试报错Error:add_1 must be in range [-1,DEPTH-1]解决办法和调试思路相关推荐

  1. android studio报错Error:Project with path 'XXXX' could not be found解决办法

    刚从服务器上剪下来的工程编译死活报 project with path '... ' could not be found in project ' app' 这个错, 找不到依赖库,可是检查工程里面 ...

  2. STM32编译报错 Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_hd.o).——解决办法

    入门STM32写第一个程序时,引入启动文件startup_stm32f10x_hd.s后编译报错 [注]启动文件自行下载后加入工程中 一.原因 引入的启动文件startup_stm32f10x_hd. ...

  3. python的moviepy库 打包 报错: ‘moviepy.audio.fx.all‘ has no attribute ‘audio_fade 的解决办法

    本篇文章主要讲解python的moviepy库 打包 报错: 'moviepy.audio.fx.all' has no attribute 'audio_fade 的解决办法 日期:2022年3月9 ...

  4. oracle插入时间报错,Oracle 插入时间时 报错:ORA-01861: 文字与格式字符串不匹配 的解决办法...

    一.写sql的方式插入到Oracle中 往oracle中插入时间  '2007-12-28 10:07:24' 如果直接按照字符串方式,或者,直接使用to_date('2007-12-28 10:07 ...

  5. Pycharm报错:AttributeError: ‘NoneType‘ object has no attribute ‘_gdal‘的解决办法

    Pycharm报错:AttributeError: 'NoneType' object has no attribute '_gdal'的解决办法 解决办法如下: pycharm找到settings ...

  6. ajax上传文件报错The current request is not a multipart request的解决办法

    ajax上传文件报错The current request is not a multipart request的解决办法 主要报错语句为: The current request is not a ...

  7. form编译报错:ORA-12162: TNS:net service name is incorrectly specified解决办法

    form编译报错:ORA-12162: TNS:net service name is incorrectly specified解决办法 编译命令 apps/apps密码后面+"@数据库i ...

  8. navicat for mysql执行sql语句报错: [Err] 1146 - Table ‘performance_schema.session_status‘doesn‘t exist 解决办法

    navicat for mysql执行sql语句报错: [Err] 1146 - Table 'performance_schema.session_status' doesn't exist 解决办 ...

  9. R语言报错 Error in y + 1 : non-numeric argument to binary operator 解决记录

    因为花了2天半才解决,中间痛苦的寻找,记录一下解决的流程与经验 文章目录 报错信息: 报错原因: 原代码: 报错原因解析: 1. 转置后数据类型变为character,因为numeric数据中存在ch ...

  10. vue-router 报错Error: Avoided redundant navigation to current location: “/index/user“解决方式

    问题 使用ivew Menu 制作的导航菜单,连续点击同一个导航时报错 该报错不影响功能 当前地址 http://localhost:8080/#/transfer/index 连续点击–信息录入 报 ...

最新文章

  1. Oracle数据库中的优化方案
  2. iOS 百度地图使用详解
  3. Exchange 2007 SP1 如何定时清理日志???
  4. 【代码】ReentrantLock使用tryLock进行尝试锁定
  5. java线程池(ThreadPool)
  6. note05-计算机网络
  7. oracle ora 47306,Oracle SQL提示含义与示例 --- 分布式查询和并行提示
  8. java 307跳转_java – failure:retrofit.RetrofitError:307临时重定向?
  9. app 之间发送文件 ios
  10. ZK在Eclipse下的环境搭建
  11. 初级软件水平测试题,2020初级会计题库软件机考系统练习试卷
  12. 钢琴音源 Native Instruments Definitive Piano Collection
  13. html5中播放本地音乐播放器,首款HTML5播放器 支持浏览器内播放本地音乐
  14. IDEA突然不能输入中文
  15. k8s-某视频课命令问题排查了解
  16. 常用正则表达式(手机,邮箱,身份证号,昵称,用户名,车型,车牌号)
  17. Zynq MPSOC 电子书免费下载
  18. css 的垂直居中和 图片居中
  19. 度小满数据开发面试真题2
  20. mysql慢查询优化_常见mysql的慢查询优化方式

热门文章

  1. The Art Of Code-Beta
  2. 微信小程序:分包大小超过限制
  3. Windows——重建 MBR(Master Boot Record)
  4. 前后端分离的时代,团队间的完美协作
  5. img标签中alt属性与title属性
  6. 腾讯云物联网通信MQTT数据转发到第三方服务
  7. 上号神器扫码登录网站使用教程
  8. 如何让Ubuntu联网
  9. 领导越讲人情,团队越不行?
  10. Android高德地图定位获取定位经纬度,高德地图,获取当前位置经纬度