Tasktop.v(10):( vlog-2110)非法引用网络" b"

时间:2016-02-10 17:51:56

标签: verilog hdl

我正在用verilog编写一个程序。总共3个AND门,前2个AND门的输出被输入到第3个门,我需要第3个门的输出。请让我知道我的程序有什么问题。我正在附上我的程序

underscore-1.6.0

3 个答案:

答案 0 :(得分:1)

module Two_AND (a,b,out);中你有以下几行:

and g2(out2,b,c);

c未定义。

out1out2out3也未定义,但是是输出,默认情况下会创建为1位线,在这种情况下也可以。

但您的输出out未被驱动,您使用out3时需要使用out

module Two_AND (
  input  a,
  input  b,
  input  c,
  output out
);

  wire out1,out2;

  and g1(out1,a,b);
  and g2(out2,b,c);
  and g3(out,out1,out2);
endmodule

答案 1 :(得分:1)

@Morgan是对的。 但是,您得到的错误是因为您的TOP模块有问题。 您应该将 a b 定义为reg,将 out 定义为wire。

只能在初始或始终块中分配regs。 模块的输出应连接到电线。

此外,由于输入 c 已添加到您的模块中,您应该在TOP模块中实例化Two_AND时考虑它。

答案 2 :(得分:1)

我认为以前的答案非常有启发性和实用性。我只想添加一个小小费。我建议您始终将`default_nettype none 添加到您的verilog代码中。例如,您使用了" out1"和" out2"电线,但你没有定义它们。如果您不想混淆,请将其添加到您的代码中。