$display不工作{Verilog testbench)

$display不工作{Verilog testbench),verilog,Verilog,我正在尝试使用$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; //wi

我正在尝试使用$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 = %10b\n",lambda1,lambda2,lambda3);

  end

 endmodule
模块t\u反馈多;
reg[1022:0]r;
注册时钟;
reg复位;
导线[9:0]λ1;
导线[9:0]λ2;
导线[9:0]λ3;
//导线[1022:0]误差向量;
//wire[1022:0]已更正的\u码字;
整数计数=0;
顶部模块TM1(r、时钟、复位、λ1、λ2、λ3);
最初的
开始
clk=1'b0;
永远
#5时钟=~clk;
结束
最初的
开始
复位=1'b0;
#17复位=1'b1;
结束
最初的
开始

//r最有可能的是lambda1、lambda2、lambda3没有变化。但我无法检查或尝试您的代码,因为top_模块缺失。

如果您的目标是在lambda*值变化时打印它们(从您所写的内容来看似乎是这样),您可以尝试使用
$monitor

尝试将以下行放入
初始
块之一,查看其是否有效

$monitor(“lambda1=%10b,lambda2=%10b,lambda3=%10b\n”,lambda1,lambda2,lambda3);


PS:给DUT提供TB总是有助于像我们这样的人解决和调试问题

在交互模拟中缺少$display的唯一原因可能是您的信号没有切换。建议:将$display放入“初始”块,并使用“延迟”进行测试。或者您也可以尝试在每个
位置打印
$display
edge clk
但有#延迟,以便打印每个周期的正确值