Вывод в stdout
$display(), $write()
Используются для отображения в консоли симулятора значения переменных, строк или выражений. Исполняются сразу, как дошло исполнение до них. Строка формата, задаваемая первым аргументом, работает как в языке C.
$display
всегда переходит на новую строку после печати. Поэтому вызов без параметров – это печать пустой строки.
$write
не переходит на новую строку после печати.
Пример
module display_write_tb;
reg [7:0] a, b;
initial begin
a = 8'd4;
b = 8'd5;
$write("Vars: ");
$display("a = %0d; b = %0d", a, b);
end
endmodule
Результат исполнения
Vars: a = 4; b = 5
$strobe()
Выводит текст после выполнения всех событий моделирования на текущем временном шаге, в отличие от $display()
и $write()
. Новая строка автоматически добавляется к тексту. Имеет формат, аналогичный формату $display
.
Пример
module strobe_tb;
reg [7:0] a, b;
initial begin
a = 8'h2D; b = 8'h2D;
#10; b <= a + 1;
$display("[$display] Time [%0t]: a=0x%0h b=0x%0h", $time, a, b);
$strobe ("[$strobe] Time [%0t]: a=0x%0h b=0x%0h", $time, a, b);
#1;
$display("[$display] Time [%0t]: a=0x%0h b=0x%0h", $time, a, b);
$strobe ("[$strobe] Time [%0t]: a=0x%0h b=0x%0h", $time, a, b);
end
endmodule
Результат исполнения
[$display] Time [10]: a=0x2d b=0x2d
[$strobe] Time [10]: a=0x2d b=0x2e
[$display] Time [11]: a=0x2d b=0x2e
[$strobe] Time [11]: a=0x2d b=0x2e
Стоит отметить, что $strobe
показывает окончательное обновленное значение переменной b
в момент времени 10
, которое равно 0x2E
, а $display
отображает текущее значение своих аргументов внутри такта.
Last updated