求问aldec编译verilog的问题
时间:10-02
整理:3721RD
点击:
在用verilog写一个booth-kogge stone的32位乘法器用到了aldec active HDL student edition里面我写了这样一段代码
module calc(i, code, n, o);
input [31:0] i;
input [2:0] code;
input n;
output [63:0] o;
wire [31:0] mid;
reg [63:0] med;
wire [80:0] med2;
assign mid = ~i + 1'b1;
always @(code)
begin
case(code)
3'b000: assign med = 64'b0;
3'b001: assign med ={{(32){i[31]}},{i[31:0]}};
3'b010: assign med ={{(32){i[31]}},{i[31:0]}};
3'b011: assign med ={{(31){i[31]}},{i[31:0]},1'b0};
3'b100: assign med ={{(31){mid[31]}},{mid[31:0]},1'b0};
3'b101: assign med ={{(32){mid[31]}},{mid[31:0]}};
3'b110: assign med ={{(32){mid[31]}},{mid[31:0]}};
3'b111: assign med = 64'b0;
default;
endcase
end
assign med2 = med << n;
assign o = med2[63:0];
endmodule
用来实现radix-4的booth算法,单独compile也通过了....
但是compile all的时候报错,错在第一行显示
# Error: VCP2000 calc.v : (1, 7): Syntax error. Unexpected token: module[_MODULE]. Expected tokens: ';' , '#' , ''' , '(' , '{' ... .
完全不明白这是什么错,因为顶层程序还没有写,照理来说和其他程序根本没有关系
module calc(i, code, n, o);
input [31:0] i;
input [2:0] code;
input n;
output [63:0] o;
wire [31:0] mid;
reg [63:0] med;
wire [80:0] med2;
assign mid = ~i + 1'b1;
always @(code)
begin
case(code)
3'b000: assign med = 64'b0;
3'b001: assign med ={{(32){i[31]}},{i[31:0]}};
3'b010: assign med ={{(32){i[31]}},{i[31:0]}};
3'b011: assign med ={{(31){i[31]}},{i[31:0]},1'b0};
3'b100: assign med ={{(31){mid[31]}},{mid[31:0]},1'b0};
3'b101: assign med ={{(32){mid[31]}},{mid[31:0]}};
3'b110: assign med ={{(32){mid[31]}},{mid[31:0]}};
3'b111: assign med = 64'b0;
default;
endcase
end
assign med2 = med << n;
assign o = med2[63:0];
endmodule
用来实现radix-4的booth算法,单独compile也通过了....
但是compile all的时候报错,错在第一行显示
# Error: VCP2000 calc.v : (1, 7): Syntax error. Unexpected token: module[_MODULE]. Expected tokens: ';' , '#' , ''' , '(' , '{' ... .
完全不明白这是什么错,因为顶层程序还没有写,照理来说和其他程序根本没有关系
