ModelSim编译成功,但是我的代码中的声明错误

时间:2019-04-04 10:22:51

标签: verilog hdl modelsim

我是modelSim和verilog的初学者

modelsim不在乎我的名称声明,并且Half_Adder模块的每个名称都能成功编译
在下面的部分中,我有不正确的Half_(因为我的模块名称是Half_Adder),但是modelsim编译时没有错误

module Half_Adder(input a,b,output  s,c );
xor (s,a,b);
and(c,a,b);
endmodule
module Full_Adder(input a,b,c,output sum,carry);
wire sum1,carry1,carry2;
Half_  m1(a,b,sum1,carry1);
Half_Adder m2(sum1,c,sum,carry2);
or(carry,carry1,carry2);
endmodule

以上所有代码都在一个.v文件中,我不知道它是否正确

我在jdoodle在线verilog编译器中测试了以上代码,并且名称声明有错误: jdoodle.v:8:错误:未知模块类型:Half _

但是在modelsim中是真的!

1 个答案:

答案 0 :(得分:2)

在jdoodle上运行时,您尝试编译并详细阐述代码。这将是失败的详细说明步骤(因为没有Half_模块)。

当您在Modelsim上键入vlog时,您只是编译,而无需详细说明代码。当您尝试详细说明代码时,在Modelsim中出现错误:

vsim Full_adder
  

**错误:Half_Adder.v(7):模块“ Half_”未定义。

编译Verilog与编译C或其他语言相似。每个模块都是单独编译的。详细说明是最后一个阶段,所有模块都试图链接在一起(详细说明有点类似于使用C语言和其他语言进行链接)。因此,当任何模拟器尝试详细说明您的代码时,都会出现错误,因为没有Half_模块。