Modelsim: Ошибка: (vsim-3033) ... Не удалось создать MUT. Конструкция устройства не найдена - PullRequest
0 голосов
/ 29 марта 2020

Я получаю ошибку vsim-3033 в ModelSim, когда пытаюсь включить субмодуль в тестовую среду для моделирования. Весь код компилируется нормально (в соответствии с моделями 'галочки'). Код здесь, очевидно, 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, и я понятия не имею, как это исправить, и проблема, с которой я столкнулся, заключается в том, что многие объяснения слишком «технические» на данном этапе, чтобы я мог следовать им, поскольку я относительно новичок в этой среде. (пожалуйста, объясните, что я делаю неправильно, так, как это понял бы шестилетний ребенок, - и как решить проблему - и, что более важно, чем это вызвано).

Я знаю, что это в основном проблема, связанная с "поиском вызываемого модуля" - однако я не знаю, как это исправить. Я попытался добавить каталог проекта root в (окно проекта) -> левый клик -> свойства -> 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 включает в симуляцию. (И не говоря уже о том, что код, по сути, изолирует это как единственную причину, насколько я могу судить). Единственная другая проблема - это, возможно, синтаксис включения - однако я не уверен в этом. Все файлы находятся в 'root' пространства проекта - единственные подпапки - это те, которые сгенерированы modelsim в папке «work».

Когда я сам моделирую модуль ngate - у меня нет проблемы - и все работает отлично. В настоящее время оба элемента находятся на верхнем уровне дизайна без подпапок (виртуальных или иных). Только когда я включаю субмодуль в другой модуль, возникает проблема.

Я пользуюсь modelsim Altera Starter Edition 10.1.b. - если это имеет значение.

Я ненавижу это признавать - но IDE поставила меня в тупик.

1 Ответ

1 голос
/ 29 марта 2020

Код должен быть:

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

Надеюсь, что поможет.

...