Calcul des contraintes de temps pour les FPGA en langage simple

Bonjour. Cet article est écrit pour les trÚs, trÚs débutants dans le monde des FPGA, qui ne savent pas encore ce qu'est STA (analyse de synchronisation statique). Dans ce document, j'essaierai d'expliquer aussi simplement et clairement que possible quelles contraintes de timing sont imposées aux projets de FPGA.



L'article a Ă©tĂ© crĂ©Ă© sur la base de ma propre expĂ©rience de tentatives d'expliquer ce sujet Ă  moi-mĂȘme, aux Ă©tudiants-stagiaires et aux collĂšgues curieux afin de ne pas plonger dans une jungle acadĂ©mique abstruse, mais aussi simplement et de maniĂšre transparente que possible, dans le langage courant. J'ai appris Ă  travailler avec des FPGA sans Ă©tude ni formation sur ce sujet, et je sais par ma propre expĂ©rience Ă  quel point il est difficile de comprendre quelque chose sans base thĂ©orique dans ce sujet et dans les circuits. Pour un Ă©leveur expĂ©rimentĂ©, ce qui prĂ©cĂšde est Ă©lĂ©mentaire. Mais pour certains Ă©tudiants de quatriĂšme annĂ©e, l'article sera utile et aidera Ă  comprendre tous ces slacks, configurations et prises.



Dans l'article, j'utiliserai des termes avec leur version anglaise dupliquĂ©e entre parenthĂšses. Cela est dĂ» au fait qu’une terminologie unifiĂ©e n’a pas Ă©tĂ© Ă©tablie et qu’avec la duplication, il est plus facile de comprendre quel concept est discutĂ© et, si nĂ©cessaire, de trouver des informations Ă  ce sujet dans des sources en anglais.



introduction



Je donnerai une brĂšve introduction dans le langage des concepts simples.



Pour que quelque chose fonctionne dans le FPGA, vous devez y charger (remplir, coudre) le fichier du micrologiciel Ă  l'aide du programmeur et de l'utilitaire du micrologiciel. Le fichier du micrologiciel est le produit d'une compilation CAO d'un certain projet - des dossiers contenant des fichiers, dont chacun dĂ©crit un aspect du projet. Dans les cas simples, l'utilisateur ne dĂ©crit lui-mĂȘme que les fichiers avec le code source, un fichier avec un brochage et un fichier avec des restrictions de temps. Le reste des fichiers est gĂ©rĂ© discrĂštement par la CAO. De ce triĂšdre, seul le fichier de contraintes de temps est formellement facultatif.partie du projet. En fait, si votre projet ne contient pas de frĂ©quences supĂ©rieures Ă  30-50 MHz, il est probable qu'il puisse fonctionner d'une maniĂšre ou d'une autre sans ce fichier. Cette option est appropriĂ©e pour la facilitĂ© de crĂ©ation des tout premiers projets Ă©ducatifs. Cependant, si votre projet de formation contient dĂ©jĂ  des frĂ©quences d'horloge Ă©levĂ©es et n'est pas Ă©quipĂ© d'un fichier de contraintes de temps, le traitement des donnĂ©es sera probablement perturbĂ© quelque part Ă  l'intĂ©rieur du FPGA et vous ne pourrez pas savoir Ă  quel point du projet. Quant au travail, pas Ă  l'Ă©tude, la description du dossier complet des restrictions est strictement requise . Il est de votre responsabilitĂ© de vĂ©rifier et valider la fonctionnalitĂ© de votre projet.



Le compilateur place votre projet sur la puce FPGA, reçoit un fichier de connexions de tous les Ă©lĂ©ments physiques. L'analyseur de synchronisation utilise le fichier de connexion pour calculer toutes les durĂ©es des transferts de donnĂ©es vers le FPGA. Ces durĂ©es ne doivent pas ĂȘtre infiniment longues ou trop courtes. Le fichier des contraintes de temps indique Ă  l'analyseur dans quelle trame ces durĂ©es doivent ĂȘtre. En utilisant les rĂ©sultats de l'analyse temporelle, le dĂ©veloppeur peut voir dans quelles parties du projet il y a une marge dans le temps, et donc en frĂ©quence, et oĂč il n'y a pas de telle marge.



