Могут ли тестовые стенды Verilog работать с настоящими часами?

Я написал счетчик на Verilog, а затем тестбенч, чтобы протестировать его. Мой тестовый стенд дает правильные результаты, поэтому мой код в порядке. Но это дает результат долгое время моментально.

Можно ли взять результат с реальным временем. Я имею в виду, что каждую секунду мой тестовый стенд будет выдавать новую строку результата? (и если можно то как?)


person obtur    schedule 30.06.2010    source источник
comment
Ради интереса, зачем вы хотите это сделать? Обычно мы жалуемся, что симуляции слишком медленные!!!   -  person Marty    schedule 30.06.2010


Ответы (1)


Мне не совсем понятно, чего вы пытаетесь достичь, но системная задача $system может использоваться для выполнения команды оболочки во время моделирования. Если вы выполните sleep 1 следующим образом, симуляция будет приостанавливаться на 1 секунду настенных часов для каждого временного шага. Это заставит вашу симуляцию отображать сообщение один раз в секунду. Конечно, ваша симуляция будет очень медленной. Обратите внимание, что $system не является частью стандарта IEEE для Verilog (но является частью System-Verilog Std).

`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
person toolic    schedule 30.06.2010