[問題] Verilog $readmemh數值錯誤如何debug

看板Electronics作者 (貍貓)時間6年前 (2019/09/01 06:35), 6年前編輯推噓2(202)
留言4則, 2人參與, 6年前最新討論串1/1
各位前輩好,自學Verilog大約2個月 現在遇到的專案問題,是想要用$readmemh載入memory數值,但發現載入的數值是錯誤的 我寫了一支簡單的.v如下: `timescale 1ns/100ps `define DELAY #1 module mem_rd(rst_n, clk, data, data2); input rst_n; input clk; output [15:0] data; output [15:0] data2; reg [15:0] data; reg [15:0] data2; reg [15:0] data_mem[0:1]; initial begin $readmemh("test_data.mem", data_mem); end always @(posedge clk or negedge rst_n) if (!rst_n) data <= `DELAY 16'h1000; else begin data <= `DELAY data_mem[0][15:0]; end always @(posedge clk or negedge rst_n) if (!rst_n) data2 <= `DELAY 16'h2000; else begin data2 <= `DELAY data_mem[1][15:0]; end endmodule 在test_data.mem中的資料為: f0f0,0f0f 預期執行結果為 initial 經過clk正緣觸發後 data 16'h1000 16'hf0f0 data2 16'h2000 16'h0f0f 經過測試,data & data2在clk正緣觸發後,數值皆為16'hffff 我的模擬環境比較特殊,是在SIMetrix/SIMPLIS v8.20a下跑的, 但SIMetrix應該是用VVP來處理verilog的部分 我覺得很有可能是我的verilog code犯了很蠢的錯誤,但找了很久還是沒有發現... 希望有前輩們可以提供一些建議,我再去試試看 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.65.183 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1567290945.A.3FB.html ※ 編輯: piliGTcat (111.249.65.183 臺灣), 09/01/2019 06:36:38

09/01 12:31, 6年前 , 1F
hex逗點?
09/01 12:31, 1F

09/01 15:28, 6年前 , 2F
找問題最簡單方法就是簡化問題 縮小範圍
09/01 15:28, 2F

09/01 15:29, 6年前 , 3F
ex: 吃兩行會有錯 那你有沒有少吃一行
09/01 15:29, 3F

09/01 15:29, 6年前 , 4F
縮到最小就是最簡單語法 看有錯沒錯差異在哪
09/01 15:29, 4F
文章代碼(AID): #1TQlP1Fx (Electronics)