Les systÚmes synchrones synchronisent le travail de traitement des données à l'aide de signaux d'horloge de synchronisation, qui dans le jargon sont briÚvement appelés horloges de l' horloge anglaise... Les résultats intermédiaires des opérations sont stockés dans des registres capables de mémoriser l'état en entrée au moment de l'arrivée du front du signal d'horloge et de le maintenir en sortie jusqu'au prochain cycle d'horloge.



Ainsi, les circuits synchrones sont constitués de transferts de données inter- registres ( RTL, logique de transfert de registre, transfert r2r ). Et un aspect clé de l'analyse temporelle consiste à mesurer Slack ( slack ). Ce mot se traduit littéralement par «réserve de temps», «affaissement», mais dans l'environnement russophone, le papier calque de l'anglais est souvent utilisé - «mou». Dans les transferts inter-registres, nous parlons de slacks prédéfinis ( Setup ) et hold slacks ( Hold ).



Transfert inter-registres



Le transfert inter-registres (Fig. 1) est considéré comme un systÚme de deux registres connectés séquentiellement qui fonctionnent sur des horloges synchrones dans le cas général. Dans le cas simple, sur un lambeau. Un registre joue le rÎle de la source (source) et l'autre le rÎle du récepteur des données (destination). Et lors du prochain transfert inter-registres, ce registre récepteur sera déjà considéré comme la source, etc. Entre les registres sur le chemin de données se trouve une logique combinatoire arbitraire définie par l'utilisateur. Il est asynchrone car il ne possÚde pas d'éléments de mémoire avec un signal de synchronisation, comme les registres. Cette logique est ce comportement, ces opérations logiques que l'utilisateur décrit avec son code. Les registres sont ces "variables" d'un bit que l'utilisateur donne des noms dans le code et opÚrent séparément,ou en combinant des vecteurs et des tableaux.



image

Figure: 1. Schéma de transfert de données d'un registre à l'autre



Il existe deux concepts associĂ©s Ă  la rĂ©ception de donnĂ©es par le registre rĂ©cepteur: le temps de configuration et le temps de maintien. Ils dĂ©crivent la plage de temps pendant laquelle le signal Ă  l'entrĂ©e du rĂ©cepteur doit ĂȘtre stable et pertinent. Stable - signifie essentiellement que sa tension doit ĂȘtre trĂšs proche de l'un des deux Ă©tats logiques - "0" ou "1", et ne pas se balancer entre eux avec un risque de confusion. Pertinent - signifie que ce bit d'information doit ĂȘtre liĂ© de maniĂšre significative Ă  cette horloge de l'horloge qui la capturera, et non Ă  un bit tardif de l'horloge prĂ©cĂ©dente.



Heure de configuration - heure prĂ©dĂ©finie, la durĂ©e minimale pendant laquelle, avant l'arrivĂ©e du front d'horloge, le signal de donnĂ©es doit dĂ©jĂ  ĂȘtre Ă©tabli dans un Ă©tat stable.



Temps de maintien - le temps de maintien, le temps minimum aprĂšs l'arrivĂ©e du front d'horloge, le signal de donnĂ©es doit toujours ĂȘtre maintenu dans un Ă©tat stable.



Autrement dit, les donnĂ©es Ă  l'entrĂ©e du rĂ©cepteur doivent ĂȘtre stables et Ă  jour non seulement au moment de l'arrivĂ©e du front d'horloge, mais Ă©galement pendant un certain intervalle de temps de protection autour de lui (Fig.2), avec une durĂ©e d'au moins Setup_time + Hold_time. Si la condition de stabilitĂ© des donnĂ©es est remplie pendant cet intervalle, le registre pourra certainement capturer les donnĂ©es entrantes sans erreur, sinon personne ne garantit qu'il n'y aura pas de panne.



image

Figure: 2.Setup Time et Hold time comme intervalle de garde autour du bord de capture à l'entrée d'horloge du registre



