问题标签 [system-verilog-dpi]
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.
c++ - 错误:无法在赋值中将 'bool' 转换为 'svLogic*'
我们正在处理系统 verilog DPI 调用。在编译C++
文件时,我们收到如下错误:
错误:无法在赋值中将 'bool' 转换为 'svLogic*'
这svLogic
是四态变量。
VCS 模拟器在 DirectC 方法中具有预定义函数vc_putScalar
,其中 vc_putScalar 是“通过引用将标量 reg 或位的值传递给 vc_handle”。vc_handle 是函数中的输入或输出变量。使用 VCS,我们可以使用:vc_putScalar(mem_req_rdy, mm->req_cmd_ready());
我们正在开发 Modelsim questa 模拟器,因此 DirectC 将无法工作。我们厌倦了修改vc_putScalar
DPI IEEE Std 1800-2012标准的内容。我们将预定义的函数逻辑更改为:
mem_req_rdy = mm->req_cmd_ready();
这里 mem_req_rdy 是 svLogic,req_cmd_ready 是 bool。
struct - Systemverilog:将结构作为模块输入\输出传递时的模拟错误
我试图将一个结构作为输入传递并在另一个结构中获取输出。但是我在模拟过程中遇到了一些问题。以下示例代码在 questasim 中编译得很好,但是模拟给出了以下错误:
连接类型“core_tb_sv_unit.struct”与端口(struct_in)的“core_sv_unit.struct”不兼容:结构/联合类型必须匹配。
MyStruct.sv
核心.sv
core_tb.sv
我错过了什么?
我知道接口是这里建议的工作流程,但是模型的输入将使用 DPI 传递给 C 例程。DPI 接口支持结构,我不认为它支持接口。这就是为什么我想坚持简单的结构。
c++ - SystemVerilog DPI 从 C++ 返回字符串到 verilog - 最后是 ASCII 字符?
我使用 DPI 从 C 函数返回一个字符串到 SystemVerilog。
在 SystemVerilog 方面:
结果:有时结果是这样的:
有时我得到这个:
我检查了 verilog 端的波形,它们是 NO X 传播。你能帮我理解为什么我得到这个错误。
c - 如何编译和运行调用C函数的verilog程序?
我不是在尝试使用 DPI 调用,而是在内部使用其 PLI 调用用 C 语言编写的函数的简单 Verilog 程序。我不知道静态链接。我正在使用edaplayground。
谁能告诉我应该使用哪个模拟器,应该通过切换来链接 Verilog 和 C 吗?我应该在 Verilog 中包含 C 文件吗?
示例代码如下
我想知道是否需要注册 pli,因为目前未检测到 pli call hello。
c++ - 创建 C++ 测试平台来驱动 Verilog DUT
我试图了解如何创建一个 C++ 测试平台来驱动 Verilog 中的 DUT 的激励。假设我有一个简单的场景:
这是我的 C++ 代码:
test_case.h
测试用例.cpp
在此示例中,条件变量上的等待语句将永远阻塞,并且不会让模拟器执行 Verilog 代码的任何其他部分。那么这里的正确方法是什么?我应该在 wait_for_input_ready 函数中用 C++ 创建一个线程并完全分离它吗?
c - C 到 SystemVerilog,我的输出不正确
我试图让我的系统 verilog 代码与我的 c 代码一起工作,但我得到一个奇怪的输出。我的 exp_data_out 应该是我的编码器的输出,但它是 zzzzxzzzzzxzxzz。有人可以告诉我为什么输出是这样的吗?
C
系统 Verilog
这是输出
system-verilog - 如何使用 DPI systemVerilog 检测子字符串匹配?
如何使用 SystemVerilog DPI 检查某个字符串是否包含另一个字符串?例如,C 中的 strstr() 可以检测“str”是否包含在“string”中。
gcc - 在 Ubuntu 64 位 16.04 上使用 Modelsim DE 10.6b 编译 SystemVerilog DPI
我在 64 位 Ubuntu 16.04 上安装了 Modelsim DE 10.6b,当我运行 SystemVerilog DPI 的 Modelsim 示例时,出现如下所示的自动编译链接错误:
**致命:**致命:(vsim-3828)无法链接“vsim_auto_compile.so”:cmd = '/opt/modelsim_dlx/gcc-5.3.0-linux/bin/gcc -shared -fPIC -m32 -B/ usr/lib/i386-linux-gnu -o "/tmp/shahin@shahin-Z400_dpi_2433/linuxpe_gcc-5.3.0/vsim_auto_compile.so" /opt/modelsim_dlx/examples/systemverilog/dpi/checkpoint/work/_dpi/auto_compile@ /linuxpe_gcc-5.3.0/*.o
有人可以帮我吗?
c - 形式参数中未打包的结构数据类型中不受支持的元素
我无法通过 SV-C DPI 将结构对象从 SV 传递到 C。
编码:
SV端:
在C端
但是当我编译和运行时,我得到以下错误:
c - 如何使用 SV-DPI 将数组从 C 传递到 SV?
我的目标是将数组从 C 传递到 SV 并在 SV 中打印数组内容,我尝试了以下 C 程序将一些文本文件(data_file.txt)(在下面的链接中给出完整源)转换为数组并尝试通过在 SystemVeilog(SV) 中使用 DPI 调用来读回数组,在“C”中,我已将数组值传递给我的函数(mydisplay),该函数位于主函数内。(如果我在这里错了,请纠正我)也是似乎数组值没有像我预期的那样读回SV环境,这可能是什么原因,有没有一种有效的方法可以在SV中取回数组?
c代码:
sv代码: