2014-11-21 42 views
-1

我有这个代码,它早期产生一个GTK波,但我必须从行为上使它RTL,但现在它不会编译。如果任何人能帮助我想出解决办法,我得到错误:Verilog倍数不会编译

  • main.v:31:错误:格式不正确的说法
  • main.v:26:错误:在for循环步分配
  • main.v:26:语法错误
  • main.v:30:语法错误
  • main.v:30:错误:格式不正确的说法
  • main.v:31:语法错误

这里是我的代码:

module combinational_mult(product,multiplier,multiplicand); 
input [31:0] multiplier; 
input [63:0] multiplicand; 
output product; 

reg [63:0] product; 
reg c; 
reg [63:0] m; 
integer i; 

always @(multiplier or multiplicand) 
begin 
//initialize 
product[63:32] = 32'b0; 
product[31:0] = 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[31:16] + m ; 
//product[63:0] = {c,product[63:1]}; 
       // c = 0; 
for (i = 0; i < 32; i++) 
    begin 
    if (multiplier == 1) 
      product = product + m; 
      multiplicand << 1; 
      multiplier >> 1; 
      c=0; 
    end 

end 
endmodule 

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

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

    #10ns; 
    multiplier = 32'b0000_0000_0000_0000_1101_1001_1101_1001; 
    multiplicand = 32'b0000_0000_0000_0000_0110_1010_1101_1000; 

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

    $finish; 
end 

combinational_mult dut (product, multiplier, multiplicand); 
endmodule 
+0

如果您有一个.sv文件扩展名而不是.v,大多数现代工具将解释为SystemVerilog。 – Morgan 2014-11-21 20:40:04

回答

0

的Verilog不支持++(SystemVerilog的一样),用i=i+1

移位运算符(<< & >>)需要成为右手表达式的一部分。例如a = b << c;

我只指出编译错误。不是功能错误