Verilog: === Оператор не работает

У меня есть провод:

wire module3Output;

В конце концов, я тестирую двоичный файл на проводе, используя:

initial
    begin
          if (module3Output === 1)
               #1 $display("PASS: module3Output=%b", module3Output);
          else
               #1 $display("FAIL: module3Output=%b", module3Output);
    end

Выход:

FAIL: module3Output=1

Почему он не работает, когда четко показывает module3Output=1?

Я могу опубликовать полный код, если это необходимо.


person NoName    schedule 25.06.2017    source источник
comment
Избавьтесь от #1 или переместите его перед оператором if, и что произойдет?   -  person Greg    schedule 26.06.2017


Ответы (1)


Обнаружил проблему после холодного пива.

Задержку необходимо поставить перед оператором if, чтобы дать время для передачи данных в канал module3Output. В единицу времени 0 значение module3Output равно 0 (по умолчанию), поэтому условие if не выполняется, и программа переходит в условие else. Однако после задержки перед командой $display данные достигли module3Output и их значение становится равным 1, поэтому печатается 1.

Исправлен код:

initial
     begin
           #1 if (module3Output === 1)
                   $display("PASS: module3Output=%b", module3Output);
              else
                   $display("FAIL: module3Output=%b", module3Output);
     end
person NoName    schedule 26.06.2017