我是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中是真的!
答案 0 :(得分:2)
在jdoodle上运行时,您尝试编译并详细阐述代码。这将是失败的详细说明步骤(因为没有Half_
模块)。
当您在Modelsim上键入vlog
时,您只是编译,而无需详细说明代码。当您尝试详细说明代码时,在Modelsim中出现错误:
vsim Full_adder
**错误:Half_Adder.v(7):模块“ Half_”未定义。
编译Verilog与编译C或其他语言相似。每个模块都是单独编译的。详细说明是最后一个阶段,所有模块都试图链接在一起(详细说明有点类似于使用C语言和其他语言进行链接)。因此,当任何模拟器尝试详细说明您的代码时,都会出现错误,因为没有Half_
模块。