문서 ID: 000076229 콘텐츠 형태: 문제 해결 마지막 검토일: 2016-07-25

Arria 10, Arria V GZ, and Stratix V PCI Express Designs using the Avalon-ST Interface that Acess the Transaction Layer Configuration Space Signals (tl_cfg_*) May Hang

환경

  • 인텔® Quartus® II 구독 에디션
  • PCI Express*
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    중요 문제

    설명

    The Transaction Layer Configuration Space Signals data (tl_cfg*) driven by the Hard IP for PCI Express are incorrectly sampled in the FPGA fabric. Consequently, a setup or hold time violation may occur. The Quartus Prime software does not report the violation because this multi-cycle path is not constrained. If a timing violation occurs, the system may hang.

    해결 방법

    For Arria 10 devices, use Quartus Prime 16.0.1 or later. The Transaction Layer Configuration Space Signals interface is held for eight coreclkout_hip cycles. Your Application Layer RTL must include code to sample this interface in the middle of the eight-cycle window. See the example RTL below:

    //define register//

    reg [3:0] cfg_addr_reg;

    reg [3:0] captured_cfg_addr_reg;

    reg [31:0] captured_cfg_data_reg;

    reg cfgctl_addr_change;

    reg cfgctl_addr_change2;

    reg cfgctl_addr_strobe;

    // detect the address transition

    always @(posedge pld_clk or posedge reset)

    begin

    if (reset == 1\'b1) begin

    cfg_addr_reg <= 3\'h0;

    cfgctl_addr_change <= 1\'h0;

    cfgctl_addr_change2 <= 1\'h0;

    cfgctl_addr_strobe <= 1\'h0;

    end else begin

    cfg_addr_reg[3:0] <= tl_cfg_int_add[3:0];

    // detect address change

    cfgctl_addr_change <= cfg_addr_reg[3:0] != tl_cfg_int_add[3:0];

    // delay two clock and use as strobe to sample the input 32-bit data

    cfgctl_addr_change2 <= cfgctl_addr_change;

    cfgctl_addr_strobe <= cfgctl_addr_change2;

    end

    end

    // captured cfg ctl addr/data bus with the strobe

    always @(posedge pld_clk)

    if(cfgctl_addr_strobe)

    captured_cfg_addr_reg[3:0] <= tl_cfg_int_add[3:0];

    captured_cfg_data_reg[31:0] <= tl_cfg_int_ctl[31:0];

    end

    For Arria 10 devices, you must add the following timing constraints in your Synposys Design Constraints (SDC) file.

    set_multicycle_path -setup -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:altpcie_a10_hip_pipen1b|wys|tl_cfg_add[*]}] 2

    set_multicycle_path -hold -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:altpcie_a10_hip_pipen1b|wys|tl_cfg_add[*]}] 2

    set_multicycle_path -setup -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:altpcie_a10_hip_pipen1b|wys|tl_cfg_ctl[*]}] 2

    set_multicycle_path -hold -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:altpcie_a10_hip_pipen1b|wys|tl_cfg_ctl[*]}] 2

    For Stratix V and Arria V GZ devices, you must add the following timing constraints in your Synposys Design Constraints (SDC) file.

    set_multicycle_path -setup -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:stratixv_hssi_gen3_pcie_hip|tl_cfg_add[*]}] 2

    set_multicycle_path -hold -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:stratixv_hssi_gen3_pcie_hip|tl_cfg_add[*]}] 2

    set_multicycle_path -setup -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:stratixv_hssi_gen3_pcie_hip|tl_cfg_ctl[*]}] 2

    set_multicycle_path -hold -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:stratixv_hssi_gen3_pcie_hip|tl_cfg_ctl[*]}] 2

    관련 제품

    이 문서는 다음 항목에 적용됩니다. 1 제품

    인텔® 프로그래밍 가능 장치

    이 페이지의 콘텐츠는 원본 영어 콘텐츠에 대한 사람 번역 및 컴퓨터 번역의 조합으로 완성되었습니다. 이 콘텐츠는 편의와 일반적인 정보 제공을 위해서만 제공되었으며, 완전하거나 정확한 것으로 간주되어선 안 됩니다. 이 페이지의 영어 버전과 번역 간 모순이 있는 경우, 영어 버전이 우선적으로 적용됩니다. 이 페이지의 영어 버전을 확인하십시오.