Verilog VPI Обратный звонок - PullRequest
       3

Verilog VPI Обратный звонок

0 голосов
/ 26 октября 2011

Что должен делать обратный вызов VPI cbValueChange и как он работает?

Предположим, я хочу выполнить функцию при posedge сигнала X (около 2000 циклов). Должен ли я использовать обратный вызов cbValueChange или вызвать код с испытательного стенда?

always @posedge(X) 
begin 
    $pli 
end 

Что было бы более эффективным?

Ответы [ 2 ]

0 голосов
/ 10 марта 2013

cbValueChange - причина, используемая для регистрации / получения события изменения значения для зарегистрированного сигнала через vpi_register_cb().Поэтому, когда значение сигнала будет перевернуто или изменено, симулятор вызовет функцию обратного вызова на соответствующей фазе симуляции.Если вы хотите вызывать только свою собственную функцию PLI / VPI, подробный пример можно посмотреть в http://www.asic -world.com / verilog / pli5.html

0 голосов
/ 01 марта 2012

Эффективность, вероятно, не имеет большого значения.Без лучшего понимания вашей ситуации сложно дать твердый совет, но я рекомендую вызов $ pli, как в вашем примере.Использование cbValueChange означает регистрацию некоторого кода на C, который будет выполняться симулятором при изменении значения переменной.Это происходит без вызова пользовательской процедуры $ pli во время изменения значения.Поскольку это абсолютно невидимо для любого, кто читает код Verilog, вы расстроите любого, кто попытается понять, что происходит, если ваш код на C вносит какие-либо изменения, влияющие на симуляцию.

...