Vivado使用技巧(4):查詢功能詳解

FPGADesigner發表於2018-08-11

本文將介紹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" } ]

相關文章