Блокирует ли событие Verilog выполнение процедуры?

Блокирует ли управление событиями Verilog выполнение процедуры до тех пор, пока событие не произойдет? Рассмотрим пример ниже.

module test;
  reg a;
  initial begin
    @(a) $display("%b", a);
    $display("the_message");
  end
endmodule

Если я выполню вышеуказанное, симуляция закончится без печати the_message. Почему?

Означает ли это, что @(a) блокируется до a изменений? Если да, то почему имитация не зависает вечно вместо того, чтобы завершить работу без печати the_message?

Спасибо


person cmutex    schedule 23.06.2019    source источник
comment
Небольшая придирка, но в (System) -Verilog мы не говорим о процедурах. Существуют задачи [могут потреблять время, не возвращать значения, иметь ноль или более аргументов] и функции [не могут потреблять время, должны возвращать значение, иметь один или несколько аргументов].   -  person Paul Floyd    schedule 24.06.2019


Ответы (1)


Симуляторы, управляемые событиями, работают до тех пор, пока не останется больше запланированных или явно завершенных активных событий ($finish).

person dave_59    schedule 23.06.2019
comment
спасибо @ dave_59, не могли бы вы порекомендовать мне URL-адрес, в котором подробно обсуждается планирование и обработка событий? - person cmutex; 24.06.2019