Ваш симулятор правильно предупреждает вас о необычной ситуации. Этот оператор $display
никогда не будет выполнен. Следовательно, это бесполезный код.
Список неявной чувствительности (@*
) означает, что он будет введен только в том случае, если какой-либо сигнал (например, b
) изменит значение, и он используется справа сторона (RHS) некоторого выражения внутри always
. Проблема в том, что внутри вашего блока нет сигнала. См. IEEE Std 1800-2017, раздел 9.4.2.2 Неявный список выражений_выражений .
Если вы добавите b
к вашему тривиальному примеру, блок always
будет запущен, если есть любые изменения на b
:
module main;
reg b;
always @(*) begin
$display("entered always block and b=%b", b);
end
initial begin
b=0;
#50 $finish;
end
always #5 b = ~b;
endmodule
Выводы:
entered always block and b=0
entered always block and b=1
entered always block and b=0
entered always block and b=1
entered always block and b=0
entered always block and b=1
entered always block and b=0
entered always block and b=1
entered always block and b=0
entered always block and b=1
Пример выполнения на edaplayground .