【Vivado那些事儿】使用 Python 提取 ILA 数据

news2024/10/6 6:04:44

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

9904b2a5409a4b20818f58ce656d85da.png

在调试中,我们希望 ILA 中的波形可以提供有关设计问题的所有信息,但情况并非如此。对于复杂的调试,我们还需要将 ILA 捕获的真实数据存储到可以进一步处理的文件中。根据放置 ILA 的位置,我们可以通过不同的方式使用文件中包含的信息。

  • ILA 监视输出数据 – 可用于验证实例化的模型的正确性。

  • ILA 监视输入数据 – 可用于将数据输入到测试台模块中,尝试不同数据对测试平台的影响。当然,在这种情况下也可以复制硬件中观察到的信号时序。

这两种方法在我们的开发、验证和验证中都非常强大。在使用 ILA 时,我们更熟悉波形视图,但是,我们可以使用以下命令轻松地将 ILA 信息保存为 CVS 文件。

write_hw_ila_data ila_file.csv [upload_hw_ila_data hw_ila_1] -csv

这将 CSV 文件保存到 Vivado 的当前工作目录中(如果不确定,请在 tcl 窗口中运行 pwd 命令来确定)。

我们还可以使用“文件”->“导出”->“导出 ILA 数据”来保存 ILA 数据。将打开一个对话框,询问要导出哪个 ILA、导出数据的位置以及数据格式。

255e6600088f9150cda2a6937902d3f0.png

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

5c0a009e743bae24e89a5b573f5518ee.png

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

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

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

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

3800d6b56624f5ac89f951151a9039c3.png

我们将 LFSR 序列写到一个文本文件中,可以使用一点 Python 将文本文件的结果与 ILA CSV 进行比较。

import csv
csv_file = '<location>iladata_trig.csv'
text_file = '<location>fibonacci.txt'

with open(csv_file, newline='') as csvfile:
    reader = csv.reader(csvfile)
    # Skip the top two rows of the CSV File
    next(reader)
    next(reader)

    Fibonacci_hw_values = []
    # Store Fibonacci Sequence
    for i, row in enumerate(reader):
        if i < 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 文件。初步结果如下。

e3038da4fb25988422b7e410814f387b.png

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

ffc0a4598e89577795e3639493d79165.png

注意:如果使用 Versal 设备,我们可以使用一个名为 ChipScoPy 的 Python 接口来控制 Versal ILA。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1632768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

笔试刷题-Day10

牛客 一、DP30买卖股票的最好时机&#xff08;一&#xff09; 算法&#xff1a;虽然题目标了DP但是用贪心更快页更容易理解 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Sca…

场外个股期权开户新规及操作方法

场外个股期权开户新规 场外个股期权开户新规主要涉及对投资者资产实力、专业知识、风险承受能力和诚信记录的要求。以下是根据最新规定总结的关键要点&#xff1a; 来源/&#xff1a;股指研究院 资产门槛&#xff1a;投资者需具备一定的资产实力&#xff0c;确保在申请开户前…

十五、freeRTOS_移植与内部实现

1.链表操作 1.1普通链表操作 #include "usart.h"#include <stdio.h> #include <string.h> #include <stdlib.h>struct person {char *name;int age;struct person *couple; };struct person w; struct person h;int main(int argc, char **arg) …

【免费Java系列】给大家出一些JavaSE基础第八天的内容案例 , 让大家更好的理解与掌握

String字符串 案例一 求取字符串的长度 public class Main {public static void main(String[] args) {String str "Hello World";String substring str.substring(6);System.out.println("截取后的字符串为&#xff1a;" substring);} }输出结果&…

使用新版ESLint,搭配Prettier使用的配置方式

概述 ESLint重大更新(9.0.0版本)后,将不再支持非扁平化配置文件,并且移除了与Prettier冲突的规则,也就是说与Prettier搭配使用,不再需要使用插件“eslint-config-prettier”来处理冲突问题。 注:使用新版的前提条件是Node.js版本必须是18.18.0、20.9.0,或者是>=21.1…

DiffSeg——基于Stable Diffusion的无监督零样本图像分割

概述 基于计算机视觉的模型的核心挑战之一是生成高质量的分割掩模。大规模监督训练的最新进展已经实现了跨各种图像风格的零样本分割。此外&#xff0c;无监督训练简化了分割&#xff0c;无需大量注释。尽管取得了这些进展&#xff0c;构建一个能够在没有注释的零样本设置中分…

解码Android应用:探索apk.sh的简化反向工程之道

解码Android应用&#xff1a;探索apk.sh的简化反向工程之道 引言 在当今数字化时代&#xff0c;Android应用的反向工程变得越来越重要。无论是应用开发者还是安全研究人员&#xff0c;都需要深入了解应用的内部结构和行为。然而&#xff0c;传统的反向工程过程常常繁琐复杂&a…

WiTUnet:一种集成CNN和Transformer的u型架构,用于改进特征对齐和局部信息融合

