Vivado抓信号——提高效率的工具化生成XDC(Python脚本)

news2024/11/27 19:59:27

操作目录

    • 一、要抓取信号的txt列表
    • 二、操作流程

通常情况下,Vivado上板抓取信号的方法主要有两类:

(1)通过在信号前添加(mark_debug=“true”),综合完之后点击Set Up Debug,将需要抓取的信号添加进去,之后生成bit。
在这里插入图片描述

在这里插入图片描述

(2)通过添加ila核,将需要抓取的信号添加到例化的ila核中,具体可见以下链接:

vivado 抓取信号:mark debug 和 ILA

上面两种方法在实际使用中都相对比较麻烦,第一种需要先对需要抓取的信号添加(mark_debug=“true”),虽然大部分情况下不需要,但是经常会有未添加(mark_debug=“true”)的信号找不到的情况;添加完之后跑综合,然后再Set up Debug,之后手动拖动信号,之后等待加载然后保存。

这一套操作下来很费时间,第二种例化ila核相对来说会方便很多,但也需要对ila的IP核进行设置。

因此,考虑到提高抓取信号的效率,思考Set up Debug背后的本质其实就是生成了对应的XDC文件内容,于是想到可以通过根据我想抓取的信号列表,自动生成对应的XDC文件,于是就有了这样的一个基于Python开发的工具。

下面给出如何使用本工具的介绍,包括操作流程以及所需要提前准备的信号列表模板:

一、要抓取信号的txt列表

txt列表模板如下:

在这里插入图片描述

具体如下:

第1行:clk(固定为clk不可修改) 时钟名称1 产生本时钟的模块例化名1

三者之间要以空格隔开

第2行:要抓取信号所在模块的例化名

第3/4行:要抓取的信号(建议在要抓取的信号前添加(mark_debug=“true”),以免无法找到该信号);

格式为以下几种:
output reg signal;
output reg [x:0] signal;
output [x:0] signal;
input signal;
input [x:0] signal;
reg [x:0] signal;
reg signal;
wire [15:0] signal;
wire signal;

需要注意各部分之间要至少有一个空格(如output和[x:0]之间,[x:0]和reg之间,reg和signal之间),并且在信号名之后要紧接一个分号“;”

若在本时钟域下还有另一个模块的信号要抓取,可以再新开一行写上模块例化名,再写上要抓取的信号

第5行:本时钟域下另一个模块的例化名

第6/7/8行:要抓取的信号;

若有另一个时钟域下的信号要抓取,需要按照上述步骤添加,示例如下:

第9行:clk 时钟名称2 产生本时钟的模块例化名2

第10行:要抓取信号所在模块的例化名

第11/12/13行:要抓取的信号;

第14行:clk 时钟名称3 产生本时钟的模块例化名3

第15行:要抓取信号所在模块的例化名

第16/17行:要抓取的信号;

二、操作流程

(1)首先建立一个文件夹(我这里是scripts,并且放在了工程文件夹下),之后建立一个名为ila_set.txt的文本文件(必须为这个名字)。
在这里插入图片描述

(2)运行给出的ila.exe,选择Vivado.bat的路径、之前新建的用于存放ila_set.txt的文件夹路径、以及工程文件xpr的路径,并且根据是否需要使用vio选择有无vio以及vio时钟的名称

在这里插入图片描述

(3)选择完成之后点击开始生成,ila_set.tcl生成后打开之前的文件夹(上文的scripts),打开ila_set.tcl文件,便得到了需要的xdc文件。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(4)之后只需将其复制到xdc文件中即可开始生成bit。

以上流程看似繁琐,其实在熟悉之后很方便,相对于第一种方法节省了等待其跑综合、手动拖动信号的时间,并且可以将txt文件保存下来之后只需要修改txt如何生成xdc,再运行bit生成,总体来说还是相对方便一些。

请注意一定要严格按照上文流程!!!

exe和python源码放到下面的链接里:

ila.exe及ila.python源码

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

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

相关文章

电脑端微信截图文字识别功能效率更高了

近期发现微信中的截图文字识别比QQ中的截图文字识别效率高更高,效果更好。 使用方法: 安装电脑端微信客户端:https://weixin.qq.com/(如果没有下载,可以安装一下) 默认截图组合快捷键是:ALTA (使用下来感觉不是很顺手…

网桥的原理

网桥的原理 1.1 桥接的概念 简单来说,桥接就是把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。 交换机就是这样一个设备,它有若干个网口…

基于SpringBoot+Vue的毕业设计管理系统(源码+文档+部署+讲解)

一.系统概述 二十一世纪我们的社会进入了信息时代,信息管理系统的建立,大大提高了人们信息化水平。传统的管理方式对时间、地点的限制太多,而在线管理系统刚好能满足这些需求,在线管理系统突破了传统管理方式的局限性。于是本文针…

GoC模拟试题2

GoC测试模拟题(2017.3.23)第1题:领奖台 题目描述 小C同学在学校GoC编程比赛中获得了一等奖,他希望在领奖会上能站在一个漂亮的领奖台上。设计的领奖台如下图,请你帮忙使用GoC编程绘制。 说明: 上图中红色数字是标明尺寸的&#…

