Identyfikator artykułu: 000087027 Typ materiałów: Informacje o produkcie i dokumentacja Ostatnia zmiana: 15-11-2017

Jak zrekompensować zakłócenia cascading PLL lub nie dedykowaną ścieżkę zegara dla zegara referencyjnego Arria 10 PLL?

Środowisko

  • Intel® Quartus® Prime Pro Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Opis

    Jeśli łączysz zegar referencyjny PLL z wyjścia PLL lub niededykowanym pinem zegarowym w projekcie Arria® 10, wejdą dodatkowe zakłócenia. Ten błąd można zrekompensować poprzez dodanie ograniczenia niepewności zegara 100ps przy zegarach wyjściowych niższego obiegu PLL w projekcie.

    Szczegółowe informacje dotyczące stosowania ograniczeń niepewności zegara można znaleźć w poniższym dokumencie.

    Cascading Arria®10 PLL lub nie dedykowane wskazówki dotyczące obejścia ścieżki zegarowej 

    W przypadku aktualizacji projektu do oprogramowania Quartus® Prime w wersji 17.1 lub nowszej, należy zmienić wcześniej dodane ograniczenia:

    a) jeśli istniejącą niepewnością zegara jest jedynie derive_clock_uncertainty set_clock_uncertainty —add -to —z 0.1

    b) jeśli istniejąca niepewności zegara wynika z derive_clock_uncertainty dodatkowego "set_clock_uncertainty -add" w wersji 17.0: set_clock_uncertainty -add -to -from > [expr 0.1] w wersji 17.1 lub nowszej: set_clock_uncertainty -add -to -from

    c) jeśli derive_clock_uncertainty jest przeliczany przez "set_clock_uncertainty" (nie -add) — bez zmian, należy zachować istniejące ograniczenie set_clock_uncertainty — do —od [expr 0.1]

     

    Jeśli pll, którego dotyczy problem, to Arria 10 IOPLL PHYLite, zapoznaj się z następującymi krokami, aby uzyskać szczegółowe informacje dotyczące stosowania ograniczeń niepewności zegara.

    Począwszy od oprogramowania Quartus® Prime w wersji 17.0, "Użyj rdzenia połączenia zegara PLL" nie jest już widoczne na edytorze parametrów Arria 10 Altera PHYLite IP. Zalecanym sposobem jest wykorzystanie dedykowanego pinu zegara do podłączenia go do zegara referencyjnego PHYLite IOPLL. Jeśli projekt wymaga korzystania z tej funkcji, przeczytaj uważnie poniższe wytyczne i przestrzegaj ich.

    W celu umożliwienia "korzystania z rdzenia PLL referencyjnego połączenia zegara" (oprogramowanie Quartus Prime wersji 17.0 i nowszych), dodaj poniższą instrukcję INI w pliku quartus.ini.

    ip_altera_phylite_en_pll_core_ref_ck = wł.

    a2t_allow_cascaded_pll_in_cpa_compensation=wł.

    Przy podłączeniu zegara referencyjnego PLL z wyjścia PLL lub niededykwanego pinu zegara wprowadzone zostaną dodatkowe zakłócenia.

    W przypadku projektowania z Arria 10 Altera PHYLite w wersji 17.0 i wcześniejszej, ten błąd można zrekompensować poprzez dodanie ograniczenia niepewności zegara 100 s na zegarach wyjściowych niższego obiegu PLL w projekcie.

    Dodaj następujące ograniczenia związane z niepewnością zegara w pliku SDC wygenerowanym przez PHYLite dla oprogramowania Quartus Prime w wersji 17.0 i wcześniejszej. Za każdym razem, gdy zregenerujesz Altera PHYLite IP, należy wprowadzić następujące zmiany.

    1. Przypisz wartość 100ps zmiennej nazwie dodatkowe zakłócenia.

    zestaw additional_jitter 0,000

    # Najpierw sprawdź, czy zegar referencyjny został już utworzony (tj. udostępnianie zegara referencyjnego)

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

    zestaw ref_clock_exists [ phy_altera_phylite_arch_nf_171_flagyzi_does_ref_clk_exist $pins(pll_ref_clock)]

    jeśli { $ref_clock_exists == 0 } {

    # To jest zegar referencyjny używany przez PLL do uzyskania jakiegokolwiek innego zegara w rdzeniu.

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

    }

    } inaczej {

    zestaw additional_jitter 0,100

    }

    2. Dodatkowa niepewności zegara na zegarze FIFO zapisu:

    zestaw i_wf_clock 0

    foreach_in_collection wf_clock $write_fifo_clk_kod_koderim {

    ustawienie vco_clock_id [phy_altera_phylite_arch_nf_171_flagyzi_get_vco_clk_id $wf_clock var]

    jeśli {$vco_clock_id == -1} {

    post_message typu critical_warning "nie udało się znaleźć zegara VCO"

    } inaczej {

    ustawiona 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] \

    —nazwa "${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)] \

    -faza 180 ]

    }

    i_wf_clock incr

    }

    ograniczenie #new:

    jeśli {$additional_jitter != 0} {

    set_clock_uncertainty —do [get_clocks ${inst}_wf_clk_grp_*] — dodaj $additional_jitter

    }

    3. Dodatkowa niepewności zegara na ścieżce zapisu:

    if {[llength $write_clocks]>0} {

    # Nie potrzebujemy numerów derive_clock_uncertainty, ponieważ w set_output_delay uwzględniliśmy JITTER FLS.

    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. Brak zmian w read_clocks

    if {[llength $read_clocks]>0} {

    # Nie potrzebujemy numerów derive_clock_uncertainty, ponieważ uwzględniliśmy JITTER FLS w set_input_delay

    set_clock_uncertainty -to [get_clocks $read_clocks] 0.0

    }

    5. Dodatkowa niepewności zegara przy transferach c2p/p2c (phy_clk usr_clock)

    if {$i_phy_clock > $same_tile_index} {

    # C2P/P2C, gdzie cewka perisztowego != cewka CPA.

    # W przypadku tych transferów kontroler SDC wyraźnie zastępuje wartości niepewności zegara.

    #Dlatego też podczas nadmiernego szkolenia nie możemy skorzystać z opcji "-add".

    ustawiona add_to_derived ""

    zestaw c2p_su [expr {$p 2c_c2p_multi_tile_clock_uncertainty [lindex $periphery_overconstraints 0] [lindex $periphery_clock_uncertainty 0]} additional_jitter]

    ustawiona c2p_h [expr {$p 2c_c2p_multi_tile_clock_uncertainty [lindex $periphery_overconstraints 1] [lindex $periphery_clock_uncertainty 1]} additional_jitter]

    ustawiona p2c_su [expr {$p 2c_c2p_multi_tile_clock_uncertainty [lindex $periphery_overconstraints 2] [lindex $periphery_clock_uncertainty 2]} additional_jitter]

    ustawiona p2c_h [expr {$p 2c_c2p_multi_tile_clock_uncertainty [lindex $periphery_overconstraints 3] [lindex $periphery_clock_uncertainty 3]} additional_jitter]

    } inaczej {

    # C2P/P2C, gdzie cewka peryskologii == cewka CPA

    # W przypadku tych transferów bezpiecznie jest korzystać z opcji -add, ponieważ na nas polegamy

    # derive_clock_uncertainty dla wartości podstawowej.

    zestaw add_to_derived "-add"

    zestaw c2p_su [expr [lindex $periphery_overconstraints 0] [lindex $periphery_clock_uncertainty 0] additional_jitter/2]

    zestaw c2p_h [expr [lindex $periphery_overconstraints 1] [lindex $periphery_clock_uncertainty 1] additional_jitter/2]

    zestaw p2c_su [expr [lindex $periphery_overconstraints 2] [lindex $periphery_clock_uncertainty 2] additional_jitter/2]

    zestaw p2c_h [expr [lindex $periphery_overconstraints 3] [lindex $periphery_clock_uncertainty 3] additional_jitter/2]

    }

    6. Dodatkowa niepewności zegara podczas transferu rdzenia (zegar usr_clock/dodatkowy rdzeń < >usr_clock/zegar dodatkowy rdzeń)

    zestaw c2c_same_su [expr [lindex $core_overconstraints 0] [lindex $core_clock_uncertainty 0] additional_jitter]

    zestaw c2c_same_h [expr [lindex $core_overconstraints 1] [lindex $core_clock_uncertainty 1]]

    zestaw c2c_diff_su [expr [lindex $core_overconstraints 2] [lindex $core_clock_uncertainty 2] additional_jitter]

    zestaw c2c_diff_h [expr [lindex $core_overconstraints 3] [lindex $core_clock_uncertainty 3] additional_jitter]

    foreach src_core_clock_local $core_clocks_local {

    jeśli {$src_core_clock_local != ""} {

    foreach dst_core_clock_local $core_clocks_local {

    jeśli {$dst_core_clock_local != ""} {

    jeśli {$src_core_clock_local == $dst_core_clock_local} {

    # Te same transfery sieci zegara

    set_clock_uncertainty —od $src_core_clock_local -do $dst_core_clock_local -setup -add $c 2c_same_su

    set_clock_uncertainty —od $src_core_clock_local -do $dst_core_clock_local -hold -enable_same_physical_edge -add $c 2c_same_h

    } inaczej {

    # Transfery między różnymi sieciami zegara rdzenia

    set_clock_uncertainty —od $src_core_clock_local -do $dst_core_clock_local -setup -add $c 2c_diff_su

    set_clock_uncertainty —od $src_core_clock_local -do $dst_core_clock_local -hold -add $c 2c_diff_h

    }

    }

    }

    }

    }

    7. W przypadku logiki użytkownika obejmującej zegar wyjściowy user_created_clock i PHYLite użytkownik będzie musiał dodać dodatkową niepewności zegara 100/s na tej ścieżce transferu zegara w pliku sdc użytkownika.

    8. Zgłoś SDC i sprawdź cesje SDC>Set Clock Uncertainty, upewnij się, że dodatkowe 100 p/s jest dodane do ścieżek transferu zegara, których dotyczy ten problem

    9. Przeprojektuj lub przekompiluj projekt i zapewnij zamknięcie timingów

    10. Przed rozpoczęciem produkcji wykonaj rygorystyczne testy sprzętowe, aby upewnić się, że projekt działa prawidłowo.

    Przy modernizacji projektu do oprogramowania Quartus® Prime w wersji 17.1 lub nowszej:

    a) Uruchomienie narzędzia IP Upgrade Tool do aktualizacji Arria 10 Altera PHYLite IP do wersji 17.1

    b) Wygenerowany plik PHYLite SDC będzie miał całą niezbędną niepewności zegara dodaną podczas korzystania z rdzenia zegara referencyjnego PLL.

    c) Dodatkowa niepewności zegara 100ps dodana dla ścieżki logicznej użytkownika, która obejmuje zegar wyjściowy user_created_clock i PHYLite, wcześniej będzie wymagać pozostanie w pliku sdc użytkownika.

    d) Wykonaj pełną kompilację na projekcie i dopilnuj zamknięcia timingów.

    Podobne produkty

    Ten artykuł dotyczy 1 prod.

    FPGA Intel® Arria® 10 i SoC

    Zastrzeżenie

    1

    Publikowanie treści i wykorzystanie zawartości tej witryny podlega Regulaminowi witryny Intel.com.

    Materiały zawarte na tej stronie są tłumaczeniem z języka angielskiego, wykonanym częściowo przez człowieka, a częściowo automatycznie. Materiały te są udostępnione dla Twojej wygody i należy je traktować jedynie jako ogólne źródło informacji. Nie ma jednak gwarancji, że są one kompletne bądź poprawne. Jeśli istnieje jakakolwiek rozbieżność między wersją angielską tej strony a jej tłumaczeniem, wersja angielska jest wersją obowiązującą i ma rozstrzygające znaczenie. Wyświetl anglojęzyczną wersję tej strony.