问题标签 [vpi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
system-verilog - 如何使用 VPI 向 Systemverilog 关联数组添加新密钥
我正在尝试使用 VPI 从 C 访问 Systemverilog 关联数组。如果键已经存在,我可以使用以下代码将值写入键的数组元素。
如果键不存在,则 vpi_handle_by_index() 返回 NULL。我的问题是如何向关联数组添加新键?
同样,我还想使用 VPI 将值推送到 Systemverilog 队列。如何使用 VPI 实现 push_back(val) 方法?
c - 在 Verilog Procedural Interface 中,是否可以多次扫描迭代循环?
我们可以通过以下方式使用 vpi_scan:
当 vpi_scan() 返回 NULL 时,iter 将被释放。但是如果我需要多次扫描循环怎么办?有没有办法告诉 vpi_scan 不要释放迭代器,以便完成后我可以 vpi_free_object ?我想我可以使用一个额外的容器来解决这个问题(收集并保留所有条目),但它真的需要吗?
编辑: 1. 我不想多次调用 vpi_iterate,因为它可能很昂贵。2. 假设我使用了一个额外的容器解决方案。有没有办法在不实际扫描循环的情况下找出 vpi_scan 循环中的条目数?这可以使实现更简单。
verilog - 使用 Verilator 和 VPI 读取 regs 数组
所以我在我的verilog中定义了以下寄存器
我的目标是从我的验证器 C++ 代码中读取存储在其中的 16 个值中的每一个。
我发现这个 VPI 东西的文档很难找到。我仍然无法弄清楚 at_vpi_vecval
是什么以及它的参数是什么,或者它是否是正确的方法。
这是我读取寄存器中第 5 个值的方法
无论我在这里做什么,该方法都返回 0,表明我没有查看 register_mem 数组。
我究竟做错了什么?
linux - 在自定义共享库中使用 QT5 和 QTQuick2 对象和库
我在 QTCreator 中学习 Qt5+QtQuick2 并开发了一组共享对象,这些共享对象被重命名为具有.vpi
扩展名,但我无法将 Qt 和 QtQuick 对象链接到这个由以下命令共享的新生成对象。
我应该在其文件中将哪些指令传递给 QtCreator,.pro
以便它具有在 Ubuntu 18.04 32 位上与 iVerilog 一起使用所需的最终输出。
由于大小,我不会列出每个命令和每个.pro
文件,只是在最终构建阶段是相对的并且与 QTCreator 的默认设置不同。
文件.pro
:
qmake/make 生成的用于创建 .so 的最后命令:
函数来源:
需要注意的是,通过生成的main.cpp
可执行文件由典型的 QT5 方法调用的代码可以正常工作:
最终执行和产生的错误:
system-verilog - VPI 回调信号值变化的时间单位
在我的 VPI 回调函数中,我得到了时间的实际值,但是这个时间值的单位取决于信号所在模块的时间尺度。我怎样才能找到所提供时间的单位?
这是我的监视器 VPI 功能: