FR2724030A1 - Procede de selection automatique de qualificateurs d'impulsions d'horloge dans des systemes d'emulation de materiel reprogrammable - Google Patents

Procede de selection automatique de qualificateurs d'impulsions d'horloge dans des systemes d'emulation de materiel reprogrammable Download PDF

Info

Publication number
FR2724030A1
FR2724030A1 FR9510101A FR9510101A FR2724030A1 FR 2724030 A1 FR2724030 A1 FR 2724030A1 FR 9510101 A FR9510101 A FR 9510101A FR 9510101 A FR9510101 A FR 9510101A FR 2724030 A1 FR2724030 A1 FR 2724030A1
Authority
FR
France
Prior art keywords
speed
networks
clock pulse
input
logic elements
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
FR9510101A
Other languages
English (en)
Inventor
Ping San Tzeng
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Quickturn Design Systems Inc
Original Assignee
Quickturn Design Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Quickturn Design Systems Inc filed Critical Quickturn Design Systems Inc
Publication of FR2724030A1 publication Critical patent/FR2724030A1/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/06Clock generators producing several clock signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation

Abstract

L'invention concerne un procédé d'identification de qualificateurs d'impulsions d'horloge potentiels dans la description d'une liste de réseaux d'un circuit intégré, la liste de réseaux comprenant des éléments logiques. Le procédé comprend les étapes d'initialisation (100) de chaque réseau de la liste de réseaux à une vitesse de zéro, d'identification (105) de tous les réseaux d'impulsions d'horloge potentiels de telle sorte que tous les signaux ayant un trajet vers une source d'impulsions d'horloge aient une vitesse de un, de 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 de marquage (150-175) en tant que qualificateur d'impulsions d'horloge potentiel de tout réseau de la liste de réseaux qui est introduit dans les éléments logiques dans la liste de réseaux et qui est plus lent que la vitesse maximum de tout réseau et qui est introduit dans les éléments logiques.

Description

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.

Claims (4)

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.
FR9510101A 1994-08-26 1995-08-25 Procede de selection automatique de qualificateurs d'impulsions d'horloge dans des systemes d'emulation de materiel reprogrammable Withdrawn FR2724030A1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US29674394A 1994-08-26 1994-08-26

Publications (1)

Publication Number Publication Date
FR2724030A1 true FR2724030A1 (fr) 1996-03-01

Family

ID=23143369

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9510101A Withdrawn FR2724030A1 (fr) 1994-08-26 1995-08-25 Procede de selection automatique de qualificateurs d'impulsions d'horloge dans des systemes d'emulation de materiel reprogrammable

Country Status (5)

Country Link
US (1) US5715172A (fr)
JP (1) JPH08202575A (fr)
DE (1) DE19530669A1 (fr)
FR (1) FR2724030A1 (fr)
GB (1) GB2292823B (fr)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5475830A (en) * 1992-01-31 1995-12-12 Quickturn Design Systems, Inc. Structure and method for providing a reconfigurable emulation circuit without hold time violations
US6263484B1 (en) 1997-10-01 2001-07-17 Yang-Sei Yang Prototyping system and a method of operating the same
US6279146B1 (en) 1999-01-06 2001-08-21 Simutech Corporation Apparatus and method for verifying a multi-component electronic design
US6618698B1 (en) 1999-08-12 2003-09-09 Quickturn Design Systems, Inc. Clustered processors in an emulation engine
US6434704B1 (en) 1999-08-16 2002-08-13 International Business Machines Corporation Methods for improving the efficiency of clock gating within low power clock trees
US6536024B1 (en) 2000-07-14 2003-03-18 International Business Machines Corporation Method for making integrated circuits having gated clock trees
US6681377B2 (en) * 2001-09-18 2004-01-20 Quickturn Design Systems, Inc. Timing resynthesis in a multi-clock emulation system
US20030188278A1 (en) * 2002-03-26 2003-10-02 Carrie Susan Elizabeth Method and apparatus for accelerating digital logic simulations
US7096442B2 (en) * 2003-07-10 2006-08-22 Lsi Logic Corporation Optimizing IC clock structures by minimizing clock uncertainty
JP4568599B2 (ja) * 2004-12-24 2010-10-27 富士通株式会社 論理回路分割方法及び装置
US8892806B2 (en) 2007-03-07 2014-11-18 Intel Mobile Communications GmbH Integrated circuit, memory device, method of operating an integrated circuit, and method of designing an integrated circuit
US8595683B1 (en) 2012-04-12 2013-11-26 Cadence Design Systems, Inc. Generating user clocks for a prototyping environment

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
UST935003I4 (en) * 1974-02-19 1975-06-03 Process for selecting circuits with optimum
US4263651A (en) * 1979-05-21 1981-04-21 International Business Machines Corporation Method for determining the characteristics of a logic block graph diagram to provide an indication of path delays between the blocks
US4698760A (en) * 1985-06-06 1987-10-06 International Business Machines Method of optimizing signal timing delays and power consumption in LSI circuits
US4924430A (en) * 1988-01-28 1990-05-08 Teradyne, Inc. Static timing analysis of semiconductor digital circuits
US5095454A (en) * 1989-05-25 1992-03-10 Gateway Design Automation Corporation Method and apparatus for verifying timing during simulation of digital circuits
US5210700A (en) * 1990-02-20 1993-05-11 International Business Machines Corporation Automatic delay adjustment for static timing analysis
US5077676A (en) * 1990-03-30 1991-12-31 International Business Machines Corporation Reducing clock skew in large-scale integrated circuits
US5218551A (en) * 1990-04-30 1993-06-08 International Business Machines Corporation Timing driven placement
US5237514A (en) * 1990-12-21 1993-08-17 International Business Machines Corporation Minimizing path delay in a machine by compensation of timing through selective placement and partitioning
US5168455A (en) * 1991-03-28 1992-12-01 Digital Equipment Corporation Procedure for incorporating timing parameters in the synthesis of logic circuit designs
US5325309A (en) * 1991-04-30 1994-06-28 Lsi Logic Corporation Method and apparatus for integrated circuit diagnosis
US5416918A (en) * 1991-07-10 1995-05-16 Hewlett-Packard Company Low skew system for interfacing asics by routing internal clock off-chip to external delay element then feeding back to on-chip drivers
US5475830A (en) * 1992-01-31 1995-12-12 Quickturn Design Systems, Inc. Structure and method for providing a reconfigurable emulation circuit without hold time violations
JP2763985B2 (ja) * 1992-04-27 1998-06-11 三菱電機株式会社 論理シミュレーション装置
US5452239A (en) * 1993-01-29 1995-09-19 Quickturn Design Systems, Inc. Method of removing gated clocks from the clock nets of a netlist for timing sensitive implementation of the netlist in a hardware emulation system
US5481695A (en) * 1993-10-26 1996-01-02 Cadence Design Systems, Inc. System and method for estimating crosstalk between signal lines in a circuit
US5550748A (en) * 1994-03-22 1996-08-27 Cadence Design Systems, Inc. Region search for delay routing and signal net matching

