Поведенческий процедурный оператор initial
Процедурный оператор initial
позволяет инициализировать внутренние переменные модуля. С него начинается исполнение модуля при запуске симулятора. Внутри initial
можно поставить одно выражение или блок begin-end
. Содержимое initial
выполняется один раз, последовательно, начиная с момента времени 0.
Операторов инициализации initial
может быть несколько. Разные initial
выполняются в неопределённом порядке, независимо друг от друга.
Синтаксис
initial begin
<код>
end
Пример
/* Несколько операторов initial */
module multi_initial_tb();
initial begin
$display("Hello world0");
end
initial begin
$display("Hello world1");
end
endmodule
/* Несколько операторов initial, действия будут выполнены в разных тактах */
module multi_initial_tb();
initial begin
#1 $display("Hello world0");
end
initial begin
$display("Hello world1");
end
endmodule
Пояснение к примеру
В силу «одновременного» исполнения всех блоков initial
с начала симуляции, в первом примере может отработать сначала как первый display
, так и второй. Во втором примере гарантируется, что сначала будет выведено "Hello world1"
, а после "Hello world0"
за счёт установленной временной задержки в первом блоке.
Last updated