Environnement STA – Chemin de synchronisation

Présentez comment implémenter des contraintes STA sur différents chemins de synchronisation dans la conception numérique.


Chemin de synchronisation : le signal part de la borne D de la bascule de lancement (Launch Flip-Flop) et se termine à la borne D de la bascule de capture (Capture Flip-Flop).

Notez que "initier" et "déclencher" ne sont pas absolus. Ils doivent être relatifs à un certain chemin de synchronisation pour déterminer si le déclencheur initie des données ou capture des données.

Pour les circuits numériques, les chemins de synchronisation qui nécessitent une analyse STA incluent

  1. input2reg : De la borne d'entrée du circuit à la borne D de la bascule du premier étage, logique combinée, comme indiqué dans la figure ci-dessous, chemin 1
  2. reg2reg : lancement de la bascule CK pour capturer la bascule D dans le circuit, logique séquentielle, chemin 2 comme indiqué dans la figure ci-dessous
  3. reg2output : de la borne CK de la bascule à la borne de sortie du circuit, logique séquentielle, chemin 3 comme indiqué dans la figure ci-dessous
  4. input2output : de l'entrée du circuit à la sortie du circuit, logique combinatoire, comme indiqué dans le chemin 4 comme indiqué ci-dessous

La vérification du timing vise les chemins de synchronisation ci-dessus. Évidemment, le chemin de synchronisation le plus représentatif est le deuxième chemin de bascule à bascule.
insérer la description de l'image ici

Chemin de synchronisation maximum/petit : fait référence au chemin de synchronisation avec le retard de signal le plus grand/le plus petit dans l'ensemble du circuit.

1. Entrez le cheminset_input_delay

Spécifie l'heure d'arrivée des données sur le port d'entrée par rapport à un certain front d'horloge (la valeur par défaut est le front montant)

Par exemple, dans la figure ci-dessous, DUA à droite représente l'intérieur design et INP1 le port design.

Vous pouvez spécifier quand INP1 transmet les données par rapport au front montant de l'horloge CLKA, c'est-à-dire que le délai d'entrée est TCLKA 2 UFF 0 + TCK 2 QUFF 0 + TC 1 T_{CLKA2UFF0}+T_{CK2Q}^{UFF0}+ T_{C1}TC L K A 2 U FF 0+TCK 2 Q _UFF 0 _+TC1 _, peut être utilisé pour effectuer STA sur UFF1

insérer la description de l'image ici
Utilisez la commande SDC suivante pour spécifier le délai d'entrée, -max signifie le délai d'entrée du chemin le plus long (pour la vérification du temps de configuration), -min signifie le délai d'entrée du chemin le plus court (pour la vérification du temps de maintien), s'il n'est pas écrit, cela signifie le temps défini

# 周期: 10ns
# 占空比: 50%
# 端口: CLKA
create_clock -period 2 [ get_ports CLKA]

# 每个时钟CLKA上升沿之后最长路径延迟1.5ns、最短路径延迟1ns,INP1端口传入数据
set_input_delay -clock CLKA -max 1.5 [ get_ports INP1]
set_input_delay -clock CLKA -min 1 [ get_ports INP1]

# 每个时钟CLKB上升沿之后6.7ns,INP2端口传入数据
set_input_delay -clock CLKB 6.7 [ get_ports INP2]

2. Chemin de sortieset_output_delay

Spécifiez le temps de sortie que les données du port de sortie doivent respecter par rapport à un certain front d'horloge (la valeur par défaut est le front montant)

Par exemple, dans la figure ci-dessous, DUA à droite représente l'intérieur de la puce et OUTB le port de la puce. Le retard de sortie est en fait une différence, c'est-à-dire TC 2 − TOUTC 2 UFF 1 + T setup UFF 1 / − T hold UFF 1 T_{C2}-T_{OUTC2UFF1}+T_{setup}^{UFF1}/-T_ { attente}^{UFF1}TC2 _TO U TC 2 U FF 1+Tconfigurer _ _ _UFF 1 _/Ttenir _ _ _UFF 1 _

insérer la description de l'image ici

