$ display not working {Verilog testbench)

时间:2018-04-21 23:14:36

标签: 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;
 //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

2 个答案:

答案 0 :(得分:0)

lambda1,lambda2,lambda3很可能没有变化。但我无法检查或尝试您的代码,因为缺少top_module。

答案 1 :(得分:0)

如果您的目标是在更改时打印lambda *值(这似乎是您所写的内容),您可以尝试使用$monitor

尝试将以下行放在其中一个initial块中以查看它是否有效。

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

PS:给予DUT与TB一直帮助像我们这样的人找出并调试问题