Les valeurs de temps de configuration et de temps de maintien sont strictement dĂ©finies par le fabricant du FPGA. Ils dĂ©pendent de la technologie de production du cristal et sont considĂ©rĂ©s comme des constantes d'analyse, les mĂȘmes pour chaque registre du cristal. Dans tous les cas, ces valeurs ne dĂ©pendent en aucun cas de l'utilisateur; leur comptabilitĂ© est une tĂąche rĂ©servĂ©e Ă  l'utilitaire d'analyse du temps. Il n'est pas important pour nous de savoir Ă  quoi ils sont Ă©gaux, il est important pour nous seulement de savoir qu'ils existent et ne sont pas Ă©gaux Ă  zĂ©ro.



L'essence de l'analyse temporelle est de calculer les Ă©carts pour chaque paire de registres du projet, entre lesquels il y a un transfert de donnĂ©es, que les donnĂ©es doivent ĂȘtre stables pendant l'intervalle de garde. Il existe de nombreuses paires r2r de ce type dans le projet, des milliers, voire des millions, mais chacune d'elles doit ĂȘtre analysĂ©e afin de s'assurer que le projet fonctionne.



Il existe Ă©galement deux slacks, respectivement - Setup Slack et Hold Slack (Fig. 3).



Setup Slack caractérise la marge de temps dont disposent les données entre le moment de la stabilisation et le début de l'intervalle de temps Setup.



Hold Slack caractérise la marge de temps dont disposent les données à partir de la fin de l'intervalle de temps Hold jusqu'à ce que les données perdent leur stabilité.



Les slacks doivent ĂȘtre positifs. Si la marge est nĂ©gative, la condition de stabilitĂ© des donnĂ©es d'entrĂ©e n'est pas remplie et les donnĂ©es battent. Plus il y a de mou - mieux c'est, mais vous devez comprendre que sur chaque destinataire de registre, ses slacks de prĂ©sĂ©lection et de maintien ont un temps commun pour deux. Cela signifie qu'une augmentation d'un relĂąchement entraĂźne toujours une diminution de l'autre. Par consĂ©quent, la meilleure option est lorsque les deux slacks sont positifs et approximativement Ă©gaux l'un Ă  l'autre, c.-Ă -d. l'Ă©quilibre des slacks est observĂ©.



image

Figure: 3. Slacks positifs, la condition pour une réception réussie des données est remplie, mais il n'y a pas d'équilibre entre les slacks



Calcul de la marge



Passons maintenant à la façon dont ces écarts sont calculés. Commençons par Setup Slack.

Considérez le schéma de transfert de données de la Fig. 4.



image

Fig. 4. Schéma de transfert de données



Ici, nous introduisons des concepts tels que le front de déclenchement, le front de capture, l'heure d'arrivée des données, le temps d'attente des données et l'heure d'arrivée de l'horloge.



Le Launch Edge est l'avant de l'horloge qui est venu à l'entrée du registre source et a commencé le processus de transfert de données.



Le bord de verrouillage est le front d'horloge qui arrive au registre de réception et le force à saisir des données en entrée.



Le moment d'arrivée des données ( Data Arrival Time ) est défini comme l'arrivée effective des données au registre de réception.



Le temps requis pour les données est défini comme le temps nécessaire pour que les données atteignent la destination avant l'heure prédéfinie sur le registre de destination.



L'heure d'arrivée d'une horloge ( Clock Arrival Time ) est définie comme l'heure de passage du front de la capture de l'entrée d'horloge de l'ensemble du circuit à l'entrée d'horloge du récepteur. De plus, le front de capture signifie le front suivant aprÚs le front de lancement. Le front de lancement envoie les données de la source au destinataire, et aprÚs une période d'horloge, le front de capture capture ces données du cÎté du destinataire.

L'entrée d'horloge de l'ensemble du circuit est comprise comme un point unique à partir duquel l'horloge diverge vers tous les registres qui y fonctionnent. Il s'agit généralement de la sortie du tampon d'horloge global ou de la sortie de la PLL. Dans le cas le plus primitif, il s'agit de la branche FPGA, à laquelle le générateur d'horloge est connecté.



