2016-03-02 171 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