Der Timing Analyzer betrachtet Taktteiler, Ripple-Takte oder Schaltkreise, die die Eigenschaften des eingehenden oder Host-Takts als generierte Taktfrequenzen ändern oder ändern. Sie sollten die Ausgabe dieser Schaltkreise als generierte Taktfrequenzen definieren. Diese Definition ermöglicht es dem Timing Analyzer, diese Taktfrequenzen zu analysieren und alle damit verbundenen Netzwerklatenzen zu berücksichtigen.
Sie können den Befehl create_generated_clock verwenden, um generierte Taktfrequenzen zu erstellen. Die folgende Liste zeigt den create_generated_clock Befehl und die verfügbaren Optionen:
create_generated_clock [-name <clock name>] -source <host pin> [-edges <edge list>] [-edge_shift <shift list>] [-divide_by <factor>] [-multiply_by <factor> >] [-duty_cycle <Percent>] [-add] [-invert] [-host_clock <clock>] [-phase <phase>] [-offset <offset>] <source-Objekte>
Tabelle 1 beschreibt die Optionen für den Befehl create_generated_clock.
Tabelle 1. Options Description für create_generated_clock Command
Optionsbeschreibung | |
---|---|
-name <clock name> | Name der generierten Taktfrequenz, z. B. clk_x2. Wenn Sie den Taktnamen nicht angeben, ist der Taktname mit dem ersten Knoten identisch, dem er zugewiesen wird. |
-source <host-Pin> | Die <host-Pin> gibt den Knoten im Design an, aus dem die Takteinstellungen abgeleitet werden. |
Liste der <-Edges> |edge_shift <Shift-Liste> | Die Option -edges gibt die neuen ansteigenden und herabfallenden Kanten in Bezug auf die auf- und abfallenden Kanten der Host-Taktfrequenz an. Die auf- und abfallenden Edges der Host-Uhr haben die Nummer 1.<n> beginnend mit dem ersten ansteigenden Edge, zum Beispiel Edge 1. Der erste herabfallende Rand danach ist Edge Nummer 2, die nächste ansteigende Edge-Nummer 3 usw. Die <liste> muss sich in einer höheren Reihenfolge befinden. Der gleiche Rand kann für zwei Einträge verwendet werden, um auf einen Taktstrom hinzuweisen, der vom Arbeitszyklus der ursprünglichen Wellenform unabhängig ist. edge_shift gibt die Verschiebung für jeden Rand in der Liste der <Edge-> an. Die Option -invert kann verwendet werden, um den Takt nach der Anwendung der -edges und -edge_shifts umzukehren. |
-divide_by <faktor>| -multiply_by<faktor> | Die divide_by- und multiply_by Faktoren basieren auf dem ersten ansteigenden Rand der Taktfrequenz und verlängern oder konferenten die Wellenform um die angegebenen Faktoren. Beispielsweise ist ein -divide_by 2 äquivalent zu -edges {1 3 5}. Für multiplizierte Taktfrequenzen kann auch der Arbeitszyklus angegeben werden. Der Timing Analyzer unterstützt die Angabe von Multiplikator- und Dividationsfaktoren gleichzeitig. |
-duty_cycle<percent> | Gibt den Arbeitszyklus des generierten Taktes an. Der Arbeitszyklus wird zuletzt angewendet. |
-Hinzufügen | Ermöglicht es Ihnen, mehr als eine Taktfrequenz auf demselben Pin anzugeben. |
-invertieren | Die Inversion wird beim Ausgabe des Takts angewendet, nachdem alle anderen Modifizierungen vorgenommen wurden, mit Ausnahme des Arbeitszyklus. |
-host_clock<Takt> | host_clock wird verwendet, um die Taktfrequenz anzugeben, wenn mehrere Takte an der Host-Pin vorhanden sind. |
-phase<phase> | Gibt die Phase des generierten Taktes an. |
-offset<offset> | Gibt den Offset des generierten Taktes an. |
objekte <sourcen> | Gibt den/die Port(en) oder Pin(s) an, auf den/die die Zuweisung zutrifft. |
Die Quellenlatenz basiert auf Takt-Netzwerkverzögerungen vom Host-Takt (nicht unbedingt der Host-Pin). Sie können den Befehl set_clock_latency -source verwenden, um die Quellenlatenz zu überschreiben.
Abbildung 1 zeigt Wellenformen für die folgenden SDC-Befehle, die einen invertierten generierten Takt basierend auf einer 10-ns-Taktfrequenz erstellen.
create_clock -Zeitraum 10 [get_ports clk] create_generated_clock -divide_by 1 -invert -source [get_registers clk] \ [get_registers Gen|clkreg]
Abbildung 2 zeigt Wellenformen für die folgenden SDC-Befehle, die den generierten Takt mithilfe der Optionen -edges und -edge_shift ändern.
create_clock-Zeitraum 10 -Wellenform { 0 5 } [get_ports clk] # Erstellt eine Divide-by-2-Takt-create_generated_clock-Quelle [get_ports clk] -edges { 1 3 5 } \ [get_registers clkdivA|clkreg] # Erstellt eine Teilung nach 2 Takt, unabhängig vom Arbeitszyklus des Host-Takts, jetzt 50 %) create_generated_clock -source [get_ports clk] -edges { 1 1 5 } -edge_shift 0 5 0 } \ [get_registers clkdivB|clkreg]
Abbildung 3 zeigt Wafeforms für die folgenden SDC-Befehle, die den Effekt der Option -multiply auf den generierten Takt demonstrieren.
create_clock-Zeitraum 10 -Wellenform { 0 5 } [get_ports clk] # Erstellt eine Multiplikator-mit-2-Takt-create_generated_clock-Quelle [get_ports clk] -multiply_by 2 \ [get_registers clkmperformance|clkreg]