-max correspond au délai de chemin le plus long utilisé pour la vérification du temps de configuration

-min est utilisé lorsque le délai du chemin le plus final est utilisé, et il est utilisé pour vérifier le temps

# 时钟CLKQ上升沿驱动,用于建立时间检查的外部路径延迟差为5ns
set_output_delay -clock CLKQ -max 5 [ get_ports OUTB]

# 时钟CLKQ上升沿驱动,用于保持时间检查的外部路径延迟差为1.5ns
set_output_delay -clock CLKQ -min 1.5 [ get_ports OUTB]

4. Chemins de domaine inter-horloges

Domaine d'horloge (domaine d'horloge) : un groupe de bascules pilotées par la même horloge constitue le même domaine d'horloge.

insérer la description de l'image ici

Croisement des domaines d'horloge : c'est-à-dire qu'il existe un chemin de données depuis le terminal Q de bascule d'un domaine d'horloge jusqu'au terminal D d'un autre domaine d'horloge.

Il existe plusieurs méthodes de contrainte pour les chemins de domaine entre horloges. Si plusieurs méthodes de contrainte se chevauchent dans le SDC, la contrainte ayant la priorité la plus élevée prend effet. Comme le montre la figure ci-dessous, plus la contrainte est spécifique, plus la priorité est élevée.

insérer la description de l'image ici

4.1. Chemin d'accès aux exceptions de synchronisationset_false_path

Étant donné que la relation entre les deux horloges est incertaine, la transmission du signal ne parviendra inévitablement pas à respecter le temps de configuration et le temps de maintien. Par conséquent, lors de l'exécution de STA, vous pouvez utiliser le paramètre false set_false_pathpath pour ne pas analyser un tel chemin.

# 从USBCLK时钟域到MEMCLK时钟域的所有时序路径均不作STA
set_false_path -from [get_clocks USBCLK] -to [get_clocks MEMCLK]

insérer la description de l'image ici

Le comportement entre domaines d'horloge entraînera des problèmes métastables, il est donc généralement nécessaire d'effectuer une synchronisation via des synchroniseurs, des FIFO asynchrones et d'autres méthodes.

4.2. Chemin entre les broches set_max_delay,set_min_delay

Utilisé pour spécifier le délai maximum et minimum entre deux broches quelconques, pas entre des bascules

set_max_delay 5.0 -to UFF0/D
set_max_delay 0.6 -from UFF2/Q -to UFF3/D
set_max_delay 0.45 -from UMUX0/Z -through UAND1/A -to UOR0/Z
set_min_delay -from U1/S -to U2/A 0.6
set_min_delay -from [get_clocks PCLK] -to [get_pins UFF/*/S]

4.3. Pistes multicyclablesset_multicycle_path

Explication détaillée du chemin multicycle et set_multicycle_path
L'explication de set_multicycle_path dans sdc est expliquée de manière simple et simple
, et set_multicycle_path est expliqué en profondeur, afin de bien maîtriser les
dix compétences de base de Verilog 9 (Chemins multicycles)

5. Port constantset_case_analysis

Certaines broches de la puce spécifiée sont à niveau constant.

En plus de ne pas avoir à signaler de chemins non pertinents, cela permet également de réduire l'espace d'analyse. Utilisez les contraintes set_case_analysis pour spécifier de tels signaux constants.

set_case_analysis 0 TEST
set_case_analysis 0 [get_ports {
    
    testmode[3]}]
set_case_analysis 0 [get_ports {
    
    testmode[2]}]
set_case_analysis 0 [get_ports {
    
    testmode[1]}]
set_case_analysis 0 [get_ports {
    
    testmode[0]}]

Si la conception comporte plusieurs modes fonctionnels et qu'un seul d'entre eux doit être analysé, set_case_analysis peut être utilisé pour analyser uniquement une certaine valeur d'un certain port.

# 只考虑func_mode == 3'b101的情形
set_case_analysis 1 func_mode[0]
set_case_analysis 0 func_mode[1]
set_case_analysis 1 func_mode[2]

Je suppose que tu aimes

Origine blog.csdn.net/Starry__/article/details/129816212
conseillé
Classement