Les termes impliquĂ©s dans l'analyse temporelle peuvent ne pas avoir une valeur ponctuelle, mais une certaine plage de valeurs possibles, en fonction de la trace de conception et de la tempĂ©rature du cristal. Par consĂ©quent, la plus mauvaise marge est analysĂ©e. L'Ă©change de donnĂ©es est considĂ©rĂ© comme rĂ©ussi si, mĂȘme dans les pires conditions de mou, il reste positif.



Quel est le lien entre le moment de l'arrivée des données et le front de déclenchement?



Nous considérons l'arrivée de données comme passant par une chaßne avec un registre d'un événement, initié par un front de déclenchement.



Le front de déclenchement apparaßt à l'entrée d'horloge du systÚme, puis il atteint l'entrée du registre source pendant un certain temps, puis pendant un certain temps ce registre est déclenché et envoie de nouvelles données à la sortie, puis ces données passent par les circuits logiques de combinaison vers le registre de réception. La variante la plus mauvaise et la plus lente du passage des données est considérée, donc les termes sont accompagnés du préfixe "max".

maxDataArrivalTime=LaunchEdge+maxtCLK+tCO+maxtD



Dans cette formule, le terme pour le front de déclenchement porte la signification du point de référence par rapport auquel les événements se développent, et non une valeur mesurée en nanosecondes.



TermemaxtCLKEst le temps maximum nĂ©cessaire pour que le front de dĂ©clenchement passe de l'entrĂ©e d'horloge de l'ensemble du circuit Ă  l'entrĂ©e d'horloge de la source. En rĂšgle gĂ©nĂ©rale, l'analyseur prend simplement la plage de temps allant de «exactement pas moins que» Ă  «exactement pas plus que» et remplace la borne supĂ©rieure «certainement pas plus que» dans cette formule. Cette valeur est indĂ©pendante de l'utilisateur. Le compilateur dĂ©cide par lui-mĂȘme oĂč placer le registre sur le cristal et prend en compte le temps nĂ©cessaire Ă  l'horloge pour s'y rendre. Le rĂ©seau de connexions Ă  travers lequel le signal d'horloge diverge de la mĂ©moire tampon d'horloge globale vers les registres est conçu de sorte que le signal d'horloge atteigne n'importe quel registre dans presque le mĂȘme laps de temps. Par consĂ©quent, en fait, la diffĂ©rence entremaxtCLK et mintCLKextrĂȘmement petit, mais toujours pris en compte.



TermetCO- c'est le temps d' horloge à sortie , que le registre passe à voir le front à l'entrée d'horloge changer les données à sa sortie. L'analyseur considÚre que cette valeur est égale pour tous les registres de la puce. Cette valeur est indépendante de l'utilisateur.



Le dernier termemaxtDEst le temps maximum pour qu'un Ă©vĂ©nement (donnĂ©es) passe par la logique de combinaison entre les registres, qui est dĂ©fini par l'utilisateur. Cette valeur dĂ©pend fortement de l'utilisateur. Il exprime la quantitĂ© de logique combinatoire entre les registres. À leur tour, les longues chaĂźnes de logique combinatoire sont souvent le rĂ©sultat d'un codage imprĂ©cis par l'utilisateur.



Le moment oĂč le lambeau arrive chez le destinataire est plus facile Ă  calculer:

minClockArrivalTime=LatchEdge+mintCLKâ€Č



Il s'agit du premier moment auquel le front de capture atteint l'entrée d'horloge du registre de réception.

TermemintCLKâ€Č- c'est le temps minimum pendant lequel le front de capture atteindra l'entrĂ©e d'horloge du destinataire, c'est-Ă -dire que, par analogie avec la formule prĂ©cĂ©dente, ce temps n'est "certainement pas infĂ©rieur Ă ". Le tiret dans ce cas signifie que nous parlons de l'entrĂ©e d'horloge du destinataire, pas de la source.



Le temps d'attente des données est défini comme le temps nécessaire aux données pour atteindre le récepteur avant l'heure prédéfinie sur le registre du récepteur:

minDataRequiredTime=minClockArrivalTime–tSU–CSU



Terme tSU- nous connaissons dĂ©jĂ  l'heure de configuration, qui est considĂ©rĂ©e comme la mĂȘme pour chaque registre sur le cristal. Cette heure est indĂ©pendante de l'utilisateur.



