L’Analyseur de synchronisation prend en compte les diviseurs d’horloge, les horloges d’ondulation ou les circuits qui modifient ou modifient les caractéristiques de l’horloge entrante ou de l’horloge hôte comme des horloges générées. Vous devez définir la sortie de ces circuits comme des horloges générées. Cette définition permet à l’Analyseur de synchronisation d’analyser ces horloges et de prendre en compte toute latence réseau associée à ces horloges.
Vous pouvez utiliser la commande create_generated_clock pour créer des horloges générées. La liste suivante montre la commande create_generated_clock et les options disponibles :
create_generated_clock [nom <clock>] - broche <host source> [liste <edge des bords>] [-edge_shift <shift list>] [-divide_by <factor>] [-multiply_by <factor>> duty_cycle <percent>] [-add] [-invert] [-host_clock <clock>] [-phase <phase>] [-offset <offset>] objets <source>
Le tableau 1 décrit les options de commande create_generated_clock.
Tableau 1. Description des options de la commande create_generated_clock
Description de l’option | |
---|---|
-nom <clock> | Nom de l’horloge générée, par exemple, clk_x2. Si vous ne spécifiez pas le nom de l’horloge, le nom de l’horloge est le même que le premier nœud auquel il est attribué. |
-source de la broche <host> | La broche <host> spécifie le nœud dans la conception à partir de laquelle les paramètres d’horloge sont dérivés. |
- liste des < des bords > |-edge_shift <shift> | L’option « bords » spécifie les nouveaux bords montant et descendant en ce qui concerne les bords montant et descendant de l’horloge hôte. Les bords montant et descendant de l’horloge hôte sont numérotés 1.<n> à partir du premier bord montant, par exemple le bord 1. Le premier bord qui tombe après est le numéro de périphérie 2, le prochain numéro de périphérie montant 3, et ainsi de suite. La liste des <ge> doit être de plus en plus ordonnée. Le même bord peut être utilisé pour deux entrées indiquant une pulsation d’horloge indépendante du cycle d’utilisation de la forme d’ondes d’origine. edge_shift spécifie le nombre de changements pour chaque périphérie dans la liste des <edge>. L’option « invert » peut être utilisée pour annuler l’horloge après l’application des -bords et des -edge_shifts. |
-divide_by <factor>| -multiply_by<facteur> | Les facteurs divide_by et multiply_by sont basés sur la première extrémité montante de l’horloge, et étendent ou contractent la forme des ondes selon les facteurs spécifiés. Par exemple, un -divide_by 2 est équivalent à -edges {1 3 5}. Pour les horloges multipliées, le cycle d’exploitation peut également être spécifié. L’Analyseur de synchronisation prend en charge la spécifier en même temps les facteurs de multiplication et de division. |
-duty_cycle<percent> | Spécifie le cycle d’exploitation de l’horloge générée. Le cycle d’exploitation est appliqué en dernière et dernière positions. |
-ajouter | Permet de spécifier plusieurs horloges sur la même broche. |
-invert | L’inversion est appliquée à la sortie de l’horloge après toutes les autres modifications, à l’exception du cycle d’utilisation. |
-host_clock<clock> | host_clock est utilisé pour spécifier l’horloge s’il existe plusieurs horloges à la broche de l’hôte. |
-phase<phase> | Spécifie la phase de l’horloge générée. |
-offset<offset> | Spécifie le décalage de l’horloge générée. |
objets <source> | Spécifie le ou les broches auxquels s’applique la cession. |
Les latences source sont basées sur les retards du réseau d’horloge de l’horloge hôte (pas nécessairement l’broche hôte). Vous pouvez utiliser la commande set_clock_latency source pour remplacer la latence source.
La Figure 1 montre les formes d’ondes des commandes SDC suivantes qui créent une horloge générée invertie basée sur une horloge 10 ns.
create_clock -period 10 [get_ports clk] create_generated_clock -divide_by 1 -invert -source [get_registers clk] \ [get_registers gen|clkreg]
La Figure 2 montre les formes d’ondes des commandes SDC suivantes qui modifient l’horloge générée à l’aide des options -edges and -edge_shift.
create_clock -period 10 -waveform { 0 5 } [get_ports clk] # Crée une horloge divise par 2 create_generated_clock -source [get_ports clk] -edges { 1 3 5 } \ [get_registers clkdivA|clkreg] # Crée une horloge divise-par-2 indépendante du cycle d’utilisation de l’horloge hôte maintenant 50 %) create_generated_clock -source [get_ports clk] -bords { 1 1 5 } -edge_shift 0 5 0 } [get_registers clkdivB|clkreg]
La Figure 3 montre les wafeforms des commandes SDC suivantes qui démontrent l’effet de l’option de multiplication sur l’horloge générée.
create_clock -period 10 -waveform { 0 5 } [get_ports clk] # Crée une horloge multiply-by-2 create_generated_clock -source [get_ports clk] -multiply_by 2 \ [get_registers clkmhk|clkreg]