不允许同时分配给非网络“_”
Concurrent assignment to a non-net '_' is not permitted
我遇到错误:
concurrent assignment to a non-net 'A' is not permitted
concurrent assignment to a non-net 'B' is not permitted
Static elaboration of top level Verilog design unit(s) in library work failed.
我做错了什么?
module ex1( input reg [1:0] a,
input reg [1:0]b,
output wire c,
);
assign c=(a>b)?(a=1'b1):(c=1'b0);
endmodule
module testbench(
);
reg[1:0]a=2'b11;
reg [1:0]b=2'b00;
wire c;
always#10
begin
a=a-2'b01;
b=b-2'b01;
end
initial
#150 $finish;
ex1 testbench2 (.a(a),
.b(b),.c(c));
endmodule
我在你的 ex1
模块中发现了 3 个语法错误。
端口列表中的尾随逗号是非法的。变化:
output wire c,
至:
output wire c
给模块内的输入端口赋值是非法的。这是非法的:a=1'b1
。假设在那里使用 a
是一个拼写错误,而你真的想输入 c
,你应该更改:
assign c=(a>b)?(a=1'b1):(c=1'b0);
至:
assign c = (a>b) ? 1'b1 : 1'b0;
您通常不想像您的代码那样在条件运算符内进行赋值。
一个模拟器还抱怨将 input
端口声明为 reg
类型。对于 a
和 b
,您应该省略 reg
。这是重新编码的模块:
module ex1 (
input [1:0] a,
input [1:0] b,
output wire c
);
assign c = (a>b) ? 1'b1 : 1'b0;
endmodule
我遇到错误:
concurrent assignment to a non-net 'A' is not permitted
concurrent assignment to a non-net 'B' is not permitted
Static elaboration of top level Verilog design unit(s) in library work failed.
我做错了什么?
module ex1( input reg [1:0] a,
input reg [1:0]b,
output wire c,
);
assign c=(a>b)?(a=1'b1):(c=1'b0);
endmodule
module testbench(
);
reg[1:0]a=2'b11;
reg [1:0]b=2'b00;
wire c;
always#10
begin
a=a-2'b01;
b=b-2'b01;
end
initial
#150 $finish;
ex1 testbench2 (.a(a),
.b(b),.c(c));
endmodule
我在你的 ex1
模块中发现了 3 个语法错误。
端口列表中的尾随逗号是非法的。变化:
output wire c,
至:
output wire c
给模块内的输入端口赋值是非法的。这是非法的:a=1'b1
。假设在那里使用 a
是一个拼写错误,而你真的想输入 c
,你应该更改:
assign c=(a>b)?(a=1'b1):(c=1'b0);
至:
assign c = (a>b) ? 1'b1 : 1'b0;
您通常不想像您的代码那样在条件运算符内进行赋值。
一个模拟器还抱怨将 input
端口声明为 reg
类型。对于 a
和 b
,您应该省略 reg
。这是重新编码的模块:
module ex1 (
input [1:0] a,
input [1:0] b,
output wire c
);
assign c = (a>b) ? 1'b1 : 1'b0;
endmodule