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.