Как добавить новый ключ в ассоциативный массив 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 в качестве интерфейса для моделирования / языка.