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 10 Gb 以太网 PCS/PMA (10GBASE-R) v2.2 - Kintex-7 FPGA 示例设计不能布局。

Description

在使用面向 Kintex-7 器件的 10Gb 以太网 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"). 为了让这个时钟网能够进行布线,时钟资源和所有负载应处于同一时钟域。这种情况可能是由于用户的约束条件或是设计的复杂性而导致的。正确地按照与域时钟的相对关系约束该组件,可能能够引导工具找到解决方案。为使用部分布线结果调试您的设计,请让映射/布局器完成执行(通过设置环境变量 XIL_PAR_DEBUG_IOCLKPLACER=1)。

解决方案

用于生成向下分频 DRPCLK 的 BUFR 必须用 MMCM 替换,并在输出端安排一个 BUFG。 

对示例设计必须进行下列修改:

对于 Verilog

1) 修改 example_design/<core_name>_block.v 文件以在 MMCM 中添加:

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 端口:

线路 clkfbout_bufg;

...

.CLKFBIN (clkfbout_bufg),

...

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

对于 VHDL

1) 修改 example_design/<core_name>_block.vhd 文件以在 MMCM 中添加:

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
);

b) 注释掉当前的 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 端口:

信号 clkfbout_bufg : std_logic;

....

CLKFBIN => clkfbout_bufg,

....

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

AR# 46053
创建日期 01/30/2012
Last Updated 10/22/2014
状态 Active
Type 综合文章
IP
  • 10 Gb 以太网媒体访问控制器