首页 > 解决方案 > 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中确实如此!

标签: veriloghdlmodelsim

解决方案


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

当您vlog在 Modelsim 上键入时,您只是在编译,而不是详细说明您的代码。当您尝试详细说明您的代码时,您会在 Modelsim 中遇到错误:

vsim Full_adder

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

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


推荐阅读