6.6.1 Fichiers de simulation
L'objectif des chiers de simulation (test benches) est la simulation des composants virtuels et la comparaison avec son prototype virtuel. La structure des chiers HDL de simulation est une hierarchie d'entites de simulation. L'entite la plus large est le test bench et contient a la fois la generation de stimuli et l'observation de la reponse du circuit. Il contient, comme indique sur la gure 6.11, cinq entites principales.
processus d’horloge
processus de simulation
processus de reset composant virtuel processus d’observation
fichier de stimuli fichier d’observation
test bench
Figure 6.11: Hierarchie d'entites de simulation.
le processus d'horloge genere un signal d'horloge qui alimente le composant et synchronise les autres processus,
le processus de reset, synchrone ou asynchrone, met le composant dans un etat connu et teste la reponse du circuit,
Flot d'integration d'une IP
133le processus de simulation genere les stimuli et les fournit au circuit en respectant le protocole d'interface. Pour rendre le test bench generique et independant des vecteurs de simulation choisis, le processus lit dans un chier externe l'ensemble des vecteurs de test. Il change egalement le format des donnees pour les rendre interpretables par le circuit et communique avec l'IP via son protocole,
le processus d'observation scrute les sorties du circuit pour recuperer les donnees et les stocke dans un chier externe correspondant aux stimuli du chier d'entree. Il peut egalement changer le format des donnees pour les rendre directement lisibles par le concepteur,
le composant virtuel enn est l'entree HDL a simuler. Il s'agit d'instancier un composant en connectant les processus precedents aux ports du circuits.
6.6.2 Generation de stimuli
La validation cherche a obtenir le
defaut zero
pour toutes les congurations possi-bles, et cela en un temps minimum. La qualite d'un bloc reutilisable est primordial pour la raison suivante: supposons qu'un circuit soit construit a partir de dix blocs reutilises dont la probabilite de bon fonctionnement soit de l'ordre de 95%. Alors, la probabilite de bon fonctionnement du circuit devient (0:9)10 = 60%. De plus, si chaque bloc aN entrees, il faut 10:2N tests, s'ils sont eectues individuellement, con-tre 210N s'ils sont faits en groupe. En conclusion, nous disons qu'il faut verier le plus s^urement possible les blocs elementaires avant de les assembler, et ceci reste valable pour les sous-blocs d'un bloc. La strategie de validation consiste donc a valider les sous-blocs de la macro avant de valider le bloc lui-m^eme.Les types de verication, obtenus par des outils de simulation, sont les suivants:
Test de conformite
: il verie que le bloc soit conforme avec la specication.
Test en coin
: il simule un ensemble de stimuli inhabituels pouvant mettre le bloc en diculte puisque le concepteur conna^it les points critiques de son IP.
Test aleatoire
: il detecte les erreurs que le concepteur ne soupconnait pas lors des tests speciques.
Test reel
: il place le bloc dans une application industrielle an de verier que la specication correspond bien aux attentes des utilisateurs.Le nombre de stimuli possible est excessivement important pour un decodeur de Reed-Solomon et inni pour un decodeur de Viterbi puisque la sequence en entree peut ^etre elle-m^eme innie. Pour le premier codec, en considerant un code de longueur
Flot d'integration d'une IP
134 possibles est: 2N:M. Si on ne considere que le motif d'erreur superpose sur un m^eme mot du code, il y a tout de m^eme:CPN:(2M
,1)P (6.1)
vecteurs d'erreur de poids P. Il faut s'assurer que les motifs d'erreur de poids inferieure ou egale aT sont corriges, ou inferieur ou egal a 2T si on considere egalement les eacements. A titre indicatif, un code (73, 53, 10) en totalise C10
73:280 = 7:5:1035. On realise donc les tests suivants:
test exhaustif: pour les petites instances, on genere tous les vecteurs possible. Par exemple, un code (7, 3, 2) sur GF(23) possede (23)7 = 221 = 2M vecteurs possibles pour une simulation exhaustive. Le test exhaustif est tres important: puisque le composant virtuel est parfaitement generique, il permet d'atteindre tous les chemins et les situations alors que ceux-ci n'etaient pas testables par un stimulus facilement identiable.
test de conformite: on genere un ensemble de mots, corrompus ou non, entrant dans le decodeur de maniere consecutive ou non, an de tester le protocole de communication, l'entree et la sortie des donnees ainsi que la fonctionnalite de tous les ports de sorties.
test en coin: on genere toutes les erreurs de poids 1, soit N:2M, pour verier que le decodeur peut atteindre toutes les positions et les amplitudes possibles. Pour chaque poids de l'erreur et pour un ensemble particulier d'amplitude, on applique toutes ou un maximum de positions possibles parmi CkT
N pour tester ainsi la generation du polyn^ome locateur d'erreur. Pour un motif d'erreur, on applique toutes ou un maximum d'amplitudes possibles: (2M,1)kT pour tester la generation du polyn^ome evaluateur d'erreur.
test aleatoire: on genere des motifs en rafale ou aleatoires de poids inferieur ou egal a T (ou 2T avec eacements) de positions et d'amplitudes aleatoires. On genere aussi des vecteurs quelconques depassant pour certain la capacite du code an de tester la detection d'echec de decodage.
Le programme de generation de ces stimuli accepte donc en entree: la denition du code, le type de test choisi, le type d'erreur (aleatoire ou en rafale), le poids maximal d'une erreur ainsi que le nombre de vecteurs desire.
6.6.3 Methode de simulation
Le test bench depend du circuit teste dans la mesure ou le format des donnees (di-mension du corps da Galois et polyn^ome primitif) depend du code correcteur d'erreur utilise. La generation du test bench est donc realisee automatiquement par le pro-gramme de personnalisation. L'ensemble du ot de simulation est le suivant: on
Flot d'integration d'une IP
135 generation automatiquement des stimuli pour former le chier en entree du processus de simulation, on cree le test bench associe au code a partir d'un chier generique en personnalisant les processus de simulation et d'observation, on analyse d'une instance, synthetisee ou non, du code considere jusqu'a atteindre la n du chier de simula-tion, on simulation du prototype virtuel en langage C du m^eme chier de simulasimula-tion, et on comparaison automatique des deux chiers d'observation et compte rendu des eventuelles divergences.Le schema ci-dessous illustre la methode de simulation totalement automatisee. Elle eectue la simulation et la comparaison d'un composant HDL et de son prototype virtuel.
stimuli
simulation prototype
definition du code et des stimuli
comparaisons
simulation HDL
génération des génération du test bench test bench personnalisé fichier d’observation HDL fichier d’observation virtuel fichier de stimuli
Figure 6.12: Methode de simulation.
6.6.4 Synthese et preuve
La simulation au niveau porte a ete autrefois la verication nale avant la fabrication d'un ASIC. Pour des circuits de quelques dizaines de milliers de portes, cette simula-tion n'est simplement pas faisable puisque m^eme avec des accelerateurs materiels, la vitesse n'est pas susante. De plus, il est souvent necessaire de repeter la simulation dans les cas nominaux, les meilleurs, ou les pires. A present, on eectue:
une verication formelle pour verier que la netlist synthetisee correspond a la description RTL synthetisable,
une insertion de scan qui complete les tests de fonctionnalite,
une analyse temporelle apres placement et routage pour verier que les con-traintes temporelles et la frequence d'horloge sont eectivement tenues.
Flot d'integration d'une IP
136 La preuve formelle utilise des techniques mathematiques pour prouver l'equivalence de deux representations du circuit. Il est donc inutile d'appliquer des vecteurs de test fonctionnels. Les circuits peuvent ^etre compares aussi longtemps qu'ils ont la m^eme fonctionnalite synchrone. Ils sont equivalents si la fonction est la m^eme pour les sorties et pour chaque point de memorisation.6.6.5 Placement et routage
Le placement et routage constitue a la fois une etape necessaire dans la conception de l'IP pour une future integration, mais aussi une validation de l'architecture generee. Les principaux objectifs sont: la minimisation de la surface de silicium, la tenue des contraintes temporelles (frequence d'horloge notamment), la minimisation des incer-titudes temporelles sur l'arbre d'horloge et de reset (skew) ainsi que la constitution d'un reseau d'alimentation pour prevenir les chutes de tension et l'electromigration.
L'apport du placement routage consiste a caracteriser les performances d'un bloc en tenant compte des contraintes physiques du routage: evitement des congestions et penalisations temporelles dues aux eets resistifs et capacitifs. Bien que la synthese puisse selectionner un modele d'interconnexion statistique dont les valeurs dependent de la surface, le probleme est qu'un placement routage specique ne conduit jamais aux predictions statistiques. Deux solutions ont ete envisagees dans le cas des codes correcteurs d'erreur:
d'abord on utilise un outil permettant de determiner la forme et la place des principaux blocs de l'IP (Design Planner). Il peut deduire du nombre de portes equivalentes une surface de silicium et surtout un modele d'interconnexion su-isamment predictif pour ^etre integre dans une etape de synthese, puisqu'il utilise la m^eme approche que l'outil nal de placement routage. Cette methode a ete choisie pour le bloc de Reed-Solomon.
la deuxieme solution, selectionnnee pour le bloc de Viterbi dont les perfor-mances temporelles sont critiques, consiste a realiser une realisation physique plus poussee qu'un pre-placement mais necessite un cycle plus long: la synthese fournit un chier de contraintes temporelles qui dirige le placement routage des cellules standards de telle sorte que les chemins critiques soient traites en priorite.
Dans une phase ulterieure, il faut construire un arbre d'horloge. Alors que la synthese ne tient pas compte du placement physique des points de memorisation, l'outil de routage realise des regroupements en fonction de leur position de telle sorte que l'arbre soit equilibre en minimisant le delai de propagation et le skew d'horloge. Notons enn qu'une optimisation en place IPO) permet de modier la puissance des portes et d'inserer des buers, et donc d'accro^itre les performances temporelles d'un
Flot d'integration d'une IP
137 circuit sans en modifer le placement initilal. Il n'est donc pas utile de reiterer tout le cycle de placement routage. On fournit en annexe un schema de placament e routage de l'IP Reed-Solomon.6.6.6 Prototypage
Les circuits de petites tailles, c'est-a-dire les codes correcteurs d'erreur de faibles capacites, sont prototypes sur un FPGA. Ils ont l'avantage d'^etre reprogrammables permettant une rapide reconguration pour la correction d'erreurs. Les FPGA sont tres appropries pour les petits circuits d'autant plus qu'ils rejoignent les performances des ASIC en nombre de portes et frequence d'horloge. L'etape de prototypage est en cours de realisation dans un projet conjoint entre Thomson TCS et le laboratoire CSI de l'INPG.