2016-03-02 113 views
4

测试VHDL代码逻辑的标准方法是用VHDL编写测试平台并使用模拟器,如ModelSim;其中,我做了很多次。使用Python和模拟器测试VHDL/FPGA

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

问题:

  1. 这是如何完成的?

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

    • 例如,如果我想用VHDL测试TCP/IP栈,我可以在Python中使用套接字模块来做到这一点吗(即导入套接字)?
  3. 有没有参考,纸张或教程,显示如何做到这一点?我检查了Xilinx,Altera和Modelsim网站,但找不到任何东西。

我在网上找到的关于在FPGA上使用Python的唯一的东西是几个包:myHDL是最引用的。

+4

参见:http://cocotb.readthedocs.org/en/latest/introduction.html – Josh

+0

看看克里斯·希格斯答案[你能一个接口Modelsim testbench with an external stimuli](http://electronics.stackexchange.com/questions/106784/can-you-interface-a-modelsim-testbench-with-an-external-stimuli),其中在[Tutorial :Ping](https://cocotb.readthedocs.org/en/latest/ping_tun_tap.html)。 – user1155120

+0

你可以在EDA乐园上试用Cocotb:www.edaplayground.com。 –

回答

0

为什么Python是好这个

Python是或处理和验证测试平台的输出文件的编写参考模型的高效的语言。许多事情比使用VHDL测试平台花费的时间更少。

Python的一个关键特性使得它非常适合自动使用大整数。如果您的VHDL使用> 64位宽度,那么与其他语言的接口进行接口可能非常繁琐。在验证算术功能时,例如Python的Decimal包是构建高精度引用的便捷工具。

这怎么办?

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

接口Python的直接实用方法是通过输入和输出文件。您可以在VHDL测试平台中读取和写入文件,因为它正在模拟器中运行。通常文件中的每一行代表一个事务。

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

使用标准的模块

随着我所描述的方法,你必须找到一种方法来分隔不管该模块是做成数据或原始数据流。不幸的是,对于你的TCP/IP协议栈的例子,我没有看到直接的方法来做到这一点,它可能需要进一步的澄清进一步讨论。

更多信息

一些有用的东西都挂在上述评论,特别是链接张贴user1155120:https://electronics.stackexchange.com/questions/106784/can-you-interface-a-modelsim-testbench-with-an-external-stimuli

0

也许是更好的在其他一些语言如SystemC的设计整个设计/ myHdl/HWToolkit对其进行测试,然后仅将其导出到目标语言。

为了模拟HDL并从普通的python代码中驱动它,你必须使用像cocotb/PyCoRAM和其他框架。尽管如此,它变得非常复杂。

我发现的最好的方法之一是使用模拟器+代理与队列/抽象内存和代码工作只与这个队列,而不是模拟器或模型本身。它使测试平台/验证的编写变得简单。 在蟒蛇-HW字只HWToolkit目前使用这种方法: tx_rx_test.py