使用 Python 和模拟器测试 VHDL / FPGA

Dig*_*One 5 python testing fpga vhdl modelsim

测试VHDL代码逻辑的标准方法是在 VHDL 中编写一个测试平台并使用一个模拟器,如ModelSim:其中,我已经做过很多次了。

我听说工程师现在不是用 VHDL 编写测试平台,而是使用 Python 来测试 VHDL 代码。

问题:

  1. 这是怎么做的?

    • 这是通过在 Python 中编写测试台然后编译这个 Python 文件或链接到 Modelsim 来完成的吗?
    • 这是使用像 myHDL 这样的模块在 Python 中完成的,然后将您的 VHDL 文件链接/导入到 Python 中吗?是这样,时序图是怎么生成的?
  2. 在 Python 中编写测试平台时,您可以使用标准的 Python 编码/模块还是仅使用像 myHDL 这样的模块?

    • 例如,如果我想在 VHDL 中测试 TCP/IP 堆栈,是否可以使用 Python 中的套接字模块来执行此操作(即导入套接字)?
  3. 是否有参考资料、论文或教程说明如何执行此操作?我检查了 Xilinx、Altera 和 Modelsim 网站,但找不到任何内容。

我在网上找到的关于将 Python 用于 FPGA 的唯一内容是一些软件包:myHDL 是引用最多的软件包。

Cas*_*rrw 0

为什么 Python 适合这个

Python 是一种高效的语言,用于在测试平台中编写参考模型或处理和验证测试平台的输出文件。在 Python 中进行许多事情的编程时间比在 VHDL 测试平台中要少得多。

Python 非常适合使用的一个关键特性是自动使用大整数。如果您的 VHDL 使用 >64 位宽度,则与其他语言的 VHDL 接口可能会很乏味。此外,在验证算术功能时,例如,Python 的 Decimal 包是构建高精度引用的便捷工具。

如何才能做到这一点?

这是一个不依赖于任何其他软件工具的示例。

与 Python 交互的一种简单实用的方法是通过输入和输出文件。当 VHDL 测试台在模拟器中运行时,您可以在 VHDL 测试台中读取和写入文件。通常文件中的每一行代表一个事务。

根据您的需求,您可以让 VHDL 测试平台将您的设计输出与参考进行比较,或者将读回的输出文件读回到 Python 程序中。如果使用文件花费的时间太长,至少在 Linux 中可以很容易地设置一个管道,mkfifo您可以像使用文件一样使用它,然后您可以让 Python 程序和模拟器同步读取和写入。

使用标准Python模块

使用我描述的方法,您必须找到一种方法将该模块正在执行的任何操作分离到数据流或原始事务中。不幸的是,对于您的 TCP/IP 堆栈示例,我认为没有直接的方法可以做到这一点,并且可能需要进行大量澄清才能进一步讨论。

更多信息

上面的评论中链接了一些有用的东西,特别是 user1155120 发布的链接:https :// electronics.stackexchange.com/questions/106784/can-you-interface-a-modelsim-testbench-with-an-external-刺激