Temps de setup vs temps de hold : définition, délais et correction

Ce sont deux conditions temporelles qui permettent à une bascule de capturer correctement une donnée, mais elles s'appliquent dans des sens opposés. Le temps de setup est la durée pendant laquelle la donnée doit être stable avant le front d'horloge : il permet de vérifier que la donnée n'arrive pas trop tard. Le temps de hold est la durée pendant laquelle la donnée doit être maintenue après le front : il permet de vérifier que la donnée n'arrive pas trop tôt. La condition de setup fait intervenir la période d'horloge, si bien que ralentir l'horloge corrige une violation ; la condition de hold compare un même front, et baisser la fréquence ne la corrige pas.

CritèreTemps de setupTemps de hold
DéfinitionDurée minimale pendant laquelle la donnée doit être stable avant le front actif de l'horlogeDurée minimale pendant laquelle la donnée doit rester inchangée après le front actif de l'horloge
Ce que l'on vérifieQue la donnée n'est pas trop lente : arrive-t-elle à temps pour le front suivant ?Que la donnée n'est pas trop rapide : une nouvelle donnée ne s'infiltre-t-elle pas au même front ?
Fronts comparésLe front côté émetteur et le front côté récepteur une période plus tardLe même front côté émetteur et côté récepteur
Délai vérifiéDélai maximal (max). Le chemin le plus lentDélai minimal (min). Le chemin le plus rapide
Condition (indicative)tcq(max) + tlogic(max) + tsu ≤ T + tskewtcq(min) + tlogic(min) ≥ th + tskew (tskew est positif lorsque l'horloge côté récepteur est en retard)
Lien avec la fréquence d'horlogeLa période T figure dans la condition. Détermine la fréquence de fonctionnement maximaleLa période ne figure pas dans la condition. Indépendant de la fréquence
Effet du skew d'horlogeUn retard de l'horloge côté récepteur augmente la margeUn retard de l'horloge côté récepteur réduit la marge
Correction des violationsRéduire le nombre d'étages logiques, passer à des cellules rapides à forte capacité de commande ou à tension de seuil basse, rapprocher le placement, découper le chemin par pipeline, ralentir l'horlogeInsérer des buffers de retard dans le chemin de données, passer à des cellules lentes à tension de seuil élevée, ajuster le skew d'horloge
Corners propices aux violationsConditions lentes : procédé lent, basse tension, haute température (dans les procédés fins, la basse température est parfois plus lente)Conditions rapides : procédé rapide, haute tension, basse température, etc.
Si la violation est découverte après fabrication de la puceLe circuit fonctionne en ralentissant l'horloge, au prix des performancesBaisser la fréquence ne corrige rien et le circuit ne fonctionne pas correctement. La correction exige souvent une modification de la conception

Les valeurs indiquées sont des ordres de grandeur typiques et varient selon la génération de procédé et le produit.

Quand choisir l'un ou l'autre ?

Temps de setup
Pour déterminer la fréquence de fonctionnement maximale, ou pour trouver et accélérer les chemins lents. En analyse temporelle statique, on vérifie avec le délai max et les corners lents.
Temps de hold
Lorsque les chemins entre bascules sont courts, ou que le skew d'horloge est important. On vérifie avec le délai min et les corners rapides, et on corrige généralement après la construction de l'arbre d'horloge.
Ensemble
Corriger l'un peut dégrader l'autre. Insérer trop de buffers pour corriger le hold réduit la marge de setup : il faut satisfaire les deux à la fois dans tous les corners.

Questions fréquentes

Pourquoi une violation de hold n'est-elle pas corrigée en ralentissant l'horloge ?

Parce que la condition de hold compare le même front d'horloge côté émetteur et côté récepteur, si bien que la période d'horloge n'apparaît pas dans la condition. On la corrige en modifiant le délai du chemin lui-même, par exemple en insérant des buffers dans le chemin de données pour le retarder.

Pourquoi utilise-t-on le délai max pour vérifier le setup et le délai min pour le hold ?

Pour le setup, la question est de savoir si la donnée arrive à temps pour le front suivant lorsqu'elle arrive le plus tard possible : on vérifie donc avec le délai maximal. Pour le hold, la question est de savoir si la nouvelle donnée écrase l'ancienne lorsqu'elle arrive le plus tôt possible : on vérifie donc avec le délai minimal.

Que se passe-t-il si le temps de setup ou de hold n'est pas respecté ?

La bascule capture une valeur erronée, ou sa sortie entre dans un état métastable où elle n'est ni 0 ni 1 pendant un certain temps. Pour les signaux asynchrones, on ne peut pas l'éviter totalement : on les reçoit donc en les synchronisant avec au moins deux bascules.

Vérifier vos connaissances

Quelle description du temps de setup (temps d'établissement) d'une bascule est correcte ?

  1. ALe temps minimal pendant lequel la donnée doit être maintenue après le front d'horloge
  2. BLe temps minimal pendant lequel l'entrée de données doit être stable avant le front d'horloge
  3. CLe temps entre la mise sous tension et le début du fonctionnement
Afficher la réponse et l'explication

Réponse : B. Le temps minimal pendant lequel l'entrée de données doit être stable avant le front d'horloge

Pour qu'une bascule capture correctement, la donnée doit être stable depuis un certain temps avant le front d'horloge : c'est le temps de setup. Si le délai du chemin de données dépasse la période d'horloge moins le temps de setup, il y a violation, que l'on résout en ralentissant l'horloge. Le temps pendant lequel la donnée doit être maintenue après le front est le temps de hold ; le non-respect de l'un ou de l'autre provoque la capture d'une valeur erronée ou la métastabilité.

Quelle description du temps de hold (temps de maintien) d'une bascule est correcte ?

  1. ALe temps pendant lequel l'entrée de données doit être fixée avant le front actif de l'horloge
  2. BLe temps entre l'arrivée de l'horloge et le changement de la sortie
  3. CLe temps pendant lequel l'entrée de données doit rester inchangée après le front actif de l'horloge
Afficher la réponse et l'explication

Réponse : C. Le temps pendant lequel l'entrée de données doit rester inchangée après le front actif de l'horloge

Le temps de hold est le temps minimal pendant lequel la donnée doit rester stable après le front d'horloge. Si le chemin entre une bascule et la suivante est trop court, la nouvelle donnée mise à jour au même front arrive trop tôt à l'étage suivant, d'où une violation. Indépendant de la période, ce problème n'est pas résolu en ralentissant l'horloge ; on insère des buffers dans le chemin de données pour ajouter du délai. Découvert après fabrication, il rend la puce inutilisable, d'où l'importance de la vérification à la conception.

Quelle description du « skew d'horloge » dans un circuit synchrone est correcte ?

  1. ALa variation de la fréquence d'horloge au cours du temps
  2. BL'écart entre les instants d'arrivée du signal d'horloge à chaque bascule
  3. CLe fait que la tension du signal d'horloge dépasse la tension d'alimentation
Afficher la réponse et l'explication

Réponse : B. L'écart entre les instants d'arrivée du signal d'horloge à chaque bascule

Le skew d'horloge est l'écart entre les instants d'arrivée d'une même horloge aux différentes bascules, dû aux différences de longueur de pistes et de charge. Un retard de l'horloge côté réception est favorable au setup mais défavorable au hold, et inversement. L'arbre d'horloge distribué sur toute la puce est conçu par CTS (synthèse d'arbre d'horloge), qui égalise le placement des buffers et les longueurs de pistes pour limiter le skew à quelques dizaines de ps ou moins. La fluctuation temporelle de la période est la gigue (jitter).

  1. En analyse temporelle statique, quelle violation survient lorsque le signal change trop tôt juste après le front d'horloge, empêchant la bascule de conserver correctement la donnée précédente ?
  2. Pourquoi réalise-t-on l'analyse temporelle statique sous plusieurs conditions combinant variations de procédé, tension d'alimentation et température ?
  3. Pour vérifier que le temps de maintien (hold) du récepteur est respecté, quelle valeur du retard horloge → sortie de l'émetteur faut-il utiliser ?

Questions d'entraînement sur Circuits logiques

Termes clés expliqués

Temps d'établissement (setup time)
Durée minimale pendant laquelle l'entrée de données d'une bascule doit être stable avant le front actif d'horloge. Les chemins qui ne la respectent pas limitent la fréquence maximale du circuit.
Temps de maintien (hold time)
Durée minimale pendant laquelle l'entrée de données d'une bascule doit rester stable après le front actif d'horloge. Une violation ne se corrige pas en réduisant la fréquence ; on ajoute du retard.
Décalage d'horloge (clock skew)
Écart entre les instants d'arrivée d'un même signal d'horloge aux différentes bascules. Comme il modifie les marges de setup et de hold, on le minimise par la synthèse de l'arbre d'horloge.
STA (analyse temporelle statique)
Méthode qui calcule le délai de chaque chemin d'un circuit sans vecteurs de test et vérifie que les contraintes temporelles sont respectées.
Métastabilité
État où, en cas de violation des temps de setup ou de hold d'une bascule, la sortie reste un moment indéterminée entre 0 et 1. On y remédie en synchronisant les signaux asynchrones par deux bascules en série.

Comparatifs associés