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

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

index = vpi_handle_by_index(reg_array, 200); // 200 is a valid key
vpi_value.format = vpiIntVal;
vpi_get_value(index, &vpi_value);

Но этот код генерирует сообщение об ошибке, если ключ недействителен (не существует). Как я могу проверить, существует ли ключ в массиве, не генерируя сообщение об ошибке?

1 ответ

Решение

VPI не предоставляет механизма для проверки наличия ключа. Вы можете перебирать все элементы массива и собирать ключи, используя vpi_handle (vpiIndex, var_select_handle) на каждом элементе и остановитесь, когда получите совпадение.

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