FC2カウンター FPGAの部屋 2013年09月04日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Vivado Design Suite のチュートリアルをやってみた1(Tclスクリプト)

Vivado のIP Integrator やIP Packager はとりあえず次のバージョンを待ちたいが、Vivado はチュートリアルをやってみてやり方を学びたいと思った。そこで、”Vivado Design Suite チュートリアル デザイン フローの概要 UG888 (v2013.2) 2013 年 6 月 19 日”をやってみることにした。使用するVivado のバージョンは、2013.2

プロジェクトモードと非プロジェクトモードがあって両方やるらしい。

非プロジェクトモードで明示的にTclコマンドを使用して、ソース ファイルは read_verilog、read_vhdl、read_edif、read_ip、およびread_xdc コマンドを使用して読み込まれるそうだ。

最初にチュートリアルデザインをフォルダに解凍する。

1.C:\HDL\Xilinx\Vivado\2013.2\examples のVivado_Tutorial.zip の中身を、C:\Users\Masaaki\Documents\Vivado にコピーした。
Vivado_Tutorial_1_130904.png

演習1 : 非プロジェクトデザインフローの使用(8ページ)
手順1で、Vivado_Tutorial/run_bft_batch.tclを確認したが、コメントアウトはされていなかった。

手順 2 : サンプル デザインを使用して Vivado ツールを起動(8ページ)

2.Vivado 2013.2 Tcl Shell を起動した。
Vivado_Tutorial_2_130904.png

Vivado_Tutorial_3_130904.png

3.C:\Users\Masaaki\Documents\Vivado\Vivado_Tutorial に移動した。

cd C:/Users/Masaaki/Documents/Vivado/Vivado_Tutorial


Vivado_Tutorial_4_130904.png

4.run_bft_batch.tcl スクリプトを実行した。

source run_bft_batch.tcl


Vivado_Tutorial_5_130904.png

5.スクリプトが終了した。
Vivado_Tutorial_6_130904.png

手順 3 : デザインの合成(9ページ)

チュートリアルでは、論理合成などをTclコマンドでやっていくことになっているが、実際のrun_bft_batch.tcl にはビットストリームを作るところまで、コメントアウト無しに tcl コマンドが書いてあったので、ビットストリームの生成まで終了していると思う。

6.C:\Users\Masaaki\Documents\Vivado\Vivado_Tutorial\Tutorial_Created_Data\bft_output に bft.bit があった。
Vivado_Tutorial_7_130904.png

・bft_impl.xdc には、タイミング制約、ピン固定はもちろんだが、ロジックの配置固定制約まで出力されている。
下に、タイミング制約、ピン固定制約の一部を引用する。

create_clock -period 10.000 -name wbClk [get_ports wbClk]
create_clock -period 5.000 -name bftClk [get_ports bftClk]
set_property PACKAGE_PIN P20 [get_ports {wbOutputData[23]}]
set_property PACKAGE_PIN V22 [get_ports {wbOutputData[9]}]
set_property PACKAGE_PIN E21 [get_ports {wbInputData[18]}]


下に、配置固定情報の一部を示す。

set_property BEL AFF [get_cells error_reg]
set_property BEL B6LUT [get_cells {egressLoop[4].egressFifo/buffer_fifo/xlnx_opt_LUT_infer_fifo.wr_addr_tmp_reg[2]_CE_cooolgate_en_gate_15_1}]
set_property BEL A5LUT [get_cells {egressLoop[4].egressFifo/buffer_fifo/infer_fifo.wr_addr_tmp_reg[9]_i_2__11}]
set_property BEL D6LUT [get_cells {egressLoop[4].egressFifo/buffer_fifo/infer_fifo.wr_addr_tmp_reg[9]_i_1__11}]
set_property BEL DFF [get_cells {egressLoop[4].egressFifo/buffer_fifo/infer_fifo.wr_addr_tmp_reg[9]}]


bft_impl.xdc は、Route 後のSTEP#4 の”write_xdc -no_fixed_only -force $outputDir/bft_impl.xdc”コマンドで出力されている。”-no_fixed_only”オプションは、”Vivado Design Suite Tcl コマンド リファレンス ガイド UG835 (v 2013.2) 2013 年 6 月 19 日”(以下、Tclガイドと略する)の1033ページによると、

配置が固定されているかどうかに関わらず、すべての配置をエクスポートします。デフォルトでは、固定された配置のみがエクスポートされます。


だそうだ。

・post_synth.dcp、post_place.dcp、post_route.dcp というファイルがあるが、これは、Design Check Point の略で、”デザインをデザイン プロセスの任意の段階で保存し、必要に応じてツールにすばやくインポートし直せるようにします。”とのことだ。write_checkpoint のTcl コマンドで書き出すことができる。(Tclガイド、1006ページ)
read_checkpoint コマンドで、Design Check Point を読み込むことができる。(Tclガイド、623ページ)

レポートは、9個のレポートファイルがある。
Vivado_Tutorial_8_130905.png

最後にネットリスト形式のVerilog HDLファイルのbft_impl_netlist.v が出力されている。その一部を示す。
Vivado_Tutorial_9_130905.png

ネットリスト形式のVerilog HDLが出力されていても遅延情報が書かれたSDFファイルが出力されていない。遅延シミュレーションを行う場合はそれらが必要となる。その場合は write_verilog コマンドに、-mode timesim と -sdf_anno オプションを指定し、、Verilog ネットリストに $sdf_annotate分を追加しておく。この場合は、-sdf_file は指定されていないので、SDF ファイルの名前は Verilog ファイルと同じになるそうだ。write_verilog コマンドの例を下に引用する。(Tclガイド、1029ページ)

write_verilog C:/Data/my_verilog.net -mode timesim -sdf_anno true


更に、write_sdf コマンドで、SDF遅延ファイルを生成する。(Tclガイド、1025ページ)

Vivado Design Suite のチュートリアルをやってみた2(Tclスクリプト2)”に続く。
  1. 2013年09月04日 05:49 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0