1. 程式人生 > >【 Vivado 】在工程模式下通過jou檔案來學習 Tcl 命令

【 Vivado 】在工程模式下通過jou檔案來學習 Tcl 命令

Xilinx 的資料手冊UG895提供了一些系統級設計的方法,寫得很詳細,詳細到得不到重要的訊息(我菜)。

Tcl命令在工程模式下以及非工程模式下有一些差異,具體什麼差異,這裡暫時不說,後面我想應該會有一篇博文專門講解。(我懂了的話會有,我相信會有。)

這裡尋求一種方法來學習Vivado的工程模式下如何掌握Tcl命令(工程模式下的Tcl命令)。那就是通過vivado.jou 和 vivado.log檔案來學習。

下面是UG895對兩者的說明:

As an alternative to creating a project in the Vivado IDE, you can create a project using a Tcl script. Most actions run in the Vivado IDE result in a Tcl command being executed. The Tcl commands appear in the Vivado IDE Tcl Console and are also captured in the vivado.jou and vivado.log files.

The vivado.jou file contains just the commands, and the vivado.log file contains both commands and any returned messages. You can use these files to develop scripts for use with Project Mode. 

翻譯:

作為在Vivado IDE中建立專案的替代方法,您可以使用Tcl指令碼建立專案。 在Vivado IDE中執行的大多數操作都會導致執行Tcl命令。 Tcl命令出現在Vivado IDE Tcl控制檯中,也可以在vivado.jou和vivado.log檔案中捕獲。 vivado.jou檔案僅包含命令,vivado.log檔案包含命令和任何返回的訊息。

您可以使用這些檔案開發用於專案模式的指令碼。

使用Vivado IDE是瞭解Vivado最快速的方法,通過GUI介面的方式去執行工程的建立,RTL程式碼的編寫,綜合,實現等過程,可這一系列操作的背後都是Tcl命令的執行,所以瞭解Vivado下的Tcl命令是有必要的。(至少給予心理上以自由。)

既然,我們的每一步操作對應的Tcl命令都會被Vivado.jou檔案捕獲,何不先使用Vivado IDE操作,之後參看jou檔案的方式來學習工程模式下的Tcl命令呢?

下面以開啟一個已經存在的工程為例,來檢視到底使用到了什麼樣的Tcl命令。(預設你已經明白了或者學會了如何使用Vivado IDE的方式進行操作)

大致操作如下:

開啟Vivado IDE,開啟工程,綜合,檢視綜合後的各種報告,執行實現,參看實現後的各種報告,生成bit流檔案。

開啟Jou檔案看看:(我對其新增一些註釋!)

#-----------------------------------------------------------
# Vivado v2014.4 (64-bit)
# SW Build 1071353 on Tue Nov 18 18:24:04 MST 2014
# IP Build 1070531 on Tue Nov 18 01:10:18 MST 2014
# Start of session at: Mon Dec 24 15:57:03 2018
# Process ID: 9112
# Log file: C:/Users/Administrator/AppData/Roaming/Xilinx/Vivado/vivado.log
# Journal file: C:/Users/Administrator/AppData/Roaming/Xilinx/Vivado\vivado.jou
#-----------------------------------------------------------

#開啟GUI介面

start_gui 

#開啟工程
open_project G:/Vivado_file/gate_verilog/gate_verilog.xpr

#

synth_design -rtl -name rtl_1
report_drc -name drc_1

report_ssn -name ssn_1

#重置綜合並執行綜合

reset_run synth_1
launch_runs synth_1


wait_on_run synth_1
close_design
open_run synth_1 -name synth_1
set_property target_constrs_file G:/Vivado_file/gate_verilog/gate_verilog.srcs/constrs_1/new/top.xdc [current_fileset -constrset]

#報告設計規則檢測(drc)、利用率(utilization)
report_drc -name drc_1
report_utilization -name utilization_1

#執行實現
launch_runs impl_1
wait_on_run impl_1
close_design
open_run impl_1
report_timing_summary -delay_type min_max -report_unconstrained -check_timing_verbose -max_paths 10 -input_pins -name timing_1
report_clock_networks -name {network_1}
report_clock_interaction -delay_type min_max -significant_digits 3 -name timing_2
report_drc -name drc_1
report_utilization -name utilization_1
report_power -name {power_1}

#生成位元流檔案

launch_runs impl_1 -to_step write_bitstream
wait_on_run impl_1

#開啟硬體管理器
open_hw
 

我知道還不夠詳細,但是方法大概就是如此,你可以執行一步操作,之後開啟這個檔案,看看運行了什麼樣的Tcl命令,這樣便明白了每條Tcl命令的含義。

在工程模式下如果學會了使用Tcl命令,不僅可以裝逼(更裝逼的是非工程模式下的Tcl命令),還可以更方便的去使用Vivado IDE,當然了,內心更加自由,人也更自信了。

更進一步的學習Tcl命令,可以檢視Xilinx的官方文件:

Vivado Design Suite User Guide
Using Tcl Scripting
UG894 (v2017.1) April 5, 2017
UG894 (v2017.2) June 7, 2017

在DocNav中搜索UG894即可。

忘了說了,這個Jou檔案在Vivado IDE主介面下的File下檢視。

更新:

在Vivado IDE中執行操作:

對應的Tcl命令為:

#開啟Elaborated design,並報告drc(設計規則檢測)

synth_design -rtl -name rtl_1
report_drc -name drc_1
close_design

#在開啟綜合設計之前要關閉上一次的Elaborated design

#開啟綜合設計並報告時序總結
open_run synth_1 -name synth_1
report_timing_summary -delay_type min_max -report_unconstrained -check_timing_verbose -max_paths 10 -input_pins -name timing_1

要想看每一條命令對應的報告,介面上就有。

下面想要設計一個RTL工程,一個全新的RTL工程,工程的作用是2分頻。

下篇博文見吧!