FPGAの部屋

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

何かブログに記事に関する質問がありましたら、abcd_marsee101@infoseek.jp から adcd_ を除いたメールアドレスに、ご連絡ください。なお、記事に関係のない質問は受け付けないことがあります。 FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ご利用ください。 http://marsee101.web.fc2.com/index.html

カテゴリ: Vivado

無料で使用できるVivado HL WebPACK 2015.4 で Vivado Analyzer や Vivado Serial IO Analyzer が使えるようになっているようです。

今までのVivado WebPACK では、Vivado Analyzer や Vivado Serial IO Analyzer は使えなかったのですが、Vivado HLS と共に、 Vivado Analyzer や Vivado Serial IO Analyzer が使えるようになったようです。Vivado HL WebPACK 2015.4 は使用できるデバイスは限られますが、使えるデバイスでは、System Generator for DSP 以外の機能を使えるようになったようです。

今まで初心者の方に、Xilinx と Altera のどちらのFPGA を使ったほうが良いですか?と聞かれると無料でFPGA 内蔵のロジック・アナライザが使えないので、Altera にしたら?と答えていました。今度からは、Vivado HLS という C, C++ からHDL に合成できるVivado HLS も無料で使えるので、Xilinx にしたほうが良いと答えようと思います。

趣味で使う方や、仕事に使うので家で勉強したいという方に無料のVivado HL WebPACK 2015.4 をお勧めします。

初めてFPGA を触る方にどのFPGA ボードをお勧めするか?なんですが、Digilent 社のArty 、BASYS3、ZYBO が秋月電子で購入できるので、この辺りはいかがでしょうか?

少し高価ですが、650MHz のデュアルARM CortexA9 が載っているZYBO はLinux も十分に動作して、UbuntuもOpenCV も動きますし、とても良いです。Vivado HLS でソフトをハードにオフロードすることも慣れればできるでしょう。ですが、ソフトとハードを協調して動作させようとするとAXIバスの知識が必要などのハードルもあります。初心者で、初めて動作させようとすると、どうして良いか分からないということになることもあるでしょう?
今だったら、Digilent 社のサイトからは、$132 で購入できます。但し、Shipping に費用がかかります。どの位かかるのか?はよく分かりません。

FPGA初めて見たいとか自分ですべてオリジナルでCPU作りたいとか、安いほうが良い、ハード単体で使いたいということだとArty かな?と思います。それにLAN ポートが付いています。

BASYS3 は、Arty 同様ですが、LAN ポートが無く、VGA と7セグメントLED が付いています。スイッチもたくさんあって、教育用途に向いているのかな?と思います。

Digilent Documentation にそれらのボードのマニュアルやリファレンス・プロジェクトなどがありますので、参考にされると良いと思います。

set_clock_groups -asynchronous 制約”で論理合成、インプリメント、ビットストリームの生成を行った後で、Report CDC (Clock Domain Crossing) を見てみよう。参考にしたのは、”Vivado Design Suite ユーザー ガイド デザイン解析およびクロージャ テクニック UG906 (v2015.3) 2015 年 9 月 30 日”の 65 ページ ”クロック乗せ換えレポート”、日本語で分けわからないときは、英語のマニュアルも見よう。

まずは、Implemented Design を開いて、Tools メニュー -> Timing -> Report CDC... を選択する。
3dc6bed2.png


Report CDC ダイアログが開いた。
From の ... ボタンをクリックした。
ZYBO_1_XGA_test_40_151219.png

Choose Start Clocks ダイアログが開いた。BUFR_pixel_clk_io/O と clk_fpga_0 を選んで、右向き→を選んで、Selected に移動した。
99b29a45.png


Report CDC ダイアログの To も同様に、BUFR_pixel_clk_io/O と clk_fpga_0 を選択した。
ZYBO_1_XGA_test_42_151219.png

BUFR_pixel_clk_io/O から clk_fpga_0 は、unsafe が無いので問題ない。
但し、clk_fpga_0 から BUFR_pixel_clk_io/O は unsafe が 1 つあるので、修正の必要がありそだ。
9edb1ec8.png


unsafe の 1 をクリックすると、CDC Details が表示された。
CDC-10 の Critical warning で、Combinatorial logic detected before a synchronizer だそうだ。
9edb1ec8.png


BUFR_pixel_clk_io/O から clk_fpga_0 の CDC Details を下に示す。Warning のみだった。
a61061f9.png


clk_fpga_0 から BUFR_pixel_clk_io/O の CDC Details をよく見るためにスプレッドシートのファイルを吐き出してもらう。

Timing - Report CDC 画面で右クリックし、右クリックメニューから Export to Spreadsheet... を選択した。
4568a647.png


Export Table to Spreadsheet ダイアログが表示された。File name を設定して、OKボタンをクリックした。
ZYBO_1_XGA_test_46_151219.png

