UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 46053

LogiCORE IP Ten Gigabit Ethernet PCS/PMA (10GBASE-R) v2.2 - Kintex-7 FPGA サンプル デザインで配置エラーが発生する

説明

Kintex-7 デバイスをターゲットとしたデザインで Ten Gigabit Ethernet PCS/PMA v2.2 コアを使用していると、配置中に BUFR が GTX DRP クロックの駆動に使用されるためにインプリメンテーション エラーが発生します。

Kintex-7 デバイスでは、BUFR から GTX への配線は不可となっています。  

次のようなエラー メッセージが表示されます。

ERROR:Place:1459 - Regional Clock Net "dclk" cannot possibly be routed to component"ten_gig_eth_pcs_pma_block/gtwizard_10gbaser_i/gt0_GTWIZARD_10GBASER_i/gtxe2_ i" (placed in clock region"CLOCKREGIONP_X1Y3"), since it is too far away from source BUFR "ten_gig_eth_pcs_pma_block/gt0_usrclk_source/bufr_inst" (placed in clock region "CLOCKREGION_X0Y3"). For this clock net to be routable, the clock source and all loads should be in the same cloc k region. The situation may be caused byuser constraints, or the complexity of the design. Constraining the component s related to the regional clock properlymay guide the tool to find a solution. To debug your design with partially routed results, please allow map/placer t o finish the execution (by settingenvironment variable XIL_PAR_DEBUG_IOCLKPLACER to 1).

ソリューション

分周された DRPCLK の生成に使用されている BUFR は、出力に BUFG のある MMCM に置き換える必要があります。 

サンプル デザインに次の変更を加える必要があります。

Verilog 場合

1) MMCM に次のものを追加するために example_design/<core_name>_block.v ファイルを変更します。

a) 次のクロック モジュールを追加します。

CLOCK_MODULE #(
.MULT(4),
.DIVIDE(1),
.CLK_PERIOD(6.4),
.OUT0_DIVIDE(8),
.OUT1_DIVIDE(1),
.OUT2_DIVIDE(1),
.OUT3_DIVIDE(1)
) dclk_divider
(// Clock in ports
.CLK_IN(clk156),
// Clock out ports
.CLK0_OUT(gt0_drpclk_i),
.CLK1_OUT(),
.CLK2_OUT(),
.CLK3_OUT(),
// Status and control signals
.MMCM_RESET_IN(tied_to_ground_i),
.MMCM_LOCKED_OUT()
);

b) 減殺の GT_USRCLK_SOURCE ファイルをコメントアウトして、それを次のものに置き換えます。

GT_USRCLK_SOURCE gt_usrclk_source
(
.Q1_CLK0_GTREFCLK_PAD_N_IN (Q1_CLK0_GTREFCLK_PAD_N_IN),
.Q1_CLK0_GTREFCLK_PAD_P_IN (Q1_CLK0_GTREFCLK_PAD_P_IN),
.Q1_CLK0_GTREFCLK_OUT (q1_clk0_refclk_i),

.GT0_TXUSRCLK_OUT (gt0_txusrclk_i),
.GT0_TXUSRCLK2_OUT (gt0_txusrclk2_i),
.GT0_TXOUTCLK_IN (gt0_txoutclk_i),
.GT0_RXUSRCLK_OUT (gt0_rxusrclk_i),
.GT0_RXUSRCLK2_OUT (gt0_rxusrclk2_i),
.GT0_RXOUTCLK_IN (gt0_rxoutclk_i),
.DRPCLK_IN (tied_to_ground_i),
.DRPCLK_OUT()
);

2) example_design/gtx/gt_userclk_source.v でBUFR をコメントアウトします。

//BUFR
// #(
// .BUFR_DIVIDE("2")
// )
// (
// .I (q1_clk0_gtrefclk),
// .CE (tied_to_vcc_i),
// .CLR (tied_to_ground_i),
// .O (DRPCLK_OUT)
// );

3) example_design/gtx/clock_module.v で、BUFG をフィードバック パスに追加し、入力および出力のポートを MMCM の CLKFBOUT および CLKFBIN ポートに接続します。

