Vivado非工程模式下的FPGA設(shè)計(jì)流程
時(shí)間:2025-10-23 22:20:51
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
Vivado集成開(kāi)發(fā)工具為設(shè)計(jì)者提供了非工程模式下的FPGA設(shè)計(jì)流程。在Vivado非工程模式下,FPGA開(kāi)發(fā)人員可以更加靈活地對(duì)設(shè)計(jì)過(guò)程的每個(gè)階段進(jìn)行控制,從而進(jìn)一步提高FPGA的設(shè)計(jì)效率。
非工程模式下基本命令列表



| 命令 | 功能 |
| read_edif | 將EDIF或者NGC網(wǎng)表導(dǎo)入當(dāng)前工程的設(shè)計(jì)源文件集合中 |
| read_verilog | 讀入用于非工程模式會(huì)話的Verilog(.v)和SystemVerilog(.sv)源文件 |
| read_vhdl | 讀入用于非工程模式會(huì)話的VHDL(.vhd或vhdl)源文件 |
| read_ip | 讀入用于非工程模式會(huì)話的已經(jīng)存在的IP(.xco或者.xci)工程文件。使用來(lái)自.xco IP工程的.ngc網(wǎng)表。對(duì)于.xci IP,使用RTL用于編譯;或者如果存在網(wǎng)表,則使用網(wǎng)表 |
| read_xdc | 讀入用于非工程模式會(huì)話的.sdc或者.xdc文件 |
| set_paramset_property | 用于多個(gè)目的。例如,它可以定義設(shè)計(jì)配置和工具設(shè)置等 |
| link_design | 如果會(huì)話中使用網(wǎng)表文件,則對(duì)設(shè)計(jì)進(jìn)行編譯,用于綜合目的 |
| synth_design | 啟動(dòng)Vivado綜合,包含設(shè)計(jì)的頂層模塊名字和目標(biāo)器件參數(shù) |
| opt_design | 執(zhí)行高層次設(shè)計(jì)優(yōu)化 |
| power_opt_design | 執(zhí)行智能時(shí)鐘門(mén)控,用于降低系統(tǒng)的整體功耗(可選) |
| place_design | 對(duì)設(shè)計(jì)進(jìn)行布局 |
| phys_opt_design | 執(zhí)行物理邏輯優(yōu)化,以改善時(shí)序和布線能力(可選) |
| route_design | 對(duì)設(shè)計(jì)進(jìn)行布線 |
| report* | 運(yùn)行多個(gè)標(biāo)準(zhǔn)的報(bào)告,可以在設(shè)計(jì)過(guò)程的任何一個(gè)階段運(yùn)行它 |
| write_bitstream | 生成一個(gè)比特流文件,并且運(yùn)行DRC |
| write_checkpointread_checkpoint | 在設(shè)計(jì)流程的任何點(diǎn)保存設(shè)計(jì)。一個(gè)設(shè)計(jì)檢査點(diǎn)由網(wǎng)表和約束構(gòu)成,它們?cè)谠O(shè)計(jì)流程的該點(diǎn)進(jìn)行了優(yōu)化,以及包含實(shí)現(xiàn)的結(jié)果 |
| start_guistop_gui | 調(diào)用在存儲(chǔ)器中當(dāng)前設(shè)計(jì)的Vivado集成開(kāi)發(fā)環(huán)境 |
典型TCL腳本


為了方便讀者從整體上了解在Vivado非工程模式下的基本命令的功能,下面將給出用于Vivado設(shè)計(jì)套件示例的非工程模式TCL腳本,該腳本可以說(shuō)明使用設(shè)計(jì)檢查點(diǎn)、用于保存設(shè)計(jì)流程中各個(gè)階段的數(shù)據(jù)庫(kù)狀態(tài)和手工生成各種報(bào)告的方法。
通過(guò)下面的命令運(yùn)行該Tcl腳本文件:
vivado -mode tcl –source create_bft_batch.tcl
|
Following is an example of a Non-Project Mode script, which reads in various source files:# create_bft_batch.tcl# bft sample design# A Vivado script that demonstrates a very simple RTL-to-bitstream batch flow## NOTE: typical usage would be "vivado -mode tcl -source create_bft_batch.tcl"## STEP#0: define output directory area.#set outputDir ./Tutorial_Created_Data/bft_outputfile mkdir $outputDir## STEP#1: setup design sources and constraints#read_vhdl -library bftLib [ glob ./Sources/hdl/bftLib/*.vhdl ]read_vhdl ./Sources/hdl/bft.vhdlread_verilog [ glob ./Sources/hdl/*.v ]read_xdc ./Sources/bft_full.xdc## STEP#2: run synthesis, report utilization and timing estimates, write checkpointdesign#synth_design -top bft -part xc7k70tfbg484-2 -flatten rebuilt write_checkpoint -force $outputDir/post_synthreport_timing_summary -file $outputDir/post_synth_timing_summary.rptreport_power -file $outputDir/post_synth_power.rpt## STEP#3: run placement and logic optimzation, report utilization and timingestimates, write checkpoint design#opt_designplace_designphys_opt_designwrite_checkpoint -force $outputDir/post_placereport_timing_summary -file $outputDir/post_place_timing_summary.rpt## STEP#4: run router, report actual utilization and timing, write checkpoint design,run drc, write verilog and xdc out#route_designwrite_checkpoint -force $outputDir/post_routereport_timing_summary -file $outputDir/post_route_timing_summary.rptreport_timing -sort_by group -max_paths 100 -path_type summary -file$outputDir/post_route_timing.rptreport_clock_utilization -file $outputDir/clock_util.rptreport_utilization -file $outputDir/post_route_util.rptreport_power -file $outputDir/post_route_power.rptreport_drc -file $outputDir/post_imp_drc.rptwrite_verilog -force $outputDir/bft_impl_netlist.vwrite_xdc -no_fixed_only -force $outputDir/bft_impl.xdc## STEP#5: generate a bitstream#write_bitstream -force $outputDir/bft.bit |
Vivado集成開(kāi)發(fā)環(huán)境分析

