如何使用 VPI 检查 Systemverilog 关联数组是否有键

How to check if a Systemverilog associative array has a key using VPI

我正在尝试使用 VPI 从 C 访问 Systemverilog 关联数组。我可以使用以下代码访问密钥的数组元素 if 我提供现有密钥。

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

但是如果密钥无效(不存在),此代码会生成一条错误消息。 如何在不生成错误消息的情况下检查数组中是否存在键?

VPI 不提供查看密钥是否存在的机制。您只能遍历所有数组元素并在每个元素上使用 vpi_handle (vpiIndex, var_select_handle) 收集键,并在匹配时停止。