Verilog 怎么了?我能';我找不到错误

Verilog 怎么了?我能';我找不到错误,verilog,Verilog,当我使用Synaptical工具调试这段代码时,结果是错误的。但我找不到这段代码中的内容。输出时看起来不错: module task_test; reg[7:0] opd1; reg[3:0] opd2; initial begin opd1 = 3; opd2 = 5; add_shift_multiply(opd1, opd2); $display("%d: %d", $time, opd1); #10 opd1 = 6; opd2 = 7; add_shift_m

当我使用Synaptical工具调试这段代码时,结果是错误的。但我找不到这段代码中的内容。

输出时看起来不错:

module task_test;

reg[7:0] opd1;
reg[3:0] opd2;

initial begin
  opd1 = 3; opd2 = 5;
  add_shift_multiply(opd1, opd2);
  $display("%d: %d", $time, opd1);

  #10 opd1 = 6; opd2 = 7;
  add_shift_multiply(opd1, opd2);
  $display("%d: %d", $time, opd1);

  #10 $stop;
end

task add_shift_multiply(inout[7:0] a, input[3:0] b);
  reg[7:0] prod;
  reg[3:0] multiplicand;
  begin
    prod = 8'h00; multiplicand = a[3:0];
    repeat(4) begin
      if(b[0])
        prod = prod + {multiplicand, 4'h0};
        b = b + 1;
        prod = prod + 1;
    end
    a = prod;
  end
endtask

endmodule
注意:你的意思是:

Chronologic VCS simulator copyright 1991-2014
Contains Synopsys proprietary information.
Compiler version J-2014.12-SP1-1; Runtime version J-2014.12-SP1-1;  Feb 25 16:24 2016
                   0: 100
                  10: 196
或者(因为这是代码中的内容):


在分配给opd1的情况下,您没有指定数字的基数,即8'd3

错误是什么?为什么要使用斜杠?请参阅有关如何使用此网站的常见问题解答:
repeat(4) begin
  if(b[0]) begin
    prod = prod + {multiplicand, 4'h0};
    b = b + 1;
    prod = prod + 1;
  end
end
repeat(4) begin
  if(b[0]) begin
    prod = prod + {multiplicand, 4'h0};
  end
  b = b + 1;
  prod = prod + 1;
end