Der Weg zum TCL-Lernen (5) (Vivado-Zeitbeschränkungen)

1. Haupttaktbeschränkungen

  Der Master-Takt ist normalerweise der Platinentakt außerhalb des FPGA-Geräts oder das synchrone Wiederherstellungstaktsignal der Ausgangsdaten des Hochgeschwindigkeits-Transceivers usw. des FPGA. Die folgende Grammatik muss jedem bekannt sein. Diese Anweisung wird verwendet, um den Namen, die Periode, den Arbeitszyklus und die entsprechenden physischen Pins der Hauptuhr einzuschränken.

create_clock -name <clock_name> -periood <period> -waveform {
    
    <rise_time> <fall_time>} [get_ports <port_name>]

  In einem Design können uneingeschränkte Uhren über den Clock Network Report und den Clock Acknowledgement Report angezeigt werden. Geben Sie nach dem Öffnen des Synthese- und Implementierungsdesigns die folgenden Befehle ein:

report_clock_networks
check_timing

  Um das Ausgangstaktnetzwerk des Hochgeschwindigkeitssenders (GT) als Haupttakt einzuschränken, lautet der Befehl wie folgt:

creat_clock -name rxclk -period 6.667 [get_nets gt0/RXOUTCLK]

  Wenn für den Ausgangstakt-Pin einiger Hardware-Grundelemente keine starke kausale Korrelation mit dem Eingangstakt besteht, kann der Ausgangs-Pin dieses Hardware-Grundelements auch als Taktquelle für Master-Taktbeschränkungen verwendet werden.
  Für Differenztakte müssen nur die Haupttaktbeschränkungen auf den positiven Eingangsanschluss (sys_clk_p) des Differenzpuffers angewendet werden. Wenn die positiven und negativen Anschlüsse gleichzeitig eingeschränkt werden, werden irreale CDC-Pfade (Clock Domain Crossing) generiert.
  Für MMCM und PLL generiert das System automatisch die entsprechenden Einschränkungsdateien, es sind keine manuellen Einschränkungen erforderlich.
  In einigen Zeitpfaden, wie z. B. Datensignalen an einigen Pins, ist der Synchronisationstakt nur im externen Chip und nicht im FPGA-Gerät vorhanden. In diesem Fall muss für die Anforderungen der Timing-Analyse auch eine Uhr definiert werden, um das externe Taktsignal des Timing-Daten-Pins zu beschreiben. Diese Uhr ist die virtuelle Uhr. Für virtuelle Taktbeschränkungen sind keine Pins erforderlich.

create_clock -name clk_virt -period 10

2. Einschränkungen der Uhreigenschaften

  Es gibt zwei Einschränkungen für den Taktjitter: Set_input_jitter kann nur den Haupttakt einschränken, und set_system_jitter definiert den Systemjitter.

set_input_jitter [get_clocks <clock_name>] <jitter_in_ns>
set_system_jitter <clock_name> <jitter_in_ns>

  Alle Faktoren, die die periodische Abweichung der Uhr beeinflussen können, mit Ausnahme des Taktjitters, können mit dem Befehl set_clock_uncertainty definiert werden. Wird auch als Benutzerunsicherheit bezeichnet.

set_clock_uncertainty -<setup/hold/空出来表示两者都有> -from [get_clocks <clock0_name>] -to [get_clocks <clock1_name>] <uncertainty_value> 

  Für Taktverzögerungsbeschränkungen gibt es die folgenden Befehle:

set_clock_latency [-clock <args>] [-rise] [-fall] [-min/max/空出来表示两者都有] [-source] <latency> <objects>

3. Abgeleitete Taktbeschränkungen

  Abgeleitete Takte beziehen sich hauptsächlich auf Taktsignale, die durch Teilen, Multiplizieren oder Phasenverschieben des vorhandenen Haupttakts erzeugt werden, z. B. Taktsignale, die von MMCM oder einer Designlogik gesteuert werden. Im Allgemeinen können die Timing-Tools von Vivado automatisch die korrekte abgeleitete Uhr generieren. Wenn der Designer der Meinung ist, dass die automatisch generierte abgeleitete Uhr falsch ist, kann er die abgeleitete Uhr auch manuell einschränken.

create_generated_clock -name <generated_clock_name> -source <master_clock_source_pin_or_port> -multiply_by <mult_factor>\
                       -divide_by <div_factor> <pin_or_port>

4.IO-Schnittstellenbeschränkungen

  Zu den Zeitbeschränkungen der E/A-Schnittstelle gehören hauptsächlich set_input_delay und set_output_delay. Die Eingabe- und Ausgabebeschränkungen sind ähnlich. Die Hauptbeschränkungen sind wie folgt:

