문서 ID: 000087027 콘텐츠 형태: 제품 정보 및 문서 마지막 검토일: 2017-11-15

Arria 10 PLL 참조 클럭에 대한 PLL 캐스케이딩 또는 비 전용 클럭 경로의 지터를 보상하려면 어떻게 합니까?

환경

  • 인텔® Quartus® Prime Pro Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    설명

    PLL 출력 또는 Arria® 10 설계에서 비 전용 클럭 핀에서 PLL 참조 클럭을 연결하는 경우 추가 지터가 도입됩니다. 이 지터는 설계에서 다운스트림 PLL의 출력 클럭에 100ps 클럭 불확실성 제약 조건을 추가하여 보상할 수 있습니다.

    시계 불확실성 제약조건을 적용하는 자세한 내용은 다음 문서를 참조하십시오.

    Arria® 10 PLL 캐스케이딩 또는 비 전용 클럭 경로 해결 지침

    Quartus Prime 소프트웨어 v17.1 이상으로 설계를 업그레이드할 때는 이전에 추가된 제약 조건을 수정해야 합니다.

    a) 기존 클럭 불확실성이 derive_clock_uncertainty set_clock_uncertainty -add -to - 0.1

    b) 기존 클럭 불확실성이 derive_clock_uncertainty 추가 "set_clock_uncertainty -add" v17.0: set_clock_uncertainty -to -에서 set_clock_uncertainty [expr 0.1] v17.1 이상: set_clock_uncertainty -에 -에서

    c) derive_clock_uncertainty "set_clock_uncertainty"(추가 없음)으로 재정의되는 경우 - 변경이 없으면 기존 제약 조건을 set_clock_uncertainty [expr 0.1]에서 -로 유지해야 합니다.

     

    영향을 받는 다운스트림 PLL이 10 PHYLite IOPLL Arria 경우, 클럭 불확실성 제약 조건을 적용하는 세부 사항은 다음 단계를 참조하십시오.

    Quartus Prime 소프트웨어 버전 17.0부터 "코어 PLL 참조 클럭 연결 사용"은 Arria 10 Altera PHYLite IP 매개변수 편집기에서 더 이상 보이지 않습니다. 권장되는 방법은 전용 클럭 핀을 사용하여 PHYLite IOPLL 참조 클럭에 연결하는 것입니다. 설계에서 이 기능을 사용해야 하는 경우 다음 지침을 주의 깊게 읽고 준수하십시오.

    "코어 PLL 참조 클럭 연결 사용"(Quartus Prime 소프트웨어 버전 17.0 이상)을 활성화하려면 quartus.ini 파일에 아래 INI를 추가하십시오.

    ip_altera_phylite_en_pll_core_ref_ck = 켜짐

    a2t_allow_cascaded_pll_in_cpa_compensation=on

    PLL 출력 또는 비 전용 클럭 핀에서 PLL 참조 클럭을 연결할 때 추가 지터가 도입됩니다.

    Arria 10 Altera PHYLite 버전 17.0 이전으로 구현된 설계의 경우, 설계에서 다운스트림 PLL의 출력 클럭에 100ps 클럭 불확실성 제약 조건을 추가하여 이 지터를 보상할 수 있습니다.

    Quartus Prime Software 버전 17.0 이상에 대한 PHYLite 생성 SDC 파일의 클럭 불확실성에 대한 다음 제약 조건을 추가합니다. Altera PHYLite IP를 재생성할 때마다 다음을 변경해야 합니다.

    1. 가변 이름 추가 지터에 100ps 값을 할당합니다.

    0.000 additional_jitter 설정

    # 먼저 참조 클럭이 이미 생성되었는지 확인합니다(예: 참조 클럭 공유)

    {$var(PLL_USE_CORE_REF_CLK) == "false"} {

    세트 ref_clock_exists [phy_altera_phylite_arch_nf_171_flagyzi_does_ref_clk_exist $pins(pll_ref_clock)]

    {$ref_clock_exists == 0 } {

    # 이것은 PLL이 코어의 다른 클럭을 파생하기 위해 사용하는 참조 클럭입니다.

    create_clock -period $ref_period -waveform [목록 0 $ref_half_period] $pins(pll_ref_clock) -add-name ${inst}_ref_clock

    }

    } 기타 {

    0.100 additional_jitter 설정

    }

    2. 쓰기 FIFO 클럭에 추가 클럭 불확실성 추가:

    i_wf_clock 0 설정

    foreach_in_collection wf_clock $write_fifo_clk_neg {

    세트 vco_clock_id [phy_altera_phylite_arch_nf_171_flagyzi_get_vco_clk_id $wf_clock var]

    {$vco_clock_id == -1} {

    post_message -type critical_warning "VCO 클럭을 찾지 못했습니다"

    } 기타 {

    설정 local_wf_clk_grp_${i_grp_idx}_${i_wf_clock} [ phy_altera_phylite_arch_nf_171_flagyzi_get_or_add_generated_clock \

    -target [get_node_info -name $wf_clock] \

    -name "${inst}_wf_clk_grp_${i_grp_idx}_${i_wf_clock}_neg" \

    -source [get_node_info -name $vco_clock_id] \

    -multiply_by 1 \

    -divide_by [expr $var(PLL_VCO_TO_MEM_CLK_FREQ_RATIO)] \

    -Phase 180]

    }

    incr i_wf_clock

    }

    #new 제약 조건:

    {$additional_jitter!= 0} {

    set_clock_uncertainty -to [get_clocks ${inst}_wf_clk_grp_*] -$additional_jitter 추가

    }

    3. 쓰기 경로에 클럭 불확실성 추가:

    {[llength $write_clocks]>0} {

    # 우리는 set_output_delay FLS JITTER를 포함했기 때문에 derive_clock_uncertainty 번호가 필요하지 않습니다.

    set_clock_uncertainty -to [get_clocks $write_clocks] [phy_altera_phylite_arch_nf_170_zul23qq_round_3dp [expr 0.5*($var(WR_SSO) $var(WR_JITTER_SCALED)) $additional_jitter]]

    }

    4. read_clocks 변경 없음

    {[llength $read_clocks]>0} {

    # set_input_delay FLS JITTER를 포함했기 때문에 derive_clock_uncertainty 번호가 필요하지 않습니다.

    set_clock_uncertainty -to [get_clocks $read_clocks] 0.0

    }

    5. c2p/p2c 전송에 클럭 불확실성 추가(phy_clk usr_clock)

    {$i_phy_clock > $same_tile_index} {

    주변 타일이 있는 C2P/P2C 번호 != CPA 타일입니다.

    # 이러한 전송의 경우 SDC는 클럭 불확실성 값을 명시적으로 재정의합니다.

    # 따라서 초과 제한 시 "-add" 옵션을 사용해서는 안됩니다.

    "" add_to_derived 설정

    c2p_su 설정 [expr {$p 2c_c2p_multi_tile_clock_uncertainty [lindex $periphery_overconstraints 0] [lindex $periphery_clock_Uncertainty 0]} additional_jitter]

    c2p_h 설정 [expr {$p 2c_c2p_multi_tile_clock_uncertainty [lindex $periphery_overconstraints 1] [lindex $periphery_clock_Uncertainty 1]} additional_jitter]

    p2c_su 설정 [expr {$p 2c_c2p_multi_tile_clock_uncertainty [lindex $periphery_overconstraints 2] [lindex $periphery_clock_Uncertainty 2]} additional_jitter]

    p2c_h 설정 [expr {$p 2c_c2p_multi_tile_clock_uncertainty [lindex $periphery_overconstraints 3] [lindex $periphery_clock_Uncertainty 3]} additional_jitter]

    } 기타 {

    주변 타일 == CPA 타일이 있는 C2P/P2C

    # 이러한 전송의 경우 인텔이 사용 중이기 때문에 -add 옵션을 사용하는 것이 안전합니다.

    기본 값에 대한 #derive_clock_uncertainty.

    "-add" add_to_derived 설정

    c2p_su 설정 [expr[lindex $periphery_overconstraints 0] [lindex $periphery_clock_Uncertainty 0] additional_jitter/2]

    c2p_h 설정 [expr[lindex $periphery_overconstraints 1] [lindex $periphery_clock_Uncertainty 1] additional_jitter/2]

    p2c_su 설정 [expr[lindex $periphery_overconstraints 2] [lindex $periphery_clock_Uncertainty 2] additional_jitter/2]

    p2c_h 설정 [expr [lindex $periphery_overconstraints 3] [lindex $periphery_clock_Uncertainty 3] additional_jitter/2]

    }

    6. 코어 전송 내에서 클럭 불확실성 추가(usr_clock/추가 코어 클럭 usr_clock/추가 코어 클럭)

    c2c_same_su 설정 [expr[lindex $core_overconstraints 0] [lindex $core_clock_Uncertainty 0] additional_jitter]

    c2c_same_h 설정 [expr [lindex $core_overconstraints 1] [lindex $core_clock_Uncertainty 1]]

    c2c_diff_su 설정 [expr[lindex $core_overconstraints 2] [lindex $core_clock_Uncertainty 2] additional_jitter]

    c2c_diff_h 설정 [expr [lindex $core_overconstraints 3] [lindex $core_clock_Uncertainty 3] additional_jitter]

    foreach src_core_clock_local $core_clocks_local {

    {$src_core_clock_local != ""} {

    foreach dst_core_clock_local $core_clocks_local {

    {$dst_core_clock_local != ""} {

    {$src_core_clock_local == $dst_core_clock_local} {

    동일한 클럭 네트워크 전송 수

    set_clock_uncertainty -에서 $src_core_clock_local -에서 $dst_core_clock_local -setup -add $c 2c_same_su

    set_clock_uncertainty -에서 $src_core_clock_local -에서 $dst_core_clock_local -hold -enable_same_physical_edge -$c 2c_same_h 추가

    } 기타 {

    다른 코어 클럭 네트워크 간 전송 수

    set_clock_uncertainty -에서 $src_core_clock_local -에서 $dst_core_clock_local -setup -add $c 2c_diff_su

    set_clock_uncertainty -에서 $src_core_clock_local -에서 $dst_core_clock_local -hold -$c 2c_diff_h 추가

    }

    }

    }

    }

    }

    7. user_created_clock 및 PHYLite 출력 클럭이 포함된 사용자 로직의 경우, 사용자는 사용자 sdc 파일의 해당 클럭 전송 경로에 100ps 클럭 불확실성을 추가해야 합니다.

    8. SDC를 보고하고 SDC 할당>Set 클럭 불확실성 보고서를 확인하여 영향을 받는 클럭 전송 경로에 추가 100ps가 추가되었는지 확인합니다.

    9. 설계를 재가동하거나 재컴퓨션하고 타이밍을 닫습니다.

    10. 생산에 들어가기 전에 설계가 제대로 작동하는지 확인하기 위해 엄격한 하드웨어 테스트를 수행하십시오.

    Quartus Prime 소프트웨어 v17.1 이상으로 디자인을 업그레이드할 때:

    a) IP 업그레이드 도구를 실행하여 Arria 10 Altera PHYLite IP를 v17.1로 업그레이드합니다.

    b) 생성된 PHYLite SDC 파일에는 코어 PLL 참조 클럭이 사용될 때 필요한 모든 클럭 불확실성이 추가됩니다.

    c) 이전에 user_created_clock 및 PHYLite 출력 클럭이 포함된 사용자 로직 경로에 추가된 추가 100ps 클럭 불확실성은 사용자 sdc 파일에 남아 있어야 합니다.

    d) 설계에 대한 전체 컴파일을 수행하고 타이밍을 닫습니다.

    관련 제품

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

    인텔® Arria® 10 FPGA 및 SoC FPGA

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