我是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中也是如此!
当你在jdoodle上运行时,你正在尝试编译和详细说明你的代码。这将是失败的精化步骤(因为没有Half_
模块)。
当您在Modelsim上键入vlog
时,您只是在编译,而不是详细说明您的代码。当您尝试详细说明代码时,您在Modelsim中收到错误:
vsim Full_adder
** Error: Half_Adder.v(7): Module 'Half_' is not defined.
编译Verilog类似于编译C或其他语言。每个模块都是单独编译的。 Elaborating是尝试将所有模块链接在一起的最后阶段(并且详细说明与C和其他语言中的链接类似)。因此,当任何模拟器试图详细说明您的代码时,您会收到错误,因为没有Half_
模块。