TermeCSUEst l' incertitude de configuration de l'horloge , incertitude de temps prĂ©dĂ©finie. Comme toute autre incertitude dans l'analyse temporelle d'une CSU, ce n'est pas un processus physique, mais un moyen de reflĂ©ter l'influence de la gigue dans l'analyse, ou simplement un moyen d'introduire un temps de garde dans l'analyse au cas oĂč. En termes simples, c'est une marge de temps pour prendre en compte des processus difficiles.



Maintenant que ces termes sont définis, nous pouvons définir une marge prédéfinie comme la plus petite différence entre le temps qui est autorisé pour se rendre à la destination et le temps que cela prend réellement.

minSetupSlack=minDataRequiredTime–maxDataArrivalTime



Maintenant, développons ces termes et réorganisons-les un peu:

minSetupSlack=LatchEdge+mintCLKâ€Č–tSU–CSU−

–(LaunchEdge+maxtCLK+tCO+maxtD)

minSetupSlack=LatchEdge−LaunchEdge−maxtD–

−CSU+(mintCLKâ€Č−maxtCLK)–tSU–tCO

=Period−maxtD–CSU+mintCS–tSU–tCO



De nouveaux termes sont apparus ici.

Il est clair sur la période, c'est la période de la fréquence d'horloge, c'est-à-dire temps entre Launch Edge et Latch Edge.

TermemintCS- c'est le biais d'horloge - la valeur minimale de l'Ă©talement de l'heure d'arrivĂ©e d'un front d'horloge depuis l'entrĂ©e d'horloge du systĂšme vers diffĂ©rents registres synchrones. L'Ă©talement d'horloge minimum est dĂ©fini comme la diffĂ©rence entre le plus petit retard d'horloge vers le destinataire et le plus grand retard d'horloge vers la source.mintCS=mintCLKâ€Č−maxtCLK... L'analyseur ne fait aucune diffĂ©rence dans l'estimation de ce temps pour diffĂ©rents registres sur la puce.



C'est ainsi que nous avons calculé la marge prédéfinie. Une marge positive est bonne, une marge négative est mauvaise. Slack se traduit littéralement par un affaissement. Donc, s'il y a un mou, alors le transfert interregister n'est pas configuré "vnatyag", le "thread" conditionnel s'affaisse librement. Le jeu est négatif - cela signifie que le fil de transmission a été tiré et cassé.



La figure 5 montre comment la formule d'Ă©cart peut ĂȘtre reprĂ©sentĂ©e graphiquement:



image

Fig. 5. Représentation graphique de l'expression Setup Slack



Ceci montre la relation en arriÚre-plan du signal d'horloge, et il s'agit du signal d'horloge à l'entrée d'horloge du systÚme, et non à l'entrée d'un registre.



Calculons maintenant la marge de rĂ©tention de la mĂȘme maniĂšre .



Il peut Ă©galement ĂȘtre reprĂ©sentĂ© par une expression dans laquelle les termes ont changĂ© de signe:

minHoldSlack=minDataArrivalTime–maxDataRequiredTime



Ces termes sont maintenant considérés de l'autre cÎté.

minDataArrivalTime=LaunchEdge+mintCLK+tCO+mintD



Maintenant, la variante la plus rapide du passage des donnĂ©es est considĂ©rĂ©e ici et oĂč «max» Ă©tait «min».



Le moment de l'arrivée du front de clok est également envisagé dans une autre veine, comme le plus récent possible:

maxClockArrivalTime=LatchEdge+maxtCLKâ€Č



Il est important de noter que dans le cas de Hold Slack, les fronts Launch Edge et Latch Edge sont maintenant le mĂȘme front, plutĂŽt que deux fronts diffĂ©rents sĂ©parĂ©s par la pĂ©riode d'horloge. Le registre destinataire dans cette situation a besoin d'avoir le temps de conserver les donnĂ©es Ă  l'entrĂ©e pendant le temps de maintien Ă  partir de l'arrivĂ©e du front d'horloge. Mais les donnĂ©es sont modifiĂ©es Ă  leur entrĂ©e par le mĂȘme front, qui est venu ailleurs dans le registre source. Par consĂ©quent, dans l'analyse du jeu de rĂ©tention, la diffĂ©renceLatchEdge−LaunchEdgeĂ©gal Ă  zĂ©ro, pas la pĂ©riode.



