FC2ブログ

[vivado]メモ

Tclコマンド

llength [all_registers -rise_clock clk]clk立上り駆動レジスタ数の表示
check_timing -ver -file rep.ch_timing.txtcheck_timing結果をファイル出力
report_timing -delay max -file rep.max.txtsetupタイミングレポートをファイル出力
report_timing -delay min -file rep.min.txtholdタイミングレポートをファイル出力





Tclフロー

Digilent社ZYBO revBで、TCLスクリプトで操作してみた。

Vivado 2017.4起動
 > TclコンソールでプロジェクトDIRへ移動。
    例えば、cd work/zybo/hoge/
 > Tclコンソールで source zybo.tcl を実行。

これで、Vivado起動した状態から、ZYBOへの.bitプログラムまで自動で行える。
サンプル回路は単なるLEDチカチカ。

<zybo.tclの内容>


close_project -quiet

set outputDir .
#---------------------------------------------------------
# read rtl
#---------------------------------------------------------
read_verilog cnt.v

#---------------------------------------------------------
# synthesis
#---------------------------------------------------------
synth_design -top cnt -part xc7z010clg400-1
report_timing_summary -file $outputDir/post_synth_timing_summary.rpt
report_utilization -file $outputDir/post_synth_util.rpt

set_property -dict [list PACKAGE_PIN {L16} IOSTANDARD {LVCMOS33}] [get_ports clk ] ; # oscillator

set_property -dict [list PACKAGE_PIN {Y16} IOSTANDARD {LVCMOS33}] [get_ports reset ] ; # button 1
# set_property -dict [list PACKAGE_PIN {V16} IOSTANDARD {LVCMOS33}] [get_ports ] ; # button 2
# set_property -dict [list PACKAGE_PIN {P16} IOSTANDARD {LVCMOS33}] [get_ports ] ; # button 3
# set_property -dict [list PACKAGE_PIN {R18} IOSTANDARD {LVCMOS33}] [get_ports ] ; # button 4

set_property -dict [list PACKAGE_PIN {D18} IOSTANDARD {LVCMOS33}] [get_ports led[0] ] ; # LED 1
set_property -dict [list PACKAGE_PIN {G14} IOSTANDARD {LVCMOS33}] [get_ports led[1] ] ; # LED 2
set_property -dict [list PACKAGE_PIN {M15} IOSTANDARD {LVCMOS33}] [get_ports led[2] ] ; # LED 3
set_property -dict [list PACKAGE_PIN {M14} IOSTANDARD {LVCMOS33}] [get_ports led[3] ] ; # LED 4

#---------------------------------------------------------
# timing constraint
#---------------------------------------------------------
create_clock -period 20 [get_ports clk ]

#---------------------------------------------------------
# place
#---------------------------------------------------------
opt_design
place_design
report_clock_utilization -file $outputDir/clock_util.rpt

#---------------------------------------------------------
# opt after place
#---------------------------------------------------------
if {[get_property SLACK [get_timing_paths -max_paths 1 -nworst 1 -setup]] < 0} {
puts "Found setup timing violations => running physical optimization"
phys_opt_design
}
report_utilization -file $outputDir/post_place_util.rpt
report_timing_summary -file $outputDir/post_place_timing_summary.rpt

#---------------------------------------------------------
# route
#---------------------------------------------------------
route_design
#write_checkpoint -force $outputDir/post_route.dcp
report_route_status -file $outputDir/post_route_status.rpt
report_timing_summary -file $outputDir/post_route_timing_summary.rpt
report_power -file $outputDir/post_route_power.rpt
report_drc -file $outputDir/post_imp_drc.rpt
write_verilog -force $outputDir/cnt_impl_netlist.v -mode timesim -sdf_anno true

#---------------------------------------------------------
# generate bitstream
#---------------------------------------------------------
write_bitstream -force $outputDir/cnt.bit


#---------------------------------------------------------
# program
#---------------------------------------------------------
open_hw
connect_hw_server

open_hw_target {localhost:3121/xilinx_tcf/Digilent/210279A78FE1A}
#INFO: [Labtoolstcl 44-466] Opening hw_target localhost:3121/xilinx_tcf/Digilent/210279A78FE1A
current_hw_device [get_hw_devices xc7z010_1]
refresh_hw_device -update_hw_probes false [lindex [get_hw_devices xc7z010_1] 0]
#INFO: [Labtools 27-1434] Device xc7z010 (JTAG device index = 1) is programmed with a design that has no supported debug core(s) in it.

# INFO: [Labtools 27-2285] Connecting to hw_server url TCP:localhost:3121
set_property PROBES.FILE {} [get_hw_devices xc7z010_1]
set_property FULL_PROBES.FILE {} [get_hw_devices xc7z010_1]
set_property PROGRAM.FILE {C:/user/work/zybo/ether/ether.runs/impl_1/cnt.bit} [get_hw_devices xc7z010_1]
program_hw_devices [get_hw_devices xc7z010_1]
# INFO: [Labtools 27-3164] End of startup status: HIGH
refresh_hw_device [lindex [get_hw_devices xc7z010_1] 0]






Kintex-7  xc7k160tffg676-2

7 Series FPGAs Packaging and Pinout
https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf




作業フォルダのデフォルト位置変更

デスクトップのアイコン「Vivado 2017.4」
 > 右クリック > プロパティ
 > 作業フォルダー

旧: %APPDATA%\Xilinx\Vivado
新: C:\user


に変更した。
これでアイコンから起動した際、Tcl consoleでpwdすると、カレントフォルダがC:\userになってる。





Device ManagerがunconnectedでProgramできない
Auto Connectしてもすぐにdisconnectされる。
ZYBOの電源をOFF -> ONしたら、Auto Connectでconnectされるようになり、Program Deviceのリンクも表示された。
カレンダー
02 | 2018/03 | 04
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

Author:bobgosso
FPGAのブログへようこそ!

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード