0

コードはコンパイルされますが、gtkwave の dat ファイルがダンプされません。組み合わせシフト乗数オブジェクトを実装しようとしています。私のテスターが正しいとは思わない。

module combinational_mult(product,multiplier,multiplicand);
   input [31:0] multiplier;
   input[63:0] multiplicand;
   output reg [63:0] product;
   reg           c;
   reg [31:0]    m;  
   integer       i;

   always @( multiplier or multiplicand )
     begin
//initialize
        product[63:32] = 16'b0000_0000_0000_0000;
        product[32:16] = multiplier;
        m = multiplicand;
        c = 1'b0;


//add,shift algorithm  for unsigned multiplication.        
//following the notes.
         for(i=0; i<32; i=i+1)
           begin

        if(product[0]) {c,product[63:32]} = product[63:32] + m ;

         product[63:0] = {c,product[63:1]};
          c = 0;
      end              


  end    
endmodule

module tester(output reg [31:0] multiplier, output reg [63:0] multiplicand, output reg [63:0] product, output reg c, output reg i);



initial begin
i = 0;

$dumpfile("USAMv1.dat");
$dumpvars;

#10 multiplier = 16'b1101_1001_1101_1001;
multiplicand = 16'b0110_1010_1101_1000;
#50 $finish;

end
endmodule

module testbench;
 wire[31:0] multiplier;
wire[63:0] multiplicand;
wire[63:0] product;
wire c, i;

tester sim( multiplier, multiplicand, product, c, i);
combinational_mult dut ( product, multiplier, multiplicand);
endmodule 
4

1 に答える 1

2

テスターを削除し、テストベンチでテスト プログラムを実行するだけのバージョンをEDA Playgroundで作成しました。

EDA Playground で動作するように、dump.dat の名前を dump.vcd に変更しました。実行時に波形ウィンドウを起動する必要があります。

テスト プログラムをテストベンチに移動し、テスト ベクトルに 2 つ目のデータ ポイントを追加して観察できるようにする以外、コードに実際の変更はありません。それ以外の場合、VCD は変更された時点で終了します。

module testbench;
 reg [31:0] multiplier;
 reg [63:0] multiplicand;

initial begin
  $dumpfile("dump.vcd");
  $dumpvars;

  #10ns;
  multiplier   = 16'b1101_1001_1101_1001;
  multiplicand = 16'b0110_1010_1101_1000;

  #50ns;
  multiplier   = 16'b0;
  multiplicand = 16'b0;

  $finish;
end

combinational_mult dut ( product, multiplier, multiplicand);
endmodule 
于 2014-11-18T12:20:44.860 に答える