做IC一般都是使用linux系統進行編寫程式碼,綜合模擬等操作。因此沒有影像化介面只跑指令碼是提高效率的一種方式,筆者以前一直使用影像化介面的方式對Vivado工程進行編譯綜合,後來學會了windows下也可以使用指令碼直接無工程生成bit檔案,時序報告等。
步驟大致如下,rtl.list在上文有提及,這裡不重複講具體怎麼寫。
1. 首先是開啟vivado在windows下的shell
接著跳出指令畫面
2. 進入到需要編譯的工程所在的目錄下
3. 在當前目錄下的檔案如下,其中src存放的是程式碼,IP核,xdc檔案等檔案,這些上一篇文章有提到,都是同一個工程
run.tcl的內容如下
set name ETH_Display_v1 set proj_dir D:/project/ETH_Display set output_dir ./run_out_$name file mkdir $output_dir set_part xczu3eg-sfvc784-1-i source $proj_dir/rtl_list.tcl #read_xdc $proj_dir/constraints/AXU3EG.xdc set_param general.maxThreads 16 synth_design -top AXU3EG_top -part xczu3eg-sfvc784-1-i \ -include_dirs $proj_dir/src/hdl \ -include_dirs $proj_dir/src/hdl/udp \ -include_dirs $proj_dir/src/hdl/udp/arp \ -include_dirs $proj_dir/src/hdl/udp/gmii_to_rgmii #sfcu write_checkpoint -force $output_dir/postsynth write_verilog -force $output_dir/postsynth_netlist.v report_clocks -file $output_dir/clock_out.txt opt_design place_design -directive AltSpreadLogic_high write_checkpoint -force $output_dir/post_place route_design write_checkpoint -force $output_dir/post_route report_timing_summary -max_paths 5 -file $output_dir/post_route_timing_summary.rpt report_timing -sort_by group -max_path 5 -path_type summary -file $output_dir/post_route_timing.rpt report_utilization -file $output_dir/post_route_util.rpt report_utilization -hierarchical -append -file $output_dir/post_route_util.rpt write_bitstream -force -bin_file $output_dir/$name.bit
之後只需在步驟2處輸入指令source run.tcl即可,然後等待編譯完成即可,編譯完成目錄下會出現生成的檔案。
以上是筆者在vivado2020.1版本進行的無工程生成韌體的操作,不同的vivado版本對指令也存在差異,正常報錯會提示。筆者覺得使用無工程生成韌體比UI介面生成的方式要快不少。