4月全新热文高科技,套用模板一键生成热文,没脑子拷贝,第二天出盈利

撰写热门文章,如今日头条或微信公众号文章,通常需要多长时间呢?从构思主题、搜集资料,到撰写成文,整个过程至少需要1小时,有时甚至可能需要2小时。 项目 地 址:laoa1.cn/1627.html 现在&…

Fence同步

在《Android图形显示系统》没有介绍到帧同步的相关概念,这里简单介绍补充一下。 在图形显示系统中,图形缓存GraphicBuffer可以被不同的硬件来访问,如CPU、GPU、HWC都可以对缓存进行读写,如果同时对图形缓存进行操作,有…

数据结构--循环队列

1.队列的定义: 和栈相反,队列(queue)是一种先进先出(first in first out,缩写为FIFO)的线性表.它只允许在表的一端进行插入,而在另一端删除元素. 在队列中,允许插入的一端叫做队尾(rear),允许删除的一端则称为队头(front). 2.循环队列的设计图示: 3.循环队列的结构设计: ty…

napi系列学习进阶篇——NAPI生命周期

什么是NAPI的生命周期 我们都知道,程序的生命周期是指程序从启动,运行到最后的结束的整个过程。生命周期的管理自然是指控制程序的启动,调用以及结束的方法。 而NAPI中的生命周期又是怎样的呢?如下图所示: 从图上我们…

foreach无法修改数组值解决方案

效果展示: 解决办法: this.sportList.forEach((item,index) >{let that this;if(item.idinfo.id) {that.sportList[index].sportTime e.detail.value} }) 这里小编解释下,将this赋值给that通常是为了在回调函数或者异步代码中保持对Vu…

C++11 设计模式4. 抽象工厂(Abstract Factory)模式

问题的提出 从前面我们已经使用了工厂方法模式 解决了一些问题。 现在 策划又提出了新的需求:对于各个怪物,在不同的场景下,怪物的面板数值会发生变化, //怪物分类:亡灵类,元素类,机械类 …

Unity让地图素材遮挡人物

点击编辑/项目设置/图形,透明度排序模式设置自定义轴,透明度排序轴Y设置为1其他为0。 此时人物和地图素材的图层排序相等,当人物的高度大于地图素材时,人物则被遮挡。

使用ArrayList.removeAll(List list)导致的机器重启

背景 先说一下背景,博主所在的业务组有一个核心系统,需要同步两个不同数据源给过来的数据到redis中,但是每次同步之前需要过滤掉一部分数据,只存储剩下的数据。每次同步的数据与需要过滤掉的数据量级大概在0-100w的数据不等。 由…

【C语言】字符串函数和内存函数及其模拟实现

文章目录 前言 一、常见字符串库函数1.strlen函数2.长度不受限制的字符串函数2.1 strcpy2.2 strcat2.3 strcmp 3.长度受限制的字符串函数3.1 strncpy3.2 strncat3.3 strncmp 二、字符串查找函数strstrstrtok 三、strerror函数四、内存操作函数1.memcpy2.memmove3.memcmp 五、字…

Unity之Unity面试题(三)

内容将会持续更新,有错误的地方欢迎指正,谢谢! Unity之Unity面试题(三) TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不断探索 TechX —— 心探索、心进取…

简单工厂模式大解析:让代码创造更高效、更智能!

个人主页: danci_ 🔥系列专栏:《设计模式》《MYSQL应用》 💪🏻 制定明确可量化的目标,坚持默默的做事。 🚀 转载自热榜文章:探索设计模式的魅力:简单工厂模式 简单工厂模式&#x…

【零基础学数据结构】双向链表

1.双向链表的概念 1.1头节点 1.2带头双向循环链表 注意: 哨兵位创建后,首尾连接自己 1.3双链表的初始化 // 双向链表的初始化 void ListInit(ListNode** pphead) {// 给双链表创建一个哨兵位*pphead ListBuyNode(-1); } 2.双向链表的打印 // 双向…

PE文件的分析和构造超详细过程

本文详细讲述如何从0构造一个PE文件,运行该文件会弹出一个HelloPE的窗口 目录 预备知识 1. 构造DOS头IMAGE_DOS_HEADER 1.1 构造DOS_MZ头 1.2 构造DOS_STUB 2、构造PE头IMAGE_NT_HEADERS 248字节 2.1 signature 2.2 IMAGE_FILE_HEADER 2.3 IMAGE_OPTI…

MOS管电路的应用及注意事项

1,buck电路的上下桥死区时间多少合适 死区时间由驱动芯片控制的,外围电路增加阻容会导致上升沿时间变长 死区时间从单片机PWM到驱动电路再到MOS管的栅极都有一定的硬件延时,所以具体时间需要根据调试确定。 例如充电芯片的buck电路,有死区配置…

mysql8.0高可用集群架构实战

MySQL :: MySQL Shell 8.0 :: 7 MySQL InnoDB Cluster 基本概述 InnoDB Cluster是MySQL官方实现高可用读写分离的架构方案,其中包含以下组件 MySQL Group Replication,简称MGR,是MySQL的主从同步高可用方案,包括数据同步及角色选举Mysql Shell 是InnoDB Cluster的管理工具,用…