首页 > 解决方案 > 如何使用 VPI 向 Systemverilog 关联数组添加新密钥

问题描述

我正在尝试使用 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) 方法?

标签: system-verilogvpi

解决方案


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

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


推荐阅读