3.1 啟 動(dòng) Vivado集 成 開(kāi) 發(fā) 環(huán) 境
當(dāng)工作在非工程模式時(shí),對(duì)于存儲(chǔ)器中活動(dòng)的設(shè)計(jì)來(lái)說(shuō),使用下面的命令打開(kāi)/關(guān)閉Vivado集成開(kāi)發(fā)環(huán)境。
(l)start_gui,打開(kāi)Vivado集成開(kāi)發(fā)環(huán)境,用于存儲(chǔ)器中活動(dòng)的設(shè)計(jì)。
(2)stop_gui,關(guān)閉Vivado集成開(kāi)發(fā)環(huán)境,并且返回“Vivado Design Suite Tcl shell”界面。
在設(shè)計(jì)過(guò)程的每個(gè)階段,設(shè)計(jì)者均可以打開(kāi)Vivado集成開(kāi)發(fā)環(huán)境,對(duì)存儲(chǔ)器中保存的當(dāng)前設(shè)計(jì)進(jìn)行分析和操作。在非工程模式下,在Vivado集成開(kāi)發(fā)環(huán)境中,一些工程的特性是不可用的,如Flow Navigator、Project Summary,以及源文件的訪問(wèn)、管理和運(yùn)行。然而,通過(guò)Vivado集成開(kāi)發(fā)環(huán)境的Tools菜單,可以使用分析及修改約束等很多特性。
需要知道的是,在Vivado集成開(kāi)發(fā)環(huán)境中,對(duì)存儲(chǔ)器中的設(shè)計(jì)所做的任何變化都會(huì)自動(dòng)應(yīng)用到下游工具中,這里沒(méi)有保存的功能。如果設(shè)計(jì)者想要將約束的變化用于后續(xù)的運(yùn)行,則在Vivado集成幵發(fā)的環(huán)境的主菜單下,執(zhí)行菜單命令【File】—【Export】—【Export Constraints】,寫(xiě)到一個(gè)新的包含所有XDC文件的文件中。
3.2 打開(kāi)設(shè)計(jì)檢查點(diǎn)的方法
通過(guò)Vivado集成設(shè)計(jì)環(huán)境,設(shè)計(jì)者可以在保存的設(shè)計(jì)點(diǎn)上對(duì)設(shè)計(jì)進(jìn)行分析。通過(guò)使用Tcl命令(synth_design、opt_design、power_opt_design、place_design、phys_opt_design和route_deSign),設(shè)計(jì)者可以在非工程模式下運(yùn)行一個(gè)設(shè)計(jì),并且可以在任何階段保存一個(gè)設(shè)計(jì)。這樣,就可以在Vivado集成設(shè)計(jì)環(huán)境中讀取設(shè)計(jì)。設(shè)計(jì)者可以從一個(gè)布線后的設(shè)計(jì)開(kāi)始,分析時(shí)序,僅通過(guò)布局來(lái)解決時(shí)序問(wèn)題。然后保存剛才的工作,甚至設(shè)計(jì)中還沒(méi)有進(jìn)行的布線操作。Vivado集成設(shè)計(jì)環(huán)境顯示打開(kāi)設(shè)計(jì)點(diǎn)的名字。
設(shè)計(jì)者可以打開(kāi)、分析和保存設(shè)計(jì)檢查點(diǎn),也可以將變化保存到新的設(shè)計(jì)點(diǎn)。
(1)在Vivado集成開(kāi)發(fā)環(huán)境下,執(zhí)行菜單命令【File】->【Save Checkpoint】,保存對(duì)當(dāng)前設(shè)計(jì)檢查點(diǎn)的修改。
(2)在Vivado集成開(kāi)發(fā)環(huán)境下,執(zhí)行菜單命令【File】—【W(wǎng)rite Checkpoint】,將設(shè)計(jì)檢查點(diǎn)的當(dāng)前狀態(tài)保存到一個(gè)新的設(shè)計(jì)檢查點(diǎn)中。





