FR 2882601 A1 20060901 FR 0550521 A 20050225 EMULATION/SIMULATION D'UN CIRCUIT LOGIQUE La présente invention concerne l'émulation et la simulation du fonctionnement d'un circuit intégré en présence de perturbations susceptibles de modifier l'état du circuit. La présente invention concerne plus particulièrement les circuits intégrés comprenant des éléments logiques, par exemple des portes logiques combinatoires OU, ET, et des éléments de mémorisation synchrones tels que des registres de bascules, des mémoires statiques (SRAM), dynamiques (DRAM), non volatiles (OTP, FLASH ou autres). Quand un circuit intégré reçoit une perturbation externe, par exemple des radiations naturelles, une impulsion électrique est susceptible de se créer dans l'élément touché. Si l'élément touché est un élément logique, l'impulsion se propage ensuite à travers les éléments logiques suivants jusqu'à un ou plusieurs registres. Sur le coup d'horloge suivant la perturbation, les valeurs mémorisées dans ces registres peuvent présenter des erreurs. Si l'élément touché est un élément de mémorisation, la valeur qu'il contient peut être modifiée. Les circuits intégrés exécutent de façon générale une séquence de commandes pouvant être stockée dans une mémoire, ou fournie par un dispositif externe par l'intermédiaire des bornes d'entrée/sortie du circuit. Quand une perturbation arrive, les 2882601 2 valeurs contenues dans un ou plusieurs éléments de mémorisation peuvent être rendues incorrectes. Lors de l'exécution de commandes suivant l'incidence de la perturbation, le circuit peut retrouver un état normal correspondant à un état qu'il aurait eu en l'absence de perturbations. Toutefois, dans ce cas, le nombre de cycles nécessaires pour que le circuit retrouve un état normal est très variable. La figure 1 est un schéma d'un dispositif d'émulation connu utilisant un réseau logique programmable (de l'anglais FPGA, Field Programmable Gate Array). Le circuit émulé comprend deux circuits logiques synchrones 1 et 2 reliés à deux mémoires Meml et Mem2 par un bus 3. Les deux circuits logiques synchrones 1 et 2 sont représentés schématiquement sous la forme de blocs logiques combinatoires 10, 11 et 20 respectivement reliés aux entrées de données de registres 12, 13 et 21. Le bloc logique 10 reçoit des signaux externes. Les blocs logiques 11 et 20 reçoivent respectivement les données fournies par les registres 12 et 13. Le registre 21 fournit des signaux de sortie. Afin de pouvoir positionner les registres dans un état prédéterminé, les circuits 1 et 2 comprennent des multiplexeurs 14, 15 et 22 et des registres à décalage 16, 17 et 23 connectés respectivement aux registres 12, 13 et 21. Chaque multiplexeur reçoit sur des premières entrées les données issues d'un bloc logique et sur des secondes entrées les sorties d'un registre à décalage et relie les premières ou secondes entrées aux entrées de données d'un registre dont les sorties sont connectées à un registre à décalage. Chaque registre à décalage 16, 17 et 23 reçoit ou fournit des données série sur une borne d'accès respectivement 18, 19 et 24. Les données en mémoire peuvent être lues ou écrites par l'intermédiaire d'une borne d'accès 4 reliée au bus 3. En fonctionnement normal, les éléments de mémorisation du circuit sont mis dans un état initial adapté à une séquence de commandes devant être exécutée. Afin d'émuler le fonction- nement du circuit ayant reçu une perturbation, on met, préala- 2882601 3 blement à l'exécution de la séquence de commandes, le circuit dans un état Initial modifié en introduisant une ou plusieurs erreurs par rapport à l'état initial normal. Les valeurs que les registres 12, 13, 21 doivent contenir dans:L'état initial modifié, sont introduites en série dans les registres à décalage 16, 17, 23, au rythme d'une horloge, puis écrites dans les registres 12, 13, 21 en parallèle sur un coup d'horloge. De même, on écrit les unes après les autres, les valeurs que doivent contenir chacune des mémoires. Le circuit exécute ensuite la séquence de commandes. A la fin de l'exécution, les données mémorisées dans les registres 12, 13, 21 sont écrites en parallèle dans les registres à décalage 16, 17, 23 et fournies en série pour analyse. On réalise de même une lecture des valeurs contenues dans les mémoires Meml et Mem2. Un inconvénient de ce circuit d'émulation classique est que, chaque fois que l'on veut effectuer un test, on déroule une séquence complète de commandes et ce n'est qu'à la fin de l'exécution de cette séquence de commandes que l'on peut savoir, en lisant de façon série le contenu des registres 16, 17 et 23, et des mémoires Meml et Mem2 si des erreurs subsistent ou si le circuit a retrouvé un état normal. La présente invention vise à permettre simplement d'interrompre un test dès que l'on s'aperçoit qu'il n'existe plus d'erreurs dans le circuit après l'exécution d'une commande de la séquence de commandes en cours. Pour atteindre cet objet, la présente invention prévoit de comparer de façon parallèle et durant l'exécution de la séquence de commandes, le contenu des registres d'un circuit dans lequel on a injecté une erreur au contenu de registres contenant le résultat qui serait fourni par un circuit exempt d'erreurs exécutant en parallèle la même séquence de commandes. On notera que ceci ne serait pas possible avec les circuits émulés de l'art antérieur étant donné que, si l'on voulait, après chaque commande déterminer si les registres contiennent ou non une erreur, il faudrait lire ces registres 2882601 4 après chaque commande sous forme série. En fait, le nombre de borne d'accès au circuit émulé étant limité, les registres à décalage doivent contenir couramment entre une centaine et un millier de registres élémentaires d'un bit. Le temps de lecture en série des registres à décalage étant proportionnel au nombre de registres élémentaires à lire, et le temps de lecture des mémoires étant sensiblement proportionnel à leur taille, la durée de lecture peut devenir très longue. Si on réalisait une lecture après chaque commande, dans la majorité des cas, on arriverait à un temps d'exécution extrêmement long et prohibitif. Lors de la simulation d'un circuit, il est possible de demander au simulateur d'indiquer après chaque cycle quelles sont les valeurs contenues dans les registres et les mémoires et de les comparer aux valeurs normales qu'ils devraient contenir si le circuit n'était pas perturbé. Cependant, le fait de "sortir" les valeurs après chaque cycle ralentit énormément la simulation du circuit. De façon plus particulière, la présente invention prévoit un procédé d'émulation ou de simulation du fonction- nement en présence de perturbations d'un circuit susceptible d'exécuter une séquence de commandes, le circuit comportant des éléments logiques et des premiers éléments de mémorisation, le procédé comprenant les étapes suivantes: mettre le circuit dans un état incorrect, dans lequel la valeur d'au moins un élément de mémorisation est modifiée par rapport à un état correct du circuit; lancer l'exécution d'une séquence de commandes; fournir dans des seconds éléments de mémorisation, les valeurs normales que contiendraient les premiers éléments de mémorisa- tion après l'exécution de chaque commande si le circuit avait été mis dans l'état correct; comparer après chaque commande exécutée et au moyen de comparateurs activés simultanément, toutes les valeurs contenues dans les premiers et seconds éléments de mémorisation; et arrêter l'exécution des commandes 2882601 5 si les valeurs contenues dans les premiers et seconds éléments de mémorisation deviennent identiques. La présente invention prévoit en outre un dispositif d'émulation du fonctionnement en présence de perturbations d'un circuit susceptible d'exécuter une séquence de commandes, le dispositif comprenant: un circuit test identique audit circuit et comportant des éléments logiques et des premiers éléments de mémorisation; des moyens pour mettre le circuit dans un état incorrect dans lequel la valeur d'au moins un premier élément de mémorisation est modifiée par rapport à un état correct du circuit; des moyens pour lancer l'exécution d'une séquence de commandes; des seconds éléments de mémorisation chargés par les valeurs normales que contiendraient les premiers éléments de mémorisation après chaque commande si le circuit avait été dans l'état correct avant l'exécution des commandes; des comparateurs pour établir après chaque commande exécutée si les valeurs contenues dans les premiers et seconds éléments de mémorisation diffèrent; et des moyens d'interruption cotiunandés par lesdits comparateurs. Selon une variante du dispositif précédemment décrit, le dispositif comprend un second circuit identique audit circuit test, les seconds éléments de mémorisation étant les éléments de mémorisation du second circuit, et comprend des moyens pour mettre le second circuit dans un état correct, lesdits moyens pour lancer l'exécution d'une séquence de commandes agissant sur les deux circuits. Selon une variante du dispositif précédemment décrit, les premiers éléments de mémorisation comprennent des registres placés entre les éléments logiques. Selon une variante du dispositif précédemment décrit, les premiers éléments de mémorisation dudit circuit test comprennent au moins une mémoire mémorisant des mots de données constitués chacun d'au moins un bit. 2882601 6 Selon une variante du dispositif précédemment décrit, certains ou tous les comparateurs comparent le contenu des registres de chacun des circuits. Selon une variante du dispositif précédemment décrit, le dispositif comprend pour chaque mémoire dudit circuit test, un moyen de mémorisation supplémentaire comportant un bit d'erreur pour chaque adresse de la mémoire, un ou plusieurs comparateurs analysant les signaux adressés à une mémoire donnée dudit circuit test et les signaux adressés à la mémoire du second circuit identique à la mémoire donnée, afin d'activer ou de désactiver un bit d'erreur à une adresse déterminée lorsqu'une différence entre les mots de données mémorisés dans les deux mémoires à cette adresse déterminée apparaît ou disparaît, un circuit de détection d'erreur indiquant aux moyens d'interruption si au moins un bit d'erreur est activé. Selon une variante du dispositif précédemment décrit, le dispositif comprend pour chaque mémoire dudit circuit test, une mémoire à adressage par le contenu constituée de mots prévus pour mémoriser chacun au moins une adresse et un bit d'erreur, un ou plusieurs comparateurs analysant les signaux adressés à une mémoire donnée dudit circuit test et les signaux adressés à la mémoire du second circuit identique à la mémoire donnée afin de détecter l'apparition ou la disparition d'une erreur consistant en une différence entre les mots de données mémorisés dans les deux mémoires à une adresse déterminée, l'apparition d'une erreur entraînant un relevé de l'adresse déterminée dans un mot de la mémoire à adressage par le contenu associée à la mémoire considérée, et une activation du bit d'erreur de ce mot, la disparition d'une erreur entraînant la désactivation du bit d'erreur du mot mémorisant l'adresse déterminée, un circuit de détection d'erreur indiquant aux moyens d'interruption si au moins un bit d'erreur est activé. Selon une variante du dispositif précédemment décrit, une mémoire dudit circuit test est une mémoire virtuelle remplacée par l'association d'une mémoire à adressage par le contenu CAM et 2882601 7 d'un dispositif pilote relié audit circuit test et à la mémoire "associée" du second circuit correspondant à la mémoire virtuelle, un mot de la mémoire CAM étant prévu pour mémoriser au moins un mot de données, une adresse et un bit d'erreur, seuls les mots de la mémoire virtuelle qui diffèrent des mots de la mémoire associée étant mémorisés avec leurs adresses dans un mot de la mémoire CAM en activant son bit d'erreur, la lecture d'un mot de données dans la mémoire virtuelle à une adresse donnée consistant pour le dispositif pilote à regarder si un mot de données erroné correspondant à l'adresse donnée est mémorisé dans un mot de la mémoire CAM dont le bit d'erreur est activé et dans le cas contraire à demander une lecture à cette adresse dans la mémoire associée, l'écriture d'un mot dans la mémoire virtuelle à une adresse donnée consistant pour le dispositif pilote à comparer ce mot au mot écrit à l'adresse donnée dans la mémoire associée, et en cas de différence à mémoriser ce mot dans un mot de la mémoire CAM en activant son bit d'erreur, le dispositif pilote détectant les différences entre les signaux échangés entre la mémoire associée et le second circuit et les signaux échangés entre la mémoire virtuelle et le circuit test afin de relever les situations qui conduisent à des différences entre les mots de données mémorisés dans la mémoire virtuelle et ceux mémorisés dans la mémoire associée, les mots de données erronés de la mémoire virtuelle étant mémorisés dans des mots de la mémoire CAM en activant leurs bits d'erreur. Selon une variante du dispositif précédemment décrit, le dispositif comprend pour chaque mémoire dudit circuit test, une mémoire identique dite d'initialisation comprenant les valeurs correctes des mémoires du circuit test correspondant à l'état initial du circuit test avant l'exécution d'une séquence de commandes, et comprenant pour chaque mémoire du circuit test et du second circuit, un moyen de mémorisation supplémentaire comportant un bit de validation pour chaque adresse de la mémoire correspondante, et dans lequel un mot lu par le circuit É35 test ou le second circuit à une adresse donnée d'une mémoire 2882601 8 provient soit de la mémoire d'initialisation quand le bit de validation correspondant à cette adresse est non activé, soit de cette mémoire quand le bit de validation correspondant à cette adresse est activé suite à une écriture précédente à cette adresse lors de l'exécution de la séquence de commandes. Selon une variante du dispositif précédemment décrit, les mémoires du circuit test et leurs mémoires associées du second circuit sont des mémoires virtuelles remplacées chacune par l'association d'une mémoire à adressage par le contenu CAM et d'un dispositif pilote relié à la mémoire d'initialisation, au circuit test et au second circuit, les mots des mémoires CAM étant prévus pour mémoriser chacun un mot de données, une adresse, un bit de validation et dans le cas des mémoires CAM remplaçant les mémoires du circuit test, un bit d'erreur, un mot de données et son adresse d'écriture dans une mémoire virtuelle étant mémorisés dans un mot de la mémoire CAM remplaçant cette mémoire virtuelle en activant son bit de validation, un mot de données fourni lors d'une lecture d'une mémoire virtuelle à une adresse donnée, provenant de la mémoire CAM remplaçant cette mémoire virtuelle ou de la mémoire d'initialisation selon que l'adresse donnée est ou non mémorisée dans un mot de la mémoire CAM ayant un bit de validation activé, les mots de données erronés d'une mémoire du circuit test étant mémorisés dans des mots de la mémoire CAM remplaçant cette mémoire en activant leurs bits de validation et d'erreur. Selon une variante du dispositif précédemment décrit, le circuit test, le second circuit et les comparateurs sont des éléments physiques pouvant être réalisés dans un réseau logique programmable. La présente invention prévoit en outre un fichier informatique comprenant une description d'un dispositif précédemment décrit, et destiné à être simulé par un simulateur informatique de circuit afin d'exécuter ladite séquence de commandes. 2882601 9 Ces objets, caractéristiques et avantages, ainsi que d'autres de la présente invention seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles: la figure 1 est un schéma, précédemment décrit, d'un circuit logique émulé selon l'art antérieur; la figure 2 est un schéma d'un dispositif d'émulation selon la présente invention; la figure 3 est un schéma plus détaillé du circuit comparateur du dispositif de la figure 2; la figure 4 est un schéma de mémorisation/détection des erreurs selon un mode de réalisation de la présente invention; la figure 5 est un schéma d'une mémoire CAM utilisée dans un mode de réalisation de la présente invention; et la figure 6 est un schéma d'une variante de réalisation du dispositif d'émulation de la présente invention. Dans une première partie, on décrira la structure et le fonctionnement des éléments de base du dispositif d'émulation de la présente invention. Dans une deuxième partie, on décrira des variantes de mémorisation et de détection des erreurs en mémoire. Dans une troisième partie, on décrira un moyen de 25 réduire la taille du dispositif d'émulation. Dans une quatrième partie, on décrira un moyen de restitution rapide des erreurs présentes dans une mémoire du circuit testé. Dans une cinquième partie, on décrira des moyens permettant d'accélérer la phase d'initialisation des mémoires du circuit testé préalablement à l'exécution d'une nouvelle séquence de commandes. Dans une sixième partie, on décrira un moyen de réduire la taille du dispositif d'émulation et d'accélérer la 2882601 10 phase d'initialisation du circuit préalablement à l'exécution d'une nouvelle séquence de commandes. 1. Eléments de base du dispositif d'émulation 1.1 Structure générale La figure 2 est un schéma d'un dispositif d'émulation 100 selon la présente invention. Le dispositif d'émulation comprend une plateforme de test 101 et des éléments de commande et d'analyse logiciels. La plateforme de test 101 comprend un ensemble de circuits logiques et des mémoires réalisés dans un réseau logique programmable 101 (de l'anglais FPGA, Field Programmable Gate Array). Plus précisément, la plateforme de test 101 comprend deux circuits logiques EC et CC identiques reliés chacun à une mémoire respectivement EMem et CMem. Les circuits EC et CC sont réalisés à partir d'une description fonctionnelle, par exemple de type RTL (de l'anglais Register Transfert Level), d'un circuit dont on souhaite connaître le fonctionnement quand il est soumis à une perturbation. Chaque circuit logique EC et CC est représenté schématiquement, comme en figure 1, sous la forme de blocs logiques combinatoires intercalés entre des registres. A chaque registre est associé un registre à décalage et un multiplexeur permettant de charger et éventuellement de décharger en série le registre. A titre d'exemple, les circuits EC et CC comprennent chacun trois blocs logiques respectivement LEI, LE2, LE3 et LC1, LC2, LC3, reliés à trois registres respectivement RE1, RE2, RE3 et RCi, RC2, RC3 commandés par une horloge CLK. Les sorties de données d'un registre REi ou RCi, i étant compris entre 1 et 3, sont reliées aux entrées de données d'un registre à décalage RDEi ou RDCi. Les données issues d'un bloc logique LEi ou Lci arrivent sur des premières entrées d'un multiplexeur MEi ou M. Chaque multiplexeur MEi ou MCi reçoit sur des secondes entrées, les sorties de données du registre à décalage RDEi ou RDCi. Les sorties de chaque multiplexeur MEi ou MCi sont reliées aux entrées de données du registre REi ou RCi- Le circuit logique EC est relié à un dispositif d'écriture 102, et le circuit logique CC est relié à un dispositif d'écriture 103. Les dispositifs 102 et 103 font partie du logiciel du dispositif d'émulation et sont éventuellement réalisés sous forme logicielle. Le dispositif d'écriture 102 est relié aux registres à décalage RDE1, RDE2, RDE3 par l'intermédiaire respectivement de trois bornes d'accès BEI, BE2 et BE3-Le circuit d'écriture série 103 est relié aux registres à décalage RDC1, RDC2, RDC3 par trois bornes d'accès BC1, BC2 et BC3. De même, la mémoire EMem est reliée au dispositif d'écriture 102 par l'intermédiaire d'une borne d'accès BE5. La mémoire CMem est reliée au dispositif d'écriture 103 par l'intermédiaire d'une borne d'accès BCS. De plus, selon l'invention, le circuit 101 comprend des comparateurs CI, C2 et C3. Chaque comparateur Ci reçoit et compare deux à deux l'ensemble des sorties de données des registres REi et RCi. Une porte OU 106 reçoit chacune des sorties des comparateurs CI, C2 et C3 et indique si au moins un des bits de l'ensemble des registres des circuits CC et EC diffère. La sortie de la porte OU 106 est reliée à un dispositif de détection 107 par l'intermédiaire d'une borne d'accès B6. De plus, un circuit de comparaison (COMP) 110 compare les signaux d'adresse, de données et de commande envoyés par les circuits CC et EC respectivement aux mémoires CMem et EMem. La mémoire EMem contient des bits de mémorisation supplémentaires par rapport à la mémoire CMem. A chaque adresse de la mémoire EMem est associé un bit d'erreur E. Le circuit de comparaison 110 est relié à un compteur (COUNP) 111 dont la sortie est reliée au dispositif de détection 107 par l'intermédiaire d'une borne d'accès B7. Le dispositif de détection est de préférence un élément du logiciel du dispositif d'émulation. Un dispositif de commande 104 faisant partie du logiciel du dispositif d'émulation, est relié aux entrées des blocs logiques LEI et LC1 par l'intermédiaire de deux bornes d'accès respectivement BE4 et BC4-2882601 12 Durant une phase d'initialisation, le circuit CC, dit "circuit correct", et sa mémoire CMem sont positionnés dans un état initial dit normal préalablement à l'exécution d'une séquence de commandes. Les valeurs que doivent contenir les registres RC1 à RC3 dans l'état initial normal, sont fournies en série par le dispositif d'écriture 103 aux registres à décalage RDCl à RDC3 au rythme d'une horloge CLKS. Les multiplexeurs MCi à MC3 sont ensuite positionnés de façon à charger dans les registres RC1 à RC3, les valeurs écrites dans les registres RDC1 à RDC3, en un coup d'horloge CLK. De même, les valeurs initiales normales que doit contenir la mémoire CMem sont fournies les unes après les autres par le dispositif d'écriture 103 et écrites dans la mémoire CMem. Simultanément, le circuit EC dit "circuit d'erreur" est mis dans un état initial modifié pour lequel une ou plusieurs valeurs mémorisées dans les registres RE1 à RE3 et dans la mémoire EMem sont modifiées par rapport aux valeurs à l'état initial normal des registres RC1 à RC3 et de la mémoire CMem. On notera que dans le cas où l'on peut disposer d'un grand nombre de bornes d'accès entre la plateforme de test 101 et les éléments de commande et d'analyse logiciels, on peut prévoir de charger directement les registres RE1 à RE3 et RC1 à RC3 sans utiliser de registres à décalage RDE1 à RDE3 et Cl RDà RDC3- Pendant la phase d'émulation, chaque circuit CC et EC reçoit de la part du dispositif de commande 104 des commandes similaires. Le dispositif de commande 104 peut par exemple activer un signal d'initialisation d'une séquence d'instructions mémorisée dans chacune des mémoires CMem et EMem. Ce sera par exemple le cas quand le circuit émulé est un microprocesseur, un microcontrôleur ou tout autre dispositif prévu pour exécuter une séquence d'instructions mémorisée. Le dispositif de commande 104 peut aussi fournir directement une succession de commandes que les circuits CC et EC exécutent au rythme de l'horloge CLK. Dans ce cas, le circuit émulé peut par exemple être un circuit 2882601 13 d'interface, un additionneur ou n'importe quel circuit réalisant une fonction donnée sur commande de signaux externes. Durant la phase d'émulation, quand une donnée incorrecte a été écrite à une adresse de la mémoire EMem, le circuit de comparaison 110 positionne le bit d'erreur E associé à cette adresse à une valeur donnée, par exemple "1". Chaque fois qu'un nouveau bit d'erreur E est positionné à 1, le circuit de comparaison incrémente le compteur 111. Dans le cas où une erreur est initialement introduite dans la mémoire EMem, le bit d'erreur E correspondant à l'adresse des valeurs erronées est positionné à 1. Lors de l'exécution de la séquence de commandes, il est possible qu'une écriture vienne modifier les valeurs contenues à une adresse dont le bit d'erreur est à 1. Dans le cas uniquement où les valeurs écrites sont correctes, le circuit de comparaison 110 remet le bit d'erreur E correspondant à 0 et décrémente le compteur 111. Le dispositif de détection 107 a pour fonction de surveiller les comparateurs Cl à C3 et le compteur 111. Quand le compteur 111 et les comparateurs Cl à C3 sont tous à 0, ce qui signifie que l'erreur introduite a disparu après l'exécution d'un certain nombre de commandes, le dispositif de détection 107 demande l'arrêt de l'exécution des commandes et le dispositif d'émulation est disponible pour un nouveau test. Eventuellement, on relève le nombre de cycles d'horloge CLK exécutés préalable- ment à l'arrêt de la séquence de commandes. On pourra aussi prévoir d'arrêter l'exécution des commandes lorsque des erreurs subsistent après un nombre prédéterminé de cycles d'horloge CLK exécutés. Lors de chaque test, le circuit CC est positionné dans un état initial choisi, et le circuit EC est positionné dans un état initial modifié par rapport à l'état initial choisi. Le choix de l'état initial et de la séquence de commande exécutée dépend du circuit analysé. Dans le cas où le circuit analysé est un circuit effectuant une séquence de commandes déterminée, on choisira bien évidemment d'effectuer cette séquence de commandes. 2882601 14 Dans le cas où le circuit analysé est un circuit générique pouvant exécuter toutes sortes de programmes, on pourra utiliser des séquences de commandes aléatoires. De plus, on pourra prévoir d'analyser pendant l'exécu- tion de la séquence de commandes certains signaux de sortie ayant une fonction importante afin de savoir si le circuit peut quand il est soumis à une perturbation avoir des signaux de sortie qui présentent un comportement dangereux. Un avantage du dispositif d'émulation de la présente invention est qu'il permet par rapport au dispositif d'émulation connu de réaliser en un temps donné, davantage de simulations différentes. En effet, chaque test est arrêté dès que l'on constate que les erreurs introduites ont disparu. 1.2 Exemple de réalisation du circuit de comparaison La figure 3 est un schéma plus détaillé d'un exemple des signaux échangés entre les circuits logiques CC et EC, les mémoires CMem et EMem et le circuit de comparaison 110. Les circuits CC et EC fournissent des signaux de commande d'écriture/lecture respectivement WRc et WRE, des signaux d'adresse respectivement @C et @E et des signaux de sélection de la mémoire CSç' et CSE. Les circuits CC et EC fournissent ou reçoivent des signaux de données dC et dE qui sont écrites, ou lues dans les mémoires CMem et EMem. Le circuit de comparaison 110 reçoit les signaux de commande d'écriture/lecture WRE, WRC, les signaux d'adresses @E et @C, les signaux de sélection CSC et CSE et les signaux de données dE et dC. Six commutateurs 120, 121, 122, 123, 124 et 125 permettent que les signaux d'adresse @E, @C, les signaux de commande WRE et WR.0 et les signaux de sélection CSC et CSE fournis aux mémoires CMem et EMem soient commandés par le circuit de comparaison 110 et non par les circuits logiques CC et EC. Lorsque le signal CSE (CSC) est actif, la mémoire EMem (CMem) fournit des données sur le signal de données dE (de) quand le signal WRE (WRC) commande une lecture à une adresse indiquée par le signal d'adresse @E. Aucune donnée n'est écrite 2882601 15 sur le signal dE (de) quand le signal CSE (CSC) est inactif. Quand le signal WRE (WRC) commande une écriture à une adresse @E (@C), la mémoire EMem (CMem) l'effectue uniquement si le signal CSE (CSC) est actif. Quand le circuit de comparaison 110 souhaite lire ou écrire une donnée à une adresse donnée de la mémoire EMem, il pilote les commutateurs 120, 121 et 125 afin de pouvoir commander les signaux @E, WRE et CSE. De même, lorsque le circuit de comparaison 110 souhaite lire une donnée à une adresse donnée de la mémoire CMem, il pilote les commutateurs 122, 123 et 124 afin de pouvoir commander les signaux @C, WRC et CSC. Le circuit de comparaison 110 pilote les commutateurs 120, 121 et 125 de façon à accéder aux signaux @E, WRE et CSE lorsqu'il souhaite lire ou écrire un bit d'erreur E. La différence entre la lecture/écriture d'un bit d'erreur E et une donnée est éventuellement indiquée au moyen d'un signal non représenté. Préalablement à l'exécution d'une commande par les circuits EC et CC, le circuit de comparaison 110 commande les commutateurs 120 à 125 afin qu'ils relient les mémoires CMem et EMem aux circuits CC et EC. Pendant l'exécution de la commande, le circuit de comparaison 110 analyse les signaux émis par les circuits CC et EC et effectue différentes actions décrites ci- après. 1.2.1 Signaux de sélection CSC et CSE actifs Quand le circuit EC commande une écriture et le circuit CC commande une lecture par le biais des signaux de commande d'écriture/lecture WRE et WRC, il est peu probable que les données écrites dans la mémoire EMem à l'adresse @E soient identiques aux données actuellement mémorisées dans la mémoire CMem à l'adresse @E. Le circuit de comparaison 110 interrompt la séquence de commandes exécutée par les circuits CC et EC. Selon une version simplifiée du circuit de comparaison 110, le circuit de comparaison 110 pilote les commutateurs 120 2882601 16 et 121 afin de lire le bit d'erreur E correspondant à l'adresse @E. Si le bit d'erreur est égal à 0, il le positionne à "1" et il incrémente le compteur 111. Selon une version plus perfectionnée du circuit de comparaison 110, le circuit de comparaison 110 pilote les commutateurs 122 et 123 afin d'effectuer une lecture de la mémoire CMem à l'adresse @E. Dans le cas où les adresses @E et @C sont identiques, cette lecture peut ne pas être effectuée. Les données lues sont comparées aux données écrites dans la mémoire EMem à l'adresse @E. En parallèle ou à la suite, le circuit de comparaison 110 effectue une lecture du bit E correspondant à l'adresse @E en pilotant les commutateurs 120 et 121 afin de pouvoir lire dans la mémoire EMem. L'action effectuée ensuite par le circuit de comparaison est fonction de la différence ou non des données et de la valeur du bit E lu à l'adresse @E. Dans le cas où les données diffèrent et où le bit E lu à l'adresse @E est nul, la nouvelle erreur est relevée en positionnant à "1" le bit E à l'adresse @E et en incrémentant le compteur 111. Dans le cas où les données sont identiques et où le bit E lu à d'adresse @E est positionné à "1", il n'y a plus d'erreurs à l'adresse @E. Le bit E est alors positionné à "0" et le compteur 111 est décrémenté. Dans les autres cas, le circuit de comparaison 110 n'effectue pas de modification du bit E ni d'incrémentation ou de décrémentation du compteur 111. Les actions possibles sont résumées dans le tableau (1) suivant. 2882601 17 Données Valeur du Action différentes ? bit E lu à l'adresse @E Oui 0 Incrémentation du compteur 111 et positionnement à 1 du bit E à l'adresse @E Oui 1 Aucune Non 0 Aucune Non 1 Décrémentation du compteur 111 et positionnement à 0 du bit E à l'adresse @E Une fois que le circuit de comparaison 110 a effectué l'ensemble de ces opérations, l'exécution de la séquence de commandes reprend. Quand le circuit EC commande une lecture et le circuit CC commande une écriture par le biais des signaux d'écriture/ lecture WRE et WRC, il est là aussi peu probable que les données écrites dans la mémoire CMem à l'adresse @C soient identiques à celles actuellement mémorisées dans la mémoire EMem à l'adresse @C. Le circuit de comparaison 110 interrompt la séquence de commandes exécutée par les circuits CC et EC. Selon une version simplifiée du circuit de comparaison 110, le circuit de comparaison 110 pilote les commutateurs 120 et 121 afin de lire le bit d'erreur E correspondant à l'adresse @C. Si ce bit est égal à 0, il le positionne à "1" et il incrémente le compteur 111. Selon une version plus perfectionnée du circuit de comparaison 110, le circuit de comparaison 110 pilote les commutateurs 120 et 121 afin d'effectuer une lecture de la mémoire EMem à l'adresse @C. Dans le cas où les adresses @E et @C sont identiques, cette lecture peut ne pas être effectuée. Les données lues sont comparées aux données écrites dans la mémoire CMem à l'adresse @C. Le circuit de comparaison 110 effectue une lecture du bit E correspondant à l'adresse @C. Les 2882601 18 actions possibles du circuit de comparaison sont résumées dans le tableau (2) suivant. Données Valeur du Action différentes ? bit E lu à l'adresse @C Oui 0 Incrémentation du compteur 111 et positionnement à 1 du bit E à l'adresse @C Oui 1 Aucune Non 0 Aucune Non 1 Décrémentation du compteur 111 et positionnement à 0 du bit E à l'adresse @C Quand les circuits EC et CC commandent tous les deux une écriture, il est nécessaire de comparer les adresses @E et @C ainsi que les données dE et dC. Comme précédemment, le circuit de comparaison 110 interrompt la séquence de commandes exécutée et pilote si nécessaire les commutateurs 120 à 123. Dans le cas où les adresses sont identiques, les opérations effectuées par le circuit de comparaison sont plus simples et moins nombreuses. Dans une version simplifiée, le circuit de comparaison 110 positionne à "1" le bit d'erreur E correspondant à l'adresse @E si les données sont différentes et il incrémente le compteur 111. Dans une version plus perfec- tionnée, le circuit de comparaison effectue une lecture du bit E correspondant à l'adresse @E. Dans le cas où les données diffèrent et où le bit E lu à l'adresse @E est nul, la nouvelle erreur est relevée en positionnant à "1" le bit E et en incrémentant le compteur 111. Dans le cas où les données sont identiques et où le bit E lu à d'adresse @E est positionné à "1", il n'y a plus d'erreurs à l'adresse @E. Le bit E est alors positionné à "0" et le compteur 111 est décrémenté. Dans les autres cas, le circuit de comparaison 110 n'effectue pas de 2882601 19 modification du bit E, ni d'incrémentation ou de décrémentation du compteur 111. Dans le cas où les adresses diffèrent, il est peu probable que les données dC écrites à l'adresse @C dans la mémoire CMem soient identiques aux données présentes dans la mémoire EMem à l'adresse @C. De même, il est peu probable que les données dE écrites à l'adresse @E dans la mémoire EMem soient identiques aux données présentes dans la mémoire CMem à l'adresse @E. Dans une version simplifiée du circuit de comparaison 110, les bits d'erreur E correspondant aux adresses @E et @C sont positionnés à 1. Dans une version plus perfectionnée du circuit de comparaison 110, le circuit de comparaison 110 lit les données présentes à l'adresse @C dans la mémoire EMem. Le circuit de comparaison lit le bit E correspondant à l'adresse @C. Les actions possibles du circuit de comparaison 110 sont résumées dans le tableau (2) susmentionné. De façon similaire, le circuit de comparaison 110 lit les données présentes à l'adresse @E dans la mémoire CMem et effectue une lecture du bit E correspondant à l'adresse @E. Les actions possibles du circuit de comparaison 110 sont résumées dans le tableau (1). Quand les circuits EC et CC commandent tous les deux une lecture, le circuit de comparaison n'intervient pas et la séquence de commandes exécutée n'est pas interrompue. 1.2.2 Au moins un signal de sélection CSC et CSE est inactif Dans le cas où les deux signaux CSC et CSE sont inactifs, les deux mémoires CMem et EMem sont inactives. Aucune écriture ni lecture ne peut être effectuée. Le circuit de comparaison 110 est inactif. Dans le cas où le signal CSC est actif et le signal CSE inactif, la mémoire CMem peut être écrite ou lue. La mémoire EMem est inactive. Une différence entre les deux mémoires peut être introduite ou éventuellement supprimée lorsque le circuit CC effectue une écriture dans la mémoire CMem à l'adresse @C. Dans ce cas, le circuit de comparaison 110 arrête l'exécution de 2882601 20 la séquence de commandes et pilote les commutateurs 120, 121 et 125 afin d'accéder à la mémoire EMem. Le circuit de comparaison 110 modifie l'état du signal de sélection CSE de façon à rendre active la mémoire EMem. Dans une version simplifiée du circuit de comparaison, le bit d'erreur E correspondant à l'adresse @C est positionné à 1. Dans une version plus perfectionnée du circuit de comparaison 110, le circuit de comparaison 110 lit les données présentes à l'adresse @C dans la mémoire EMem. Les données lues sont comparées aux données écrites dans la mémoire CMem à l'adresse @C. Le circuit de comparaison effectue une lecture du bit E correspondant à l'adresse @C. Les actions possibles du circuit de comparaison 110 sont résumées dans le tableau (2). Dans le cas où le signal CSE est actif et le signal CSC inactif, une suite d'étapes similaire à celle décrite ci-dessus est mise en oeuvre lorsque le circuit effectue une écriture dans la mémoire EMem, le rôle des mémoires étant inversé. Les actions possibles du circuit de comparaison 110 sont résumées dans le tableau (1). Dans la suite de la description, on considérera uniquement les cas où les signaux de sélection CSE et CSC sont actifs. L'homme de l'art saura aisément définir le fonctionnement des divers éléments du dispositif d'émulation en fonction de l'activation ou non des signaux de sélection CSE et CSC. 2. Variantes de mémorisation/détection des erreurs en mémoire 2.1 Variante de détection Dans un mode de réalisation du dispositif d'émulation de la présente invention, le compteur 111 est supprimé. Une simple porte OU recevant chacun des bits d'erreur E est reliée au dispositif de détection 107. L'utilisation d'une porte OU simplifie le fonctionne- ment du circuit de comparaison 110 précédemment décrit car il n'est plus nécessaire de fournir une commande d'incrémentation ou de décrémentation du compteur 111. Le circuit de comparaison 110 effectue par contre toutes les autres opérations décrites 2882601 21 ci-dessus pour chacun des cas. Lorsqu'une écriture est réalisée dans une ou plusieurs mémoires, on effectue une comparaison entre les données écrites dans une mémoire à une adresse donnée et les données présentes dans l'autre mémoire à cette même adresse. Si les données sont différentes, on positionne le bit E à un sinon à zéro. La porte OU donne les informations minimales à savoir, s'il reste ou non des erreurs en mémoire. 2.2 Mémoire dédiée à la mémorisation des erreurs La mémorisation des bits d'erreur E peut être 10 effectuée dans une mémoire spécifique, indépendante de la mémoire EMem. 2.2.1 Mémoire standard adaptée La figure 4 est un exemple de mémoire dédiée à la mémorisation des erreurs comprenant un décodeur d'adresse DECODER 130 permettant de sélectionner un bit d'erreur E particulier dans une mémoire de bits d'erreur 131. La mémoire 131 peut être fabriquée spécifiquement ou être réalisée dans un réseau logique programmable. Chacun des bits d'erreur de la mémoire 131 est connecté à une entrée d'une porte OU 132. La sortie de la porte OU 132 est reliée au circuit de détection 107. Au lieu d'écrire et de lire des bits d'erreur dans la mémoire EMem, le circuit de comparaison 110 effectue des écritures et des lectures dans la mémoire 131. Le positionnement à "0" ou à "1"" des bits d'erreur est effectué selon les mêmes critères que ceux décrits précédemment en relation à la figure 3. 2.2.2 Mémoire CAM La figure 5 est un autre exemple de mémoire spécifique à la mémorisation des erreurs. La mémoire est du type à adressage par le contenu (CAM). La mémoire comprend un ensemble de mots Wi à Wn, où n est un entier positif. Chaque mot Wi, i étant compris entre 0 et n, est constitué d'un bit d'erreur Ei et d'une valeur d'adresse @i. La mémoire comprend en outre un bloc d'interface INTERFACE, un module de recherche d'adresse (@?) 136 et un module de suivi d'erreur (E=0?) 137. 2882601 22 Chaque adresse de la mémoire EMem contenant une donnée erronée est mémorisée dans un mot "pointeur" de la mémoire CAM dont le bit d'erreur est positionné à "1". Les autres mots de la mémoire CAM sont dits "libres", leur bit d'erreur étant positionné à "C)". Le bloc d'interface INTERFACE reçoit des commandes Ctrl du circuit de comparaison 110 et échange des valeurs de bit d'erreur E et d'adresse @ avec celui-ci. Lorsque le circuit de comparaison 110 souhaite savoir si une donnée de la mémoire EMem mémorisée à une adresse donnée est erronée, il indique cette adresse à la mémoire CAM. Le module de recherche d'adresse (@?) 136 compare alors toutes les adresses des mots pointeurs à l'adresse indiquée. La mémoire CAM précise alors au circuit de comparaison s'il existe ou non un mot pointeur qui contient l'adresse indiquée. Par ailleurs, lorsque le circuit de comparaison souhaite mémoriser l'adresse d'une donnée erronée de la mémoire EMem, il indique cette adresse à la mémoire CAM. Le module de suivi d'erreurs 137 détermine s'il reste un mot libre. Si tel est le cas, l'adresse de la donnée erronée est mémorisée dans ce mot et son bit d'erreur est positionné à "1". Ce mot devient alors un mot pointeur. Le module de suivi d'erreurs 137 peut être réalisé de diverses manières. C'est par exemple un compteur qui est incrémenté chaque fois qu'un mot libre devient un mot pointeur, les adresses erronées étant alors enregistrées dans la mémoire CAM du mot Wl au mot Wn. Ce peut être aussi un module capable d'analyser l'ensemble des bits d'erreur E afin de trouver un éventuel mot libre. Le fonctionnement général du dispositif d'émulation comprenant une telle mémoire CAM est le suivant. Pendant la phase d'initialisation du dispositif d'émulation, comme cela a été décrit précédemment, les registres RCl à RC3 du circuit CC et la mémoire CMem sont positionnés dans un état initial "normal" et les registres RE1 à RE3 du circuit 2882601 23 EC et/ou la mémoire EMem sont positionnés dans un état initial modifié par rapport à l'état initial normal. Les bits d'erreur El à En de la mémoire CAM sont tous réinitialisés à "0". Dans le cas où des erreurs ont été introduites dans la mémoire EMem lors de la phase d'initialisation, les adresses de ces erreurs sont écrites dans des mots de la mémoire CAM et les bits d'erreur de ces mots sont positionnés à "1". Pendant la phase d'émulation, le circuit de comparaison 1:L0 effectue comme précédemment une comparaison entre les signaux échangés entre le circuit CC et la mémoire CMem et les signaux échangés entre le circuit EC et la mémoire EMem. Le circuit de comparaison doit procéder à des vérifications chaque fois qu'une écriture est effectuée dans la mémoire EMem et/ou dans la mémoire CMem, en interrompant, si nécessaire, la séquence de commandes exécutée par les circuits CC et EC. Dans le cas où le circuit EC commande une écriture de la mémoire EMem et que le circuit CC commande une lecture ou une inactivité de la mémoire CMem, le circuit de comparaison 10 interrompt la séquence de commandes et effectue une lecture de la mémoire CMem à l'adresse @E. Les données lues dans la mémoire CMem sont comparées aux données dE. Selon que les données diffèrent ou non, le circuit de comparaison 110 effectue respectivement une validation ou une invalidation de l'adresse @E, les notions de validation ou d'invalidation d'adresse étant définies ci-après. On reprend ensuite la séquence de commandes. De façon générale, la validation d'une adresse donnée consiste à interroger le module de recherche @? 136 de la mémoire CAM pour savoir si un mot pointeur référence cette adresse et dans le cas contraire à interroger le module de suivi d'erreurs 137 afin d'obtenir un mot dans lequel enregistrer l'adresse donnée et positionner à "1" son bit d'erreur. L'invalidation d'une adresse donnée consiste à interroger le module de recherche 136 pour savoir si un mot pointeur référence cette adresse et le cas échéant, à remettre à "0" le bit d'erreur E de ce mot qui redevient alors un mot "libre". 2882601 24 Dans le cas où un compteur 111 est utilisé, le compteur est incrémenté lorsqu'une nouvelle adresse est enregistrée lors d'une validation d'adresse, et le compteur est décrémenté lorsqu'un bit d'erreur E d'un mot pointeur est remis à "0" lors d'une invalidation d'adresse. Dans le cas où le circuit CC commande une écriture de la mémoire CMern et que le circuit EC commande une lecture ou une inactivité de la mémoire EMem, le circuit de comparaison 110 interrompt la séquence de commandes et effectue une lecture de la mémoire EMern à l'adresse @C. Les données lues dans la mémoire EMem sont comparées aux données dC. Selon que les données différent ou non, le circuit de comparaison 110 effectue respectivement une validation ou une invalidation de l'adresse @C. On reprend ensuite la séquence de commandes. Dans le cas où les circuits CC et EC commandent tous les deux une écriture et que les adresses @C et @E diffèrent, on effectue alors deux séries d'opérations après l'interruption de la séquence de commandes. La première consiste à lire la mémoire EMem à l'adresse @C et à comparer les données lues aux données dC. Selon que les données différent ou non, le circuit de comparaison 110 effectue respectivement une validation ou une invalidation de l'adresse @C. La seconde consiste à lire la mémoire CMem à l'adresse @E et à comparer les données lues aux données dE. Selon que les données différent ou non, le circuit de comparaison 110 effectue respectivement une validation ou une invalidation de l'adresse @E. On reprend ensuite la séquence de commandes. Dans le cas où les circuits CC et EC commandent tous les deux une écriture et que les adresses @C et @E sont identiques, selon que les données diffèrent ou non, on effectue respectivement une validation ou une invalidation de l'adresse @E. Cette validation ou cette invalidation peut être effectuée sans interruption de la séquence de commandes. Afin de limiter la durée d'interruption de la séquence 35 de commandes, la première étape de la validation ou de 2882601 25 l'invalidation d'adresse, à savoir la recherche d'un mot pointeur contenant cette adresse, peut avantageusement être effectuée de façon simultanée avec une lecture ou une écriture des mémoires CMem et EMem. De plus, l'éventuelle seconde étape de la validation ou de l'invalidation, consistant à positionner à "1" ou à "0" un bit d'erreur et dans le cas de la validation à enregistrer une adresse, peut être effectuée simultanément à une étape d'écriture/lecture dans les mémoires CMem et EMem pouvant être commandée lors de la reprise de la séquence de commandes. Dans le mode de réalisation représentée en figure 5, les bits d'erreur El à En sont reliés à une porte OU 135 dont la sortie est reliée au circuit de détection 107. Ceci permet de détecter rapidement s'il y a ou non des erreurs dans la mémoire EMem. Par ailleurs, on peut prévoir de relier l'ensemble des bits d'erreur El à En à une porte logique de type ET, non représentée. Ainsi, lorsque l'ensemble des mots de la mémoire CAM mémorisent des adresses contenant des données erronées, la porte ET délivre un signal "de remplissage". Un tel signal de remplissage peut éventuellement être fourni par le module de suivi d'erreurs 137 lorsque celui-ci ne trouve plus de mots libres. Lorsqu'un tel signal de remplissage est émis, on peut prévoir d'arrêter l'exécution de la séquence de commandes par les circuits EC et CC. On notera que la mémoire CAM peut contenir un nombre restreint de mots Wl à Wn, bien inférieur au nombre de mots de la mémoire EMern. Le nombre de mots de la mémoire CAM correspond par exemple au nombre maximal de fautes "acceptables" lors de l'exécution d'une séquence de commandes. Lorsque l'émulation est arrêtée et que la mémoire CAM comprend des mots pointeurs référençant des données erronées dans la mémoire EMem, il peut être utile de connaître ces données erronées afin par exemple de les comparer aux données correctes mémorisées dans la mémoire CMem. Pour ce faire, on peut lire les adresses des mots pointeurs de la mémoire CAM puis 2882601 26 lire la mémoire EMem et éventuellement la mémoire CMem pour chacune de ces adresses. On peut aussi prévoir de rajouter un champ supplémentaire de donnée à chacun des mots de la mémoire CAM. Dans ce cas, lorsque l'on effectue une validation d'adresse dans la mémoire CAM dans un mot pointeur existant ou dans un nouveau mot pointeur, on enregistre dans le champ donnée du mot pointeur considéré la valeur des données mémorisées dans la mémoire EMem à l'adresse mémorisée dans ce mot pointeur. De plus, afin de parcourir rapidement la mémoire CAM pour "décharger" les adresses et éventuellement les données mémorisées dans les mots pointeurs, on pourra prévoir un dispositif de balayage, connu sous le nom anglais de "priority encoder". Ce dispositif parcourt les mots Wl à Wn. Si le bit d'erreur E du mot Wl est à "1", il lit le mot Wi et remet à "0" son bit d'erreur E. Puis il regarde si le bit d'erreur du mot W2 est à "1" et le cas échéant il lit le mot W2 et remet à "0" son bit d'erreur et ainsi de suite jusqu'au mot Wn. 3. Suppression de la mémoire EMem Selon une variante de réalisation du dispositif d'ému- lation selon la présente invention, la mémoire EMem est supprimée. Les signaux @E, WRE et CSE fournis par le circuit EC sont uniquement transmis au circuit de comparaison 110. Le circuit de comparaison 110 a pour fonction d'une part comme précédemment de comparer les signaux fournis par le circuit EC aux signaux fournis par le circuit CC, et d'autre part de fournir et de traiter les données dE lorsque le circuit EC commande respectivement une lecture et une écriture. Afin de réaliser cette nouvelle fonction, le circuit de comparaison 110 est relié à une mémoire CAM qui comprend l'ensemble des éléments décrits précédemment en relation à la f igure 5 et qui comprend en outre pour chaque mot Wi une donnée di comme cela est représenté en pointillés sur la figure 5. L'association de la mémoire CAM et de la nouvelle fonctionnalité du circuit de comparaison 110 constitue une mémoire EMem virtuelle. Le circuit EC lit et écrit dans la mémoire EMem virtuelle de la même façon 2882601 27 qu'avec une mémoire EMem réelle. La mémoire CAM mémorise uniquement les données erronées de la mémoire EMem, c'est-à-dire les données de la mémoire EMem qui diffèrent des données de la mémoire CMem. Chaque donnée erronée est mémorisée avec son adresse dans un mot de la mémoire CAM. Les données correctes, ou non erronées, de la mémoire EMem sont lues dans la mémoire CMem. Durant la phase d'initialisation, les bits d'erreur E des mots de la mémoire CAM sont réinitialisés à "0". Dans le cas où l'état initial modifié inclut des erreurs dans la mémoire EMem, chaque erreur est mémorisée dans la mémoire CAM. Les données erronées et leurs adresses sont écrites dans un ensemble de mots et les bits d'erreur de ces mots sont positionnés à "1". Les interactions entre le circuit de comparaison 110, la mémoire CAM, la mémoire CMem et les circuits CC et CE sont décrites ciaprès. 3.1 Le circuit EC effectue une lecture Lorsque le circuit EC effectue une lecture, le circuit de comparaison 110 procède à une série d'opérations décrites ci-après. Le circuit de comparaison interroge le module de recherche (@?) 136 de la mémoire CAM afin de savoir si un mot pointeur mémorise l'adresse @E de lecture. Si tel est le cas, on lit la donnée mémorisée dans ce mot pointeur. Sinon, le circuit de comparaison regarde si le circuit CC effectue une lecture à une adresse @C identique à l'adresse @E. Si tel est le cas, les données dC lues dans la mémoire CMem sont recopiées sur le signal de données dE. Dans les autres cas, la séquence de commandes est interrompue et le circuit de comparaison 110 commande une lecture dans la mémoire CMem à l'adresse @E. Les données lues sont fournies sur le signal de données dE. On s'intéresse alors à la commande de lecture ou d'écriture demandée par le circuit CC simultanément à la commande de lecture demandée par le circuit EC avant l'interruption de la séquence de commandes. 2882601 28 Dans le cas où le circuit CC commande une lecture dans la mémoire CMem, celle-ci est effectuée normalement. Dans le cas où le circuit CC commande une écriture dans la mémoire CMem, on interroge le module de recherche (@?) 136 de la mémoire CAM afin de savoir si un mot pointeur mémorise l'adresse @C. Si tel est le cas, on compare la donnée mémorisée dans ce mot pointeur à la donnée dC que le circuit CC souhaite écrire dans la mémoire CMem et si les données sont identiques on remet à "0" le bit d'erreur E de ce mot pointeur et si le compteur 111 est utilisé on le décrémente. Sinon, c'est-à-dire si aucun mot de la mémoire CAM ne mémorise l'adresse @C, on effectue une lecture dans la mémoire CMem à l'adresse @C et on compare les données lues aux données dC que l'on souhaite écrire dans la mémoire CMem. Si les données sont identiques, alors cette écriture est sans conséquence. Si les données diffèrent, on interroge le module de suivi d'erreurs 137 de la mémoire CAM afin de savoir s'il reste un mot libre. Si tel est le cas, on mémorise l'adresse @C ainsi que les données lues dans la mémoire GMem à cette adresse. On écrit alors les données dC dans la mémoire CMem. 3.2 Le circuit EC effectue une écriture Lorsque le circuit EC effectue une écriture, le circuit de comparaison procède aussi à une série d'opérations décrites ci-après. Dans le cas où le circuit CC commande une lecture, ou une inactivité de la mémoire CMem, le circuit de commande 110 effectue les opérations suivantes. Il regarde si les adresses @C et @E diffèrent, et si tel est le cas il interrompt la séquence de commandes et commande une lecture dans la mémoire CMem à l'adresse @E. Le circuit de comparaison regarde ensuite si les données présentes dans la mémoire CMem à l'adresse @E sont différentes des données dE que le circuit EC souhaite écrire dans la mémoire virtuelle EMem. Selon que les données diffèrent ou non on effectue une validation ou une invalidation de l'adresse 2882601 29 @E. On effectue alors la lecture de la mémoire CMem et on reprend l'exécution de la séquence de commandes. La validation de l'adresse @E consiste ici à interroger le module de recherche @? 136 de la mémoire CAM pour savoir si un mot pointeur référence cette adresse et si c'est le cas, à écrire les données dE dans ce mot pointeur, et dans le cas contraire à interroger le module de suivi d'erreurs 137 afin d'obtenir un mot dans lequel enregistrer l'adresse donnée, la donnée dE et positionner à "1" son bit d'erreur E. L'invalida-tion de l'adresse @E consiste à interroger le module de recherche 136 pour savoir si un mot pointeur référence l'adresse @E et le cas échéant, à remettre à "0" le bit d'erreur E de ce mot qui redevient alors un mot "libre". Dans le cas où le circuit CC commande une écriture dans la mémoire CMem, le circuit de comparaison 110 effectue les opérations suivantes. Il regarde en premier si les adresses d'écriture @E et @C sont identiques. Si tel est le cas, il regarde si les données dE et dC diffèrent. Selon que les données diffèrent ou non, il effectue une validation ou une invalidation de l'adresse @E selon le procédé décrit précédemment. Dans le cas d'une validation de l'adresse @E, les données dE sont mémorisées dans la mémoire CAM. Dans le cas où les adresses d'écriture @E et @C diffèrent, le circuit de comparaison 110 interrompt l'exécution des commandes. Il effectue alors une lecture dans la mémoire CMem à l'adresse @E puis il compare les données lues aux données dE. Selon que les données diffèrent ou non il effectue une validation ou une invalidation de l'adresse @E. Dans le cas d'une validation de l'adresse @E, les données dE sont mémorisées dans la mémoire CAM. Il effectue ensuite une lecture dans la mémoire CMem à l'adresse @C puis il compare les données lues aux données dC que le circuit CC souhaite écrire dans la mémoire CC. Selon que les données diffèrent ou non il effectue une validation ou une invalidation de l'adresse @C. Dans le cas d'une validation de l'adresse @C, les données lues dans la mémoire CMem sont mémorisées dans la mémoire CAM. On 2882601 30 effectue alors l'écriture de la donnée dC dans la mémoire CMem et on reprend l'exécution de la séquence de commandes. 4. Restitution des erreurs en mémoire Quand la mémoire EMem ne retrouve pas au bout d'un certain temps un état normal correspondant à celui de la mémoire CMem, il peut être intéressant de pouvoir analyser rapidement quelles sont les différences. Une lecture complète des mémoires est envisageable mais très coûteuse en temps, d'autant plus que la taille des mémoires peut être importante. Dans le cas où le circuit d'émulation de la présente invention comprend une mémoire CAM, telle que décrite précédemment en relation à la figure 5, utilisée pour la mémorisation des erreurs, il est possible de connaître plus rapidement les erreurs présentes. Pour établir rapidement une liste d'adresses de la mémoire EMem, réelle ou virtuelle, pour lesquelles les valeurs mémorisées diffèrent des valeurs mémorisées à ces mêmes adresses dans la mémoire CMem, il est possible de munir la mémoire CAM d'un circuit de balayage, couramment appelé "priority encoder" en anglais, qui permet d'identifier un à un les mots de la CAM ayant un bit d'erreur à 1. Au moment où l'on souhaite identifier les erreurs en mémoire, la séquence de commandes est interrompue. Dans le cas où au moins une erreur a été mémorisée dans la mémoire CAM, un ou plusieurs bits d'erreur sont positionnés à un. Le circuit de balayage sélectionne successivement les mots correspondants. A chaque mot sélectionné, l'adresse écrite dans ce mot et éventuellement la donnée sont émises par la mémoire CAM. Dans le cas où les données "erronées" ne sont pas écrites dans la mémoire CAM, des lectures successives sont effectuées dans la mémoire EMem pour récupérer les données correspondant à la suite d'adresses émises par la mémoire CAM. Un avantage d'une telle mémoire CAM est qu'elle permet d'identifier très rapidement quelles sont les erreurs présentes dans la mémoire EMem, virtuelle ou réelle. 2882601 31 5. Suppression d'une partie de la phase d'initialisation Lorsqu'un circuit intégré fonctionne dans des conditions réelles, une perturbation est susceptible d'arriver sur n'importe quel élément logique ou n'importe quel élément de mémorisation (registre ou mémoire). Lorsqu'une perturbation arrive sur un élément de mémorisation, dans la majorité des cas, seule la valeur d'un registre élémentaire ou d'un point mémoire peut être modifiée. Quand une perturbation arrive sur un élément logique, l'impulsion électrique produite en sortie de ce dernier peut se propager et affecter plusieurs éléments de mémorisation. De plus, les circuits intégrés synchrones sont prévus pour exécuter au moins une séquence de commandes déterminée au rythme d'un signal d'horloge et une perturbation extérieure peut arriver lors de l'exécution de n'importe quelle commande, sur n'importe quel cycle d'horloge de la séquence de commandes. Lors d'un cycle suivant une perturbation, les valeurs positionnées dans les registres peuvent être erronées. Le circuit est alors dans un état incorrect. Certaines valeurs des registres ou des mémoires diffèrent des valeurs normalement présentes dans le circuit lorsqu'il est dans un état "correct". Lors d'une utilisation réelle du circuit, la probabilité que plusieurs perturbations arrivent lors de l'exécution d'une séquence de commandes est très faible. On considèrera donc par la suite qu'aucune perturbation n'arrive durant l'émulation du circuit. Le dispositif d'émulation de la présente invention prévoit de positionner le circuit CC et la mémoire CMem dans un état "correct" correspondant à l'état normal du circuit lors d'un cycle donné de la séquence de commandes et de positionner le circuit EC et la mémoire CMem dans un état "incorrect" présentant une ou plusieurs erreurs par rapport à cet état correct. Le dispositif d'émulation effectue ensuite les cycles restants de la séquence de commandes après le cycle donné de la séquence de commandes. L'émulation est arrêtée quand les erreurs ont disparu ou quand un nombre prédéterminé de cycles a été 2882601 32 exécuté. Une fois l'émulation terminée, on repositionne le circuit CC et la mémoire CMem dans un état "correct" correspondant à un cycle de la séquence de commandes identique ou différent de celui de la précédente émulation et le circuit EC et la mémoire EMem dans un état "incorrect" par rapport à cet état correct, puis on effectue une nouvelle émulation et ainsi de suite. A chaque cycle de la séquence de commandes correspond un état correct du circuit. De plus, pour chaque état correct du circuit obtenu lors d'un cycle donné, il y a un grand nombre d'états incorrects possibles correspondant à l'arrivée d'une perturbation en divers endroits du circuit. Positionner les circuits EC et CC ainsi que les mémoires EMem et CMem dans un état correct ou incorrect nécessite un grand nombre d'écritures en série et prend donc du temps. Afin de supprimer le temps d'écriture des éléments de mémorisation, le dispositif d'émulation de la présente invention prévoit d'ajouter des éléments au dispositif tel que décrit en relation à la figure 2. La figure 6 est un schéma d'un dispositif d'émulation comprenant les éléments du dispositif d'émulation décrit précédemment ainsi que de nouveaux éléments. Comme représenté en figure 3, le circuit logique CC fournit le signal de commande d'écriture/lecture WRC et le signal d'adresse @C à la mémoire CMem. Le circuit CC fournit et reçoit des données dC à/de la mémoire CMem. De même, le circuit EC fournit le signal de commande d'écriture/lecture WRE et le signal d'adresse @E à la mémoire EMem. Le circuit EC fournit ou reçoit des données dE à/de la mémoire EMem. Les signaux de sélection CSE et CSC ne sont pas prévus dans ce circuit, cependant l'homme de l'art saura adapter le circuit à la présence de tels signaux. Une mémoire IMem pouvant être accédée uniquement en lecture est ajoutée. Chaque mémoire CMem et EMem contient des bits de mémorisation supplémentaires par rapport aux mémoires précédem- ment utilisées. Chaque mémoire inclut pour chaque adresse un bit de validation V positionné initialement à 0 dans cet exemple. Un 2882601 33 circuit de contrôle (CNT) 140 reçoit les signaux d'adresse @E et @C ainsi que les signaux d'écriture/lecture WRE et WRC. Le circuit de contrôle (CNT) 140 peut lire ou écrire les bits de validation V associés à chacune des mémoires CMem et EMem par l'intermédiaire de dispositifs non représentés. Deux commutateurs 141 et 142 permettent que les données dE et dC soient fournies par la mémoire IMem respectivement aux circuits EC et CC. Lorsque l'on positionne pour la première fois le circuit dans un état correct "pseudo-initial", correspondant à un état correct du circuit obtenu lors d'un cycle donné de la séquence de commandes, au lieu d'écrire les valeurs correctes dans la mémoire CMem, on écrit les valeurs correctes dans la mémoire IMem. Dans le cas où l'état incorrect choisi comprend des erreurs dans la mémoire EMem, les données erronées sont écrites dans la mémoire EMem et les bits de validation V et d'erreur E correspondants aux adresses de ces données sont positionnés à "1". Quand les circuits CC et EC commandent une écriture dans leurs mémoires respectives, les données sont écrites à l'adresse demandée et le bit de validation V correspondant à cette adresse est positionné à 1. Quand un circuit CC ou EC commande une lecture, le circuit de contrôle CNT 140 regarde dans les mémoires CMem ou EMem quelle est la valeur du bit de validation V correspondant à l'adresse de lecture. Si le bit de validation V est égal à 1, les données lues sont celles présentes dans la mémoire CMem ou EMem à cette adresse. Si le bit de validation V de la mémoire CMem ou EMem est à 0, le circuit de contrôle 140 commande les commutateurs 141 ou 142 afin de fournir comme données au circuit CC ou EC, les données mémorisées dans la mémoire IMem à l'adresse correspondante. Dans le cas où les circuits CC et EC commandent tous deux une lecture mais à des adresses @E et @C différentes, il est possible que deux lectures dans la mémoire IMem soient 2882601 34 nécessaires si les bits de validation V correspondant aux adresses @E et @C sont tous deux à "0". Il est dès lors nécessaire d'interrompre l'exécution de la séquence de commandes afin d'effectuer les deux lectures successives dans la mémoire IMem. Un moyen d'éviter de telles interruptions est que la mémoire IMem soit une mémoire à double accès dans laquelle il est possible d'effectuer deux lectures simultanées. Un avantage d'un dispositif d'émulation comprenant une mémoire spécifique pour conserver l'état pseudo-initial des mémoires EMem et CMem, est qu'il permet de réaliser un gain de temps. En effet, il n'est plus nécessaire, avant de faire une nouvelle émulation du circuit, de réécrire l'ensemble des mémoires CMem et EMem afin de mettre la mémoire CMem dans l'état correct pseudo-initial et la mémoire EMem dans un état éventuel-lement incorrect par rapport à l'état pseudo-initial de la mémoire CMem. Il suffit de remettre à "0" les bits de validation V des mémoires CMem et EMem et d'introduire éventuellement des erreurs dans la mémoire EMem, en positionnant à "1" les bits de validation V et d'erreur E associés aux données erronées. De plus, à la fin d'une série d'émulations débutant toutes à partir d'un même état correct pseudo-initial mémorisé dans IMem, il est possible d'effectuer une nouvelle,série d'émulations à partir d'un autre état correct pseudo-initial mémorisé dans la mémoire IMem en modifiant seulement une ou éventuellement quelques données de la mémoire IMem. La ou les modifications de données correspondent par exemple aux modifications de la mémoire CMem normalement commandées par le circuit CC lors de l'exécution d'un ou de plusieurs cycles de la séquence de commandes. Ainsi, il est possible d'effectuer successivement plusieurs séries d'émulation démarrant à partir d'états pseudo-initiaux correspondant aux états corrects successifs du circuit lors de l'exécution de la séquence de commandes. 6. Suppression des mémoires CMem et EMem Dans le cas où le dispositif d'émulation comprend une 35 mémoire IMem de mémorisation d'un état correct pseudo-initial 2882601 35 des mémoires associées aux circuits CC et EC, on pourra prévoir de supprimer les mémoires EMem et CMem et d'utiliser à la place deux mémoires à adressage par le contenu (CAM) respectivement appelées CAM-E et CAM-C. Dans ce cas, les mots des mémoires CAM comportent chacun un champ d'adresse et un champ de données. Les mots de la mémoire CAM-E comportent en outre un bit d'erreur E. Les mots de la mémoire CAM-C comportent en outre un bit de validation V. La mémoire CAM-C mémorise des données "d'écriture" correspondant aux données écrites par le circuit CC dans la mémoire CMem virtuelle lors de l'exécution de la séquence de commandes. La mémoire CAM-C comprend un module de recherche ayant pour fonction de rechercher, parmi l'ensemble des mots présentant un bit de validation V à "1", un mot mémorisant une adresse donnée, ainsi qu'un module de suivi répertoriant les mots libres et indiquant sur requête un mot libre de la mémoire CAM-C, c'est-à-dire un mot dont le bit de validation V est à non. Les bits de validation V sont remis à "0" avant chaque émulation. Quand le circuit CC commande une lecture à une adresse @C, le circuit de contrôle CNT interroge le module de recherche de la mémoire CAM-C afin de savoir si l'adresse @C est mémorisée dans un mot ayant un bit de validation V à "1". Si tel est le cas, la donnée mémorisée dans ce mot est fournie au circuit CC. Sinon la donnée est lue dans la mémoire IMem. Quand le circuit CC commande une écriture à une adresse @C, le circuit CNT demande au module de recherche si l'adresse @C est mémorisée dans un mot de la CAM-C ayant un bit de validation V à "1". Si tel est le cas, les données dC sont écrites dans ce mot. Sinon, le circuit CNT demande au module de suivi de la mémoire CAM-C de trouver un mot libre afin de mémoriser dans ce mot l'adresse @C et les données dC et de positionner à 1 son bit de validation V. Lorsque le circuit EC 2882601 36 commande une lecture ou une écriture, le circuit de comparaison effectue les opérations décrites dans le chapitre 3 en commandant si nécessaire des lectures dans la mémoire CMem virtuelle. Selon une variante du dispositif d'émulation précédemment décrit, les mots de la mémoire CAM-E comprennent en outre un bit de validation V. La mémoire CAM-E est utilisée pour mémoriser deux types de données: des données "d'écriture" correspondant aux données écrites par le circuit EC, dans la mémoire EMem virtuelle, lors de l'exécution de la séquence de commandes, et des données "erronées" correspondant aux données de la mémoire EMem virtuelle qui diffèrent de celles de la mémoire CMem virtuelle. Les bits de validation V des mots contenant des données d'écriture sont positionnés à "1". Lorsque le circuit EC commande une lecture ou une écriture dans la mémoire EMem, le circuit CNT effectue sensiblement les mêmes opérations que celles décrites pour le circuit CC et la mémoire CMem. Bien entendu, la présente invention est susceptible de diverses variantes et modifications qui apparaîtront à l'homme de l'art. En particulier, le circuit analysé décrit précédemment comprend une seule mémoire mais le dispositif d'émulation s'applique de façon similaire à un circuit comprenant une ou plusieurs mémoires, éventuellement de types différents. De plus, on pourra prévoir de supprimer le circuit correct CE et de le remplacer par des éléments de mémorisation fournissant pour chaque commande exécutée par le circuit d'erreur EC, les valeurs que contiendraient les registres RE1 à RE3 et la mémoire CMem, si le circuit EC et la mémoire EMem avaient été dans l'état "correct" préalablement à l'émulation du circuit. En outre, la composition de la plateforme de test 101 comprenant l'ensemble des circuits logiques et des mémoires précédemment décrit est particulièrement adaptée à être réalisée dans un réseau logique programmable. Cependant, une telle plateforme de test peut également être réalisée de façon logicielle, l'ensemble des circuits logiques et des mémoires étant alors décrit dans un fichier informatique. L'exécution d'une séquence de commandes par une telle plateforme de test logicielle est alors effectuée au moyen d'un simulateur informatique de circuit. 38 REVENDICATIONS 1. Procédé d'émulation ou de simulation du fonctionnement en présence de perturbations d'un circuit susceptible d'exécuter une séquence de commandes, le circuit comportant des éléments logiques (LE1, LE2, LE3) et des premiers éléments de mémorisation (RE', RE2, RE3, EMem), caractérisé en ce qu'il comprend les étapes suivantes: - mettre le circuit dans un état incorrect, dans lequel la valeur d'au moins un élément de mémorisation est modifiée par rapport à un état correct du circuit; lancer l'exécution d'une séquence de commandes; - fournir dans des seconds éléments de mémorisation (RCl, RC2, RC3, CMem), les valeurs normales que contiendraient les premiers éléments de mémorisation après l'exécution de chaque commande si le circuit avait été mis dans l'état correct; comparer après chaque commande exécutée et au moyen de comparateurs (Cl, C2, C3, 110) activés simultanément, toutes les valeurs contenues dans les premiers et seconds éléments de mémorisation; et - arrêter l'exécution des commandes si les valeurs contenues dans les premiers et seconds éléments de mémorisation deviennent identiques. 2. Dispositif d'émulation du fonctionnement en présence de perturbations d'un circuit susceptible d'exécuter une 25 séquence de commandes, le dispositif comprenant: - un circuit test identique audit circuit et comportant des éléments logiques (LEI, LE2, LE3) et des premiers éléments de mémorisation (RE1, RE2, RE3, EMem) ; - des moyens (102, 103) pour mettre le circuit dans un état incorrect dans lequel la valeur d'au moins un premier élément de mémorisation est modifiée par rapport à un état correct du circuit; - des moyens (104) pour lancer l'exécution d'une séquence de commandes; 2882601 39 - des seconds éléments de mémorisation (RCi, RC2, RC3, CMem) chargés par les valeurs normales que contiendraient les premiers éléments de mémorisation après chaque commande si le circuit avait été dans l'état correct avant l'exécution des commandes; - des comparateurs (C1, C2, C3, 110) pour établir après chaque commande exécutée si les valeurs contenues dans les premiers et seconds éléments de mémorisation diffèrent; et - des moyens d'interruption (107) commandés par lesdits comparateurs. 3. Dispositif selon la revendication 2, comprenant un second circuit (CC) identique audit circuit test (EC), les seconds éléments de mémorisation étant les éléments de mémorisation du second circuit, et comprenant des moyens pour mettre le second circuit dans un état correct, lesdits moyens pour lancer l'exécution d'une séquence de commandes agissant sur les deux circuits. 4. Dispositif selon la revendication 2, dans lequel les premiers éléments de mémorisation comprennent des registres (RE1, RE2, RE3) placés entre les éléments logiques (LE1, LE2, LE3). 5. Dispositif selon la revendication 2, dans lequel les premiers éléments de mémorisation dudit circuit test comprennent au moins une mémoire (EMem) mémorisant des mots de données constitués chacun d'au moins un bit. 6. Dispositif selon les revendications 3 et 4, dans lequel certains ou tous les comparateurs (C1, C2, C3) comparent le contenu des registres de chacun des circuits. 7. Dispositif selon les revendications 3 et 5, comprenant pour chaque mémoire dudit circuit test, un moyen de mémorisation supplémentaire comportant un bit d'erreur (E) pour chaque adresse de la mémoire, un ou plusieurs comparateurs (110) analysant les signaux adressés à une mémoire donnée dudit circuit test et les signaux adressés à la mémoire du second circuit identique à la mémoire donnée, afin d'activer ou de 2882601 40 désactiver un bit d'erreur à une adresse déterminée lorsqu'une différence entre les mots de données mémorisés dans les deux mémoires à cette adresse déterminée apparaît ou disparaît, un circuit de détection d'erreur (111, 122, 123) indiquant aux moyens d'interruption si au moins un bit d'erreur est activé. 8. Dispositif selon les revendications 3 et 5, comprenant pour chaque mémoire dudit circuit test, une mémoire à adressage par le contenu constituée de mots prévus pour mémoriser chacun au moins une adresse et un bit d'erreur, un ou plusieurs comparateurs (110) analysant les signaux adressés à une mémoire donnée dudit circuit test et les signaux adressés à la mémoire du second circuit identique à la mémoire donnée afin de détecter l'apparition ou la disparition d'une erreur consistant en une différence entre les mots de données mémorisés dans les deux mémoires à une adresse déterminée, l'apparition d'une erreur entraînant un relevé de l'adresse déterminée dans un mot de la mémoire à adressage par le contenu associée à la mémoire considérée, et une activation du bit d'erreur de ce mot, la disparition d'une erreur entraînant la désactivation du bit d'erreur du mot mémorisant l'adresse déterminée, un circuit de détection d'erreur (111) indiquant aux moyens d'interruption si au moins un bit d'erreur est activé. 9. Dispositif selon la revendication 7, dans lequel une mémoire dudit circuit test est une mémoire virtuelle remplacée par l'association d'une mémoire à adressage par le contenu CAM et d'un dispositif pilote relié audit circuit test et à la mémoire "associée" du second circuit correspondant à la mémoire virtuelle, un mot de la mémoire CAM étant prévu pour mémoriser au moins un mot de données, une adresse et un bit d'erreur, seuls les mots de la mémoire virtuelle qui diffèrent des mots de la mémoire associée étant mémorisés avec leurs adresses dans un mot de la mémoire CAM en activant son bit d'erreur, la lecture d'un mot de données dans la mémoire 35 virtuelle à une adresse donnée consistant pour le dispositif 2882601 41 pilote à regarder si un mot de données erroné correspondant à l'adresse donnée est mémorisé dans un mot de la mémoire CAM dont le bit d'erreur est activé et dans le cas contraire à demander une lecture à cette adresse dans la mémoire associée, l'écriture d'un mot dans la mémoire virtuelle à une adresse donnée consistant pour le dispositif pilote à comparer ce mot au mot écrit à l'adresse donnée dans la mémoire associée, et en cas de différence à mémoriser ce mot dans un mot de la mémoire CAM en activant son bit d'erreur, le dispositif pilote détectant les différences entre les signaux échangés entre la mémoire associée et le second circuit et les signaux échangés entre la mémoire virtuelle et le circuit test afin de relever les situations qui conduisent à des différences entre les mots de données mémorisés dans la mémoire virtuelle et ceux mémorisés dans la mémoire associée, les mots de données erronés de la mémoire virtuelle étant mémorisés dans des mots de la mémoire CAM en activant leurs bits d'erreur. 10. Dispositif selon les revendications 7 ou 8, comprenant pour chaque mémoire (EMem) dudit circuit test, une mémoire identique dite d'initialisation (IMem) comprenant les valeurs correctes des mémoires du circuit test correspondant à l'état initial du circuit test avant l'exécution d'une séquence de commandes, et comprenant pour chaque mémoire du circuit test (EMem) et du second circuit (CMem), un moyen de mémorisation supplémentaire comportant un bit de validation (V) pour chaque adresse de la mémoire correspondante, et dans lequel un mot lu par le circuit test ou le second circuit à une adresse donnée d'une mémoire provient soit de la mémoire d'initialisation quand le bit de validation correspondant à cette adresse est non activé, soit de cette mémoire quand le bit de validation correspondant à cette adresse est activé suite à une écriture précédente à cette adresse lors de l'exécution de la séquence de commandes. il. Dispositif selon la revendication 10, dans lequel 35 les mémoires du circuit test (EMem) et leurs mémoires associées 2882601 42 (CMem) du second circuit sont des mémoires virtuelles remplacées chacune par l'association d'une mémoire à adressage par le contenu CAM (CAM-E, CAM-C) et d'un dispositif pilote relié à la mémoire d'initialisation, au circuit test et au second circuit, les mots des mémoires CAM étant prévus pour mémoriser chacun un mot de données (d), une adresse (@), un bit de validation (V) et dans le cas des mémoires CAM remplaçant les mémoires du circuit test, un bit d'erreur (E), un mot de données et son adresse d'écriture dans une mémoire virtuelle étant mémorisés dans un mot de la mémoire CAM remplaçant cette mémoire virtuelle en activant sont bit de validation, un mot de données fourni lors d'une lecture d'une mémoire virtuelle à une adresse donnée, provenant de la mémoire CAM remplaçant cette mémoire virtuelle ou de la mémoire d'initialisation selon que l'adresse donnée est ou non mémorisée dans un mot de la mémoire CAM ayant un bit de validation activé, les mots de données erronés d'une mémoire du circuit test étant mémorisés dans des mots de la mémoire CAM remplaçant cette mémoire en activant leurs bits de validation et d'erreur. 12. Dispositif selon la revendication 2, dans lequel le circuit test (EC), le second circuit (EC) et les comparateurs (Cl, C2, C3, 110) sont des éléments physiques pouvant être réalisés dans un réseau logique programmable (101).