0

我正在尝试使用 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() 返回 NULL。我的问题是如何向关联数组添加新键?

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

4

1 回答 1

1

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

VPI主要是与现有设计数据库交互的工具接口。您应该使用 DPI 作为建模/跨语言界面。

于 2018-08-08T21:31:26.827 回答