Also Published As

Publication number Publication date
JPH08202575A (ja) 1996-08-09
DE19530669A1 (de) 1996-02-29
GB2292823B (en) 1998-12-02
US5715172A (en) 1998-02-03
GB9516951D0 (en) 1995-10-18
GB2292823A (en) 1996-03-06

Similar Documents

Publication Publication Date Title
FR2724030A1 (fr) Procede de selection automatique de qualificateurs d'impulsions d'horloge dans des systemes d'emulation de materiel reprogrammable
EP0198729B1 (fr) Système de simulation d'un circuit électronique
EP0146661B1 (fr) Procédé de diagnostic électrique pour identifier une cellule défectueuse dans une chaîne de cellules formant un registre à décalage
EP0490738A1 (fr) Circuit intégré avec contrôleur de test périphérique
EP0823089B1 (fr) Procede et equipement de test automatique en parallele de composants electroniques
WO2012123243A1 (fr) Systeme mono-puce comprenant un coeur programmable synthetisable et un procede de fabrication d'un tel systeme
EP1560033A1 (fr) Circuit intégré comportant un mode de test sécurisé par initialisation du dit mode de test
WO2008007026A2 (fr) Procédé de modélisation de l'activité de commutation d'un circuit numérique
WO2006024723A2 (fr) Procede et systeme d'evaluation de tests d'un programme d'ordinateur par analyse de mutations
WO2015010898A1 (fr) Procede automatise d'analyse d'une carte portant plusieurs composants de type fpga
EP0476592A2 (fr) Générateur d'adresses pour la mémoire de données d'un processeur
EP0229433B1 (fr) Dispositif de test de circuit logique combinatoire
FR3131413A1 (fr) Réseau de neurones avec génération à la volée des paramètres du réseau
EP0683455B1 (fr) Circuit intégré comprenant des moyens pour arrêter l'exécution d'un programme d'instructions quand une combinaison de points d'arrêt est vérifiée
EP0823088B1 (fr) Procede et equipement de test automatique en parallele de composants electroniques
EP1813952B1 (fr) Test de scan
WO2017178258A1 (fr) Systeme et procede de test d'un circuit integre
EP0820613B1 (fr) Procede et equipement de test automatique en parallele de composants electroniques
FR2812948A1 (fr) Procede pour tester un circuit integre a controle de cadencement flexible
EP0169089B1 (fr) Dispositif élémentaire de traitement de données
EP0264325B1 (fr) Automate pour rendre compatible un processeur avec un bus d'un autre processeur
Mbobi et al. Le paradigme acteur dans la modélisation des systèmes embarqués
EP0729091B1 (fr) Procédé et dispositif de commande simultanée des états de contrôle des unités d'exécution d'un processeur programmable
FR2737027A1 (fr) Dispositif electronique de localisation et de controle de boucles dans un programme d'un processeur, notamment un processeur de traitement d'images, et procede correspondant
EP0404649A1 (fr) Dispositif de génération d'un signal de masquage d'un bit lors d'une comparaison dynamique d'une trame de données en série, avec une consigne

Legal Events

Date Code Title Description
ST Notification of lapse