FC2カウンター FPGAの部屋 画像フィルタを DFX する12(DFX_filter_test プロジェクト5)
fc2ブログ

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

FPGAの部屋

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

画像フィルタを DFX する12(DFX_filter_test プロジェクト5)

画像フィルタを DFX する11(DFX_filter_test プロジェクト4)”の続き。

前回は、通過 IP 、ラプラシアン・フィルタ IP 、ソーベル・フィルタ IP の 3 個の IP を DFX で切り替えるべく Vivado 2021.1 の DFX_filter_test プロジェクトに追加するということで、ブロック・デザイン・コンテナを作成し、RM を設定した。今回は、Generate Output Products、 Dynamic Function eXchange Wizard 、 Pblock の設定、ビットストリームの生成を行った。

ラッパー・ファイルの作成は、もうすでに作成されている。

Generate Output Products を行う。
Flow Navigator から Generate Block Design をクリックする。

Generate Output Products ダイアログが表示された。
Generate ボタンをクリックする。
DFX2_91_210816.png

Flow Navigator から Dynamic Function eXchange Wizard を選択する。

Dynamic Function eXchange Wizard ダイアログが表示された。
Next > ボタンをクリックする。
DFX2_92_210816.png

Edit Reconfigurable Modules 画面が表示された。
デフォルトのまま Next > ボタンをクリックする。
DFX2_93_210816.png

Edit Configuration 画面が表示された。
automatically create configuration をクリックする。

config1, config2, config3 が表示された。
DFX2_94_210816.png

Edit Configuration Runs 画面が表示された。
automatically create configuration をクリックする。

impl_1 が config1、 child0_impl_1 が config2、 child1_impl_1 が config3 になっている。
DFX2_95_210816.png

Dynamic Function eXchange Summary 画面が表示された。
Finish ボタンをクリックする。
DFX2_96_210816.png

論理合成していこう。
Flow Navigator の SYNTHESIS -> Run Synthesis をクリックする。

論理合成が成功した。
Synthesis Completed ダイアログが表示された。
Open Synthesized Design のラジオボタンをクリックして、 Synthesized Design を開く。

Synthesized Design の Netlist を開いて filter リコンフィギャブル・モジュールを右クリックし、右クリックメニューから Floorplanning -> Draw Pblock を選択する。
DFX2_97_210816.png

Device タブをクリックして、 X1Y2 領域に適当に PBlock を指定した。(適当と言っても 7 シリーズの FPGA は X1Y2 の領域に Pblock の境界をピッタリ合わせないとダメなようだ)
DFX2_98_210816.png

Pblock Properties 画面で、 RESET_AFTER_RECONFIG のチェックボックスにチェックを入れて、SNAPPING_MODE を ROUTING にする。
SNAPPING_MODE を ON や ROUTING にすると、丁度良い境界から Pblock を取ってくれる。
DFX2_99_210816.png

Pblock の制約を制約ファイルにセーブした。
現在の DFX_filter_test.xdc を示す。

set_property PACKAGE_PIN H16 [get_ports TMDS_Clk_p_0]
set_property PACKAGE_PIN D19 [get_ports {TMDS_Data_p_0[0]}]
set_property PACKAGE_PIN C20 [get_ports {TMDS_Data_p_0[1]}]
set_property PACKAGE_PIN B19 [get_ports {TMDS_Data_p_0[2]}]

set_property IOSTANDARD TMDS_33 [get_ports TMDS_Clk_p_0]
set_property IOSTANDARD TMDS_33 [get_ports {TMDS_Data_p_0[2]}]
set_property IOSTANDARD TMDS_33 [get_ports {TMDS_Data_p_0[1]}]
set_property IOSTANDARD TMDS_33 [get_ports {TMDS_Data_p_0[0]}]

set_property PACKAGE_PIN T14 [get_ports {cam_data[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {cam_data[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {cam_data[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {cam_data[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {cam_data[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {cam_data[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {cam_data[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {cam_data[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {cam_data[0]}]
set_property PACKAGE_PIN U14 [get_ports {cam_data[6]}]
set_property PACKAGE_PIN T15 [get_ports {cam_data[5]}]
set_property PACKAGE_PIN U15 [get_ports {cam_data[4]}]
set_property PACKAGE_PIN P14 [get_ports {cam_data[3]}]
set_property PACKAGE_PIN V17 [get_ports {cam_data[2]}]
set_property PACKAGE_PIN R14 [get_ports {cam_data[1]}]
set_property PACKAGE_PIN V18 [get_ports {cam_data[0]}]

set_property IOSTANDARD LVCMOS33 [get_ports iic_scl_io]
set_property IOSTANDARD LVCMOS33 [get_ports iic_sda_io]
set_property IOSTANDARD LVCMOS33 [get_ports href]
set_property IOSTANDARD LVCMOS33 [get_ports pclk]
set_property IOSTANDARD LVCMOS33 [get_ports standby]
set_property IOSTANDARD LVCMOS33 [get_ports vsync]
set_property IOSTANDARD LVCMOS33 [get_ports xck]
set_property PACKAGE_PIN V15 [get_ports iic_scl_io]
set_property PACKAGE_PIN W14 [get_ports iic_sda_io]
set_property PACKAGE_PIN W15 [get_ports vsync]
set_property PACKAGE_PIN Y14 [get_ports href]
set_property PACKAGE_PIN T11 [get_ports standby]
set_property PACKAGE_PIN T10 [get_ports pclk]
set_property PACKAGE_PIN U12 [get_ports xck]

set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets pclk_IBUF]


set_property PULLUP true [get_ports iic_scl_io]
set_property PULLUP true [get_ports iic_sda_io]

create_pblock pblock_filter
add_cells_to_pblock [get_pblocks pblock_filter] [get_cells -quiet [list DFX_filter_test_i/filter]]
resize_pblock [get_pblocks pblock_filter] -add {SLICE_X88Y52:SLICE_X103Y99}
resize_pblock [get_pblocks pblock_filter] -add {DSP48_X3Y22:DSP48_X4Y39}
resize_pblock [get_pblocks pblock_filter] -add {RAMB18_X4Y22:RAMB18_X4Y39}
resize_pblock [get_pblocks pblock_filter] -add {RAMB36_X4Y11:RAMB36_X4Y19}
set_property RESET_AFTER_RECONFIG true [get_pblocks pblock_filter]
set_property SNAPPING_MODE ROUTING [get_pblocks pblock_filter]


インプリメンテーションとビットストリームの生成を行って、成功した。
DFX2_100_210816.png

3 個とも、タイミング・メットしている。
DFX2_101_210816.png

DFX_filter_test_211/DFX_filter_test_211.run ディレクトリの下に impl_1, child0_impl1, child1_impl1 ディレクトリが作成され、各ディレクトリにパーシャル・ビット・ファイルとフルのビット・ファイルが生成されていた。
DFX2_102_210818.png

DFX2_103_210818.png

DFX2_104_210818.png
  1. 2021年08月18日 04:49 |
  2. Dynamic Function eXchange
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/5328-7ab55609
この記事にトラックバックする(FC2ブログユーザー)