问题标签 [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.

0 投票
1 回答
503 浏览

system-verilog - 如何使用 VPI 向 Systemverilog 关联数组添加新密钥

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

如果键不存在,则 vpi_handle_by_index() 返回 NULL。我的问题是如何向关联数组添加新键?

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

0 投票
1 回答
130 浏览

c - 在 Verilog Procedural Interface 中,是否可以多次扫描迭代循环?

我们可以通过以下方式使用 vpi_scan:

当 vpi_scan() 返回 NULL 时,iter 将被释放。但是如果我需要多次扫描循环怎么办?有没有办法告诉 vpi_scan 不要释放迭代器,以便完成后我可以 vpi_free_object ?我想我可以使用一个额外的容器来解决这个问题(收集并保留所有条目),但它真的需要吗?

编辑: 1. 我不想多次调用 vpi_iterate,因为它可能很昂贵。2. 假设我使用了一个额外的容器解决方案。有没有办法在不实际扫描循环的情况下找出 vpi_scan 循环中的条目数?这可以使实现更简单。

0 投票
1 回答
542 浏览

verilog - 使用 Verilator 和 VPI 读取 regs 数组

所以我在我的verilog中定义了以下寄存器

我的目标是从我的验证器 C++ 代码中读取存储在其中的 16 个值中的每一个。

我发现这个 VPI 东西的文档很难找到。我仍然无法弄清楚 at_vpi_vecval是什么以及它的参数是什么,或者它是否是正确的方法。

这是我读取寄存器中第 5 个值的方法

无论我在这里做什么,该方法都返回 0,表明我没有查看 register_mem 数组。

我究竟做错了什么?

0 投票
0 回答
34 浏览

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 方法调用的代码可以正常工作:

最终执行和产生的错误:

0 投票
1 回答
21 浏览

system-verilog - VPI 回调信号值变化的时间单位

在我的 VPI 回调函数中,我得到了时间的实际值,但是这个时间值的单位取决于信号所在模块的时间尺度。我怎样才能找到所提供时间的单位?

这是我的监视器 VPI 功能: