FR 2859291 A1 20050304 FR 0408319 A 20040728 2859291 1 Un outil de conception assistée par ordinateur électronique (CAO-E) est utilisé pour créer et analyser un dessin de circuit, incluant un dessin de circuit d'intégration à très grande échelle ( VLSI ). Le dessin de circuit inclut une liste de réseaux qui identifie des éléments de conception électronique (ex: condensateurs, transistors, résistances, etc. ) et leurs interconnectivité (ex: réseaux) à l'intérieur du dessin de circuit. Un réseau de signal est un passage électrique simple dans un dessin de circuit qui possède les mêmes caractéristiques électriques en tous ses points. Tout groupe de fils qui portent le même signal entre des éléments de dessin est un réseau de signal. Si les éléments de dessin permettent au signal de passer sans être affecté (comme dans le cas d'une borne), alors le réseau de signal continue sur des fils connectés à la suite. Cependant, si le réseau de signal modifie le signal (comme dans le cas d'un transistor ou d'un pont logique), alors le réseau de signal se termine à cet élément de dessin et un nouveau réseau de signal commence de l'autre côté. Une caractéristique significative des VLSI et autres types de modèles de circuit est la confiance accordée à la description hiérarchique. Une première raison d'utiliser la description hiérarchique est qu'elle permet de cacher la grande quantité de détails présents dans un dessin de circuit. En réduisant les détails susceptibles de distraire l'utilisateur à un unique objet qui est plus bas dans la hiérarchie, on peut simplifier de manière importante de nombreuses opérations de CAO-E. Par exemple, les contraintes de simulation, vérification, vérification des règles de dessin, et de disposition peuvent toutes profiter d'une représentation hiérarchique, qui les rend plus tractables par informatique. Puisque de nombreux modèles de circuits sont trop compliqués pour être facilement considérés dans leur totalité, un dessin complet est souvent vu comme une collecte d'agrégats d'éléments de dessins qui sont ensuite divisés en sous-agrégats de manière récursive et hiérarchique. Dans un dessin de circuit VLSI, ces agrégats sont communément indiqués par des blocs de dessin (ou cellules). L'utilisation d'un bloc de dessin à un niveau donné de la hiérarchie est appelée une instance . Chaque bloc de dessin possède un ou plusieurs ports , chacun des ports fournissant un point de connexion entre un réseau de signal à l'intérieur du bloc de dessin et un réseau de signal à l'extérieur du bloc de dessin. Un réseau à l'intérieur d'un bloc de dessin peut ainsi être connecté à un réseau dans un 2859291 2 autre bloc de dessin, les morceaux du réseau formant un réseau unique connu en tant que nom de signal de niveau supérieur ( HLSN ). Le HLSN est identifié par le nom du morceau de réseau situé au niveau hiérarchique le plus élevé du dessin de circuit. Lorsqu'un signal de traçage passe à travers un dessin de circuit hiérarchique, il est souvent souhaitable de connaître le HLSN d'un réseau donné, autre que celui qui est en train d'être tracé. La situation peut arriver, par exemple, lorsqu'une borne d'un dispositif est atteinte à un certain niveau du dessin hiérarchique, et que le HLSN d'un ou de plusieurs autres bornes pour ce dispositif doit être déterminé. Les stratégies de traçage connues actuellement utilisent typiquement des procédés récursifs qui emploient des algorithmes complexes qui analysent de manière redondante un dessin de circuit, et qui, de par leur conception, ne sont pas intuitifs pour les développeurs d'outils de CAO-E. Le traçage d'un dessin de circuit hiérarchique peut être un processus laborieux à mettre en place. Le pseudo-code suivant illustre une manière dans laquelle le traçage a typiquement été réalisé jusqu'ici. D'abord, un réseau initial est sélectionné.. Ensuite, un sous-programme (tel que RECURSE , ci-dessous) est utilisé pour traverser de manière récursive le dessin hiérarchique pour chaque port et instance de port sur le réseau. RECURSE: DoSomeStuff(net) foreach portinst on net ( get instance owner of portinst get describer of instance get port describer of portinst push instance onto instance hist get net on port RECURSE(net, instance_hist) foreach port on net ( get instance from instance hist get portinst instantiation of port pop instance off instance_hist 2859291 3 get net on portinst RECURSE(net, instance_hist) END RECURSE Le sous-programme récursif ci-dessus est redondant dans son exécution, et n'est donc pas particulièrement efficace, et il peut donc nécessiter beaucoup de temps de traitement pour traverser un dessin de circuit VLSI typique, particulièrement lorsqu'un outil d'analyse a besoin d'itérer sur des réseaux dans le dessin pour déterminer des propriétés ou quantités non liées à la hiérarchie du circuit. Le problème des traversées peut devenir encore plus compliqué lorsque la capacité d Dans un mode de réalisation, un procédé traverse de manière itérative un dessin de circuit hiérarchique. Un réseau initial, et un historique d'instance qui définit de manière unique le réseau initial à l'intérieur du dessin de circuit sont sélectionnés. Le réseau initial et l'historique d'instance sont ajoutés à une liste de réseaux à traiter. Le réseau initial et l'historique d'instance sont insérés dans un groupe de réseaux visités. Chaque réseau supplémentaire connecté au réseau initial est visité en réponse à une première requête d'un utilisateur. Le réseau initial et chaque réseau supplémentaire sont renvoyés en réponse à une seconde requête de l'utilisateur. Dans un autre mode de réalisation, un système traverse de manière itérative un dessin de circuit hiérarchique, incluant: un moyen pour sélectionner un réseau initial et un historique d'instance qui définit de manière unique le réseau initial à l'intérieur du dessin de circuit; un moyen pour ajouter, à une liste de réseaux à traiter, le réseau initial et l'historique d'instance; un moyen pour insérer, dans un groupe de réseaux visités, le réseau initial et l'historique d'instance; et un moyen pour visiter, en réponse à une première requête d'un utilisateur, chaque réseau supplémentaire connecté au réseau initial. 2859291 4 Dans un autre mode de réalisation, un système traverse de manière itérative un dessin de circuit hiérarchique. Le système inclut une fonction itérative, un objet de traçage incomplet, et un processeur. La fonction itérative sélectionne un réseau initial et un historique d'instance qui définit de manière unique le réseau initial à l'intérieur du dessin de circuit. La fonction itérative ajoute le réseau initial et l'historique d'instance à une liste de réseaux à traiter. La fonction itérative insère le réseau initial et l'historique d'instance dans un groupe de réseaux visités. L'objet de traçage incomplet visite chaque réseau supplémentaire connecté au réseau initial en réponse à première requête d'un utilisateur. L'objet de traçage incomplet renvoie le réseau initial et chaque réseau supplémentaire en réponse à une seconde requête de l'utilisateur. Le processeur exécute la fonction itérative et appelle l'objet de traçage incomplet. Dans un autre mode de réalisation, un produit logiciel comprend des instructions, stockées sur un support lisible sur ordinateur, caractérisé en ce que les instructions, lorsqu'elles sont exécutées par un ordinateur, font traverser de manière itérative un dessin de circuit hiérarchique, comprenant: des instructions pour sélectionner un réseau initial et un historique d'instance qui définit de manière unique le réseau initial à l'intérieur du dessin; des instructions pour ajouter, à une liste de réseaux à traiter, le réseau initial et l'historique d'instance; des instructions pour insérer, dans un groupe de réseaux visités, le réseau initial et l'historique d'instance; des instructions pour visiter, en réponse à une première requête d'un utilisateur, chaque réseau supplémentaire connecté au réseau initial; et des instructions pour renvoyer, en réponse à une seconde requête de l'utilisateur, le réseau initial et chaque réseau supplémentaire. La figure 1 montre un système pour traverser de manière itérative un dessin de circuit hiérarchique. La figure 2 est un organigramme illustrant un exemple de série d'étapes réalisées pendant le fonctionnement du système de la figure 1. La figure 3 est un organigramme illustrant un exemple de série d'étapes réalisées pour faciliter le fonctionnement montré sur la figure 2. 2859291 5 La figure 4 est un diagramme d'un exemple de dessin hiérarchique qui peut être traversé en utilisant le présent procédé. La figure 5 est un organigramme illustrant un processus pour traverser de manière itérative un dessin de circuit hiérarchique. La figure 1 montre un exemple de système 100 de conception assistée par ordinateur électronique (CAO-E) configuré pour traverser de manière itérative un dessin de circuit hiérarchique 109. Dans un exemple, le système 100 traverse des éléments de dessin et/ou des réseaux du dessin de circuit 109. Le système 100 inclut le système ordinateur 101 et l'outil de CAO-E 107. Le système ordinateur 101 contrôle l'outil de CAO-E 107 pour analyser le dessin de circuit 109, qui inclut une description de dessin VLSI hiérarchique, incluant typiquement une liste de réseaux 120 définissant des éléments de dessin et des réseaux associés au dessin de circuit 109. Le système ordinateur 101 inclut un processeur 102, une mémoire informatique 104 et une unité de stockage 106. Le processeur 102 est couplé à la mémoire informatique 104 et à l'unité de stockage 106. Dans un mode de réalisation, l'outil de CAO-E 107 réside initialement dans l'unité de stockage 106. Lors de l'initialisation, l'outil de CAO-E 107 et au moins une partie du dessin 109 sont chargés dans la mémoire informatique 104. Le processeur 102 exécute ensuite l'outil de CAO-E 107 pour réaliser les fonctions décrites ici. Le dessin de circuit 109 peut être vue comme un groupe de composants qui sont également divisés de manière hiérarchique en sous-composants communément appelés blocs ou cellules. L'utilisation d'un bloc à niveau de hiérarchie donné est appelée une instance . Chaque bloc dans le dessin 109 possède un ou plusieurs ports , chacun d'entre eux fournissant un point de connexion entre un réseau à l'intérieur du bloc et un réseau extérieur au bloc. Les termes bloc , instance , port et instance de port peuvent être expliqués comme suit, en utilisant l'exemple de dessin de circuit 400 de la figure 4 en guise de référence. Comme le montre la figure 4, le dessin de circuit 400 inclut les instances de bloc i0, il et i2. Les instances i0 et il sont hiérarchiquement connectées par les réseaux al , a2 et GND. Les instances il et i2 sont hiérarchiquement connectées par les réseaux pass , up_vdd et dn gnd . L'instance il, lorsqu'elle est vue de la perspective d'un niveau supérieur dans la sous-hiérarchie représentée par 2859291 6 test block_il et test_block_i2, est elle-même considérée comme étant un bloc, c'est-à-dire test block_il, dans ce contexte hiérarchique particulier. Dans le même contexte, le bloc test block il contient l'instance i2, qui, si elle est considérée depuis une perspective intérieure au pavé box (i2/ test_block_i2) montré sur la figure 4, serait appelée bloc test_block_i2. On peut donc voir que les définitions de bloc et instance de bloc dépendent respectivement du fait qu'un pavé box particulier (un bloc ou une instance bloc) est vu depuis un point intérieur ou extérieur, c'est-à-dire que la nomenclature appropriée dépend de la perspective hiérarchique depuis laquelle le box est vu. Chaque box (bloc ou instance) possède une pluralité de ports et d'instances de port correspondantes ( portinst ), dont chaque paire fournit un point de connexion entre un réseau à l'intérieur d'un bloc et un réseau à l'extérieur du bloc. Un port/portinst comprend donc deux parties contiguës, une première partie appelée portinst , qui est une instance de port située à l'extérieur sur une limite de pavé (ou instance) ; et une seconde partie, appelée port , qui est située à l'intérieur sur la limite du pavé (ou bloc). Comme on peut le voir sur la figure 4, les instances de port sont la moitié des port/portinst sur l'extérieur d'un box (par exemple, élément 412) et les ports sont la moitié des port/portinst sur l'intérieur d'un box (par exemple, élément 413). Un port porte le même nom que le réseau auquel il est connecté et les instances de port ont le même nom que leur port de description (c'est- à-dire le même nom que le réseau dans le bloc de description). Lorsque l'on examine la liste de réseaux 120 qui fait partie du dessin 109, l'instance de port 412 dans le dessin 400 peut être décrite dans la liste de réseaux 120 sous la forme net pass -> port inst in dans le bloc test block il. Cette entrée de liste de réseaux indique que le réseau pass est connecté à l'instance de port in 412 sur l'instance i2 . Le port correspondant dans test_block_i2 est le port 413, qui possède le nom in puisqu'il est connecté au réseau in dans le test_block_i2. Dans un exemple de mode de réalisation, un modèle hiérarchique stocké comme partie du dessin 109 est utilisé pour représenter la hiérarchie du dessin 400 et la différence entre une instance de port et un port est précisément déterminée par l'utilisation de techniques orientées vers l'objet dans 2859291 7 lesquels le port et l'instance de port sont des objets différents qui sont possédés par différents types d'objets. Si l'on continue d'observer la figure 1, le système 100 fournit un mécanisme pour traverser de manière itérative un passage à travers des réseaux dans un dessin hiérarchique sans renvoyer ou identifier de manière redondante les réseaux rencontrés lors du processus de traçage. Le système 100 offre aussi la capacité de sauter des instances dans un dessin hiérarchique 109 lors du traçage du dessin de circuit 109. Un noeud est un point de connectivité à l'intérieur de la liste de réseaux (par exemple la source d'un transistor FET est connectée à un premier noeud et le drain du transistor FET est connecté à un second noeud). Par exemple, si un transistor FET est rencontré lors du traçage du dessin 109, il peut être souhaitable ou nécessaire de sauter de l'autre côté (noeud) du transistor FET (source vers drain ou drain vers source) et de continuer le traçage. Le présent système 100 inclut donc une fonction identité 111 qui fait traverser le système 100 en passant autour de blocs indiqués par l'utilisateur, afin d'éviter de pénétrer dans certains blocs. Cela permet le traçage à travers les connexions de canaux de transistor, par exemple, ce qui permet de spécifier les instances de port spécifique hors desquelles il faut faire le traçage. Une fonction itérative de réseau hiérarchique 105 ( HierNetIter ) peut appeler des fonctions supplémentaires IdentFunc et HandleFunc , comme décrit ci- dessous: HierNetlter(net, instance hist, IdentFunc, HandleFunc) Dans un exemple, lorsque l'outil de CAO-E 107 traverse initialement un signal de réseau à réseau à travers les ports et instances de port associés, un pointeur dirigé vers un objet qui représente l'instance rencontrée est poussé sur une pile ou liste (un liste d'historique d'instance ) 108, contenant des instances de blocs (appelées simplement ci-après instances ) dans lesquelles le traçage est passé. La liste d'historique d'instance 108 est ensuite utilisée pour retracer le passage jusqu'au niveaux supérieurs de la hiérarchie. La liste d'historique d'instance 108 ( instance_hist ) est utilisée pour identifier de manière unique le réseau commençant qui a été atteint lors du processus de traçage. Le présent système 100 peut aussi utiliser des fonctions de rappel définies par l'utilisateur pour gérer des cas spéciaux rencontrés pendant la traversée du dessin de circuit 109. Par exemple, la 2859291 8 fonction identité ( IdentFunc ) 111 peut être utilisée pour fournir une indication des instances qui doivent être sautées (le traçage doit passer autour), et une fonction de gestion ( HandleFunc ) 122 peut être utilisée pour identifier quelles instances de port (avec les réseaux associés) sur des instances identifiées doivent être ajoutées à la liste de réseaux connectés (par exemple, les transistors FET non conducteurs ou récepteurs peuvent être croisés à l'autre noeud connecté à un canal, et le traçage peut être arrêté à n'importe quelle borne de conducteur ou récepteur). Les fonctions 105, 111, 112 peuvent offrir une certaine flexibilité dans la traversée du dessin de circuit 109. Par exemple, supposons que l'outil de CAO-E 107 démarre à une sortie de conducteur (par exemple, le réseau out2 dans l'instance i2 dans l'exemple montré sur la figure 4) et réalise le traçage vers tous les réseaux connectés en croisant tout transistor FET connecté à un canal (par exemple FET1 et FET2). Supposons également que cette traversée doit se terminer lorsqu'elle rencontre la connexion de pont de chaque transistor FET et ne doit pas réaliser de traçage autour de ce dernier. La fonction itérative de réseau hiérarchique 105 permet à ce type de traversée de circuit d'être réalisée, par exemple de la manière suivante: HierNetlter hni(out2, instance hist to_out2, IsTransistor, StopAtDriverOrReceiver); for (hni.Begin( ); (hni. End( ); hni++) ( local_net = *hni; PerformOperation(local_net); Lorsque la boucle for montrée ci-dessus dans l'exemple de sous- programme de fonction itérative est itérée, la fonction itérative de réseau 105 visite chaque réseau hiérarchique unique dans le dessin de circuit auquel elle est appliquée, en commençant par le réseau out2 dans cet exemple particulier. Puisqu'un réseau hiérarchique est unique par rapport à un réseau sélectionné spécifique, ainsi que son historique d'instance associé dans un traçage donné, la fonction itérative 105 renvoie ces deux entités. Dans un mode de réalisation, la fonction itérative de réseau hiérarchique utilise des traçages incomplets , qui sont représentés par des objets ( objets de 2859291 9 traçage incomplets 110) qui représentent un réseau particulier (unique) dans un dessin hiérarchique, et qui gardent des informations à propos de quelles autres connexions de ce réseau ont besoin d'être tracées. Dans un exemple de mode de réalisation, la fonction itérative de réseau hiérarchique 105 réalise les opérations montrées dans l'organigramme de la figure 2, de la manière suivante: A l'étape 201, avant l'initialisation de la fonction itérative de réseau 105, un signal est tracé d'un réseau de démarrage du dessin 109 à un réseau terminal du dessin. Lorsque le traçage initial est réalisé, le signal est tracé de réseau à réseau à travers les ports et instances de port associés, et un pointeur dirigé vers un objet qui représente l'instance d'intérêt est poussé sur une pile ou liste (une liste d'historique d'instance ) 108, contenant des instances de blocs dans lesquelles le traçage est passé. La liste d'historique d'instance 108 est ensuite utilisée pour retracer le passage jusqu'aux niveaux supérieurs de la hiérarchie. A l'étape 205, la fonction itérative de réseau 105 est initialisée avec un réseau initial et un historique d'instance qui définit de manière unique le passage à travers le dessin 109 pour atteindre le réseau initial. Dans l'exemple d'appel de la fonction HierNetlter montré ci- dessous, les paramètres fournis à la fonction itérative de réseau 105 sont les suivants: instance hist to_out2 - l'historique de traçage du traçage initial jusqu'au 20 réseau out2 , stocké dans la liste d'historique d'instance 108; IsTransistor - le paramètre de la fonction d'identité 111 indiquant que pour chaque instance d'un transistor (par exemple PFET ou NFET) le traçage doit passer autour; et StopAtDriverOrReceiver - le paramètre de la fonction de gestion 112 indiquant que le traçage doit croiser l'autre noeud pour les transistors non conducteurs ou récepteurs connectés à un canal, et arrêter le traçage à n'importe quelle borne de conducteur ou récepteur. HierNetlter hni(out2, instance hist to_out2, IsTransistor, StopAtDriverOrReceiver À l'étape 210, la fonction itérative de réseau 105 crée ensuite un objet de traçage incomplet 110 avec le réseau et l'historique d'instance spécifiés, et initialise l'instance de port et les fonctions itératives de port (décrits en référence sur la figure 2859291 10 3, plus bas) à l'intérieur de l'objet. Ce premier objet de traçage incomplet 110 est placé sur le dessus d'une pile 115 de traçage incomplet dans la mémoire informatique 104 à l'étape 215. à l'étape 217, l'objet de traçage incomplet 110 ainsi créé est inséré dans un groupe d'objets de traçage incomplets visités 113. A l'étape 220, à chaque fois qu'un utilisateur requiert le réseau que la fonction itérative de réseau 105 est en train de pointer , la fonction itérative 105 est déréférencée (étape 225) et renvoie une structure contenant le réseau et l'historique d'instance qui sont à l'intérieur de l'objet de traçage incomplet 110 actuellement sur le dessus de la pile de traçage incomplet 115, à l'étape 230. A l'étape 240, à chaque fois qu'un utilisateur requiert le prochain réseau par rapport à l'objet de traçage incomplet 110 actuel, la fonction itérative 105 est incrémentée, à l'étape 245, et le prochain objet de traçage incomplet 110 sur le dessus de la pile 115 est requis, à l'étape 250, pour fournir le prochain réseau unique qui peut être atteint à partir du réseau à l'intérieur de l'objet de traçage incomplet 110. Ainsi, lorsque la fonction itérative 105 est incrémentée, elle reçoit le prochain réseau connecté depuis l'objet de traçage incomplet 110, selon son état actuel. A l'étape 255, si l'objet de traçage incomplet 110 du dessus renvoie sans succès, c'est-à-dire si l'objet de traçage incomplet a atteint la fin de toutes ses listes (autres instances de port, instances de port et ports, comme l'indique la figure 3), il n'y a plus rien qui peut être tracé à l'intérieur de cet objet de traçage incomplet, et il est alors complet et peut être retiré de la pile 115. La fonction itérative de réseau 105 retire le traçage incomplet du dessus de la pile de traçage incomplet 115 et l'efface, à l'étape 260. Le traitement continue avec l'étape 265 décrite ci-dessous. Si l'objet de traçage incomplet renvoie avec succès (à l'étape 255), alors à l'étape 257, si le traçage incomplet renvoyé n'a pas été visité, c'est-à- dire si l'objet de traçage incomplet 110 actuel n'est pas dans le groupe d'objets de traçage incomplet visités 113, il est ajouté à la pile de traçage incomplet 115, à l'étape 215, après quoi le traitement continue; sinon, l'objet de traçage incomplet 110 renvoie le prochain réseau unique dans l'objet de traçage incomplet, à l'étape 250, décrite ci- dessus en référence sur la figure 3. Si, à l'étape 265, la pile de traçage incomplet 115 est vide, alors la tâche de la fonction itérative de réseau est terminée (étape 270), et les appels suivants pour 2859291 11 incrémenter ou déréférencer la fonction itérative 105 ne changeront pas son état. Si la pile de traçage incomplet 115 n'est pas vide, alors les incréments suivants à la fonction itérative de réseau 105 entrent au point d'entrée d'incrément 245 et les déréférences entrent au point d'entrée de déréférence 225. La création d'un objet de traçage incomplet 110 implique l'initialisation de sous-itérateurs qui vérifient toutes les instances de port et les ports connectés au réseau donné. Les fonctions itératives d'instance de port et port (décrits ci-dessous) itèrent sur une collecte d'éléments (instances de port ou ports). La figure 3 est un mode de réalisation du bloc 250 de la figure 2, caractérisé en ce qu'un objet de traçage incomplet 110 utilise un algorithme pour déterminer le prochain réseau dans le processus de traçage. Cet algorithme (la fonction Get Next Net ) est décrit comme suit: En réponse à une requête d'un utilisateur (étape 300) pour trouver le prochain réseau dans une opération de traçage, une vérification est faite à l'étape 305 pour déterminer s'il y a des instances de port dans la liste other port_insts 114 (voir étape 340 plus bas). Si la liste 114 n'est pas vide, alors, à l'étape 310, la prochaine instance de port est retirée de la liste 114 et, à l'étape 315, le réseau connecté à l'instance de port, avec la liste d'historique d'instance 108 actuelle, est renvoyé, puisque l'historique d'instance identifie de manière unique le réseau actuel. A l'étape 320, si la fonction itérative d'instance de port (représentée par les blocs 305-340) est à la fin de sa collecte, le traitement continue avec l'étape 350, plus bas. Si la fonction itérative d'instance de port n'est pas encore à la fin de sa collecte, alors la fonction itérative 105 est incrémentée à l'étape 325, et l'instance de port vers laquelle la fonction itérative 105 pointe est récupérée. A l'étape 330, la fonction de gestion 112 est appelée pour vérifier l'instance qui possède l'instance de port ( instance propriétaire ) pour voir si c'est un cas spécial . Les cas spéciaux sont déterminés et traités par une fonction de rappel fournie par l'utilisateur pour permettre à la fonction itérative de réseau 105 de gérer certains types d'instances d'une manière définie par l'utilisateur. Par exemple, un utilisateur particulier peut demander une fonction qui saute d'un côté d'un transistor FET à l'autre. La fonction d'identité 111 ( IdentFunc ) est un exemple d'une 2859291 12 fonction qui gère un tel cas spécial . Si la présente instance propriétaire est un cas spécial, alors, à l'étape 335, la liste d'instances de port à gérer (en utilisation la fonction de gestion 112) est récupérée. La liste est ensuite attribuée à la liste other_port_insts 114 (figure 1), à l'étape 340, et la partie décrite cidessus de l'algorithme est répétée, en commençant par l'étape 305. Si, à l'étape 330, l'instance propriétaire n'est pas un cas spécial, alors, à l'étape 332, le port qui décrit l'instance de port actuelle est récupéré. A l'étape 333, l'instance qui possède l'instance de port est poussée sur une pile contenant une copie de la liste d'historique d'instance 108; et, à l'étape 334, le réseau connecté au port, avec cette copie de la liste d'historique d'instance, est renvoyé. A l'étape 350 (lorsque la fonction itérative d'instance de port est à la fin de sa collecte), si la fonction itérative de port (représenté par les blocs 350-380) n'est pas à la fin de sa collecte, alors, à l'étape 365, la fonction itérative de port est incrémenté et le port vers lequel la fonction itérative pointe est récupéré. A l'étape 370, une copie de la liste d'historique d'instance 108 est faite et l'instance du dessus est retirée de la copie. A l'étape 370, l'instance de port sur l'instance qui est une instanciation du port est récupérée, et le réseau connecté à cetteinstance de port, avec la copie de la liste d'historique d'instance 108, est renvoyé à l'étape 380. A l'étape 350, si la fonction itérative de port est à la fin de sa collecte, la liste other port_insts 114 est vide, et la fonction itérative d'instance de port et la fonction itérative de port sont donc toutes deux à la fin de leurs collectes respectives. Puisque l'on ne trouve pas d'autres réseaux, ce traçage incomplet est donc terminé. Ainsi, à l'étape 360, une indication d' échec de sélection d'un autre réseau est renvoyée. La présente fonction itérative de réseau 105 permet l'utilisation d'autres modèles de dessin souhaités en utilisant une nouvelle définition de l'objet de traçage incomplet 110. Par exemple, le système 100 peut utiliser un modèle dans lequel les réseaux ne sont pas la méthode de connexion primaire mais qui possède à la place des dispositifs de connexions multiples. Il faut remarquer que l'objet de traçage incomplet et la fonction itérative peuvent tous deux réaliser la fonction consistant à récupérer le prochain réseau, c'est-à-dire que la fonction consistant à réaliser une récupération du prochain réseau n'est 2859291 13 pas limitée à l'inclusion dans l'objet de traçage incomplet et que cette fonction peut être réalisée dans la fonction itérative ou ailleurs dans une fonction séparée. La figure 5 est un organigramme illustrant un processus 500 pour traverser de manière hiérarchique un dessin de circuit. Le processus 500 est par exemple mis en place par le système 100, figure 1. A l'étape 502, le processus 500 sélectionne un réseau initial et un historique d'instance qui définit de manière unique le réseau initial à l'intérieur du dessin de circuit. A l'étape 504, le réseau initial et l'historique d'instance sont ajoutés à une liste de réseaux à traiter. A l'étape 506, le réseau initial et l'historique d'instance sont insérés dans un groupe de réseaux visités. A l'étape 508, chaque réseau supplémentaire connecté au réseau initial est visité en réponse à première requête d'un utilisateur. A l'étape 510, le réseau initial et chaque réseau supplémentaire sont renvoyés en réponse à une seconde requête de l'utilisateur. Les instructions qui permettent d'exécuter l'opération discutée en référence aux figures 2, 3 et 5 peuvent être stockées sur un support de stockage lisible sur un ordinateur. Ces instructions peuvent être récupérées et exécutées par un processeur, tel que le processeur 102 de la figure 1, pour diriger le processeur pour qu'il agisse conformément au présent système. Les instructions peuvent aussi être stockées dans un micrologiciel. Des exemples de supports de stockage incluent les dispositifs mémoire, les cassettes, les disques, les circuits intégrés et les serveurs. Certains changements peuvent être apportés aux procédés et systèmes cidessus sans s'écarter de la portée du présent système. Il faut remarquer que tous les éléments contenus dans la description ci-dessus ou montrés dans les dessins qui l'accompagnent doivent être interprétés comme ayant un but explicatif et non limitatif. Par exemple, les éléments montrés sur la figure 1 peuvent être construits, connectés, agencés et/ou combinés dans d'autres configurations, et la série d'étapes illustrées aux figures 2 et 3 peut être exécutée dans un ordre différent de celui montré sans s'écarter de l'esprit décrit ici. 14 REVENDICATIONS 1. Procédé (201-270, 300-380, 500) pour traverser de manière itérative un dessin de circuit hiérarchique (109, 400), caractérisé en ce qu'il comprend les étapes consistant à : sélectionner (502) un réseau initial et un historique d'instance (108) qui définit de manière unique le réseau initial à l'intérieur du dessin de circuit (109, 400) ; ajouter (504), à une liste de réseaux à traiter, le réseau initial et l'historique d'instance (108) ; insérer (506), dans un groupe de réseaux visités (113), le réseau initial et l'historique d'instance (108) ; visiter (508), en réponse à une première requête d'un utilisateur, chaque réseau supplémentaire connecté au réseau initial; et renvoyer (510), en réponse à une seconde requête de l'utilisateur, le réseau initial et chaque réseau supplémentaire. 2. Procédé selon la revendication 1, caractérisé en ce que l'étape de visite comprend les étapes consistant à : déterminer, pour chacun des réseaux à traiter dans la liste de réseaux à traiter, les réseaux supplémentaires qui sont connectés au réseau à traiter; vérifier le groupe de réseaux visités (113) pour déterminer les réseaux supplémentaires non visités qui n'ont pas été visités; ajouter, à la liste de réseaux à traiter, chacun des réseaux supplémentaires non visités; et insérer, dans le groupe de réseaux visités (113), chacun des réseaux supplémentaires non visités. 3. Procédé selon la revendication 2, caractérisé en ce que l'étape de détermination comprend les étapes consistant à : appeler, pour chaque instance dans le dessin de circuit hiérarchique connectée au réseau à traiter, une première fonction de rappel (111) définie par l'utilisateur pour identifier les instances d'intérêt; } 2859291 15 interroger, pour chaque instance d'intérêt, une seconde fonction de rappel (112) définie par l'utilisateur pour identifier les réseaux supplémentaires; et ajouter, à la liste de réseaux à traiter, les réseaux supplémentaires identifiés par la seconde fonction de rappel (112) définie par l'utilisateur. 4. Procédé selon la revendication 3, caractérisé en ce que la première fonction de rappel (111) est configurée pour fournir une indication des instances devant être tracées. 5. Procédé selon la revendication 3, caractérisé en ce que la première fonction de rappel (111) est configurée pour fournir une indication des instances pour lesquels le traçage doit être arrêté. 6. Procédé selon la revendication 5, caractérisé en ce que la seconde fonction de rappel (112) est configurée pour reprendre une trace à un ou plusieurs noeuds lorsqu'un premier noeud de l'instance à tracer est rencontré lors du traçage et pour terminer la trace si le premier noeud est un type spécifié de borne sur l'instance pour laquelle le traçage doit être arrêté. 7. Système (100) pour traverser de manière itérative un dessin de circuit hiérarchique (109, 400) comprenant: une fonction itérative (105) ; un objet de traçage incomplet (110) ; un processeur (102) pour exécuter la fonction itérative (105) et appeler l'objet de traçage incomplet (110), caractérisé en ce que la fonction itérative (105) : sélectionne un réseau initial et un historique d'instance qui définit de manière unique le réseau initial à l'intérieur du dessin de circuit (109, 400) ; ajoute, à une liste de réseaux à traiter, le réseau initial et l'historique d'instance; insère, dans un groupe de réseaux visités, le réseau initial et l'historique d'instance; et caractérisé en ce que l'objet de traçage incomplet (110) : visite, en réponse à une première requête d'un utilisateur, chaque réseau supplémentaire connecté au réseau initial; et renvoie, en réponse à une seconde requête de l'utilisateur, le réseau initial et chaque réseau supplémentaire. } 2859291 16 8. Système selon la revendication 7, caractérisé en ce que chaque réseau supplémentaire est visité en: déterminant, pour chacun des réseaux à traiter dans la liste de réseaux à traiter, les réseaux supplémentaires qui sont connectés au réseau à traiter; vérifiant le groupe de réseaux visités pour déterminer les réseaux supplémentaires non visités qui n'ont pas été visités; ajoutant, à la liste de réseaux à traiter, chacun des réseaux supplémentaires non visités; et insérant, dans le groupe de réseaux visités, chacun des réseaux supplémentaires non visités. 9. Système selon la revendication 8, incluant une première fonction de rappel (111) définie par l'utilisateur et une seconde fonction de rappel (112) définie par l'utilisateur, caractérisé en ce que: la première fonction de rappel (111) définie par l'utilisateur est appelée pour identifier des instances d'intérêt pour chaque instance dans le dessin de circuit connecté au réseau à traiter; et la seconde fonction de rappel (112) est interrogée pour identifier les réseaux supplémentaires pour chaque instance d'intérêt, et pour ajouter les réseaux supplémentaires ainsi identifiés à la liste des réseaux à traiter. 10. Système selon la revendication 9, caractérisé en ce que la première fonction de rappel (111) définie par l'utilisateur est configurée pour permettre à un utilisateur de fournir une indication des instances à tracer, ou pour lesquelles le traçage doit être arrêté.