作者piliGTcat (狸猫)
看板Electronics
标题[问题] Verilog $readmemh数值错误如何debug
时间Sun Sep 1 06:35:43 2019
各位前辈好,自学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://webptt.com/cn.aspx?n=bbs/Electronics/M.1567290945.A.3FB.html
※ 编辑: piliGTcat (111.249.65.183 台湾), 09/01/2019 06:36:38
1F:推 st955272: hex逗点? 09/01 12:31
2F:推 wju1230: 找问题最简单方法就是简化问题 缩小范围 09/01 15:28
3F:→ wju1230: ex: 吃两行会有错 那你有没有少吃一行 09/01 15:29
4F:→ wju1230: 缩到最小就是最简单语法 看有错没错差异在哪 09/01 15:29