system-verilog - 如何使用 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) 方法?
解决方案
无法通过 VPI 修改动态数组/队列的大小。SystemVerilog VPI 缺少许多处理动态分配数组的功能。
VPI主要是与现有设计数据库交互的工具接口。您应该使用 DPI 作为建模/跨语言界面。
推荐阅读
- actions-on-google - 谷歌智能家居操作的文档中没有示例话语
- php - 如何使用自己的实例构建订阅应用程序
- ecmascript-6 - 通过 ECMAScript 6 中的装饰器向基于类的查找表添加方法
- excel - Autofilter VBA,我如何检查条件是否不存在?
- windows - Windows CMD 批处理脚本 FFmpeg
- xamarin - 在 Apple Silicon M1 Mac 上运行的 iOS 应用程序的默认应用程序中打开文件
- html - 如何让禁用选项在选择 html 时变为粗体和黑色?
- python - 如何将此for循环转换为while循环(Python)?
- windows - 为什么使用“ls -a”时不断弹出错误?
- bigcommerce - 为什么产品集合页面 bigcommerce 上的一张缩略图比其他缩略图大?