set_input_delay -clock<args> -reference_pin<args> -clock_fall -rise -max -add_delay <delay> <objects>
#下面对命令进行解释
-clock 用于指定约束引脚的同步时钟(源时钟),其后的<args>即需要指定的同步时钟名称,这个时钟可以是设计中事先定义的主时钟或虚拟时钟。
-reference_pin 用于指定延时值<delay>的参考时钟,其后的<args>即需要指定的参考时钟名称。该项是可选项,不指定该选项,则指定延时值的参考时钟就是-clock指定的同步时钟。
-clock_fall 指定输入延时约束取值相对于同步时钟的下降沿。若不指定,默认为-clock_rise
-rise 指定约束信号相对时钟的边沿关系是上升沿,也可以用-fall指定为下降沿
-max 设定最大延时值,也可以是-min最小值。若不指定,则是最大最小值都包括
-add_delay 用于多组参考组合的输入引脚约束
<delay> 设定延时值
<objects> 指定约束的目标输入引脚名称

  Die Berechnung der Eingangsverzögerung ist wie folgt:

set_input_delay(max)= -Tc2j_pcb(min) + Tco(max) + Td_pcb(max)
set_input_delay(min)= -Tc2j_pcb(min) + Tco(max) + Td_pcb(min)
其中c2j_pcb代表时钟源在pcb上的走线延时,d_pcb为数据在pcb上的走线延时,co为外部芯片数据引脚输出数据所经过的延时,查芯片手册可以获得。
set_output_delay(max)= Td_pcb(max) - Tc2j_pcb(min) + Tsu
set_output_delay(min)= Td_pcb(min) - Tc2j_pcb(min) - Th 

5. Einschränkungen für Uhrenausnahmen

  Gründe für zeitliche Ausnahmeeinschränkungen: Die Standardmethode zur Zeitüberprüfung des Zeitanalysetools stimmt möglicherweise nicht mit der tatsächlichen Situation der Projektimplementierung überein (normalerweise sind die Einschränkungen zu streng, was zu Zeitfehlern führen kann). Daher müssen Designer einige zusätzliche Einschränkungsbefehle hinzufügen, um die vorhandenen Timing-Überprüfungsmethoden anzupassen und sicherzustellen, dass die Timing-Überprüfung des Timing-Tools mit der tatsächlichen Situation übereinstimmt.
  Typische Beispiele für Timing-Ausnahmeeinschränkungen: 1. Asynchrone Taktdomänenpfade, normalerweise unter Verwendung von Taktgruppierungseinschränkungen oder falschen Pfadeinschränkungen und Mehrzykluseinschränkungen. 2. Einige logische sequentielle Einheiten führen nicht in jedem Taktzyklus eine Datenabtastung und -übertragung durch. In diesem Fall können Mehrzyklusbeschränkungen verwendet werden, um die Beschränkungen auf diesen Pfaden angemessen zu lockern. 3. Manchmal ist es beim Design wünschenswert, dem Timing-Pfad strengere Einschränkungen aufzuerlegen, um einen größeren Timing-Spielraum zu erhalten. In diesem Fall können maximale/minimale Verzögerungsbeschränkungen verwendet werden. 4. Einige Kombinationspfade sind statisch (die Zuweisung ändert sich nicht) oder erfordern keine Zeitbeschränkungen. In diesem Fall können falsche Pfadbeschränkungen verwendet werden, um diese Pfade zu ignorieren.

5.1 Mehrzyklus-Einschränkungen

  Die Syntax der Mehrperiodenbeschränkung lautet wie folgt:

set_multicycle_path <path_multiplier> -setup/hold -start/end -from <startpoints> -to <endpoints> -through <pins/cells/nets>
#
-start和-end用于指定约束命令的周期参数是以源时钟还是以目标时钟作为参考时钟。

  Bei der Zeitpfadanalyse, bei der Quelltakt und Zieltakt die gleiche Frequenz und Phase haben, gibt es keinen Unterschied, ob -start und -end verwendet werden.
  Die Anzahl der Taktzyklen der Haltezeit = der Parameter <path_multiplier> der Setup-Zeit – 1 – der Parameter <path_multiplier> der Haltezeit. Wenn unter normalen Umständen nur die Einschränkung set_multicycle_path auf das Setup angewendet wird, ist der Parameter <path_multiplier> der Haltezeit standardmäßig auf 0 eingestellt, d. h. die Standardanzahl der Taktzyklen der Haltezeit unterscheidet sich um einen Taktzyklus vom <path_multiplier > Parameter der Rüstzeit. Wenn dann nur das Setup eingeschränkt ist, verschiebt sich die Beziehung zwischen der Einrichtungszeit und der Haltezeit gleichzeitig um den Parameter <path_multiplier> nach rechts – 1 Taktzyklus. Wenn die Einschränkung des Parameters <path_multiplier> zum Halten hinzugefügt wird , verschiebt sich die Haltezeitbeziehung um die Haltezeit nach links. <path_multiplier> Parametertaktzyklen, um den Effekt von Mehrzyklusbeschränkungen zu erzielen.
  Nachfolgend finden Sie ein Diagramm.
  Wenn die Einschränkung nur set_multicycle_path 2 -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D] ist, sieht das Diagramm wie folgt aus: Wenn die Einschränkung set_multicycle_path 2 -setup -from [get_pins data0_reg/C] -to
