Modelsim:错误:(vsim-3033)...实例化“ MUT”失败。找不到设计单位

当我尝试在测试平台中包括一个子模块以进行仿真时,我在ModelSim中遇到vsim-3033错误。所有代码都可以正常编译(根据modelsims的“复选标记”)。这里的代码显然是Verilog。我已经看到这个问题“回答了”几次,但是这个阶段的解释却使我头疼。

确切的错误如下:

vsim -voptargs=+acc work.NGateTB
# vsim -voptargs=+acc work.NGateTB 
# Loading work.NGateTB
# ** Error: (vsim-3033) C:/Users/user/Desktop/testitems/ngateTB.v(7): Instantiation of 'MUT' failed. The design unit was not found.
# 
#         Region: /NGateTB
#         Searched libraries:
#             C:/Users/user/Desktop/testitems/work
# Error loading design

我是ModelSim的新手,我不知道如何解决它,而我遇到的问题是,在这个阶段,很多解释对于我来说都是太“技术性”的,我无法理解在这种环境下。 (请-以六岁的孩子可以理解的方式解释我的错-以及如何解决该问题-更重要的是它是由什么引起的)。

我知道这基本上是与“查找被调用模块”有关的问题-但是我不知道如何解决它。我尝试将项目根目录添加到(项目窗口)->左键->属性-> Verilog和SystemVerilog->包含目录...

代码如下:

module ngate(A,B);
  input A;
  output B;

  assign A = !B; 

endmodule

测试台代码为:

`include "ngate.v"

module NGateTB();
  reg A;
  wire B;

  MUT ngate (A,B); 

endmodule

当我注释掉MUT ngate(A,B)时;行问题消失了。因此,我知道这与ModelSim包含在仿真中的方式有​​关。 (就我所知,代码更不用说将其作为唯一的原因了)。唯一的其他问题也许是include语法-但是我对此不确定。所有文件都位于项目空间的“根”中-唯一的子文件夹是由modelim在“工作”文件夹中生成的那些子文件夹。

当我自己模拟ngate模块时-我没有问题-并且工作正常。当前,两个项目都位于设计的顶层,没有子文件夹(虚拟或其他)。只有当我将子模块包含到另一个模块中时,问题才会出现。

我使用的是Modelim Altera入门版10.1.b。 -如果重要的话。

我不愿意承认这一点-但是IDE让我陷入了困境。

sunwei7991 回答:Modelsim:错误:(vsim-3033)...实例化“ MUT”失败。找不到设计单位

代码应为:

module ngate
(
    input A,output B
);

    assign B = !A;  // A and B were back-to-front.

endmodule

测试平台代码应为:

`timescale 1ns/100ps
module NGateTB();

    reg A;
    reg B;  // Need reg not wire.

    ngate MUT (.A(A),.B(B));  // MUT and ngate were back-to-front and signals weren't connected using named association.

    always
    begin
        #10 A = 1'b1;
        #10 A = 1'b0;
        #10 A = 1'b1;
        #10 A = 1'b0;
        #10 A = 1'b1;
        #10 A = 1'b0;
        #10 A = 1'b1;
        #10 A = 1'b0;
        #10 A = 1'b1;
        #10 A = 1'b0;
        $stop;
    end

endmodule

希望有帮助。

本文链接:https://www.f2er.com/2560160.html

大家都在问