ILA应该是调试AMD-Xilinx FPGA最常用的IP。
在调试中,我们希望 ILA 中的波形可以提供有关设计问题的所有信息,但情况并非如此。对于复杂的调试,我们还需要将 ILA 捕获的真实数据存储到可以进一步处理的文件中。根据放置 ILA 的位置,我们可以通过不同的方式使用文件中包含的信息。
ILA 监视输出数据 – 可用于验证实例化的模型的正确性。
ILA 监视输入数据 – 可用于将数据输入到测试台模块中,尝试不同数据对测试平台的影响。当然,在这种情况下也可以复制硬件中观察到的信号时序。
这两种方法在我们的开发、验证和验证中都非常强大。在使用 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 数据,第一列显示缓冲区中的样本,第二列显示窗口中的样本。
无论是否在触发中配置窗口,样本缓冲区都会按顺序对缓冲区中的每个样本进行计数。窗口中的第二个样本计数将从 0 计数到窗口大小。
例如,如果我们为 4 个窗口配置了 1024 个样本缓冲区,则窗口计数中的样本将在 0 到 255 之间计数四次,而缓冲区计数中的样本从 0 线性递增到 1023。
第三个要素是触发器。该值设置为 1 指示采样窗口中何时发生触发。可以在下面的窗口中看到,当看到触发值时,该窗口在第三列中显示 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): ifi< 256: 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
+关注
关注
1610文章
21390浏览量
595435 -
数据存储
+关注
关注
5文章
928浏览量
50689 -
触发器
+关注
关注
14文章
1916浏览量
60696 -
LFSR
+关注
关注
0文章
16浏览量
12723 -
python
+关注
关注
53文章
4701浏览量
83701
原文标题:【Vivado那些事儿】使用 Python 提取 ILA 数据
文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
如何实现ILA Cross Trigger
![如何实现<b class='flag-5'>ILA</b> Cross Trigger](https://file1.elecfans.com/web2/M00/B1/E8/wKgaomVn8VCARqfHAAATt3jPUDU972.png)
实现ila时出错
是否可以仅将捕获的数据从ILA保存到文件中?
python基础语法及流程控制
什么是D-ILA投影技术
Vivado中关于ILA的详解
![Vivado中关于<b class='flag-5'>ILA</b>的详解](https://file.elecfans.com/web1/M00/DB/A7/o4YBAGAKAK6AL3cfAAMtrUmci8I517.png)
ILA工作原理 ILA使用方法与注意
![<b class='flag-5'>ILA</b>工作原理 <b class='flag-5'>ILA</b>使用方法与注意](https://file.elecfans.com/web2/M00/0F/02/poYBAGEQxzyAVFbLAAAgKVqDIBI569.png)
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)
评论