wire clkfbout_bufg;

...

.CLKFBIN (clkfbout_bufg),

...

BUFG clkfb_bufg
(.O (clkfbout_bufg),
.I (clkfbout));

VHDL の場合

1) MMCM に次のものを追加するために example_design/<core_name>_block.vhd ファイルを変更します。

a) CLOCK_MODULE コンポーネントを追加します。

component CLOCK_MODULE is
generic
(
MULT : real := 2.0;
DIVIDE : integer := 2;
CLK_PERIOD : real := 6.4;
OUT0_DIVIDE : real := 2.0;
OUT1_DIVIDE : integer := 2;
OUT2_DIVIDE : integer := 2;
OUT3_DIVIDE : integer := 2
);
port
(-- Clock in ports
CLK_IN : in std_logic;
-- Clock out ports
CLK0_OUT : out std_logic;
CLK1_OUT : out std_logic;
CLK2_OUT : out std_logic;
CLK3_OUT : out std_logic;
-- Status and control signals
MMCM_RESET_IN : in std_logic;
MMCM_LOCKED_OUT : out std_logic
);
end component;


b) このクロック モジュールをインスタンシエートします。

drpclk_mmcm : CLOCK_MODULE
generic map
(
MULT => 4.0,
DIVIDE => 1,
CLK_PERIOD => 6.4,
OUT0_DIVIDE => 8.0,
OUT1_DIVIDE => 1,
OUT2_DIVIDE => 1,
OUT3_DIVIDE => 1
)
port map
(-- Clock in ports
CLK_IN => clk156_int,
-- Clock out ports
CLK0_OUT => gt0_drpclk_i,
CLK1_OUT => open,
CLK2_OUT => open,
CLK3_OUT => open,
-- Status and control signals
MMCM_RESET_IN => tied_to_ground_i,
MMCM_LOCKED_OUT => open
);

c) 現在の GT_USRCLK_SOURCE フィアルをコメントアウトし、それを次のものに置き換えます。


gt0_usrclk_source : GT_USRCLK_SOURCE
port map
(
Q1_CLK0_GTREFCLK_PAD_N_IN => Q1_CLK0_GTREFCLK_PAD_N_IN,
Q1_CLK0_GTREFCLK_PAD_P_IN => Q1_CLK0_GTREFCLK_PAD_P_IN,
Q1_CLK0_GTREFCLK_OUT => q1_clk0_refclk_i,

GT0_TXUSRCLK_OUT => gt0_txusrclk_i,
GT0_TXUSRCLK2_OUT => gt0_txusrclk2_i,
GT0_TXOUTCLK_IN => gt0_txoutclk_i,
GT0_RXUSRCLK_OUT => gt0_rxusrclk_i,
GT0_RXUSRCLK2_OUT => gt0_rxusrclk2_i,
GT0_RXOUTCLK_IN => gt0_rxoutclk_i,
DRPCLK_IN => tied_to_ground_i,
DRPCLK_OUT => open
);

2) example_design/gtx/gt_userclk_source.vhd で BUFR をコメントアウトします。

-- bufr_inst : BUFR
-- generic map
-- (
-- BUFR_DIVIDE => "2"
-- )
-- port map
-- (
-- I => q1_clk0_gtrefclk,
-- CE => tied_to_vcc_i,
-- CLR => tied_to_ground_i,
-- O => DRPCLK_OUT
-- );

3) example_design/gtx/clock_module.vhd で、BUFG をフィードバック パスに追加し、入力および出力のポートを MMCM の CLKFBOUT および CLKFBIN ポートに接続します。

signal clkfbout_bufg : std_logic;

....

CLKFBIN => clkfbout_bufg,

....

clkfb_bufg : BUFG
port map
(O => clkfbout_bufg,
I => clkfbout);

AR# 46053
作成日 01/30/2012
最終更新日 10/22/2014
ステータス アクティブ
タイプ 一般
IP
  • 10 Gigabit Ethernet Media Access Controller