Brevet FR2724030A1 — publié le 19960301

La présente invention est relative en général au domaine de la technologie de l'émulation, dans laquelle des circuits contenant des éléments logiques combinatoires et des éléments logiques séquentiels sont émulés, et concerne plus particulièrement des procédés pour sélectionner automatiquement des signaux qualificateurs d'impulsions d'horloge à partir de la description d'une liste de réseaux du circuit subissant l'émulation, réduisant ainsi l'apparition de transgressions relatives à la synchronisation telles que des transgressions du temps de maintien. Lors de la configuration de circuits intégrés, la description d'une liste de réseaux du circuit intégré est générée. La liste de réseaux est une description des composants du circuit intégré et des interconnexions électriques entre les composants. Les composants comportent tous les éléments de circuit nécessaires pour la mise en oeuvre d'un circuit logique, tels que des éléments logiques combinatoires (par exemple des portes) et logiques séquentiels (par exemple des bascules et des dispositifs de verrouillage). Dans l'industrie électronique, les circuits intégrés contenant des quantités importantes, à la fois d'éléments logiques combinatoires et logiques séquentiels, deviennent plus courants. Cette densité et cette complexité accrues ont conduit à la nécessité d'outils d'automatisation plus puissants de configuration électronique, qui aident le concepteur du circuit à configurer ces circuits. Un exemple d'un tel outil est un système d'émulation de matériel reconfigurable. Des exemples de ces systèmes d'émulation sont décrits dans les brevets des Etats-Unis d'Amérique n 5 109 353 et 5 329 470 de Sample et al et 5 036 473 de Butts et al, dont les descriptions sont toutes deux incorporées ici à titre de référence. Comme décrit dans les brevets de Sample et al et de Butts et al, les systèmes d'émulation peuvent être utilisés pour vérifier qu'une configuration de circuit intégré travaille réellement dans le système dans lequel elle sera installée avant d'avoir à soumettre le circuit intégré au silicium. En général, les systèmes d'émulation reconfigurables fonctionnent en prenant la liste de réseaux de l'utilisateur et en la mettant en oeuvre dans le système d'émulation. Les systèmes d'émulation sont généralement constitués de multiples dispositifs logiques reconfigurables interconnectés par l'intermédiaire de diverses technologies d'interconnexion. Ces dispositifs logiques reconfigurables comprennent généralement des dispositifs logiques programmables tels que des réseaux de portes programmables par l'utilisateur (FPGA) et d'autres dispositifs logiques programmables capables de mettre en oeuvre de grandes quantités d'éléments logiques combinatoires et séquentiels et d'éléments de mémoire. Les FPGA, par exemple, contiennent des cellules logiques qui mettent en oeuvre les composants combinatoires, séquentiels et de mémoire (dans les FPGA tels que ceux fabriqués par Xilinx, Inc., San José, Californie, les cellules logiques sont désignées par blocs logiques configurables, ou "CLB"). La liste de réseaux peut être mise en oeuvre dans le système d'émulation en programmant les dispositifs logiques programmables pour qu'ils configurent les cellules logiques internes en fonction de la configuration émulée. Cependant, puisque le système d'émulation doit être capable de traiter différents types de configurations de circuit fonctionnel, les dispositifs logiques programmables doivent être des dispositifs de logique générale capables de mettre en oeuvre de nombreuses fonctions différentes. Etant donné ceci, chaque dispositif logique programmable peut uniquement traiter une petite partie de la configuration mise en oeuvre. Ainsi, un système d'émulation pratique nécessite généralement de grandes quantités de dispositifs logiques programmables et une interconnexion programmable pour l'interconnexion des dispositifs logiques programmables. Une liste de réseaux, destinée à être mise en oeuvre en tant que circuit intégré unique personnalisé, ne peut pas simplement être placée dans le système d'émulation. Par conséquent, lors de la mise en oeuvre de la liste de réseaux dans le système d'émulation, plusieurs étapes de traitement doivent tout d'abord être effectuées. Une description détaillée de la façon dont une liste de réseaux est traitée avant la mise en oeuvre dans un système reconfigurable d'émulation de matériel, est fournie dans les deux brevets de Sample et al et de Butts et al. Une autre description de la façon dont une liste de réseaux est traitée pour la mise en oeuvre dans un système reconfigurable d'émulation de matériel est fournie dans la demande de brevet européen nO O 559 822 de Chen et al. Comme décrit dans la demande de Chen et al, un problème associé aux systèmes d'émulation de l'art antérieur est l'apparition de transgressions du temps de maintien. Les transgressions du temps de maintien se produisent dans des systèmes d'émulation lors de l'émulation d'une configuration de circuit ayant une structure d'impulsions d'horloge relativement complexe. Plus précisément, une transgression du temps de maintien peut se produire lorsque le retard entre la source d'impulsions d'horloge et la broche d'impulsions d'horloge, sur un élément de stockage, est relativement long, mais le trajet des données entre cette même source d'impulsions d'horloge et la borne d'entrée de données sur le même élément de stockage est relativement court. Cette disparité entre le retard d'impulsions d'horloge et le temps de transmission du trajet de données peut être un artefact du traitement d'émulation lui-même. Les déviations d'impulsions d'horloge, dans le système d'émulation, sont fréquemment différentes de celles qui résultent de la mise en oeuvre, en tant que circuit intégré, de la description de la liste de réseaux de la configuration du circuit. La raison en est que, lors de la mise en oeuvre de la liste de réseaux dans le système d'émulation, la liste de réseaux doit être divisée, ou "découpée", et mise en oeuvre dans de nombreux dispositifs logiques programmables différents. Les déviations d'impulsions d'horloge introduites par les dispositifs logiques programmables, et la structure d'interconnexion ne sont pas présentes dans un circuit intégré réel produit avec la liste de réseaux (c'est-à-dire que les transgressions du temps de maintien qui se produisent dans le système d'émulation ne se produisent vraisemblablement pas dans un circuit intégré réel produit avec la liste de réseaux). Lorsque la complexité des circuits intégrés croît, et par conséquent lorsque le nombre d'éléments logiques séquentiels mis en oeuvre dans une seule configuration croît (seuls les éléments logiques séquentiels tels que les bascules et les dispositifs de verrouillage sont "synchronisés" par la structure d'impulsions d'horloge du circuit émulé), le nombre de transgressions du temps de maintien qui ont lieu tend à s'accroître. Comme décrit dans la demande de Chen et al, le logiciel utilisé pour mettre en oeuvre la liste de réseaux dans le système d'émulation traite la liste de réseaux avec l'intention de réduire l'apparition des transgressions du temps de maintien. Ainsi, initialement, la structure d'impulsions d'horloge de la liste de réseaux est analysée. Au cours de cette analyse, plusieurs étapes sont mises en oeuvre afin de réaliser ce qui est connu sous la désignation d'"arbres d'impulsions d'horloge". Un arbre d'impulsions d'horloge, comme décrit dans la demande de Chen et al, est une compilation de composants de circuit utilisés pour obtenir tous les signaux d'horloge internes (un signal d'horloge interne est un signal qui commande directement la synchronisation d'un élément logique séquentiel, par exemple l'introduction d'un réseau à l'entrée d'impulsions d'horloge de l'élément logique séquentiel) à partir des sources d'impulsions d'horloge externes de la liste de réseaux (une source d'impulsions d'horloge externe est une borne d'entrée primaire spécifiée par l'utilisateur pour être une source d'impulsions d'horloge). Chaque arbre d'impulsions d'horloge prend racine à la source d'impulsions d'horloge externe et comprend tous les éléments logiques (à la fois combinatoires et séquentiels) entre la source d'impulsions d'horloge externe et la source d'impulsions d'horloge interne. Dans une petite minorité de configurations, la source d'impulsions d'horloge externe commande directement tous les éléments logiques séquentiels internes. Dans ce cas, l'arbre d'impulsions d'horloge est une série vide. Cependant, dans la plupart des configurations, l'arbre d'impulsions d'horloge contient à la fois des éléments logiques combinatoires et séquentiels. Comme décrit dans le brevet de Chen et al, une partie de l'arbre d'impulsions d'horloge à laquelle il incombe de générer un nombre prédéterminé de signaux d'horloge, est sélectionnée pour la mise en oeuvre dans l'un des dispositifs logiques programmables du système d'émulation spécifiquement dédié à la génération d'impulsions d'horloge. Ceci est réalisé dans la tentative de garder toutes les ressources de génération d'impulsions d'horloge à l'intérieur d'un seul dispositif logique programmable, ce qui aide à réduire les transgressions du temps de maintien. Les signaux d'horloge générés par ce dispositif logique programmable dédié sont désignés par signaux d'"horloge globale" et sont utilisés pour obtenir d'autres signaux d'horloge. Les trajets d'horloge des signaux d'horloge globale sont mis en oeuvre dans le dispositif logique programmable dédié. Les signaux d'horloge globale deviennent les trajets d'impulsions d'horloge critiques de l'arbre d'impulsions d'horloge. Si un même signal d'horloge est destiné à être utilisé dans plus d'un dispositif logique programmable, lorsque la liste de réseaux est mise en oeuvre dans le système d'émulation, la partie de l'arbre d'impulsions d'horloge générant ce signal d'horloge doit être identifiée et reproduite dans chaque dispositif en utilisant ce signal d'horloge. Etant donné cette reproduction, l'arbre d'impulsions d'horloge doit être aussi petit que possible. Sinon, la partie reproduite de l'arbre d'impulsions d'horloge utilise une capacité trop importante du dispositif logique programmable, laissant trop peu de ressources pour d'autres portes logiques. Cependant, il est important que l'arbre d'impulsions d'horloge ne soit pas ajusté arbitrairement, car il doit contenir tous les réseaux critiques utilisés pour générer les signaux d'horloge internes. Dans les systèmes d'émulation de l'art antérieur, la plus grande partie de la génération de l'arbre d'impulsions d'horloge est effectuée par la personne utilisant le système d'émulation. Tout d'abord, le système d'émulation identifie l'arbre d'impulsions d'horloge le "plus mauvais" qui comporte tous les trajets d'impulsions d'horloge potentiels. Puis, le système d'émulation fournit une liste de tous les éléments combinatoires dans l'arbre d'impulsions d'horloge, ayant de multiples entrées. Dans une méthodologie de configuration classique, seul l'un des signaux d'entrée, dans un élément logique combinatoire, se trouve dans le trajet d'impulsions d'horloge critique. Sinon, la sortie de cet élément logique combinatoire ne peut pas être prévisible. Les autres entrées des éléments logiques combinatoires sont généralement alimentées par des signaux plus lents utilisés pour commander une horloge plus rapide. Ces signaux plus lents qui commandent l'horloge plus rapide sont connus sous la désignation de "qualificateurs d'impulsions d'horloge". En bref, un qualificateur d'impulsions d'horloge est constitué par tout signal qui est utilisé pour déclencher un signal d'horloge. Le procédé de l'art antérieur d'identification de qualificateurs d'impulsions d'horloge sera décrit maintenant. Fondamentalement, le procédé de l'art antérieur d'identification de qualificateurs d'impulsions d'horloge comporte trois étapes. Tout d'abord, l'utilisateur spécifie des signaux comme qualificateurs d'impulsions d'horloge. Puis, le système d'émulation marque tous les autres qualificateurs d'impulsions d'horloge potentiels et fournit cette liste à l'utilisateur. Enfin, l'utilisateur vérifie si les signaux marqués par le système d'émulation comme qualificateurs d'impulsions d'horloge sont en fait des qualificateurs d'impulsions d'horloge. Les systèmes d'émulation de l'art antérieur marquent les qualificateurs d'impulsions d'horloge potentiels de la manière suivante. Si l'on commence par chaque impulsion d'activation d'horloge spécifiée par l'utilisateur (une impulsion d'activation d'horloge, telle que définie dans la demande de Chen et al, est un signal d'écriture d'E/S), les portes combinatoires sont suivies dans l'ordre pour obtenir des réseaux de signaux à partir de chaque impulsion d'activation d'horloge. Tous les signaux de sortie de chaque élément de stockage qui reçoit un signal d'entrée d'impulsions d'horloge en provenance des réseaux de signaux dérivés sont marqués comme étant des qualificateurs d'impulsions d'horloge. A ce moment, le système d'émulation de l'art antérieur n'a pas encore identifié tous les qualificateurs d'impulsions d'horloge potentiels. Les systèmes d'émulation de l'art antérieur nécessitent des étapes supplémentaires pour trouver les qualificateurs d'impulsions d'horloge non encore marqués. Dans ces étapes supplémentaires, l'émulateur suit un trajet en partant de chaque source d'impulsions d'horloge spécifiée par l'utilisateur, en passant par tous les trajets des signaux en provenance de cette source d'impulsions d'horloge, et en allant vers toutes les bornes d'entrée de signal d'horloge des éléments de stockage pouvant être atteintes par les éléments combinatoires et les éléments de stockage. Puis, après que toutes les sources d'impulsions d'horloge sont suivies dans le sens direct, l'émulateur effectue un retour en sens inverse à partir des bornes d'entrée de signaux d'horloge sur les éléments de stockage, en passant par chaque trajet de signaux, puis marque comme qualificateurs d'impulsions d'horloge potentiels tous les signaux d'entrée des portes combinatoires et tous les signaux d'entrée de données des éléments de stockage rencontrés, sauf en ce qui concerne les éléments logiques avec une seule entrée. A ce moment, comme noté ci-dessus, l'utilisateur doit spécifier celui de ces signaux marqués comme un qualificateur d'impulsions d'horloge potentiel qui est en fait un qualificateur d'impulsions d'horloge. Dans l'art antérieur, les signaux que l'utilisateur vérifie comme qualificateurs d'impulsions d'horloge sont supprimés, ou "arasés", de l'arbre d'impulsions d'horloge. Ceci est réalisé de telle sorte que seuls les réseaux critiques utilisés pour générer les signaux d'horloge internes restent sur l'arbre d'impulsions d'horloge. Lorsqu'une configuration complexe de circuit intégré est en cours d'émulation, ce traitement de l'art antérieur de marquage des qualificateurs d'impulsions d'horloge potentiels dans lequel l'utilisateur détermine quels qualificateurs d'impulsions d'horloge potentiels sont en fait des qualificateurs d'impulsions d'horloge, est très ennuyeux et long car le procédé de l'art antérieur pouvait marquer plusieurs milliers de signaux comme qualificateurs d'impulsions d'horloge potentiels. Par conséquent, il se fait sentir la nécessité d'un procédé qui soit plus discriminateur lors de l'identification de signaux en tant que qualificateurs d'impulsions d'horloge potentiels. La présente invention résout les problèmes et pallie les inconvénients de l'art antérieur par un procédé unique d'identification de qualificateurs d'impulsions d'horloge potentiels dans la description d'une liste de réseaux d'un circuit intégré. Plus précisément, la présente invention fonctionne en établissant à "zéro", initialement, la vitesse de chaque réseau dans la liste de réseaux. Ensuite, les réseaux d'impulsions d'horloge potentiels sont marqués en établissant tout d'abord la vitesse des sources d'impulsions d'horloge spécifiées par l'utilisateur à "un". Puis, la vitesse de la sortie de chaque élément logique est établie à "un" si l'une de ses entrées a une vitesse de "un". Après que les réseaux d'impulsions d'horloge potentiels sont marqués, la vitesse maximum de chaque réseau est calculée. Ceci est fait en fonction du type d'élément logique dont est issu le réseau à évaluer. La vitesse d'un réseau de sortie pour la logique combinatoire est réglée pour être égale à la vitesse de l'entrée la plus rapide. La vitesse d'un réseau de sortie pour un élément logique séquentiel sans rétroaction est réglée pour être la plus rapide de l'une ou l'autre de la vitesse du réseau d'entrée de données ou de la moitié de la vitesse du réseau d'entrée d'impulsions d'horloge. La vitesse d'un réseau de sortie pour un élément séquentiel avec rétroaction est réglée à la moitié de la vitesse du réseau d'entrée d'impulsions d'horloge. Après que la vitesse maximum des réseaux est calculée, la liste de réseaux est arasée ou ajustée en effectuant un retour depuis chaque signal d'horloge interne vers la source d'impulsions d'horloge. Plus précisément, lorsqu'un élément logique avec de multiples entrées est atteint au cours de l'ajustage de retour, le réseau le plus rapide est désigné par réseau d'impulsions d'horloge critique et les entrées plus lentes sont marquées comme qualificateurs d'impulsions d'horloge potentiels. La seule exception à cette règle est lorsque l'élément logique est un multiplexeur. Si l'élément logique est un multiplexeur, toutes les entrées sont désignées comme étant des réseaux d'impulsions d'horloge critiques tandis que les entrées de sélection du multiplexeur sont marquées comme étant des qualificateurs d'impulsions d'horloge potentiels. Les caractéristiques préférées ci-dessus, de l'invention, ainsi que d'autres, comportant divers détails nouveaux de mise en oeuvre et de combinaison d'éléments, seront maintenant plus particulièrement décrites en se référant aux dessins annexés. Il est bien entendu que les procédés et circuits particuliers mettant en oeuvre l'invention sont représentés à titre illustratif uniquement et non comme des limitations à l'invention. Comme il sera compris par l'homme de l'art, les principes et caractéristiques de cette invention peuvent être utilisés dans des modes de réalisation divers et nombreux, sans s'écarter du cadre de l'invention. On se référera aux dessins annexés dans lesquels sont représentés des modes de réalisation illustratifs d'aspects de l'invention, à partir desquels de nouvelles caractéristiques et de nouveaux avantages apparaîtront. La figure 1 est un schéma simplifié d'une petite partie d'un circuit à mettre en oeuvre dans un système d'émulation logique reprogrammable. Les figures 2A, 2B, 2C fournissent un organigramme d'un mode de réalisation de la présente invention utilisé pour sélectionner automatiquement un qualificateur d'impulsions d'horloge. La figure 3 est un schéma représentant la règle pour calculer la vitesse maximum d'un élément logique combinatoire. La figure 4 est un schéma représentant la règle pour calculer la vitesse maximum d'un élément logique séquentiel avec rétroaction. La figure 5 est un schéma représentant la règle pour le calcul de la vitesse maximum d'un élément logique séquentiel sans rétroaction. La figure 6 est un schéma de circuit utilisé pour représenter un exemple de la façon dont un mode de réalisation de la présente invention initialise et marque des réseaux d'impulsions d'horloge potentiels. La figure 7 est un schéma de circuit utilisé pour représenter un exemple de la façon dont un mode de réalisation de la présente invention calcule la vitesse maximum d'un réseau. Le procédé actuellement préféré de la présente invention sera décrit maintenant, en référence aux dessins sur lesquels: La figure 1 représente un exemple générique d'une petite partie d'un circuit 10 à mettre en oeuvre dans un système d'émulation logique reprogrammable. Le circuit 10 est constitué de sources d'impulsions d'horloge externes 15, 16, 17, 18, qui sont la base des signaux d'horloge utilisés dans le circuit à émuler. Dans cet exemple, le circuit 10 a son arbre d'impulsions d'horloge 25 qui prend racine aux sources d'impulsions d'horloge externes 15, 16, 17, 18. L'arbre d'impulsions d'horloge 25 est constitué des composants utilisés pour obtenir des signaux d'horloge internes 30, 31, 32, 33, 34, 35, 36, 37, 38. Dans l'exemple représenté, le signal d'horloge interne 31 est dérivé de la source d'impulsions d'horloge 17, de l'élément logique combinatoire et du trajet de signal de commande lent 55 contenant l'élément logique 58. L'élément logique combinatoire 50, qui est représenté ici comme une porte à deux entrées, est l'élément qui commande l'horloge afin de créer le signal d'horloge interne 31. L'entrée de l'élément logique combinatoire 55 est le trajet d'impulsions d'horloge critique 60. En plus du trajet d'impulsions d'horloge critique 60, le trajet de signal de commande lent 55 est introduit dans l'élément logique combinatoire 50. La sortie de l'élément logique combinatoire 50 est le signal d'horloge interne 31 qui est réparti dans l'émulateur. Lorsque l'on utilise un système d'émulation logique, l'utilisateur charge tout d'abord la description de la liste de réseaux de la configuration subissant l'émulation dans un ordinateur ou dans un autre dispositif qui commande l'émulateur. Puis, le système d'émulation peut demander une certaine information spécifique concernant la configuration, qui aidera l'émulateur à mettre en oeuvre la configuration. Par exemple, le système d'émulation demandera à l'utilisateur de spécifier o se trouvent les sources d'impulsions d'horloge dans la configuration. Comme décrit, les divers modes de réalisation de l'invention identifient de manière discriminatoire les signaux qui sont des qualificateurs d'impulsions d'horloge. Un mode de réalisation du procédé de la présente invention sera décrit en se référant aux figures 2a-2c. L'invention fonctionne en déterminant la vitesse potentielle de chaque signal (c'est-à-dire "réseau") dans la liste de réseaux de l'utilisateur. La première étape d'un mode de réalisation de la présente invention, connue comme l'étape d'initialisation représentée à l'étape 100, consiste à établir à "0" la vitesse de chaque réseau dans la description de la liste de réseaux de la configuration. Après que la vitesse de chaque réseau dans la liste de réseaux est établie à "0", le système d'émulation, au cours des étapes 105-115, marque tous les réseaux d'impulsions d'horloge potentiels. Comme représenté au cours de l'étape 105, la vitesse de tous les réseaux d'impulsions d'horloge spécifiés par l'utilisateur est établie à "1". Puis, au cours de l'étape 110, pour chaque élément logique dans la liste de réseaux, lorsque la vitesse de l'entrée d'un élément logique est "1", la vitesse de la sortie de cet élément logique est établie à "1". Le système d'émulation, au cours de l'étape 115, répète l'étape 110 jusqu'à ce que chaque signal ayant un trajet dirigé vers la source d'impulsions d'horloge spécifiée par l'utilisateur ait sa vitesse établie à "1". Après que tous les réseaux d'impulsions d'horloge potentiels sont marqués, la vitesse maximum de la sortie d'un élément logique est calculée, ce qui se produit aux étapes -145. Au cours de l'étape 120, le système d'émulation logique détermine si l'élément logique évalué est un élément logique combinatoire ou un élément logique séquentiel. Si l'élément logique est un élément logique combinatoire, l'émulateur, au cours de l'étape 125, établit la vitesse de sortie à une vitesse égale à celle du plus rapide de tous les réseaux d'entrée. Un exemple d'un tel élément logique combinatoire est représenté sur la figure 3. Si l'élément logique n'est pas un élément logique combinatoire, l'émulateur détermine, au cours de l'étape 130, s'il s'agit d'un élément logique séquentiel avec ou sans rétroaction. Si l'élément logique est un élément logique séquentiel avec rétroaction, l'émulateur, au cours de l'étape , établit la vitesse de sortie à la moitié de la vitesse de l'entrée d'impulsions d'horloge. Un exemple d'un élément logique séquentiel avec rétroaction est représenté sur la figure 4. Cependant, si l'élément logique est un élément logique séquentiel sans rétroaction, l'émulateur, au cours de l'étape 140, établit la vitesse de sortie à l'une ou l'autre de la vitesse du signal d'entrée de données ou de la moitié de la vitesse du réseau d'entrée d'impulsions d'horloge, qui est toujours inférieure. Un exemple d'élément logique séquentiel sans rétroaction est représenté sur la figure 5. L'émulateur, au cours de l'étape 145, répète les étapes 120-145 jusqu'à ce que plus aucun changement de vitesse ne soit effectué. Après que la vitesse maximum des éléments logiques est calculée, un ajustage de retour à partir des signaux d'horloge internes 30, 31, 32, 33, 34, 35, 36, 37, 38 (ces signaux sont représentés sur la figure 1) vers les sources d'impulsions d'horloge 15, 16, 17, 18 (ces sources d'impulsions d'horloge sont représentées sur la figure 1) se produit. Au cours de cet ajustage de retour, l'entrée la plus rapide de chaque élément logique est marquée comme étant le réseau d'impulsions d'horloge critique tandis que toutes les autres entrées de l'élément logique sont marquées comme étant des qualificateurs d'impulsions d'horloge. Une exception à cette règle est lorsque l'élément logique est un multiplexeur avec de multiples entrées. Lorsque ceci se produit, tous les réseaux d'entrée sont marqués comme étant des réseaux d'impulsions d'horloge critiques. Aucune des entrées n'est marquée comme étant un qualificateur d'impulsions d'horloge. La raison en est que les multiplexeurs sont souvent utilisés pour effectuer une sélection entre plusieurs impulsions d'horloge différentes avec différentes vitesses. Cependant, toutes les entrées de sélection sont marquées comme étant des qualificateurs d'impulsions d'horloge potentiels. La manière selon laquelle ceci est mis en oeuvre est représentée dans l'organigramme de la figure 2c. Tout d'abord, à l'étape 150, une file d'attente ("Q"), dans le logiciel d'émulation, est initialisée et un réseau d'impulsions d'horloge interne ("ck") est annexé à la file d'attente "Q". Puis, à l'étape 155, l'émulateur prend le premier réseau dans la file d'attente "Q"I' (le premier réseau dans "Q" est représenté par la variable "N") et obtient l'élément logique "L" commandant ce réseau (réseau "N"). Dans le premier passage du traitement d'ajustage de retour, le réseau "N" est le seul réseau dans la file d'attente "Q". A l'étape 160, l'émulateur doit déterminer si l'élément logique "L" est un multiplexeur. Si l'élément logique "L" n'est pas un multiplexeur, le réseau d'entrée avec la vitesse la plus élevée est marqué comme étant un réseau d'impulsions d'horloge et est annexé à la file d'attente "Q", commereprésenté à l'étape 165. Cependant, si l'élément logique "L" est un multiplexeur, toutes ses entrées de données sont marquées comme étant des réseaux d'impulsions d'horloge et chaque réseau d'entrée de données est annexé à la file d'attente "Q"I', comme représenté à l'étape 170. Au cours de l'étape 175, l'émulateur détermine si la file d'attente "Q"I' est vide. La file d'attente "Q"I' est vide uniquement lorsque l'émulateur a effectué un retour sur tout le trajet vers une source d'impulsions d'horloge. Puis, au cours de l'étape 180, l'émulateur détermine si tous les réseaux d'impulsions d'horloge internes ont été ajustés. S'ils n'ont pas tous été ajustés, les étapes 150-175 sont répétées pour le réseau d'impulsions d'horloge interne suivant. Si chaque réseau d'impulsions d'horloge interne a été ajusté, l'utilisateur, au cours de l'étape 190, doit vérifier que tous les réseaux qui ont été marqués comme étant des qualificateurs d'impulsions d'horloge sont en fait des qualificateurs d'impulsions d'horloge. Le procédé de la présente invention est beaucoup plus discriminateur que celui de l'art antérieur pour le marquage des qualificateurs d'impulsions d'horloge. L'art antérieur marquait chaque signal qui pouvait être un qualificateur d'impulsions d'horloge tandis que la présente invention, en évaluant la vitesse des réseaux, marque uniquement les réseaux lents en tant que qualificateurs d'impulsions d'horloge. Puisque le procédé de la présente invention est beaucoup plus discriminateur pour marquer les qualificateurs d'impulsions10 d'horloge potentiels que ne l'est celui de l'art antérieur, un nombre beaucoup plus petit de qualificateurs d'impulsions d'horloge potentiels sont marqués. Ceci réduit considérablement le temps nécessaire à l'utilisateur pour vérifier si les réseaux marqués comme qualificateurs d'impulsions d'horloge sont en fait des qualificateurs d'impulsions d'horloge réels. La figure 6 représente, à titre d'exemple, la façon dont l'invention initialise une liste de réseaux et marque les réseaux d'impulsions d'horloge potentiels. Le circuit 200 y est représenté. Pour initialiser la liste de réseaux, comme il est visible à l'étape 100 de la figure 2a, chaque réseau est établi à "0". Puis, la vitesse de chaque source d'impulsions d'horloge est établie à "1", comme représenté à l'étape 105 sur la figure 2a. Dans l'exemple de la figure 6, les sources d'impulsions d'horloge sont désignées par CLK_SRC1 et CLK_SRC2. Ainsi, les réseaux de CLKSRC1 et CLKSRC2 sont marqués avec une vitesse de "1". L'étape suivante, représentée à l'étape 110 de la figure 2a, consiste à établir à "1" la vitesse de la sortie de chaque élément logique recevant un réseau d'entrée avec une vitesse de "1". Ainsi, dans le circuit 200 de la figure 6, puisque CLK_SRC1 (qui a une vitesse de "1") est introduit aux entrées d'impulsions d'horloge des éléments logiques séquentiels 202, 204, 206, les sorties des éléments logiques séquentiels 202, 204, 206 ont leur vitesse établie à "1" (les éléments logiques séquentiels 202, 204, 206 ont respectivement, en tant qu'entrées de données, DATA_3, DATA 1 et DATA_2). L'élément logique séquentiel 202 alimente la porte ET 208. Puisque l'entrée de la porte ET 208 a une vitesse de "1", sa vitesse de sortie est aussi établie à "1". En poursuivant, la porte ET 208 alimente à la fois la porte ET 210 et l'élément logique séquentiel 224. Puisque la porte ET 208 alimente la porte ET 210 avec un réseau ayant une vitesse de "1", la vitesse de la sortie de la porte ET 210 est établie à "1". Puisque la vitesse de la sortie de la porte ET 210 est "1", la sortie de l'élément logique séquentiel 212, qui est alimenté par la porte ET 210, est "1". L'élément logique séquentiel 212 alimente deux éléments logiques. Tout d'abord, l'élément logique séquentiel 212 alimente la porte ET 214. Puisque la vitesse de la sortie de l'élément logique séquentiel 212 est "1", la sortie de la porte ET 214 est "1". La porte ET 214 alimente la porte ET 216. Ainsi, la vitesse de la sortie de la porte ET 216 est établie à "1". La porte ET 216 alimente la porte ET 218. Ainsi, la vitesse de la sortie de la porte ET 218 est établie à "1". La porte ET 218 alimente l'élément logique séquentiel 220. Ainsi, la vitesse de la sortie de l'élément logique séquentiel 220 est établie à "1". L'élément logique séquentiel 220 alimente la porte ET 222. Ainsi, la vitesse de la sortie de la porte ET 222 est établie à "1". La porte ET 222 alimente à la fois l'élément logique séquentiel 224 et l'élément logique séquentiel 212. Puisqu'un réseau avec une vitesse de "1" est introduit dans l'élément logique séquentiel 224, la vitesse de la sortie de l'élément logique séquentiel 224 est établie à "1". Puisque la vitesse de la sortie de l'élément logique séquentiel 224 est "1", l'émulateur a normalement établi la vitesse de la porte ET 216 à "1". Cependant, puisque ceci a déjà été fait, le suivi de ce trajet est arrêté. En outre, comme décrit, la porte ET 222 alimente l'élément logique séquentiel 212. Dans la mesure o la vitesse de la sortie de l'élément logique séquentiel 212 a déjà été établie à "1", le suivi de ce trajet est, de la même façon, arrêté. Comme décrit ci-dessus, la porte ET 208 alimentait l'élément logique séquentiel 224 en plus de la porte ET 210. Puisque la vitesse de la sortie de la porte ET 208 est "1", la sortie de l'élément logique séquentiel 224 est établie à "1". Cependant, puisque la vitesse de la sortie de l'élément logique séquentiel 224 était déjà établie à "1", le suivi de ce trajet est arrêté. L'émulateur continue alors de suivre le trajet d'impulsions d'horloge de CLKSRC2. CLKSRC2 est introduit à la fois dans le multiplexeur 228 et dans l'élément logique séquentiel 226. Puisque la vitesse de CLKSRC2 est "1", la vitesse de la sortie de l'élément logique séquentiel 226 est établie à "1". L'élément logique séquentiel 226 alimente à la fois le multiplexeur 228 et l'élément logique séquentiel 230. Puisque la vitesse de la sortie de l'élément logique séquentiel 226 est "1", la sortie de l'élément logique séquentiel 230, qui est alimenté par l'élément logique séquentiel 226, est "1". L'élément logique séquentiel 230 alimente la porte ET 208. Puisque la vitesse de la sortie de l'élément logique séquentiel 230 est "1", la sortie de la porte ET 208 est établie à "1", mais la vitesse de sortie de la porte ET 208 était déjà établie à "1", de telle sorte que le suivi de ce trajet est arrêté. Enfin, comme décrit, le CLKSRC2 alimente le multiplexeur 228. Etant donné ceci, la vitesse de la sortie du multiplexeur 228 est établie à "1". Le multiplexeur 228 alimente la porte ET 218. Puisque la vitesse de la sortie du multiplexeur 228 est "1", la sortie de la porte ET 218 est établie à "1". Cependant, puisque la vitesse de la sortie de la porte ET 218 était déjà établie à "1", le suivi de ce trajet est arrêté. Puisque la porte ET 232 a sur ses entrées DATA_4 et DATA_5, elle n'est pas alimentée par une source d'impulsions d'horloge. Les réseaux d'entrée de la porte ET 232 ont une vitesse marquée par "0" et leur sortie ont une vitesse marquée par "0". Ainsi, dans l'exemple de la figure 6, les étapes 110-115 sont terminées. Si l'on se réfère maintenant à la figure 7, les étapes o la vitesse de chaque réseau est calculée, représentées par les étapes 120-180 sur les figures 2a, 2b et 2c, seront illustrées pour le même circuit 200 que sur la figure 6. Les éléments logiques 202, 204 et 206 sont des éléments logiques séquentiels sans rétroaction. Ainsi, la vitesse de la sortie de chacun de ces éléments est établie à la plus lente parmi la vitesse d'entrée de données et la moitié de la vitesse d'entrée de données. Puisque la vitesse d'entrée des données dans chacun de ces éléments est "0", la vitesse de sortie de chacun d'eux est établie à "0". Pour l'élément logique 226, un élément logique séquentiel avec rétroaction, la vitesse de sortie est établie à la moitié de la vitesse d'entrée d'impulsions d'horloge. Puisque l'entrée d'impulsions d'horloge de l'élément logique 226 est alimentée par CLKSRC2, la vitesse de la sortie de l'élément logique 226 est établie à "1/2". Pour l'élément logique 230, un élément logique séquentiel avec rétroaction, la vitesse de sortie est établie à la moitié de la vitesse d'entrée d'impulsions d'horloge. Puisque l'entrée d'impulsions d'horloge de l'élément logique 230 est alimentée par la sortie de l'élément logique 226, qui a une vitesse de "1/2", la vitesse de sortie de l'élément logique 230 est de "1/4". Pour la porte ET 208, la vitesse de la sortie est établie pour être égale à la vitesse de l'entrée la plus rapide. Puisqu'un réseau avec une vitesse de "1/4" est introduit par l'élément logique 230 et un réseau avec une vitesse de "0" est introduit par l'élément logique 202, la vitesse de sortie de la porte ET 208 est établie à "1/4". Pour l'élément logique 224, un élément logique séquentiel sans rétroaction, la vitesse de sortie est établie à la plus lente parmi la vitesse d'entrée des données ou la moitié de la vitesse d'entrée d'impulsions d'horloge. Puisqu'un réseau avec une vitesse de "1/4" est introduit par la porte ET 208 à l'entrée d'impulsions d'horloge, la vitesse de sortie de l'élément logique 224 est établie à "1/8". Pour la porte ET 210, la vitesse de sortie est établie pour être égale à la vitesse de l'entrée la plus rapide. Puisqu'un réseau avec une vitesse de "1/4" est introduit par la porte ET 208 et un réseau avec une vitesse de "0" est introduit par la porte ET 232, la vitesse de sortie de la porte ET 210 est établie à "1/4". Pour l'élément logique 212, un élément logique séquentiel sans rétroaction, la vitesse de sortie est établie à la plus lente parmi la vitesse d'entrée des données ou la moitié de la vitesse d'entrée d'impulsions d'horloge. Puisqu'un réseau avec une vitesse de "1/4" est introduit par la porte ET 210 à l'entrée d'impulsions d'horloge, la vitesse de sortie de l'élément logique 212 est établie à "1/8". Pour la porte ET 214, la vitesse de sortie est établie pour être égale à la vitesse de l'entrée la plus rapide. Puisqu'un réseau avec une vitesse de "1/8" est introduit par l'élément logique 212 et un réseau avec une vitesse de "0" est introduit par la porte ET 232, la vitesse de sortie de la porte ET 214 est établie à "1/8". Pour le multiplexeur 228, la vitesse de sortie est établie pour être égale à la vitesse de l'entrée la plus rapide. Puisque l'une des entrées est CLK_SRC2, qui a une vitesse de "1", la vitesse de sortie du multiplexeur 228 est établie à "1". Pour la porte ET 216, la vitesse de sortie est établie pour être égale à la vitesse de l'entrée la plus rapide. Puisqu'un réseau avec une vitesse de "1/8" est introduit par l'élément logique 224 et un réseau avec une vitesse de "1/8" est introduit par la porte ET 214, la vitesse de sortie de la porte ET 216 est établie à "1/8". Pour la porte ET 218, la vitesse de sortie est établie pour être égale à la vitesse de l'entrée la plus rapide. Puisqu'un réseau avec une vitesse de "1/8" est introduit par la porte ET 216 et un réseau avec une vitesse de "1" est introduit par le multiplexeur 228, la vitesse de sortie de la porte ET 218 est établie à "1". Pour l'élément logique 220, un élément logique séquentiel sans rétroaction, la vitesse de sortie est établie à la plus lente parmi la vitesse d'entrée des données ou la moitié de la vitesse d'entrée d'impulsions d'horloge. Puisqu'un réseau avec une vitesse de "1/8" est introduit par l'élément logique 212 à l'entrée de données et un réseau avec une vitesse de "1" est introduit par la porte ET 218 à l'entrée d'impulsions d'horloge, la vitesse de sortie de l'élément logique 220 est établie à "1/8". Pour la porte ET 222, la vitesse de sortie est établie pour être égale à la vitesse de l'entrée la plus rapide. Puisqu'un réseau avec une vitesse de "1/8" est introduit par l'élément logique 222 et deux réseaux avec des vitesses de "0" sont introduits aux autres entrées, la vitesse de sortie de la porte ET 222 est établie à "1/8". L'emplacement des signaux d'horloge internes est calculé avant de marquer les qualificateurs d'impulsions d'horloge potentiels. Les signaux d'horloge internes sont les signaux introduits à l'entrée d'impulsions d'horloge d'un élément logique séquentiel. Dans le circuit de la figure 7, les signaux d'horloge internes sont les sorties des portes ET 208, 210, 218 et de l'élément logique séquentiel 226. Afin de marquer les qualificateurs d'impulsions d'horloge potentiels, la liste de réseaux est ajustée en retour à partir des signaux d'horloge internes 250, 255, 260, 265 vers les sources d'impulsions d'horloge CLKSRC1 et CLKSRC2. Comme décrit, au cours de cet ajustage en retour, l'entrée la plus rapide de chaque élément logique rencontré est marquée comme étant le réseau d'impulsions d'horloge critique tandis que les autres entrées de l'élément logique sont marquées comme étant des qualificateurs d'impulsions d'horloge, à moins que l'élément logique soit un multiplexeur. Lors de l'ajustage en retour à partir du signal d'horloge interne 250, on rencontre la porte ET 208. L'entrée avec une vitesse de "1/4" (qui est reçue en provenance de l'élément logique 230) est marquée comme étant le réseau d'impulsions d'horloge critique et l'entrée avec une vitesse de "0" (qui est reçue en provenance de l'élément logique 202) est désignée par qualificateur d'impulsions d'horloge potentiel. Le composant suivant rencontré est l'élément logique 230. Puisque la seule entrée de l'élément logique 230 est une entrée d'impulsions d'horloge, cette entrée doit être dans le trajet d'impulsions d'horloge critique. L'entrée de données sur l'élément logique 230 est introduite en rétroaction à partir d'elle-même. Par conséquent, ce ne peut pas être un qualificateur d'impulsions d'horloge. L'élément suivant rencontré est l'élément logique 226. Puisque la seule entrée de l'élément logique 226 est un CLKSRC2, cette entrée doit être dans le trajet d'impulsions d'horloge critique. Comme pour l'élément logique 230, l'entrée de données sur l'élément logique 226 est introduite en rétroaction à partir d'elle-même. Par conséquent, ce ne peut pas être un qualificateur d'impulsions d'horloge. Puisque la source d'impulsions d'horloge a été atteinte (CLK_SRC2), l'ajustage en retour pour le signal d'horloge interne 250 est maintenant terminé. Lors de l'ajustage en retour à partir du signal d'horloge interne 255, on rencontre la porte ET 210. L'entrée de la porte ET 210 avec une vitesse de "1/4" (qui est reçue en provenance de la porte ET 208) est marquée comme étant le réseau d'impulsions d'horloge critique et l'entrée avec une vitesse de "0" (qui est reçue en provenance de la porte ET 232) est marquée comme étant un qualificateur d'impulsions d'horloge potentiel. Le composant suivant rencontré le long du trajet d'impulsions d'horloge critique est la porte ET 208, qui a déjà été ajustée. Lors de l'ajustage en retour à partir du signal d'horloge interne 260, la porte ET 218 est rencontrée. L'entrée de la porte ET 218 avec une vitesse de "1" (qui est reçue en provenance du multiplexeur 228) est marquée comme étant le réseau d'impulsions d'horloge critique et l'entrée avec une vitesse de "1/8" (qui est reçue en provenance de la porte ET 216) est marquée comme étant un qualificateur d'impulsions d'horloge potentiel. Lorsque l'ajustage en retour est poursuivi le long du trajet d'impulsions d'horloge critique, on rencontre le multiplexeur 228. Comme décrit, lorsqu'un multiplexeur avec de multiples entrées est rencontré dans l'ajustage en retour, tous les réseaux d'entrée sont marqués comme étant des réseaux d'impulsions d'horloge critiques. Les entrées de sélection du multiplexeur, qui, dans ce cas, ont toutes une vitesse de "0", sont marquées comme étant des qualificateurs d'impulsions d'horloge potentiels. A ce moment, l'ajustage en retour se poursuit depuis chacun des réseaux d'impulsions d'horloge critiques introduits dans le multiplexeur 228, jusqu'à ce que l'on rencontre les sources d'impulsions d'horloge. Cependant, comme il ressort de la description ci-dessus, dans cet exemple, l'ajustage en retour se poursuit sans marquer davantage de qualificateurs d'impulsions d'horloge potentiels. Le signal d'horloge interne 265 est rencontré lors de l'ajustage en retour à partir des signaux d'horloge internes 250 et 255. La description de ces opérations d'ajustage en retour peut aussi s'appliquer ici. Par conséquent, lors de l'ajustage en retour à partir du signal d'horloge interne 265, aucun qualificateur d'impulsions d'horloge potentiel supplémentaire n'est rencontré. Maintenant que l'émulateur a identifié le trajet d'impulsions d'horloge critique pour le circuit 200, il peut réaliser l'arbre d'impulsions d'horloge du circuit. Dans le circuit 200 représenté sur la figure 7, l'arbre d'impulsions d'horloge, qui est désigné par CLK_TREE, est constitué des composants 208, 210, 218, 226, 228 et 230. Ainsi, les signaux d'horloge internes CLK_SRC1 et CLK_SRC2 sont introduits dans CLKTREE. Puisque les réseaux délivrés par les portes ET 208, 210 et 218 forment la base des autres impulsions d'horloge dans le circuit 200, ces réseaux forment les impulsions d'horloge internes. Un procédé préféré de sélection automatique de qualificateur d'impulsions d'horloge dans un système d'émulation logique reprogrammable a été décrit. Bien que des modes de réalisation et des applications de cette invention aient été représentés et décrits, comme il apparaîtra à l'homme de l'art, davantage de modes de réalisation et d'applications sont possibles sans s'écarter des concepts inventifs décrits ici. REVENDICATIONS 1. Procédé d'identification de qualificateurs d'impulsions d'horloge potentiels dans la description de la liste de réseaux d'un circuit intégré, la liste de réseaux comportant des éléments logiques avec des réseaux d'entrée et des réseaux de sortie, lesdits éléments logiques comportant des éléments logiques combinatoires, des éléments logiques séquentiels avec rétroaction et des éléments logiques séquentiels sans rétroaction, ledit procédé comprenant: l'initialisation (100) de chaque réseau de la liste de réseaux à une vitesse de zéro; l'identification (105) de tous les réseaux d'impulsions d'horloge séquentiels en attribuant une vitesse de "un" à tous les réseaux avec un trajet vers une source d'impulsions d'horloge; le calcul (120-145) de la vitesse maximum de chaque réseau de sortie de chacun des éléments logiques dans la liste de réseaux; et le marquage (150-175) en tant que qualificateurs d'impulsions d'horloge potentiels de tous les réseaux d'entrée pour un élément logique donné dans la liste de réseaux, qui sont plus lents que l'entrée la plus rapide pour cet élément logique donné. 2. Procédé selon la revendication 1, caractérisé en ce que ladite étape d'identification comprend: l'établissement des sources d'impulsions d'horloge spécifiées par l'utilisateur à une vitesse de "un"; et l'établissement de tous les réseaux dans la liste de réseaux qui sont délivrés par les éléments logiques à une vitesse de "un", lorsque l'un des réseaux d'entrée dans les éléments logiques a une vitesse de un. 3. Procédé selon la revendication 1, caractérisé en ce que ladite étape de calcul comprend: l'établissement de tous les réseaux de sortie desdits éléments logiques combinatoires à la vitesse la plus rapide desdits réseaux d'entrée dans lesdits éléments logiques combinatoires; l'établissement de tous les réseaux de sortie desdits éléments logiques séquentiels sans rétroaction, soit à la vitesse des réseaux d'entrée dans lesdits éléments logiques séquentiels sans rétroaction, soit à une vitesse égale à la moitié de la vitesse des réseaux d'entrée aux entrées d'impulsions d'horloge sur lesdits éléments logiques séquentiels sans rétroaction, selon celle qui est la plus lente; et l'établissement de tous les réseaux de sortie desdits éléments logiques séquentiels avec rétroaction à une vitesse égale à la moitié de la vitesse du réseau d'entrée aux entrées d'impulsions d'horloge sur lesdits éléments logiques séquentiels avec rétroaction. 4. Procédé d'identification de qualificateurs d'impulsions d'horloge potentiels dans une description de liste de réseaux d'un circuit intégré, la liste de réseaux comportant des éléments logiques, les éléments logiques comportant des éléments logiques combinatoires ayant des réseaux d'entrée et des réseaux de sortie, des éléments logiques séquentiels sans rétroaction ayant des réseaux d'entrée d'impulsions d'horloge, des réseaux d'entrée et de sortie de données, et des éléments logiques séquentiels avec rétroaction ayant des réseaux d'entrée d'impulsions d'horloge, des réseaux d'entrée et de sortie de données, le procédé comprenant: l'établissement de tous les réseaux de sources d'impulsions d'horloge spécifiées par l'utilisateur à une vitesse de un; l'établissement de tous les réseaux de sortie des éléments logiques à une vitesse de un, lorsque l'un des réseaux d'entrée des éléments logiques a une vitesse de un; l'établissement de tous les réseaux de sortie des éléments logiques combinatoires à une vitesse égale à la vitesse la plus rapide des réseaux d'entrée; l'établissement de tous les réseaux de sortie des éléments logiques séquentiels sans rétroaction, soit à la vitesse du réseau d'entrée des données, soit à la moitié de la vitesse d'entrée d'impulsions d'horloge, selon celle qui est la plus lente; l'établissement de tous les réseaux de sortie des éléments logiques séquentiels avec rétroaction à une vitesse égale à la moitié de la vitesse d'entrée d'impulsions d'horloge; et le marquage en tant que qualificateur d'impulsions d'horloge potentiel de tout réseau d'entrée des éléments logiques qui est plus lent que le réseau d'entrée le plus rapide des éléments logiques.