Artikel-ID: 000087027 Inhaltstyp: Produktinformationen und Dokumente Letzte Überprüfung: 15.11.2017

Wie kann ich die Schwankungen des PLL-Kaskadierungs- oder nicht dedizierten Taktwegs für Arria 10 PLL-Referenztakt ausgleichen?

Umgebung

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

    Wenn Sie den PLL-Referenztakt an einer PLL-Ausgabe oder einem nicht dedizierten Taktstift in Ihrem Arria®-10-Design anschließen, werden zusätzliche Schwankungen eingeführt. Dieses Jitter kann kompensiert werden, indem eine 100ps Taktunsicherheitsbeschränkung bei den Ausgabe-Takten der Stromleitpaste (PlL) im Design hinzugefügt wird.

    Im folgenden Dokument finden Sie nähere Angaben zur Anwendung der Beschränkung der Taktunsicherheit.

    Leitfaden für die Problemumgehung von Arria® 10 PLL mit kaskadiertem oder nicht dediziertem Taktpfad

    Beim Upgrade des Designs auf Quartus Prime Software v17.1 oder neuer müssen die zuvor hinzugefügten Einschränkungen überarbeitet werden:

    a) wenn die bestehende Taktunsicherheit nur von derive_clock_uncertainty set_clock_uncertainty -add-to- -from 0,1

    b) wenn die bestehende Taktunsicherheit von derive_clock_uncertainty zusätzlichen "set_clock_uncertainty -add" v17.0 kommt: set_clock_uncertainty -add -to -from expr 0.1] v17.1 oder neuer: set_clock_uncertainty -add -to -from

    c) wenn derive_clock_uncertainty durch "set_clock_uncertainty" (kein -add) überschrieben wird – Keine Änderung, muss die bestehende Einschränkung set_clock_uncertainty -to -from [expr 0.1]

     

    Wenn die betroffene Spion-PLL Arria 10 PHYLite IOPLL ist, lesen Sie die folgenden Schritte, um die Einschränkung der Taktunsicherheit anzuwenden.

    Ab Version 17.0 der Quartus Prime Software ist die "Core PLL Referenz-Taktverbindung verwenden" im Arria 10 Altera PHYLite IP-Parametereditor nicht mehr sichtbar. Die empfohlene Art ist die Verwendung eines dedizierten Taktstifts, um ihn mit dem PHYLite IOPLL-Referenztakt zu verbinden. Wenn Ihr Design diese Funktion verwenden muss, lesen Sie bitte die folgenden Richtlinien sorgfältig durch und befolgen sie.

    Fügen Sie zur Aktivierung der "Core PLL Referenz-Taktverbindung" (Quartus Prime Software Version 17.0 und neuer) bitte die unten stehende INI in der quartus.ini-Datei hinzu.

    ip_altera_phylite_en_pll_core_ref_ck = ein

    a2t_allow_cascaded_pll_in_cpa_compensation=ein

    Wenn Sie den PLL-Referenztakt an einer PLL-Ausgabe oder einem nicht dedizierten Taktstift anschließen, werden zusätzliche Schwankungen eingeführt.

    Für das mit Arria 10 Altera PHYLite Version 17.0 und zuvor implementierte Design kann dieses Schwankungen durch Hinzufügen der 100-ps-Taktunsicherheitsbeschränkung bei den Ausgabe-Takten der Flussleitpaste PLL im Design kompensiert werden.

    Fügen Sie die folgenden Einschränkungen für die Taktunsicherheit in der von PHYLite generierten SDC-Datei für die Quartus Prime Software Version 17.0 und früher hinzu. Sie müssen die folgenden Änderungen jedes Mal vornehmen, wenn Sie die Altera PHYLite IP erneut erstellen.

    1. Weisen Sie dem Variablennamen zusätzliche Schwankungen dem Wert 100ps zu.

    additional_jitter 0,000 festlegen

    Nr. Zuerst feststellen, ob ein Referenz-Takt bereits erstellt wurde (z. B. Referenz-Taktfreigabe)

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

    festlegen ref_clock_exists [ phy_altera_phylite_arch_nf_171_flagyzi_does_ref_clk_exist $pins(pll_ref_clock)]

    wenn { $ref_clock_exists == 0 } {

    # Dies ist der Referenz-Takt, der von der PLL verwendet wird, um einen anderen Takt im Kern abzuleiten

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

    }

    } else {

    additional_jitter 0.100 einstellen

    }

    2. Fügen Sie zusätzliche Taktunsicherheit für die FIFO-Schreib-Taktfrequenz hinzu:

    i_wf_clock 0 festlegen

    foreach_in_collection wf_clock $write_fifo_clk_neg {

    setzen sie vco_clock_id [phy_altera_phylite_arch_nf_171_flagyzi_get_vco_clk_id $wf_clock var]

    wenn {$vco_clock_id == -1} {

    post_message critical_warning "VCO-Takt konnte nicht gefunden werden"

    } else {

    setzen 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 [$var(PLL_VCO_TO_MEM_CLK_FREQ_RATIO)] \

    -Phase 180 ]

    }

    incr i_wf_clock

    }

    #new-Beschränkung:

    wenn {$additional_jitter != 0} {

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

    }

    3. Fügen Sie zusätzliche Taktunsicherheit auf dem Schreibpfad hinzu:

    wenn {[llength $write_clocks]>0} {

    Anzahl Wir benötigen keine derive_clock_uncertainty Nummern, da wir FLS JITTER in set_output_delay

    set_clock_uncertainty [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. Keine Änderungen am read_clocks

    wenn {[llength $read_clocks]>0} {

    Anzahl Wir benötigen keine derive_clock_uncertainty Nummern, da wir FLS JITTER in set_input_delay

    set_clock_uncertainty -to [get_clocks $read_clocks] 0,0

    }

    5. Fügen Sie zusätzliche Taktunsicherheit bei c2p/p2c-Übertragungen hinzu (phy_clk usr_clock)

    wenn {$i_phy_clock > $same_tile_index} {

    Anzahl C2P/P2C, wobei die Periphery-Kachel != CPA-Kachel ist.

    # Für diese Übertragungen überschreibt die SDC explizit die Taktunsicherheitswerte.

    Anzahl Daher dürfen wir bei überkonstraining die Option "-add" nicht verwenden.

    legen Sie add_to_derived "" fest

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

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

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

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

    } else {

    Anzahl C2P/P2C, wobei die Peripheriekachel == CPA-Kachel

    Anzahl für diese Übertragungen ist es sicher, die Option -add zu verwenden, da wir uns auf

    Anzahl derive_clock_uncertainty für den Basiswert.

    legen Sie add_to_derived "-add" fest

    set c2p_su [expr [$periphery_overconstraints 0] [$periphery_clock_uncertainty 0] additional_jitter/2]

    set c2p_h [expr [$periphery_overconstraints 1] [$periphery_clock_uncertainty 1] additional_jitter/2]

    set p2c_su [expr [$periphery_overconstraints 2] [$periphery_clock_uncertainty 2] additional_jitter/2]

    set p2c_h [expr [$periphery_overconstraints 3] [$periphery_clock_uncertainty 3] additional_jitter/2]

    }

    6. Fügen Sie zusätzliche Taktunsicherheit innerhalb der Kernübertragung hinzu (usr_clock/zusätzlicher Kern-Takt usr_clock/zusätzlicher Kerntakt)

    set c2c_same_su [expr [$core_overconstraints 0] [$core_clock_uncertainty 0] additional_jitter]

    set c2c_same_h [expr [$core_overconstraints 1] [$core_clock_uncertainty 1]]

    set c2c_diff_su [expr [$core_overconstraints 2] [$core_clock_uncertainty 2] additional_jitter]

    set c2c_diff_h [expr [$core_overconstraints 3] [$core_clock_uncertainty 3] additional_jitter]

    foreach src_core_clock_local $core_clocks_local {

    wenn {$src_core_clock_local != ""} {

    foreach dst_core_clock_local $core_clocks_local {

    wenn {$dst_core_clock_local != ""} {

    wenn {$src_core_clock_local == $dst_core_clock_local} {

    Anzahl der gleichen Taktfrequenz für Netzwerkübertragungen

    set_clock_uncertainty -from $src_core_clock_local -to $dst_core_clock_local -setup -add $c 2c_same_su

    set_clock_uncertainty -from $src_core_clock_local -to $dst_core_clock_local -hold -enable_same_physical_edge -add $c 2c_same_h

    } else {

    Anzahl der Übertragungen zwischen verschiedenen Kerntaktnetzwerken

    set_clock_uncertainty -from $src_core_clock_local -to $dst_core_clock_local -setup -add $c 2c_diff_su

    set_clock_uncertainty -from $src_core_clock_local -to $dst_core_clock_local -hold -add $c 2c_diff_h

    }

    }

    }

    }

    }

    7. Für die Benutzerlogik, die user_created_clock und PHYLite-Ausgabetakt beinhaltet, muss der Benutzer die zusätzliche 100ps-Taktunsicherheit auf diesem Taktübertragungspfad in der Benutzer-SDC-Datei hinzufügen.

    8. Melden Sie die SDC und überprüfen Sie den Bericht SDC Assignments>Set Clock Uncertainty, stellen Sie sicher, dass die zusätzlichen 100ps in die betroffenen Taktübertragungspfade hinzugefügt werden.

    9. Die Betriebszeit oder die Erneute Kompilierung des Designs sowie die Sicherstellung des Timing-Abschlusses

    10. Strenge Hardwaretests durchführen, um sicherzustellen, dass das Design ordnungsgemäß funktioniert, bevor es in die Produktion geht

    Beim Upgrade des Designs auf Quartus Prime Software v17.1 oder neuer:

    a) Starten Sie das IP-Upgrade-Tool, um das Arria 10 Altera PHYLite IP auf v17.1 zu aktualisieren.

    b) Die generierte PHYLite SDC-Datei verfügt über alle notwendige Taktunsicherheit, die hinzugefügt wird, wenn der Kern-PLL-Referenztakt verwendet wird.

    c) Die zusätzliche 100ps Taktunsicherheit, die für den Benutzerlogikpfad hinzugefügt wird, die user_created_clock und PHYLite-Ausgabetakt beinhaltet, muss zuvor in der Benutzer-SDC-Datei bleiben.

    d) Führen Sie die vollständige Kompilierung des Designs durch und stellen Sie sicher, dass der Zeitablauf geschlossen wird.

    Zugehörige Produkte

    Dieser Artikel bezieht sich auf 1 Produkte

    Intel® Arria® 10 FPGAs und SoC FPGAs

    Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.