【问题标题】:assign not updating result value in testbench in EDA playground在 EDA 操场的测试台中分配不更新结果值
【发布时间】:2021-05-23 13:58:20
【问题描述】:

我正在使用带有 Aldec Riviera 模拟器的 EDA Playground,我在这里有这个模块:

module alu(input  logic [31:0] a, b,
           input  logic [2:0]  alucontrol,
           output logic [31:0] result,
           output logic        zero);
  
  logic [31:0] condinvb, sum;

  assign condinvb = alucontrol[2] ? ~b : b;
  assign sum = a + condinvb + alucontrol[2];
 
  always_comb
    case (alucontrol[1:0])
      2'b00: result = a & b;
      2'b01: result = a | b;
      2'b10: result = sum;
      2'b11: result = sum[31];
    endcase

  assign zero = (result == 32'b0);
endmodule

我的测试平台在这里:

module alu_testbench();
  logic [31:0] a,b;
  logic [2:0] alucontrol;
  logic [31:0] result;
  logic zero, clk;
  
  alu test_alu(a,b,alucontrol);
  
  initial begin
    $dumpfile("dump.vcd"); $dumpvars(1);
    clk = 0;
    a = 'hdead0000; b = 'h0000beef; alucontrol = 'b010; #1;
    a = 'hc0debabe; b = 'h0000ffff; alucontrol = 'b000; #1;
    a = 'hc0de0000; b = 'h0000babe; alucontrol = 'b001; #1;
    a = 'hc0debabe; b = 'h0000babe; alucontrol = 'b100; #1;
  end
  
  always begin
    #1; clk = ~clk;
  end
endmodule 

当我运行测试台并查看生成的波形时,我没有看到 result 正在更新。相反,它保持为XXXX_XXXX。我在测试台做错了什么?

【问题讨论】:

    标签: verilog system-verilog


    【解决方案1】:

    在测试台中,您声明了result 信号,但它没有连接到任何东西。您可能希望它由同名的alu 输出驱动。在这种情况下,您应该将其连接到实例:

    变化:

      alu test_alu(a,b,alucontrol);
    

    到:

      alu test_alu(a,b,alucontrol,result,zero);
    

    在 edaplayground 上的其他模拟器上尝试您的代码;您应该会收到有关未连接端口的警告。

    使用您的代码,如果您查看 alu 实例内部,result 信号将不是 X。


    另一种对实例进行编码的等效方法是按名称使用连接:

    alu test_alu (
        .a           (a),
        .b           (b),
        .alucontrol  (alucontrol),
        .result      (result),
        .zero        (zero)
    );
    

    这样可以更轻松地避免常见的连接错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多