ILA應該是調試AMD-Xilinx FPGA最常用的IP。
在調試中,我們希望 ILA 中的波形可以提供有關設計問題的所有信息,但情況并非如此。對于復雜的調試,我們還需要將 ILA 捕獲的真實數據存儲到可以進一步處理的文件中。根據放置 ILA 的位置,我們可以通過不同的方式使用文件中包含的信息。
ILA 監(jiān)視輸出數據 – 可用于驗證實例化的模型的正確性。
ILA 監(jiān)視輸入數據 – 可用于將數據輸入到測試臺模塊中,嘗試不同數據對測試平臺的影響。當然,在這種情況下也可以復制硬件中觀察到的信號時序。
這兩種方法在我們的開發(fā)、驗證和驗證中都非常強大。在使用 ILA 時,我們更熟悉波形視圖,但是,我們可以使用以下命令輕松地將 ILA 信息保存為 CVS 文件。
write_hw_ila_dataila_file.csv[upload_hw_ila_datahw_ila_1]-csv
這將 CSV 文件保存到 Vivado 的當前工作目錄中(如果不確定,請在 tcl 窗口中運行 pwd 命令來確定)。
我們還可以使用“文件”->“導出”->“導出 ILA 數據”來保存 ILA 數據。將打開一個對話框,詢問要導出哪個 ILA、導出數據的位置以及數據格式。
我們使用一個簡單的 LFSR 實例進行演示,可以在 Vivado 中打開 ILA 并導出 CSV。
通過查看 ILA CSV 數據,第一列顯示緩沖區(qū)中的樣本,第二列顯示窗口中的樣本。
無論是否在觸發(fā)中配置窗口,樣本緩沖區(qū)都會按順序對緩沖區(qū)中的每個樣本進行計數。窗口中的第二個樣本計數將從 0 計數到窗口大小。
例如,如果我們?yōu)?4 個窗口配置了 1024 個樣本緩沖區(qū),則窗口計數中的樣本將在 0 到 255 之間計數四次,而緩沖區(qū)計數中的樣本從 0 線性遞增到 1023。
第三個要素是觸發(fā)器。該值設置為 1 指示采樣窗口中何時發(fā)生觸發(fā)??梢栽谙旅娴拇翱谥锌吹?,當看到觸發(fā)值時,該窗口在第三列中顯示 1(在本例中為 0x00 為 LFSR 序列的開始)。
我們將 LFSR 序列寫到一個文本文件中,可以使用一點 Python 將文本文件的結果與 ILA CSV 進行比較。
importcsv csv_file='iladata_trig.csv' text_file=' fibonacci.txt' withopen(csv_file,newline='')ascsvfile: reader=csv.reader(csvfile) #SkipthetoptworowsoftheCSVFile next(reader) next(reader) Fibonacci_hw_values=[] #StoreFibonacciSequence fori,rowinenumerate(reader): ifi256: ????????????Fibonacci_hw_values.append(row[3]) ????????else: ????????????break Fibonacci_tb_values?=?[] #?Open?test?bench?text?file with?open(text_file,?'r')?as?file: ????for?line?in?file: ????????#?Strip?newlines?and?any?whitespace?around?the?value ????????value?=?line.strip() ????????Fibonacci_tb_values.append(value) non_matching_in_a?=?[] non_matching_in_b?=?[] Fibonacci_tb_values?=?[item.lower()?for?item?in?Fibonacci_tb_values] for?item?in?Fibonacci_tb_values: ????if?item?not?in?Fibonacci_hw_values: ????????non_matching_in_a.append(item) for?item?in?Fibonacci_hw_values: ????if?item?not?in?Fibonacci_tb_values: ????????non_matching_in_b.append(item) print("Non-matching?in?HW:",?non_matching_in_a) print("Non-matching?in?TB:",?non_matching_in_b)
在Python中,我們可以打開這兩個文件并將它們讀入Python列表中;一個來自測試臺文本文件,另一個來自 CSV 文件。初步結果如下。
運行 Python 腳本展示了我們如何使用 Python CSV 包處理來自 ILA 的數據。如果我們想提取一列數據并生成一個文本文件,也很簡單。如下:
注意:如果使用 Versal 設備,我們可以使用一個名為 ChipScoPy 的 Python 接口來控制 Versal ILA。
-
FPGA
+關注
關注
1630文章
21798瀏覽量
606057 -
數據存儲
+關注
關注
5文章
983瀏覽量
51063 -
觸發(fā)器
+關注
關注
14文章
2003瀏覽量
61353 -
LFSR
+關注
關注
0文章
16瀏覽量
12771 -
python
+關注
關注
56文章
4807瀏覽量
85040
原文標題:【Vivado那些事兒】使用 Python 提取 ILA 數據
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
如何實現ILA Cross Trigger
![如何實現<b class='flag-5'>ILA</b> Cross Trigger](https://file1.elecfans.com/web2/M00/B1/E8/wKgaomVn8VCARqfHAAATt3jPUDU972.png)
是否可以僅將捕獲的數據從ILA保存到文件中?
python基礎語法及流程控制
什么是D-ILA投影技術
如何從HTML或XML文件中提取數據的Python爬蟲庫Beautiful Soup概述
ILA工作原理 ILA使用方法與注意
![<b class='flag-5'>ILA</b>工作原理 <b class='flag-5'>ILA</b>使用方法與注意](https://file.elecfans.com/web2/M00/0F/02/poYBAGEQxzyAVFbLAAAgKVqDIBI569.png)
如何使用OpenCV和Python從圖像中提取感興趣區(qū)域
Python的PDF表格提取器-Camelot
![<b class='flag-5'>Python</b>的PDF表格<b class='flag-5'>提取</b>器-Camelot](https://file.elecfans.com/web2/M00/94/18/pYYBAGP4KPqAfWeiAAIr6CvRPHA398.jpg)
如何使用Python腳本調試賽靈思PCIe設計?
![如何使用<b class='flag-5'>Python</b>腳本調試賽靈思PCIe設計?](https://file1.elecfans.com/web2/M00/8B/68/wKgZomSY6GeAL1C4AAA1JYf166o293.png)
Camelot:Python超強大的PDF表格提取器
![Camelot:<b class='flag-5'>Python</b>超強大的PDF表格<b class='flag-5'>提取</b>器](https://file.elecfans.com/web2/M00/93/96/poYBAGP4KPqAQ6QjAAK0N_VDENU874.jpg)
評論