Как присвоить значение времени симуляции в системном verilog - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть файл с транзакциями, у каждой есть время, когда это произошло.Я хочу запустить симуляцию SystemVerilog и «воспроизвести» каждую транзакцию в свое время

Однако я не хочу на самом деле ждать циклов между транзакциями.Вместо этого я хочу присвоить время транзакции (из файла) времени симуляции SystemVerilog (назначение должно произойти в течение 0 раз).

Можно ли таким образом увеличить время симуляции System Verilog?Если так - как?

Упрощенная версия файла:

TIME (ns)    |   TRANSACTION DATA   
    1        |     0x1, 0x2, 0x3
    5        |     0x4, 0x5, 0x6
   200       |     0xa, 0xb, 0xc
  10000      |     0xd, 0xe, 0xf

Спасибо.Roi.

1 Ответ

0 голосов
/ 24 февраля 2019

На языке событий, управляемых событиями.например, SystemVerilog, время является глобальным значением, разделяемым всеми процессами.Вы не можете установить его - вы можете наблюдать только его текущее значение.

Как работает управляемое событиями моделирование, оно работает в цикле, обрабатывая очередь событий в текущий момент времени, пока очередь не станет пустой.Только тогда он переходит к следующему запланированному событию в будущем.Поэтому вы можете сделать так, чтобы блок процесса ожидал какое-то время в будущем.

SystemVerilog не предоставляет способа планирования чего-либо на определенное время, но если вы наблюдаете текущее время, вы можете вычесть этовремя от времени в будущем, которое вы хотите, блок для этого количества времени.

Поскольку ваши транзакции не перекрываются, вы можете прочитать файл по одной строке за один раз и подождать указанное время.Вы читаете первую строку в момент времени 0 и ждете 1- $ в реальном времени.Затем выполните транзакцию.Когда это будет сделано, вы читаете вторую строку и ждете 5- $ реального времени.Это можно сделать в цикле, пока не будет достигнут конец файла.

...