Выделенная структура для value_p для использования с VPI vpi_put_value()
Я реализую Verilog "force" и "release", используя VPI, чтобы их можно было вызывать из подпрограмм Си. Чтобы форсировать значение в векторной сети, мне нужно создать массив s_vpi_vecval для value_p. Я выделил хранилище для массива и заполнил его желаемым значением. Затем я использовал vpi_put_value() для принудительной установки значения вектора в сеть.
Стандарт IEEE 1800 четко говорит, что вызывающей подпрограмме необходимо выделить место для такой структуры для value_p. Но он не сказал, когда безопасно освободить хранилище. Безопасно ли освобождать хранилище сразу после вызова vpi_put_value()?
Я предполагаю, что vpi_put_value() сохранит копию значения силы в своей стороне. Любое понимание этого очень ценится.
1 ответ
Я думаю, можно с уверенностью предположить, что вы можете освободить память после вызова VPI - так работают все остальные подпрограммы VPI.
Вы можете легко проверить это, сделав два звонка dpi_put_value()
используя тот же указатель структуры.
Я отправил запрос на разъяснение стандарта IEEE.