为什么这个Verilog代码不会编译?

时间:2011-03-08 21:36:50

标签: verilog

导致问题的部分是c[1] = p[0] + g[0] & c0;。它有什么问题?

module CLA_gen(p, g, c0, c);
input [3:0] p;
input [3:0] g;
input c0;
output reg [4:1] c;
begin
c[1] = p[0] + g[0] & c0;
end
endmodule

4 个答案:

答案 0 :(得分:4)

你错过了你的常常阻止及其敏感性列表。

always @(*)
  c[1] = p[0] + g[0] & c0;

在上面发布的代码中,您不一定需要开头/结尾,因为您只有一行。但是将它添加到那里并没有什么坏处。

答案 1 :(得分:2)

您最有可能想要改变:

begin

为:

always @* begin

每个begin/end必须是其他构造的一部分,例如alwaysinitial等。

答案 2 :(得分:0)

删除开头和结尾 将c声明为输出

按照这个

module CLA_gen(p, g, c0, c);
input [3:0] p;
input [3:0] g;
input c0;
output [4:1] c;
assign c[1] = p[0] + g[0] & c0;
endmodule

答案 3 :(得分:-1)

您可能需要使用< =而不是=。