国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

FPGA:調試報錯Error:add_1 must be in range [-1,DEPTH-1]解決辦法和調試思路

這篇具有很好參考價值的文章主要介紹了FPGA:調試報錯Error:add_1 must be in range [-1,DEPTH-1]解決辦法和調試思路。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在進行FPGA調試的過程中,進行行為仿真,能觀察設計的邏輯是否正確,通常情況下需要進行run all的運行,這樣才能看到信號在運行過程中的狀態(tài),

在調試的過程中遇到如下的報錯:
failure: error:add_1 must be in range [-1,depth-1],FPGA,fpga開發(fā)

# ** 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進行仿真,速度快。

因為存在報錯,所以仿真程序是不能連續(xù)運行的。如何解決這個報錯,讓程序連續(xù)運行?

如下為解決這個問題的思路:
1.從打印的報錯信息來看,這個錯誤的字段是add_1和empty_1和rd_avail的錯誤,但是實際上自己編寫的Verilog代碼是沒有這個變量的,所以這個應該是其他內部的錯誤。
2.判斷是哪個內部的錯誤,基本上可以判斷是調用的IP核的內部報錯,但是如何判斷是哪個IP核使用過程中引起的呢,在利用vivado內部的仿真工具是是無法看到其他信息的,但是在利用modeisim仿真的時候,可以看到程序停止時,停在了打開的fir_complier_v7_2_vh_rfs_vhd,在這里判斷應該是調用的Fir的IP核引起的錯誤。
failure: error:add_1 must be in range [-1,depth-1],FPGA,fpga開發(fā)
3.定位了IP核,因為每個人使用IP核的習慣可能不同,所以最直觀有效的辦法是把用的fir的IP核都注釋掉,讓程序運行,看是否還存在該報錯信息。通過自己的測試,注釋掉之后確實可以,接下來對IP核的使用過程重新例化。
4.在不使用如下的ARESET和ACLKEN時,共有六個接口,可以逐一排查,
failure: error:add_1 must be in range [-1,depth-1],FPGA,fpga開發(fā)

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接口,而且沒有注意輸入信號的初始狀態(tài),導致s_axis_data_tvalid信號在開始時存在一段不確定狀態(tài),為X,導致了上述的報錯內容。
5.把信號的初始狀態(tài)搞定,不讓存在X即解決了該錯誤,最終程序能夠run all,不報錯。

總結:出現這種add_1等的內部IP核的錯誤的時候,要有一個清晰的思路,在不確定的時候用控制變量法,一點點增加,然后注意保證IP例化的過程中數據一直有狀態(tài),而不是X,這樣的思路去解決問題最后應該都能夠解決文章來源地址http://www.zghlxwxcb.cn/news/detail-618133.html

到了這里,關于FPGA:調試報錯Error:add_1 must be in range [-1,DEPTH-1]解決辦法和調試思路的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包