AR# 62296

7 Series/Virtex-7 FGPA Gen3 Integrated Block for PCI Express / AXI Bridge for PCI Express (Vivado 2014.1/2014.2/2014.3) - Gen1 としてコンフィギュレーションされたコアをインプリメントすると constant_clock および unconstrained_internal_endpoints がレポートされる

説明

対象となるツール バージョン : Vivado 2014.1、2014.2、および 2014.3

修正バージョンおよびその他の既知の問題 :
Virtex-7 FPGA Gen3 Integrated Block for PCI Express : (ザイリンクス アンサー 54645)
AXI Bridge for PCI Express : (ザイリンクス アンサー 54646)
7 Series Integrated Block for PCI Express : (ザイリンクス アンサー 54643)

7 Series/Virtex-7 FGPA Gen3 Integrated Block for PCI Express/ AXI Bridge for PCI Express コアのサンプル デザインを Vivado 2014.1、2014.2、および 2014.3 でインプリメントすると、check_timing で constant_clock および unconstrained_internal_endpoints が多数レポートされます。 

この問題は、コアを Gen1 としてコンフィギュレーションしている場合にのみ発生します。

この問題のためにデザインに制約されていないタイミング パスがある場合、PCIe デザインがリンク トレーニングされないか、指定のリンク幅にトレーニングされないなどの断続的なトレーニング問題が発生する可能性があります。

デザインのビット エラー レートが通常より高くなるという問題が発生することもあります。 

これらの制約されていないパスを含むデザインは、次に示す制約を XDC ファイルに追加し、デザインを再度配置配線して、プロセス、電圧、および温度の変動に対して正しく動作するようにする必要があります。



ソリューション

これは既知の問題であり、Vivado 2014.4 で修正される予定です。 

サンプル デザインには、Gen1 および Gen2 スピード用に正しいクロックを選択するため、BUFGCTRL により多重化された 2 つのクロックがあります。  

タイミング解析が正しく実行されるようにするには、BUFGCTRL 入力の選択ピン S0 ピンを 1、S1 ピンを 0 にする必要があります。 

これには、サンプル デザインの XDC ファイルに次の制約を追加します。

set_case_analysis 1 [get_pins {pcie3_7x_0_support_i/pipe_clock_i/pclk_i1_bufgctrl.pclk_i1/S0}]
set_case_analysis 0 [get_pins {pcie3_7x_0_support_i/pipe_clock_i/pclk_i1_bufgctrl.pclk_i1/S1}]

*pipe_clock.v ファイルでは、BUFGCTRL の S0 入力にインバーターがあります。 

    begin : pclk_i1_bufgctrl
    //---------- PCLK Mux ----------------------------------
    BUFGCTRL pclk_i1
    (
        //---------- Input ---------------------------------
        .CE0                        (1'd1),        
        .CE1                        (1'd1),       
        .I0                         (clk_125mhz),  
        .I1                         (clk_250mhz),  
        .IGNORE0                    (1'd0),       
        .IGNORE1                    (1'd0),       
        .S0                         (~pclk_sel),   
        .S1                         ( pclk_sel),   
        //---------- Output --------------------------------
        .O                          (pclk_1)
    );
    end

デザイン インプリメンテーションの最適化段階で、このインバーター (LUT1) が BUFGCTRL ピンに (S0) 挿入されます。 

これにより set_case_analysis 制約で意図されたタイミング解析に不一致が発生し、constant_clock および unconstrained_internal_endpoints が発生します。 

この問題を回避するには、次の作業を行って、この最適化を防ぎます。

  • set "(* dont_touch = "true" *)" on pclk_set in *pipe_clock.v as shown below:

           (* dont_touch = "true" *)    reg               pclk_sel = 1'd0;

  • また、LUT1 に DONT_TOUCH 制約を追加します。このためには、サンプル デザインの XDC ファイルに次の制約を追加します。
 

Virtex-7 FPGA Gen3 Integrated Block for PCI Express コアの場合 :


set_property DONT_TOUCH true [get_cells -of [get_nets -of [get_pins {pcie3_7x_0_support_i/pipe_clock_i/pclk_i1_bufgctrl.pclk_i1/S0}]]]


7 Series Integrated Block for PCI Express の場合 :

set_property DONT_TOUCH true [get_cells -of [get_nets -of [get_pins {pcie_7x_0_support_i/pipe_clock_i/pclk_i1_bufgctrl.pclk_i1/S0}]]]

AXI Bridge for PCI Express の場合 :

set_property DONT_TOUCH true [get_cells axpci0_i/U0/comp_axi_enhanced_pcie/comp_enhanced_core_top_wrap/axi_pcie_enhanced_core_top_i/pcie_7x_v2_0_2_inst/pcie_top_with_gt_top.gt_ges.gt_top_i/pipe_wrapper_i/pipe_clock_int.pipe_clock_i/pclk_i1_bufgctrl.pclk_i1_i_1]

注記 : 階層名が正しいことを確認してください。

階層は、使用しているコアのバージョン、コアがデザインのどこにインスタンシエートされているか、PCIe コアを生成したときに共有クロック オプションが使用されていたかによって異なります。

改訂履歴
2014/11/04 - 初版

AR# 62296
日付 11/10/2014
ステータス アクティブ
種類 デザイン アドバイザリ
ツール
IP