操作目录
通常情况下,Vivado上板抓取信号的方法主要有两类:
(1)通过在信号前添加(mark_debug=“true”),综合完之后点击Set Up Debug,将需要抓取的信号添加进去,之后生成bit。
(2)通过添加ila核,将需要抓取的信号添加到例化的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源码放到下面的链接里: