如何使用 VPI 将新键添加到 Systemverilog 关联数组

How to add a new key to a Systemverilog associative array using VPI

我正在尝试使用 VPI 从 C 访问 Systemverilog 关联数组。如果键已经存在,我可以使用以下代码将值写入键的数组元素。

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() returns 如果键不存在则为 NULL。 我的问题是如何向关联数组添加新键?

同样,我也想使用 VPI 将一个值推送到 Systemverilog 队列。如何使用 VPI 实现 push_back(val) 方法?

无法通过 VPI 修改动态 array/queue 的大小。 SystemVerilog VPI 缺少许多处理动态分配数组的功能。

VPI主要是一个与现有设计数据库交互的工具界面。您应该将 DPI 用作 modeling/inter-language 界面。