ILA應(yīng)該是調(diào)試AMD-Xilinx FPGA最常用的IP。
在調(diào)試中,我們希望 ILA 中的波形可以提供有關(guān)設(shè)計問題的所有信息,但情況并非如此。對于復(fù)雜的調(diào)試,我們還需要將 ILA 捕獲的真實(shí)數(shù)據(jù)存儲到可以進(jìn)一步處理的文件中。根據(jù)放置 ILA 的位置,我們可以通過不同的方式使用文件中包含的信息。
ILA 監(jiān)視輸出數(shù)據(jù) – 可用于驗(yàn)證實(shí)例化的模型的正確性。
ILA 監(jiān)視輸入數(shù)據(jù) – 可用于將數(shù)據(jù)輸入到測試臺模塊中,嘗試不同數(shù)據(jù)對測試平臺的影響。當(dāng)然,在這種情況下也可以復(fù)制硬件中觀察到的信號時序。
這兩種方法在我們的開發(fā)、驗(yàn)證和驗(yàn)證中都非常強(qiáng)大。在使用 ILA 時,我們更熟悉波形視圖,但是,我們可以使用以下命令輕松地將 ILA 信息保存為 CVS 文件。
write_hw_ila_dataila_file.csv[upload_hw_ila_datahw_ila_1]-csv
這將 CSV 文件保存到 Vivado 的當(dāng)前工作目錄中(如果不確定,請在 tcl 窗口中運(yùn)行 pwd 命令來確定)。
我們還可以使用“文件”->“導(dǎo)出”->“導(dǎo)出 ILA 數(shù)據(jù)”來保存 ILA 數(shù)據(jù)。將打開一個對話框,詢問要導(dǎo)出哪個 ILA、導(dǎo)出數(shù)據(jù)的位置以及數(shù)據(jù)格式。
我們使用一個簡單的 LFSR 實(shí)例進(jìn)行演示,可以在 Vivado 中打開 ILA 并導(dǎo)出 CSV。
通過查看 ILA CSV 數(shù)據(jù),第一列顯示緩沖區(qū)中的樣本,第二列顯示窗口中的樣本。
無論是否在觸發(fā)中配置窗口,樣本緩沖區(qū)都會按順序?qū)彌_區(qū)中的每個樣本進(jìn)行計數(shù)。窗口中的第二個樣本計數(shù)將從 0 計數(shù)到窗口大小。
例如,如果我們?yōu)?4 個窗口配置了 1024 個樣本緩沖區(qū),則窗口計數(shù)中的樣本將在 0 到 255 之間計數(shù)四次,而緩沖區(qū)計數(shù)中的樣本從 0 線性遞增到 1023。
第三個要素是觸發(fā)器。該值設(shè)置為 1 指示采樣窗口中何時發(fā)生觸發(fā)。可以在下面的窗口中看到,當(dāng)看到觸發(fā)值時,該窗口在第三列中顯示 1(在本例中為 0x00 為 LFSR 序列的開始)。
我們將 LFSR 序列寫到一個文本文件中,可以使用一點(diǎn) Python 將文本文件的結(jié)果與 ILA CSV 進(jìn)行比較。
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 文件。初步結(jié)果如下。
運(yùn)行 Python 腳本展示了我們?nèi)绾问褂?Python CSV 包處理來自 ILA 的數(shù)據(jù)。如果我們想提取一列數(shù)據(jù)并生成一個文本文件,也很簡單。如下:
注意:如果使用 Versal 設(shè)備,我們可以使用一個名為 ChipScoPy 的 Python 接口來控制 Versal ILA。
-
FPGA
+關(guān)注
關(guān)注
1645文章
22050瀏覽量
618743 -
數(shù)據(jù)存儲
+關(guān)注
關(guān)注
5文章
999瀏覽量
51750 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2039瀏覽量
62158 -
LFSR
+關(guān)注
關(guān)注
0文章
16瀏覽量
12919 -
python
+關(guān)注
關(guān)注
56文章
4827瀏覽量
86815
原文標(biāo)題:【Vivado那些事兒】使用 Python 提取 ILA 數(shù)據(jù)
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
如何實(shí)現(xiàn)ILA Cross Trigger

是否可以僅將捕獲的數(shù)據(jù)從ILA保存到文件中?
python基礎(chǔ)語法及流程控制
什么是D-ILA投影技術(shù)
如何從HTML或XML文件中提取數(shù)據(jù)的Python爬蟲庫Beautiful Soup概述
ILA工作原理 ILA使用方法與注意

如何使用OpenCV和Python從圖像中提取感興趣區(qū)域
Python的PDF表格提取器-Camelot

如何使用Python腳本調(diào)試賽靈思PCIe設(shè)計?

Camelot:Python超強(qiáng)大的PDF表格提取器

評論