$time, $stime и $realtime Verilog

Описание временных системных функций
Содержание

17.7 Системные функции моделировании времени Verilog

Следующие системные функции Verilog обеспечивают доступ к текущему времени моделирования: $time, $stime и $realtime.

17.7.1 $time

$time — это системная функция, которая возвращает целое число, представляющее собой 64-битное время, масштабированное до единицы временной шкалы вызвавшего ее модуля.

Синтаксис системной функции $time показан в Синтаксис 17-14.

time_function ::= $time
Синтаксис 17-14 — Синтаксис $time
Например:
`timescale 10 ns / 1 ns module test; parameter p = 1.55; reg set; initial begin $monitor($time,,"set=",set); #p set = 0; #p set = 1; end endmodule // выходные данные этого примера: // 0 set=x // 2 set=0 // 3 set=1

В этом примере набору reg присваивается значение 0 при времени моделирования 16 нс и значение 1 при времени моделирования 32 нс. Значения времени, возвращаемые системной функцией $time, определяются следующими шагами:

1) Времена моделирования 16 нс и 32 нс масштабируются до 1,6 и 3,2, поскольку единицей измерения времени для модуля является 10 нс. Поэтому значения времени, сообщаемые этим модулем, кратны 10 нс.

2) Значение 1.6 округляется до 2, а 3.2 округляется до 3, поскольку системная функция $time возвращает целое число. Точность времени не вызывает округления этих значений.

ПРИМЕЧАНИЕ — Время, в которое происходят назначения в этом примере, не совпадает с временем, о котором сообщает $time.

17.7.2 $stime

$stime — системная функция, которая возвращает беззнаковое целое число, представляющее собой 32-битное время, масштабированное до единицы временной шкалы вызвавшего ее модуля. Если фактическое время моделирования не укладывается в 32 бита, возвращаются 32 бита младшего порядка текущего времени моделирования.

Синтаксис системной функции $stime показан в Синтаксисе 17-15.

stime_function ::= $stime
Синтаксис 17-15-Синтаксис $stime

17.7.3 $realtime

$realtime — это системная функция, которая возвращает вещественное число time, которое, как и $time, масштабируется до единицы времени вызвавшего ее модуля.

Синтаксис системной функции $realtime показан в Синтаксисе 17-16.

realtime_function ::= $realtime
Синтаксис 17-16 — Синтаксис $realtime
Например:
`timescale 10 ns / 1 ns module test; parameter p = 1.55; reg set; initial begin $monitor($realtime,,"set=",set); #p set = 0; #p set = 1; end endmodule // выходные данные этого примера: // 0 set=x // 1.6 set=0 // 3.2 set=1

В этом примере времена событий в наборе reg кратны 10 нс, потому что 10 нс — это единица времени модуля. Это вещественные числа, потому что $realtime возвращает вещественное число.