Vivado使用技巧(四):查找功能详解

本文将介绍Vivado提供的两种查找功能的使用方法:

  • Find in Files/Replace in Files:即通常意义上的查找/替换功能,在文件中搜索指定字符串;
  • Find:在导入了一个设计之后,用于查找该设计或器件中的对象。

Find in Files/Replace in Files

这两个功能用法相似,以Find in Files为例。在文本编辑器窗口中右键->Find in Files,打开窗口如下:
这里写图片描述
Options中设置了一些查找方式。选中“匹配大小写”会忽视字符串的大小写;在不勾选“匹配整个单词”时,查找clk会搜索到类似于clk_50M之类的字符串,只希望搜索完整单词的匹配项需要勾选此项。此外还提供了对正则表达式的支持。

Scope中设置查找的文件范围(设计文件、约束文件、仿真文件)。如果选中“Open in a new tab”,Vivado会创建一个新的Find in Files窗口显示结果;否则会刷新已经存在的Find in Files窗口。查找结果在Vivado IDE的下方:
这里写图片描述


Find

相比之下,Find使用情况比较复杂,主要是需要对Xilinx FPGA内部的资源、硬件结构等知识具有一定的了解。使用Find需要先打开一个设计(Open Elaborated DesignOpen Synthesized DesignOpen Implemented Design),Find功能会在打开的设计和器件中查找指定的对象。

点击Edit->Find打开窗口如下:
这里写图片描述

  • Result name:查找结果窗口的名称;
  • Find:设置查找对象的类型;
  • Properties:规定查找设计或器件对象时使用的Tcl属性;
  • Regular expression:使用正则表达式查找,选中“Ignore case“会忽视字母大小写;
  • Search hierarchically:按照整个设计层次搜索;
  • Of Objects:点击“…“设置搜索特定的对象;
  • Command:展示用于运行搜索的Tcl命令,与上面设置有关;
  • Open in a new tab:选中Vivado会创建一个新的Find窗口显示结果;否则会刷新已经存在的Find窗口。

Find功能用于帮助我们分析和修改已经完成的设计,查找其中的指定对象。下面给出在ug893中的几个实例来帮助理解Find功能的使用(打开实现后设计)。

1.查找未布局的BUFG

这里写图片描述
在Tcl属性中,PRIMITIVE_TYPE设置原语类型为BUFG,点击‘+‘添加一行STATUS设置状态为UNPLACED(未布局)。对应的Tcl命令如下:

show_objects -name find_1 [get_cells -hierarchical -filter { PRIMITIVE_TYPE == CLK.GCLK.BUFG && STATUS == "UNPLACED" } ]

可见Tcl中使用get_*命令来设置查找属性的,需要注意该命令在查找结果超过500个时,会自动截止。

2.查找没有导入的局部时钟

这里写图片描述
局部时钟属于布线资源,因此将Find对象设置为Nets。在Tcl属性中,TYPE设置为REGIONAL_CLOCK,点击‘+‘添加一行ROUTE_STATUS设置布线状态为NOLOADS。对应的Tcl命令如下:

show_objects -name find_1 [get_nets -hierarchical -top_net_of_hierarchical_group -filter { TYPE == "REGIONAL_CLOCK" && ROUTE_STATUS == "NOLOADS" } ]

3.查找已布局的RAMB36单元

这里写图片描述
RAMB36包含RAM单元,将Find对象设置为Sites。在Tcl属性中,SITE_TYPE设置为RAMB36E1,点击‘+‘添加一行IS_USED设置使用状态为true。对应的Tcl命令如下:

show_objects -name find_1 [get_sites -filter { SITE_TYPE == "RAMB36E1" && IS_USED == "TRUE" } ]

4.查找特定的对象(Object)

这里写图片描述
比如要查找SLICE_X7Y120单元,点击Of Object后的“…”,按上图设置即可。对应的Tcl命令如下:

[get_sites -filter { NAME =~  "*SLICE_X7Y120*" } ]

该命令会添加到搜索的Tcl命令中。如搜索含该指定对象的BEL,设置为:
这里写图片描述
对应的Tcl命令为:

show_objects -name find_1 [get_bels -filter { IS_USED == "TRUE" }  -of_objects [get_sites -filter { NAME =~  "*SLICE_X7Y120*" } ]]

5.查找黑盒(Black Box)单元

这里写图片描述
Tcl属性中将IS_BLACKBOX设置为true。对应的Tcl命令如下:

show_objects -name find_1 [get_cells -hierarchical -filter { IS_BLACKBOX == "TRUE" } ]

猜你喜欢

转载自blog.csdn.net/FPGADesigner/article/details/81587089