Как добавить новый ключ в ассоциативный массив Systemverilog с помощью VPI

Я пытаюсь получить доступ к ассоциативному массиву Systemverilog из C с помощью VPI. Я могу записать значение в элемент массива для ключа, используя следующий код, если ключ уже существует.

index = vpi_handle_by_index(reg_array, 200); // 200 is an existing key
vpi_value.format = vpiIntVal;
vpi_value.value.integer = (PLI_INT32)array_var_val;
vpi_put_value(index, &vpi_value, NULL, vpiNoDelay);

vpi_handle_by_index () возвращает NULL, если ключ еще не существует. У меня вопрос, как я могу добавить новый ключ в ассоциативный массив?

Точно так же я также хочу передать значение в Systemverilog Queue, используя VPI. Как я могу реализовать метод push_back(val), используя VPI?

1 ответ

Решение

Нет способа изменить размер динамического массива / очереди через VPI. В SystemVerilog VPI отсутствуют многие функции, связанные с динамически размещаемыми массивами.

VPI - это, главным образом, интерфейс инструмента, который взаимодействует с существующей базой данных проектирования. Вы должны использовать DPI в качестве интерфейса для моделирования / языка.

Другие вопросы по тегам