Fügen Sie hier eine Bildbeschreibung ein  ist [get_pins data1_reg/ D] und set_multicycle_path 1 -hold -from [get_pins data0_reg/C] -to [get_pins data1_reg/D], das Diagramm sieht wie folgt aus: < a i=5> Bei Uhren mit derselben Frequenz und phasenverschoben sucht das Timing-Tool standardmäßig nach der steigenden Flanke der Uhr clk2, die an clk1 angrenzt, und verwendet diejenige mit der kürzesten relativen Zeit zwischen clk1 und clk2 (die höchste Timing-Anforderung, d. h. der schlimmste Fall) Eine Reihe von Taktflanken-Timing-Pfaden wird analysiert. Verwenden Sie zu diesem Zeitpunkt den folgenden Einschränkungsbefehl, um Anpassungen vorzunehmen:
Fügen Sie hier eine Bildbeschreibung ein

set_multicycle_path 2 -setup -from [get_clocks CLK1] -to [get_clocks CLK2]

  Für die langsame Taktdomäne zur schnellen Taktdomäne oder die schnelle Taktdomäne zur langsamen Taktdomäne gibt es unterschiedliche Ansätze, aber denselben Zweck. Was beachtet werden muss, ist die Bestätigung von -start und -end. Die allgemeine Einschränkung Methoden für diese beiden Situationen sind unten aufgeführt.

#慢-快
set_multicycle_path N -setup -end -from [get_clocks CLK1] -to [get_clocks CLK2]
set_multicycle_path N-1 -hold -end -from [get_clocks CLK1] -to [get_clocks CLK2]
#快-慢
set_multicycle_path N -setup -start -from [get_clocks CLK1] -to [get_clocks CLK2]
set_multicycle_path N-1 -hold -start -from [get_clocks CLK1] -to [get_clocks CLK2]

5.2 Falsche Pfadbeschränkungen

  Der sogenannte falsche Pfad bedeutet, dass der Pfad ein nicht funktionaler Pfad im Design oder ein Pfad ohne zeitliche Anforderungen ist. Der Grund für die Festlegung falscher Pfadbeschränkungen: Dadurch kann die Kompilierungszeit verkürzt und begrenzte Platzierungs- und Routing-Ressourcen freigesetzt werden, um die Gesamtzeitleistung zu verbessern. Zu den häufigsten falschen Pfaden gehören: 1. Cross-Clock-Domänenpfade, die synchronisiert wurden. 2. Initialisieren und schreiben Sie den Registerpfad nur einmal nach dem Einschalten. 3. Setzen Sie den Logikpfad zurück oder testen Sie ihn. 4. Bestimmte Timing-Pfade, die tatsächlich nicht existieren. Wenn beispielsweise die Datenkommunikation zwischen zwei asynchronen Domänen im Design mithilfe einer Methode wie Dual-Register-Latching synchronisiert wurde, kann eine falsche Pfadbeschränkung verwendet werden, um die Datenpfadprüfung zwischen den beiden Uhren auszuschalten. Die grundlegende Syntax von Einschränkungen lautet wie folgt:

set_false_path -setup/hold -from <node_list> -to <node_list> -through <node_list>
#对于两个或多个相斥时钟做约束推荐用法
set_clock_groups -group CLKA -group CLKB

5.3 Maximale/minimale Verzögerungsbeschränkungen

  Die maximale Verzögerungsbeschränkung überschreibt den Standardwert für die maximale Pfadverzögerung der Einrichtungszeitanalyse. Die Mindestverzögerungsbeschränkung überschreibt den standardmäßigen Mindestpfadverzögerungswert für die Haltezeitanalyse. Die grundlegende Einschränkungssyntax lautet wie folgt:

set_max_delay <delay> -datapath_only -from <node_list> -to <node_list> -through <node_list>
set_min_delay <delay> -from <node_list> -to <node_list> -through <node_list>

  Unter diesen kann -datapath_only nur im Einschränkungsbefehl set_max_delay verwendet werden, der die Option -from enthält. Mit dieser Option wird die Berücksichtigung des Zeitversatzes entfernt und die Haltezeitprüfung des Einschränkungspfads auf den falschen Pfad festgelegt. Dies entspricht der automatischen Generierung einer set_false_path -hold-Einschränkung für diesen Pfad. Mit anderen Worten: Wenn die set_min_delay-Einschränkung auf denselben Pfad angewendet wird, wird sie ignoriert.

Supongo que te gusta

Origin blog.csdn.net/weixin_44126785/article/details/132140413
Recomendado
Clasificación