我正在尝试使用 $display 语句监视一段 verilog 代码的输出。但是,我没有得到任何显示打印。是因为我没有使用$finish吗?任何帮助将不胜感激。我在这里附加测试台代码.
module t_feedback_mult;
reg [1022:0] r;
reg clk;
reg reset;
wire [9:0] lambda1;
wire [9:0] lambda2;
wire [9:0] lambda3;
//wire [1022:0] error_vector;
//wire [1022:0] corrected_codeword;
integer count=0;
top_module TM1(r,clk,reset,lambda1,lambda2,lambda3);
initial
begin
clk=1'b0;
forever
#5 clk=~clk;
end
initial
begin
reset=1'b0;
#17 reset=1'b1;
end
initial
begin
//r<=(1023'd1 << 25) ^ (1023'd1<< 132) ^ (1023'd1 << 401) ^ (1023'd1 << 488) ^ (1023'd1 << 758) ^ (1023'd1 << 911) ^ (1023'd1 << 934) ^ (1023'd1 << 229) ^ (1023'd1 <<17);
r<=1023'd7;
end
always@(posedge clk) begin
if (count == 16)
r<= (r<<1);
end
always@(posedge clk) begin
if (reset == 1'b1)
count <= (count +1)%32;
else begin
count<= 0;
end
end
always@(lambda1,lambda2,lambda3) begin
$display(" lambda1= %10b , lambda2= %10b , lambda3 = %10bn",lambda1,lambda2,lambda3);
end
endmodule
很可能lambda1,lambda2,lambda3没有改变。但是我无法检查或尝试您的代码,因为缺少top_module。
如果您的目标是在 lambda* 值发生变化时打印它们(从您编写的内容来看似乎是这种情况(,您可以尝试改用 $monitor
。
尝试将以下行放在其中一个initial
块中,看看它是否有效。
$monitor("lambda1= %10b , lambda2= %10b , lambda3 = %10bn",lambda1,lambda2,lambda3);
PS:将DUT与TB一起使用总是可以帮助像我们这样的人找出和调试问题