Ruby和SystemVerilog DPI

Ruby和SystemVerilog DPI,ruby,system-verilog,uvm,system-verilog-dpi,Ruby,System Verilog,Uvm,System Verilog Dpi,System Verilog中的DPI功能总是提到可以将其与任何语言进行接口,最常见的语言是C/C++。我想用Ruby连接我的系统Verilog代码。是否有此功能的文档或支持?有什么方法可以做到这一点吗 我应该补充一点,我的主要目标是从我的系统Verilog uvm测试中调用ruby脚本 谢谢虽然标准提到DPI可以将SystemVerilog与任何其他外语连接起来,但它接着又指出: 然而,就目前而言,SystemVerilog只定义了一个外语层 对于C编程语言 这意味着您应该在所有符合IEEE

System Verilog中的DPI功能总是提到可以将其与任何语言进行接口,最常见的语言是C/C++。我想用Ruby连接我的系统Verilog代码。是否有此功能的文档或支持?有什么方法可以做到这一点吗

我应该补充一点,我的主要目标是从我的系统Verilog uvm测试中调用ruby脚本


谢谢

虽然标准提到DPI可以将SystemVerilog与任何其他外语连接起来,但它接着又指出:

然而,就目前而言,SystemVerilog只定义了一个外语层 对于C编程语言

这意味着您应该在所有符合IEEE 1800标准的模拟器中获得DPI-C支持,但您获得的任何其他外语都取决于您的模拟器供应商。例如,Mine也提供SystemC,但要求对SystemC代码进行修补(即,它不能开箱即用)


我公司的一些人设法通过DPI将Python与SystemVerilog连接起来,但他们采用了两步方法:Python->C和C->SystemVerilog。您可能需要做一些类似的事情。

这与Ruby非常接近,但使用VPI:

如果您喜欢Python,可以尝试coco_tb:


谢谢你,都铎。经过一些研究,我意识到这可能不是天生可行的。我有一个问题-我想使用SystemVerilog创建一个随机测试,在上面使用randomize()函数,并使用这些随机变量对DUT中的寄存器进行编程。我还想用相同的随机寄存器变量调用我的软件模型(用于记分板检查)。这个记分牌是用ruby写的。现在我倾向于使用系统调用。我想这可能是唯一的方法?这也是我看到的唯一方法,除非你想实现我上面概述的两步方法。@noobuntu其他人已经为你完成了这项工作,并提供了源代码:查看gem,它提供了从ruby(通过C)访问VPI的功能。