Мне не совсем понятно, что вы пытаетесь выполнить, но в симуляторе Synopsys VCS есть системная задача с именем $system
, которую можно использовать для выполнения команды оболочки во время симуляции. Если вы выполните sleep 1
следующим образом, симуляция будет приостановлена на 1 секунду времени настенного времени для каждого временного шага. Это заставит вашу симуляцию отображать сообщение один раз в секунду. Конечно, ваша симуляция будет очень медленной. Обратите внимание, что $system
не является частью стандарта IEEE для Verilog.
Обновление: я первоначально заявил, что $system
относится к VCS. Но Марти сообщил нам, что Каденс также поддерживает это.
`timescale 1ns/1ns
module tb;
initial begin
$timeformat(-9, 1, "ns");
#5 $finish;
end
integer sec = 0;
always begin
#1;
$system("sleep 1");
sec = sec + 1;
$display("seconds = %0d, time = %0t", sec, $time);
end
endmodule
Это печатает следующее:
seconds = 1, time = 1.0ns
seconds = 2, time = 2.0ns
seconds = 3, time = 3.0ns
seconds = 4, time = 4.0ns
$finish called from file "tb.v", line 8.
$finish at simulation time 5.0ns