スプレッドシートの内容を示す。
Severity ID Description Depth Exception Source (From) Destination (To) Category
Critical CDC-10 Combinatorial logic detected before a synchronizer 2 Asynch Clock Groups ZYBO_1_XGA_test_i/bitmap_disp_cntrler_axi_master_0/inst/bitmap_disp_eng_inst/cs_rdg_reg[0]/C ZYBO_1_XGA_test_i/bitmap_disp_cntrler_axi_master_0/inst/bitmap_disp_eng_inst/hv_cnt_ena_d1_reg/D No ASYNC_REG
Info CDC-6 Multi-bit synchronized with ASYNC_REG property 2 Asynch Clock Groups ZYBO_1_XGA_test_i/bitmap_disp_cntrler_axi_master_0/inst/bitmap_disp_eng_inst/bitmap_afifo_inst/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.gcx.clkx/wr_pntr_gc_reg[7:0]/C ZYBO_1_XGA_test_i/bitmap_disp_cntrler_axi_master_0/inst/bitmap_disp_eng_inst/bitmap_afifo_inst/U0/inst_fifo_gen/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.gcx.clkx/gsync_stage[1].rd_stg_inst/Q_reg_reg[7:0]/D Safe
Critical CDC-10 Combinatorial logic detected before a synchronizer 2 Asynch Clock Groups ZYBO_1_XGA_test_i/bitmap_disp_cntrler_axi_master_0/inst/bitmap_disp_eng_inst/cs_rdg_reg[0]/C ZYBO_1_XGA_test_i/bitmap_disp_cntrler_axi_master_0/inst/bitmap_disp_eng_inst/hv_cnt_ena_d1_reg/D Unsafe

Vivado 2015.4 が出ました。
今回のバージョンは、特別な記念すべきバージョンです。”Vivado Design Suite ユーザー ガイド リ リース ノー ト 、 インス ト ールおよびライセンス UG973 (v2015.4) 2015 年 11 月 18 日”から引用します。

Vivado® Design Suite 2015.4 リ リ ースか ら、高位合成ツールであ る Vivado HLS が無償で提供 される よ う にな り 、Vivado のすべてのエデ ィ シ ョ ンに含まれる よ う にな り ま し た。 この変更を示すため、 エデ ィ シ ョ ンの名前は Vivado Design Suite HLx Edition に変更 されています。HLx Edition には、HL System Edition、HL Design Edition、および HL WebPACK™ Edition があ り ます。 これ らのエデ ィ シ ョ ンでは、 All Programmable FPGA、 SoC、 および再利用可能なプ ラ ッ ト フ ォーム を高い生産性で設計する ための新しい手法が イ ネーブルになっています。 すべての HLx エデ ィ シ ョ ンには Vivado 高位合成 (HLS)、 Vivado IP イ ンテグ レーター、 LogicCore IP サブシステム、 および Vivado インプ リ メ ンテーシ ョ ン ツール ス イー ト すべてが含まれてお り 、 生産性が高 く 、 高度な C および IP ベースのデザイ ン フ ローを即座に導入でき る よ う になっています。


つまり、無料の WebPACK でもVivado HLS がつかえるようになりました。凄いです~~~。Xilinxさん、太っ腹ですね。。。
しかも今回のバージョンは、Spartan3, Spartan6, Virtex4, Virtex5, Virtex6 もVivado HLS が使えるそうです。Vivado HLSのParts のFamilyの選択肢にそれらのFPGAを選ぶ項目がありました。それらのFPGAはVivado では使えないと思いますが、Vivado HLS ではXPS用のPcore IP としてIP をエクスポートすることもできるので、XPS のIP としての使用が可能になると思います。

高位合成ツールのVivado HLS が無料で使えるようになったということで、高位合成が一般的に普及するかもしれませんね?
とっても良いことだと思います。
私もVivado HLS 勉強会資料としてスライド650枚分の資料を作ってあるので、それをVivado HLS 2015.4 対応にして、そのうちに勉強会でもやってみたいです。。。

Vivado 2014.4 WebPACK と Vivado HLS 2014.4 1年間評価版がインストールしてあるノートパソコンが、Vivado や Vivado HLS を起動しても、 Visual Studio 2012 Visual C++ Runtime のインストールダイアログが出て起動できなくなりました。

Xilinx Forum を調べると、ちょうど”Vivado/Xilinx SDK Error Incorrect Visual C++ Version”の状況です。

解決策は2ページ目の”Re: Vivado/Xilinx SDK Error Incorrect Visual C++ Version”で直りました。

コントロールパネルの”プログラムと機能”を見ると、Visual Studio 2012 Visual C++ Runtime がたくさんインストールされていたので、すべて削除して、パソコンをリブートしました。

そのうえで、Windows 8.1 64 ビット版だったので、Xilinx\Vivado\2014.4\tps\win64 フォルダの vcredist_x64.exe を起動して、 Visual Studio 2012 Visual C++ Runtime をインストールしました。
d598fac4.png


パソコンをリブートしてから Vivado や Vivado HLS を起動すると、動作するようになりました。

Vivado プロジェクトを配布する方法には2つあると思う。

1つ目は、File メニュー -> Archive Project.... を選択して、プロジェクトをアーカイブする方法だ。
8eae8b1b.png


