Я пишу SystemVerilog Testbench для модуля, который моделирует схему c, но не знаю, почему в окне стенограммы говорится, что нет подключения к порту Y? - PullRequest
0 голосов
/ 05 мая 2020

Следующая схема c - это то, из чего я смоделировал свой модуль. Это HW-назначение SystemVerilog, в котором мы должны использовать непрерывные назначения. Фирменный образец нам передали. Обратите внимание, что в схеме нет задержек. Проблема, с которой я сталкиваюсь, заключается в том, что я действительно не знаю, что делаю, поскольку я новичок в SystemVerilog, и мне впервые приходится писать свой собственный Testbench. schemati c к модели

Вот код модуля:

module hw2_prob1 (
  input logic A, B, C, D,
  output logic Y
);  

  assign Y = (~(A|D)) & (B & C & ~D);


endmodule     

Это то, что у меня есть для моего кода тестового стенда:

timeunit 1ns/1ns;

module tb_hw2_prob1();
 reg A, B, C, D;
 wire Y;



hw2_prob1 DUT(A, B, C, D, Y);

initial begin
#5 {A,B,C,D} = 4'b0000;
#5 {A,B,C,D} = 4'b0001;
#5 {A,B,C,D} = 4'b0010;
#5 {A,B,C,D} = 4'b0011;

#5 {A,B,C,D} = 4'b0100;
#5 {A,B,C,D} = 4'b0101;
#5 {A,B,C,D} = 4'b0110;
#5 {A,B,C,D} = 4'b0111;

#5 {A,B,C,D} = 4'b1000;
#5 {A,B,C,D} = 4'b1001;
#5 {A,B,C,D} = 4'b1010;
#5 {A,B,C,D} = 4'b1011;

#5 {A,B,C,D} = 4'b1100;
#5 {A,B,C,D} = 4'b1101;
#5 {A,B,C,D} = 4'b1110;
#5 {A,B,C,D} = 4'b1111;
end

initial begin #500 $finish; 
end

initial begin $monitor ($time,"%h %b", {A,B,C,D},Y);
end

endmodule

Присваивание требует: «Тестовая среда для этой схемы должна установить оператор $ monitor () в одном начальном блоке и сгенерировать все возможные комбинации входов с задержкой # 5 нс между изменениями входов». Мы используем QuestaSim или ModelSim для моделирования, и вот стенограмма и волна windows. Фрагмент окна проекта tb Фрагмент окна волны tb

Надо ли добавлять часы? Почему появляется сообщение об отсутствии соединения для порта Y? Правильно ли мое волновое окно?

1 Ответ

1 голос
/ 05 мая 2020

hw2_prob1 DUT(Y, A, B, D); отсутствует C и имеет неправильный порядок портов.

Выберите один:

  • hw2_prob1 DUT(A, B, C, D, Y); // подключение по порядку портов
  • hw2_prob1 DUT(.Y(Y), .A(A), .(B), .C(C), .D(D) ); // явное подключение по имени порта
  • hw2_prob1 DUT( .Y, .A, .B, .C, .D ); // неявное подключение по имени порта
  • hw2_prob1 DUT( .* ); // автоматическое подключение по имени порта
...