WiTUnet:一种集成CNN和Transformer的u型架构&#xff0c;用于改进特征对齐和局部信息融合 摘要IntroductionRelated workMethod WiTUnet: A U-Shaped Architecture Integrating CNN and Transformer for Improved Feature Alignment and Local Information Fusion. 摘要 低剂量…

LT6911UXB HDMI2.0 至四端口 MIPI DSI/CSI,带音频 龙迅方案

1. 描述LT6911UXB 是一款高性能 HDMI2.0 至 MIPI DSI/CSI 转换器&#xff0c;适用于 VR、智能手机和显示应用。HDMI2.0 输入支持高达 6Gbps 的数据速率&#xff0c;可为4k60Hz视频提供足够的带宽。此外&#xff0c;数据解密还支持 HDCP2.2。对于 MIPI DSI / CSI 输出&#xff0…

谁获得了全国交通运输行业最高科技奖项???

近期&#xff0c;2023年度中国交通运输协会科学技术奖表彰大会暨中国交通运输新技术新成果推广大会在株洲举办。会上&#xff0c;由交通运输部管理干部学院牵头&#xff0c;上海梦创双杨数据科技有限公司、深圳开源互联网安全技术有限公司、中国民航管理干部学院、北京信德科技…

SpringCloud Alibaba Nacos简单应用(三)

文章目录 SpringCloud Alibaba Nacos创建Nacos 的服务消费者需求说明/图解创建member-service-nacos-consumer-80 并注册到NacosServer8848创建member-service-nacos-consumer-80修改pom.xml创建application.yml创建主启动类业务类测试 SpringCloud Alibaba Nacos 创建Nacos 的…

爱国者随身wifi VS格行随身wifi对比测评!随身wiif哪个品牌好用?排名第一名随身WiFi格行随身WiFi真的靠谱吗?随身WiFi热销榜第一名!

出门手机信号不好网络卡顿&#xff0c;手机流量不够用&#xff0c;相信这是很多朋友都会遇到的问题。为了解决这个问题更多的会选择随身wifi&#xff0c;但是市面上随身wifi品牌众多&#xff0c;有不知道该选择哪一款。今天就来看看爱国者随身wifi和格行随身wifi哪款更好用&…

给我推荐5个非常好用的AI绘图生成软件

绘画领域随着科技的进步也得以革新&#xff0c;其中AI绘画软件是最为显著的创新之一。本文为大家推荐了5个极具实用价值的AI绘图生成软件&#xff0c;一同来看看吧&#xff01; 爱制作AI 功能介绍&#xff1a; 这款软件可以根据用户提供的图片或描述生成艺术绘画作品。它使用…

Graph Neural Networks(GNN)学习笔记

本学习笔记的组织结构是&#xff0c;先跟李沐老师学一下&#xff0c;再去kaggle上寻摸一下有没有类似的练习&#xff0c;浅做一下&#xff0c;作为一个了解。 ———————————0428更新—————————————— 课程和博客看到后面准备主要看两个&#xff1a;GCN和…

24.4.28(板刷dp,拓扑判环,区间dp+容斥算回文串总数)

星期一&#xff1a; 昨晚cf又掉分&#xff0c;小掉不算掉 补ABC350 D atc传送门 思路&#xff1a;对每个连通块&#xff0c;使其成为一个完全图&#xff0c;完全图的边数为 n*(n-1)/2 , 答案加上每个连通块成为完全图后的…

uniapp-css:拼图(不规则图片拼插)、碎片

拼图案例样式 高斯模糊的地方可以对应的使用fliter属性和opacity来调节样式。 其余碎片和图片对应: 这段代码实现了一个拼图效果的Vue组件。以下是对代码的详细解析: 模板部分: 在模板中使用v-for指令遍历imgs数组中的每个图片对象,为每个图片创建一个元素。 使用:cla…

vue3左树的全选和反选

<el-input v-model"filterText" placeholder"" style"width: 48%"/><el-button type"primary" click"handleSearch" class"ml-2">查找</el-button><el-radio-group v-model"form.choic…

leetcode-合并二叉树-90

题目要求 思路 1.如果两个结点都存在&#xff0c;就把对应的val加起来创建一个新的结点 2.如果有一个结点不存在&#xff0c;就用村在的那个结点 3.最后返回创建的头结点 代码实现 /*** struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* Tre…

数据结构--删除单链表中的某一个节点(时间复杂度控制为O(1))

题目描述&#x1f357; 只给定单链表中某个结点p(并非最后一个结点&#xff0c;即p->next!NULL)指针&#xff0c;删除该结点 思路分析&#x1f357; 结点不重要&#xff0c;&#xff0c;重要的是数据 不删自己&#xff0c;删除后面的结点: 1.把后面结点数据复制到当前 2.…

【Word】写论文,参考文献涉及的上标、尾注、脚注 怎么用

一、功能位置 二、脚注和尾注区别 1.首先脚注是一个汉语词汇&#xff0c;论文脚注就是附在论文页面的最底端&#xff0c;对某些内容加以说明&#xff0c;印在书页下端的注文。脚注和尾注是对文本的补充说明。 2.其次脚注一般位于页面的底部&#xff0c;可以作为文档某处内容的…