すると、Archive Project ダイアログが表示され、OKボタンをクリックするとプロジェクトがアーカイブされる。
1273e6c1.png


dvi2vga_lap.xpr.zip が作られた。
f37caea5.png


これを解凍すると、今まで他のフォルダに有るIPライブラリもプロジェクト内にまとめられて、プロジェクト内で完結するようになるのだが、XilinxのIPまでアーカイブされている。
fc9c9050.png


そのバージョンのIPでしか動かないこともあるのだと思うし、当然の処置だと思うが、これでは、XilinxのIPソースコードが入っているので、パブリックにダウンロードさせることが難しそうだ。
この方法は自分用、もしくは身内に配るのに良さそうだ。


パブリックにダウンロードさせる方法としては、2つ目の tcl スクリプトでプロジェクトやブロックデザインを生成する方法がある。

まずはブロックデザインの生成を tcl スクリプトにエクスポートする。

ブロックデザインを開いて、File メニューから Export -> Export Block Design... を選択する。
47be5e13.png


Export Block Design ダイアログが開く。
Tcl file を指定して OK ボタンをクリックする。
25132b8d.png


tcl ファイルが生成された。
82f1dc72.png


tcl ファイルを開けると、ブロックデザインを生成する tcl スクリプトが書かれている。
94c59a38.png


元々、Vivado のGUI も tcl スクリプトが実行されているのが、tcl console を見ていると分かる。Vivado は tcl スクリプトで動いているのだろう。

次に、プロジェクトの生成を行う tcl スクリプトを生成する。

File メニュー -> Write Project Tcl... を選択した。
84c446f6.png


Write Project Tcl ダウンロードが表示された。
dvi2vga_lap.tcl と Output File に入力して、OKボタンをクリックする。
Vivado_Archives_10_150914.png

成功したというダイアログが出た。
1134a9d5.png


dvi2vga_lap.tcl ができた。
03f6d138.png


dvi2vga_lap.tcl を開いた。プロジェクトを生成する tcl スクリプトが書かれている。
83b1f912.png


これだと、無いファイルも要求されているので、自分で tcl スクリプトを書き換えた。ブロックデザインも読んでくるようにした。sim は無いので、削除した。
dvi2vga_lap.tcl を示す。
8e80996b.png

# dvi2vga_lap.tcl
# I have to modify the output file of "write project tcl ...". 
# by marsee
# 2015/09/13

# Set the reference directory for source file relative paths (by default the value is script directory path)
set origin_dir "."

# Create project
create_project dvi2vga_lap ./dvi2vga_lap

# Set the directory path for the new project
set proj_dir [get_property directory [current_project]]

# Set project properties
set obj [get_projects dvi2vga_lap]
set_property "default_lib" "xil_defaultlib" $obj
set_property "part" "xc7z010clg400-1" $obj
set_property "simulator_language" "Mixed" $obj

# Create 'sources_1' fileset (if not found)
if {[string equal [get_filesets -quiet sources_1] ""]} {
  create_fileset -srcset sources_1
}

# Set IP repository paths
set obj [get_filesets sources_1]
set_property "ip_repo_paths" "[file normalize "$origin_dir/config_files/lap_fil_axis_cnone"] [file normalize "$origin_dir/config_files/synchro/synchro.srcs/sources_1/new"] [file normalize "$origin_dir/config_files/dvi2rgb_v1_5"] [file normalize "$origin_dir/config_files/rgb2vga_v1_0"]" $obj

# Rebuild user ip_repo's index before adding any source files
update_ip_catalog -rebuild

source "$origin_dir/config_files/dvi2vga.tcl"

regenerate_bd_layout

save_bd_design

make_wrapper -files [get_files "$origin_dir/dvi2vga_lap/dvi2vga_lap.srcs/sources_1/bd/dvi2vga/dvi2vga.bd"] -top
add_files -norecurse "$origin_dir/dvi2vga_lap/dvi2vga_lap.srcs/sources_1/bd/dvi2vga/hdl/dvi2vga_wrapper.v"

add_files -fileset constrs_1 -norecurse "$origin_dir/config_files/dvi2vga.xdc"

update_compile_order -fileset sources_1
update_compile_order -fileset sim_1


config_files フォルダの下に、必要なファイルを置くようにしている。

この dvi2vga_lap.tcl と config_files フォルダを一緒にフォルダに置いておく。
05992f64.png


config_files フォルダ。
9573cb56.png


Vivado を起動して(バージョンは2015.2)、dvi2vga_lap.tcl と config_files フォルダが置いてあるフォルダまで cd する。

tcl console に source dvi2vga_lap.tcl と入力して、tcl スクリプトを実行する。
96c2b1e9.png


ブロックデザインを生成している途中を示す。
32af28ab.png


プロジェクトの生成が終了した。
d34ef261.png


元のフォルダを見ると、dvi2vga_lap フォルダが生成されている。
570dcd44.png


こちらの方法は、Xilinx のIP は同じバージョンにする必要があるので、Vivado のバージョンを合わせる必要がある。

↑このページのトップヘ