Le temps requis dans ce cas est défini comme le temps pendant lequel les données ne doivent pas changer à l'entrée des données du destinataire, afin de ne pas rattraper le temps de maintien:

maxDataRequiredTime=maxClockArrivalTime+tH+CHU



Terme tH- cela nous est dĂ©jĂ  connu Tenez le temps, tenez le temps. Il est considĂ©rĂ© comme le mĂȘme pour chaque registre sur la puce et ne dĂ©pend pas de l'utilisateur.

TermeCHUEst-ce que l' horloge est incertaine , l'incertitude du temps de maintien. Il a en gĂ©nĂ©ral la mĂȘme signification que CSU, et en rĂšgle gĂ©nĂ©rale, il est pris comme Ă©gal.



Si, comme dans le cas de la marge prĂ©dĂ©finie, vous dĂ©veloppez les termes et les Ă©changez, alors l'expression de la marge de rĂ©tention peut ĂȘtre transformĂ©e sous la forme suivante:

minHoldSlack=mintD−maxtCS+tCO−tH−CHU

maxtCS=maxtCLKâ€Č−mintCLK





Un autre regard sur cette formule



Ci-dessus, une méthode de calcul des relances a été présentée, caractéristique de la compréhension humaine des processus en cours. Ici "le front arrive ...", "les données arrivent ...". Si cela vous intéresse, en complément, je vous dirai comment l'analyseur de contraintes de temps imagine ces calculs.



L'analyseur regroupe les termes diffĂ©remment, en fonction de ses raisons machine. Mais au final, cela aboutit au mĂȘme rĂ©sultat.

Il utilise les termes relation de configuration de l'horloge ( SR ) et relation de maintien de l' horloge ( HR ) - qui peuvent ĂȘtre traduits comme le rapport du temps entre les fronts de dĂ©clenchement pour le prĂ©rĂ©glage et le maintien, respectivement.

SR=SetupLatchEdge−SetupLaunchEdge−CSU

HR=HoldLatchEdge−HoldLaunchEdge+CHU



La figure 6 montre comment ces fronts sont liés:



image

Fig. 6. Fronts utilisés dans les calculs de mou.



Vous pouvez immédiatement convertir les expressions résultantes en une forme plus compréhensible:

SR=Period−CSU

HR=CHU



Le temps inter-registres le plus long (le plus grand r2r requis) est le temps maximum disponible pour que les données atteignent la destination avant le début de l'intervalle prédéfini:

Largest r2r Required=SR+mintCS–tCO–tSU



Le plus long délai inter-registres (délai r2r le plus long) est le temps nécessaire pour transférer les données du registre source vers le registre de destination le long du chemin le plus long:

Longest r2r Delay=maxtD



Nous pouvons maintenant définir le jeu prédéfini comme la différence entre le temps disponible pour atteindre le registre de destination et le temps réel pour y arriver:

minSetupSlack=Largest r2r Required–Longest r2r Delay



L'élargissement des termes de cette formule nous donnera la représentation familiÚre du jeu prédéfini:

minSetupSlack=Period−maxtD–CSU+mintCS–tSU–tCO



Maintenant sur le relùchement de la rétention. La plus petite exigence r2r est le temps nécessaire pour conserver les données à l'entrée du registre de destination:

Smallest r2r Required=HR+maxtCS–mintCO+tH



DĂ©lai inter-registres le plus court:

Shortest r2r Delay=tD



Maintenant, nous définissons la marge du préréglage comme la différence entre le temps le plus rapide pour que les données quittent l'entrée du récepteur et le temps qu'il faut pour les y conserver:

minHoldSlack=Shortest r2r Delay–Smallest r2r Required



En développant les termes, l'expression prend également la forme déjà familiÚre:

minHoldSlack=mintD−maxtCS+tCO−tH−CHU



Quelles conclusions peut-on tirer de formules ennuyeuses?



Nous avons vu comment les relances sont calculées. Comment utiliser ces connaissances?

