FC2カウンター FPGAの部屋 ZYBOのHDMI入力をVGA出力に出力する2(制約ファイル)

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

FPGAの部屋

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

ZYBOのHDMI入力をVGA出力に出力する2(制約ファイル)

ZYBOのHDMI入力をVGA出力に出力する1(プロジェクトの作製)”の続き。

前回は、Vivado 2015.2 のプロジェクトを作製して、ブロックデザインを作製し、論理合成を行った。今回は、制約ファイルを生成する。

前回からの続きで、Synthesized Design が開いたままになっていると思う。そこで、Layout メニューから I/O Planning をクリックする。

すると、Vivado 2015.2 の画面が、下に示す画面に変わった。
dvi2vga_11_150724.png

この状態で外部ピンの位置と規格を設定した。
dvi2vga_12_150724.png

次に、その制約を dvi2vga.xdc としてセーブした。
dvi2vga_13_150724.png

次にタイミング制約を行う。
左端のFlow Navigator で Synthesis -> Synthesized Design -> Edit Timing Constraints をクリックする。
Timing Constraints を見るとすでに、TMDS_Clk_p には、6.06 ns, 165 MHz、clk125 には8 ns, 125 MHz の制約がかかっていた。
dvi2vga_14_150724.png

Synthesized Design の右端のXをクリックして閉じる。

今度は、左端のFlow Navigator で Program and Debug -> Generate Bitstream をクリックして、論理合成、インプリメント、ビットストリームの生成を行う。

place でエラーが出た。

[Place 30-575] Sub-optimal placement for a clock-capable IO pin and MMCM pair. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule.
< set_property CLOCK_DEDICATED_ROUTE BACKBONE [get_nets dvi2vga_i/dvi2rgb_0/U0/TMDS_ClockingX/CLK_IN_hdmi_clk] >

だそうだ。
CLOCK_DEDICATED_ROUTE 制約をdvi2vga.xdc に追加した。
dvi2vga_15_150724.png

もう1度、左端のFlow Navigator で Program and Debug -> Generate Bitstream をクリックして、論理合成、インプリメント、ビットストリームの生成を行った。

また、place でエラーが出た。

[Place 30-149] Unroutable Placement! A MMCM / (BUFIO/BUFR) component pair is not placed in a routable site pair. The MMCM component can use the dedicated path between the MMCM and the (BUFIO/BUFR) if both are placed in the same clock region or if they are placed in horizontally adjacent clock regions. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule.
< set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets dvi2vga_i/dvi2rgb_0/U0/TMDS_ClockingX/CLK_OUT_5x_hdmi_clk] >


もう一度、CLOCK_DEDICATED_ROUTE 制約をdvi2vga.xdc に追加した。

左端のFlow Navigator で Program and Debug -> Generate Bitstream をクリックして、論理合成、インプリメント、ビットストリームの生成を行った。

また、place でエラーが出た。

[Place 30-512] Clock region assignment has failed. Clock buffer 'dvi2vga_i/dvi2rgb_0/U0/TMDS_ClockingX/DVI_ClkGenerator' (MMCME2_ADV) is placed at site MMCME2_ADV_X0Y0 in CLOCKREGION_X1Y0. Its loads need to be placed in the area enclosed by clock regions CLOCKREGION_X1Y0 and CLOCKREGION_X1Y0. One of its loads 'dvi2vga_i/dvi2rgb_0/U0/TMDS_ClockingX/SerialClkBuffer' (BUFIO) is placed in site BUFIO_X0Y5 in CLOCKREGION_X1Y1 which is outside the permissible area.


MMCM と BUFIO のCLOCKREGIONが違っているからダメと言っている様だ。
dvi2vga_17_150724.png

検索すると、
AR# 60610
2014.1 Artix-7 配置 - クロック配置の際に、隣接区画を駆動する基準クロックを含んだ有効なクロック コンフィギュレーションが間違って拒否される


AR# 60258
Artix-7 GTP - 隣接するクワッドへの基準クロック配線により配置エラーが発生する


が検索にヒットした。

現在の制約ファイル、dvi2vga.xdc を貼っておく。

set_property PACKAGE_PIN P20 [get_ports {vga_pBlue[0]}]
set_property PACKAGE_PIN M20 [get_ports {vga_pBlue[1]}]
set_property PACKAGE_PIN K19 [get_ports {vga_pBlue[2]}]
set_property PACKAGE_PIN J18 [get_ports {vga_pBlue[3]}]
set_property PACKAGE_PIN G19 [get_ports {vga_pBlue[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_pBlue[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_pBlue[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_pBlue[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_pBlue[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_pBlue[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_pGreen[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_pGreen[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_pGreen[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_pGreen[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_pGreen[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_pGreen[0]}]
set_property PACKAGE_PIN H18 [get_ports {vga_pGreen[0]}]
set_property PACKAGE_PIN N20 [get_ports {vga_pGreen[1]}]
set_property PACKAGE_PIN L19 [get_ports {vga_pGreen[2]}]
set_property PACKAGE_PIN J19 [get_ports {vga_pGreen[3]}]
set_property PACKAGE_PIN H20 [get_ports {vga_pGreen[4]}]
set_property PACKAGE_PIN F20 [get_ports {vga_pGreen[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_pRed[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_pRed[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_pRed[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_pRed[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_pRed[0]}]
set_property PACKAGE_PIN M19 [get_ports {vga_pRed[0]}]
set_property PACKAGE_PIN L20 [get_ports {vga_pRed[1]}]
set_property PACKAGE_PIN J20 [get_ports {vga_pRed[2]}]
set_property PACKAGE_PIN G20 [get_ports {vga_pRed[3]}]
set_property PACKAGE_PIN F19 [get_ports {vga_pRed[4]}]
set_property PACKAGE_PIN H16 [get_ports TMDS_Clk_p]
set_property PACKAGE_PIN D19 [get_ports {TMDS_Data_p[0]}]
set_property PACKAGE_PIN C20 [get_ports {TMDS_Data_p[1]}]
set_property PACKAGE_PIN B19 [get_ports {TMDS_Data_p[2]}]
set_property PACKAGE_PIN G18 [get_ports ddc_sda_io]
set_property PACKAGE_PIN G17 [get_ports ddc_scl_io]
set_property PACKAGE_PIN P19 [get_ports vga_pHSync]
set_property IOSTANDARD LVCMOS33 [get_ports vga_pHSync]
set_property IOSTANDARD LVCMOS33 [get_ports vga_pVSync]
set_property PACKAGE_PIN R19 [get_ports vga_pVSync]
set_property PACKAGE_PIN L16 [get_ports clk125]
set_property PACKAGE_PIN R18 [get_ports reset]
set_property IOSTANDARD LVCMOS33 [get_ports reset]
set_property IOSTANDARD LVCMOS33 [get_ports clk125]
set_property IOSTANDARD LVCMOS33 [get_ports ddc_scl_io]
set_property IOSTANDARD LVCMOS33 [get_ports ddc_sda_io]

set_property CLOCK_DEDICATED_ROUTE BACKBONE [get_nets dvi2vga_i/dvi2rgb_0/U0/TMDS_ClockingX/CLK_IN_hdmi_clk]
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets dvi2vga_i/dvi2rgb_0/U0/TMDS_ClockingX/CLK_OUT_5x_hdmi_clk]

  1. 2015年07月24日 04:53 |
  2. ZYBO
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3210-177ac95c
この記事にトラックバックする(FC2ブログユーザー)