In der Quartus® Prime Pro Edition-Software sehen Sie möglicherweise, dass die PLL-Takte (Phase Locked Loop) nicht korrekt abgeleitet werden, wenn der PLL-Referenztakt über mehrere Haupttakte verfügt. Dies liegt daran, dass der Timing Analyzer nicht erkennen kann, welche der mehreren Haupttakte verwendet werden soll.
Möglicherweise werden die unten angezeigten Warnmeldungen im Zeitablaufanalysator angezeigt, wenn das Taktschema wie folgt aussieht:
Warning(332036): Clock: clk0 als potentieller Masterclock-Kandidat gefunden
Warning(332036): Clock: clk1 als potentieller Masterclock-Kandidat gefunden
Warning(332087): Die Master-Clock für diese Taktzuweisung konnte nicht abgeleitet werden. Clock: u0_pll450m|iopll_0_n_cnt_clk wurde nicht erstellt.
Warning(332036): Clock: clk0 als potentieller Masterclock-Kandidat gefunden
Warning(332036): Clock: clk1 als potentieller Masterclock-Kandidat gefunden
Warning(332087): Die Master-Clock für diese Taktzuweisung konnte nicht abgeleitet werden. Clock: u0_pll450m|iopll_0_m_cnt_clk wurde nicht erstellt.
Warning(332036): Clock: clk0 als potentieller Masterclock-Kandidat gefunden
Warning(332036): Clock: clk1 als potentieller Masterclock-Kandidat gefunden
Warning(332087): Die Master-Clock für diese Taktzuweisung konnte nicht abgeleitet werden. Clock: u0_pll450m|iopll_0_outclk0 wurde nicht erstellt.
Dies tritt nur bei Designs auf, die auf Stratix® 10 Geräte und Agilex-Geräte™ abzielen.
Um die PLL-Ausgangstakte korrekt einzuschränken, generieren Sie die Master-Takte manuell, geben Sie die Master-Clock für jeden PLL-Ausgangstakt an und fügen Sie Taktgruppen hinzu, um die PLL-Ausgangstakte von verschiedenen Referenztakten abzuschneiden.
Die folgenden Timing-Einschränkungen können für das obige Taktschema verwendet werden:
create_clock -name clk0 -Periode 100MHz [get_ports clk0]
create_clock -name clk1 -Periode 100MHz [get_ports clk1]
create_generated_clock -name {u0|iopll_0_m_cnt_clk} -source {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 12 -multiply_by 1 -duty_cycle 50.00 -master {clk0} { u0_pll450m|iopll_0|tennm_pll~mcntr_reg } -add
create_generated_clock -name {u0|iopll_0_n_cnt_clk} -source {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 1 -multiply_by 1 -duty_cycle 50.00 -master {clk0} { u0_pll450m|iopll_0|tennm_pll~ncntr_reg } -add
create_generated_clock -name {u0|iopll_0_outclk0} -source {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 3 -multiply_by 12 -duty_cycle 50.00 -master {clk0} { u0_pll450m|iopll_0|tennm_pll|outclk[1] } -add
create_generated_clock -name {u1|iopll_0_m_cnt_clk} -source {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 12 -multiply_by 1 -duty_cycle 50.00 -master {clk1} { u0_pll450m|iopll_0|tennm_pll~mcntr_reg } -add
create_generated_clock -name {u1|iopll_0_n_cnt_clk} -source {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 1 -multiply_by 1 -duty_cycle 50.00 -master {clk1} { u0_pll450m|iopll_0|tennm_pll~ncntr_reg } -add
create_generated_clock -name {u1|iopll_0_outclk0} -source {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 3 -multiply_by 12 -duty_cycle 50.00 -master {clk1} { u0_pll450m|iopll_0|tennm_pll|outclk[1] } -add
set_clock_groups -exclusive -group {u0|iopll_0_outclk0} -group {u1|iopll_0_outclk0}
Sie können den richtigen Knotennamen im Knotenfinder und die Teiler- und Multiplikatorparameter aus der PLL-Konfiguration abrufen.