0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用Python提取ILA数据的流程

OpenFPGA 来源:OpenFPGA 2024-05-01 10:43 次阅读

ILA应该是调试AMD-Xilinx FPGA最常用的IP。

20e92de0-01e1-11ef-a297-92fbcf53809c.png

在调试中,我们希望 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、导出数据的位置以及数据格式。

21030878-01e1-11ef-a297-92fbcf53809c.png

我们使用一个简单的 LFSR 实例进行演示,可以在 Vivado 中打开 ILA 并导出 CSV。

211670f2-01e1-11ef-a297-92fbcf53809c.png

通过查看 ILA CSV 数据,第一列显示缓冲区中的样本,第二列显示窗口中的样本。

无论是否在触发中配置窗口,样本缓冲区都会按顺序对缓冲区中的每个样本进行计数。窗口中的第二个样本计数将从 0 计数到窗口大小。

例如,如果我们为 4 个窗口配置了 1024 个样本缓冲区,则窗口计数中的样本将在 0 到 255 之间计数四次,而缓冲区计数中的样本从 0 线性递增到 1023。

第三个要素是触发器。该值设置为 1 指示采样窗口中何时发生触发。可以在下面的窗口中看到,当看到触发值时,该窗口在第三列中显示 1(在本例中为 0x00 为 LFSR 序列的开始)。

21262542-01e1-11ef-a297-92fbcf53809c.png

我们将 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 文件。初步结果如下。

21333b24-01e1-11ef-a297-92fbcf53809c.png

运行 Python 脚本展示了我们如何使用 Python CSV 包处理来自 ILA 的数据。如果我们想提取一列数据并生成一个文本文件,也很简单。如下:

214451f2-01e1-11ef-a297-92fbcf53809c.png

注意:如果使用 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

    ILA Cross Triggering功能使得ILA核心之间、以及ILA核心与处理器(例如,AMD Zynq 7000 SoC)之间可以进行Cross Trigger。这个功能在你需要在不同时钟域的两个
    的头像 发表于 11-30 10:17 853次阅读
    如何实现<b class='flag-5'>ILA</b> Cross Trigger

    实现ila时出错

    [Chipscope 16-119]实现调试核心u_ila_0 failed.ERROR:无法为u_ila_0生成核心。中止IP生成操作。错误:[Chipscope 16-218]尝试从IP缓存
    发表于 10-26 15:10

    是否可以仅将捕获的数据ILA保存到文件中?

    大家好我试图只将从ILA捕获的数据保存到特定文件中。我从xilinx网站上找到的是write_hw_ila_data命令但是,当我打开捕获的数据时(.
    发表于 04-16 07:40

    ILA数据和波形的关系

    ILA简介添加ILAILA数据和波形的关系
    发表于 02-22 06:24

    Python中的流程控制

    流程控制无非就是if else之类的控制语句,今天我们来看一下Python中的流程控制会有什么不太一样的地方。
    发表于 06-28 08:54

    python基础语法及流程控制

    爬虫复习1.python基础python基础语法 流程控制 函数封装2.防爬措施整体防爬User-AgentrefererIP代理池Cookie代理池 各自防爬数据内部动态加载网页设置
    发表于 08-31 07:41

    什么是Python中的流程控制?

    什么是Python中的流程控制?
    发表于 10-09 07:24

    什么是D-ILA投影技术

    什么是D-ILA投影技术 D-ILA(Direct-Drive Image Light Amplifier,直接驱动图像光源放大器)技术。D-ILA技术在提供高分辨率和高对比度方面显示了技术优势,
    发表于 02-05 10:42 656次阅读

    Vivado中关于ILA的详解

    集成逻辑分析仪 (Integrated Logic Analyzer :ILA) 功能允许用户在 FPGA 设备上执行系统内调试后实现的设计。当设计中需要监视信号时,应使用此功能。用户还可以使用此功能在硬件事件和以系统速度捕获数据时触发。
    的头像 发表于 02-08 11:35 2.4w次阅读
    Vivado中关于<b class='flag-5'>ILA</b>的详解

    ILA工作原理 ILA使用方法与注意

    不一致,从而出现Bug。一种debug的方式就是用FPGA工具提供的ILA模块(xilixn在ISE中叫:chipscope),来实时抓取FPGA内部数字信号的波形,分析逻辑错误的原因,帮助debug。 ILA
    的头像 发表于 08-09 14:12 1.6w次阅读
    <b class='flag-5'>ILA</b>工作原理 <b class='flag-5'>ILA</b>使用方法与注意

    Python的PDF表格提取器-Camelot

    Python 第三方模块 Camelot 能够精准识别PDF中的表格信息,并提取为pandas数据结构,而且还能导出为多种格式:JSON,Excel,HTML和Sqlite。
    的头像 发表于 02-24 11:04 1830次阅读
    <b class='flag-5'>Python</b>的PDF表格<b class='flag-5'>提取</b>器-Camelot

    如何使用Python脚本调试赛灵思PCIe设计?

    现在,您不仅可以使用 Python 脚本执行调试分析,更重要的是,借由 Vivado ILA 所生成的 ILA 文件可以进一步简化此操作。通过将 *.ila 扩展名重命名为 *.zip
    的头像 发表于 06-26 09:20 855次阅读
    如何使用<b class='flag-5'>Python</b>脚本调试赛灵思PCIe设计?

    Camelot:Python超强大的PDF表格提取

    如果你有从PDF中批量提取表格的需求,那么这篇文章就是你的福音。 Python 第三方模块 Camelot 能够精准识别PDF中的表格信息,并提取为pandas数据结构,而且还能导出为
    的头像 发表于 10-21 10:57 936次阅读
    Camelot:<b class='flag-5'>Python</b>超强大的PDF表格<b class='flag-5'>提取</b>器

    Newspaper:用于提取和整理文章的python

    提取关键字 自动提取摘要 自动提取作者 自动提取 Google 趋势词 下面是这个开源模块的安装和使用教程。 1.准备 开始之前,你要确保Pyth
    的头像 发表于 10-30 14:24 397次阅读

    python如何遍历列表并提取

    遍历列表是Python中非常常见的操作之一,可以使用for循环或者while循环来实现。下面我将详细介绍如何使用for循环遍历列表并提取元素。 首先,让我们简单了解一下Python中的列表。列表
    的头像 发表于 11-23 15:55 845次阅读