Regardons Ă  nouveau les expressions lĂąches:

minSetupSlack=Period−maxtD–CSU+mintCS–tSU–tCO

minHoldSlack=mintD−maxtCS+tCO−tH−CHU



Si certains slacks du projet devenaient négatifs, alors nous pouvons les changer en changeant leurs termes. Autrement dit, nous voyons comment nous pouvons réparer les mauvais pantalons.



Nous voyons des termes qui ne dépendent pas de l'utilisateur, mais dépendent uniquement de la technologie du cristal. iltSU,tH,tCS,tCO... Il n'y a aucun moyen d'interférer.

Nous voyons les termes CSU et CHU, que l'analyseur prend généralement égal au paramÚtre CU - Incertitude d'horloge, l'instabilité de la fréquence d'horloge. D'une maniÚre générale, ce paramÚtre est petit, des dizaines de picosecondes. Il est spécifié par l'utilisateur dans le fichier de restrictions. Et l'utilisateur, à son tour, le prend à partir de la spécification du générateur d'horloge. On considÚre qu'un tampon d'horloge ou FPGA PLL interne, qui reçoit une horloge externe de l'oscillateur et la convertit en une horloge interne à l'entrée de l'horloge systÚme, conserve la valeur CU identique à celle reçue de l'oscillateur. Si CU n'est pas spécifié, l'analyseur le définira sur une valeur par défaut, par exemple, Quartus le définit sur 20 ps. Dans le cas général, ce terme nous indique qu'il est préférable d'utiliser des oscillateurs trÚs stables avec une petite instabilité pour la synchronisation. Les bons oscillateurs sont de l'ordre de 20 à 60 ps.



Le terme de période montre que la maniÚre évidente de lutter contre les erreurs de transmission de données est de réduire la fréquence d'horloge. C'est raisonnable, mais pas toujours acceptable, car les termes de référence exigent généralement des performances du systÚme au-dessous desquelles vous ne pouvez pas aller. Et les performances dépendent directement de la vitesse d'horloge. Nous pouvons également voir la différence entre les slacks préréglés et hold - le hold slack est indépendant de la fréquence.



Et enfin, le termetDcaractĂ©rise essentiellement l'efficacitĂ© du code Ă©crit. Par consĂ©quent, le principal moyen de rĂ©soudre les problĂšmes de relĂąchement est de le rĂ©Ă©crire correctement. Temps forttDapparaĂźt dans des conceptions matĂ©rielles trop complexes qui nĂ©cessitent trop de logique combinatoire. Si vous avez des constructions aussi complexes dans votre projet, la maniĂšre classique de rĂ©soudre le problĂšme consiste Ă  diviser un transfert r2r complexe en plusieurs transferts simples en insĂ©rant 1 Ă  2 autres registres dans la sĂ©quence d'opĂ©rations. Dans ce cas, le retard des cycles pour l'opĂ©ration augmentera, mais la vitesse de fonctionnement augmentera. Par exemple, l'ajout de plusieurs vecteurs dans un cycle d'horloge n'est pas une bonne idĂ©e. Il est prĂ©fĂ©rable d'ajouter plusieurs vecteurs Ă  tour de rĂŽle, avec des sommes intermĂ©diaires. Il peut ĂȘtre impossible de diviser certaines constructions complexes en un pipeline de plusieurs constructions simples - alors une telle logique doit ĂȘtre rĂ©Ă©crite d'une maniĂšre fondamentalement diffĂ©rente.



Conclusion



Le but de cet article est d'apprendre l'existence du concept de mou et de quoi dĂ©pend physiquement ce mou. Sachant cela, vous pouvez Ă©tudier indĂ©pendamment les rapports de l'analyseur de contraintes de temps, tirer des conclusions et dĂ©boguer les performances de votre projet. Ce sont des formules par lesquelles vous n'aurez presque jamais Ă  faire un vrai calcul. Vous n'avez mĂȘme pas besoin de vous en souvenir par cƓur. Il est seulement important de saisir la logique de ce qui se passe dans le transfert inter-registres et de comprendre quels facteurs dĂ©terminent la vitesse du projet.



All Articles