Brevet FR2766275A1 — publié le 19990122

CIRCUIT DE VALIDATION DE MODULES DE SIMULATION La présente invention concerne de façon générale la simulation de circuits logiques et plus particulièrement un circuit logique spécifique permettant de vérifieur que les modèles utilisés pour les simulations logiques conviennent. La figure 1 symbolise une cellule logique pouvant être un circuit logique élémentaire ou un élément d'une bibliothèque de cellules standard. De façon générale, la cellule comprend une ou plusieurs entrées Ao, A1... An, et au moins une sortie Z. On appelle "arc" chaque chemin entre une entrée et une sortie. Une telle cellule, prise isolément, peut être analysée par un simulateur analogique, de type SPICE, qui tiendra compte de la structure de plus bas niveau (les transistors) de la cellule. Les résultats de la simulation permettront de relever tous les paramètres caractéristiques de la cellule, notamment les temps de propagation tp de chaque arc. Un temps de propagation est le temps que met un front d'un signal appliqué sur 1 'entrée A correspondante à apparaître sur la sortie Z, avec la même polarité ou non. Pour un arc donné, il existe plusieurs temps de propagation. En effet, un temps de propagation dépend de la polarité ou sens du front présenté en entrée et dépend également des états présents sur les autres entrées. Ainsi, pour un seul arc, le nombre de temps de propagation différents est égal à la somme du nombre de combinaisons des états des autres entrées qui sensibilisent l'entrée étudiée à des fronts positifs et du nombre de combinaisons des états des autres entrées qui sensibilisent entrée étudiée à des fronts négatifs. On dit qu ' une entrée est sensibilisée lorsqu'un front appliqué sur cette entrée provoque effectivement un front sur la sortie de la cellule. Les temps de propagation de chaque arc pourront etre trouvés par une simulation analogique en utilisant des stimulations adéquates trouvées à partir de la fonction logique de la cellule. La précision des résultats dépend de la précision des modèles de transistor utilisés par le simulateur. Les modèles de transistor impliquent des paramètres qui dépendent de la technologie à simuler. L'affinage des paramètres des modèles d'un simulateur analogique s'effectue au fur et à mesure de la maturation d'une technologie. A la naissance d'une technologie, les paramètres sont inconnus et grossièrement estimés, ce qui ne fournit pas des résultats satisfaisants. L'affinage des paramètres s'effectue en confrontant de nombreux résultats de mesure à des résultats de simulation. En pratique, un circuit logique peut être réalisé à partir de plusieurs milliers de cellules de bibliothèque. I1 n'est alors pas envisageable de simuler le circuit logique entier à l'aide d'un simulateur analogique, car cela prendrait trop de temps. On a alors recours à une simulation logique, notamment permise par des langages de simulation fonctionnelle, tels que le VHDL ou le VERILOG. Une simulation logique tient compte des fonctions logiques des cellules et de temps de propagation précalculés. Des valeurs par défaut des temps de propagation tp pourront être fournies par une simulation analogique des cellules. Ces valeurs par défaut sont généralement corrigées dans une procédure dite de rétroannotation à partir de valeurs calculées par un calculateur de retards qui prend en compte l'implantation silicium du circuit simulé (c'est-à-dire les capacités effectives des interconnexions après routage). Toutefois, on ne peut utiliser tous les temps de propagation de chaque arc de chaque cellule, car la simulation serait de nouveau trop longue et nécessiterait une base de données démesurée. Une manière courante de procéder est d'utiliser la situation la plus désavantageuse, c'est-à-dire que l'on prend, pour chaque arc, et pour chaque polarité de front, le temps de propagation le plus élevé. Avec cette solution, le circuit réel sera toujours plus rapide que ce qu'indiquera la simulation. En fait, dans de nombreux cas, la simulation invalidera le circuit alors qu'il fonctionnerait convenablement en réalité. Une façon plus fine de procéder serait d'organiser, pour chaque arc et chaque polarité de front, les temps de propagation en plusieurs classes, le critère de regroupement étant d'avoir un écart maximal entre les temps de propagation qui soit inférieur à un certain seuil. Alors, on utiliserait le temps de propagation le plus élevé dans chaque classe, la classe utilisée étant déterminée par un ensemble correspondant de conditions sur les états des entrées de la cellule. Cependant, les conditions qui déterminent une classe sont souvent complexes et le passage des classes à un modèle temporel d'une cellule pose des problèmes, car la plupart des outils de conception ne supportent pas ce type de modélisation (calculateur de retards, rétro-annotation, simulation avec retards conditionnels...). En pratique, cette solution n'est pas exploitée. On est donc confronté à deux problèmes distincts. Le premier concerne la caractérisation exhaustive d'une cellule afin d'en déduire un modèle temporel ac acceptable. Le deuxième problème concerne la validation des modèles temporels choisis ainsi que leur exploitation par les outils de conception (calculateur de retards, simulateur logique avec retards rétro-annotés...) dans le contexte d'une méthodologie de conception telle quelle est appliquée par l'utilisateur. Un objet de la présente invention est de prévoir un circuit de test permettant de déterminer de manière précise et simple tous les temps de propagation de chaque arc d'une cellule logique. Un autre objet de la présente invention est de prévoir un circuit de test permettant de valider les modèles temporels des cellules dans le contexte d'une simulation logique avec rétro-annotation des retards. Ces objets sont atteints grâce à un circuit destiné à mesurer le temps de propagation d'un front de signal entre une entrée et une sortie d'une cellule logique. Le circuit comprend plusieurs cellules logiques de même type connectées en anneau, une même entrée à tester de chaque cellule étant reliée à la sortie d'un multiplexeur respectif ayant une entrée de sélection reliée à la sortie de la cellule précédente, et deux entrées de donnée mises à des états fixes différents. Selon un mode de réalisation de la présente invention, les états des entrées de donnée des multiplexeurs sont choisis pour que les entrées des cellules reçoivent successivement un front de même polarité entre deux fronts suc successifs d'un signal de sortie de 1 'anneau, un élément inverseur étant connecté dans l'anneau. Selon un mode de réalisation de la présente invention, chaque cellule a plusieurs entrées dont une seule est testée, chaque entrée non-testée d'une cellule étant reliée à la sortie d'un multiplexeur respectif ayant une entrée de sélection reliée à la sortie de la cellule précédente, et deux entrées de donnée mises à un même état fixe choisi pour sensibiliser l'entrée testée. Selon un mode de réalisation de la présente invention, les entrées de donnée des multiplexeurs associés à une même entrée des cellules sont connectées en parallèle. Selon un mode de réalisation de la présente invention, les sorties des multiplexeurs et des cellules sont reliées à des condensateurs de capacité élevée par rapport à la capacité d'entrée des cellules et des multiplexeurs. Selon un mode de réalisation de la présente invention, le circuit comprend plusieurs anneaux associés à différentes cellules à tester, un premier des anneaux étant destiné à tester des multiplexeurs avec une première combinaison d'états différents sur leurs entrées de donnée, un deuxième anneau étant destiné à tester des multiplexeurs avec une deuxième combinaison d'états différents sur leurs entrées, et un troisième anneau étant destiné à tester des éléments inverseurs. Selon un mode de réalisation de la présente invention, le circuit comprend, pour chaque cellule à tester, un premier anneau dans lequel les sorties des cellules et des multiplexeurs sont reliées à des condensateurs de capacité élevée par rapport à la capacité d'entrée des cellules et des multiplexeurs, et un deuxième anneau dans lequel les sorties des cellules et des multiplexeurs ne sont pas reliées à des condensateurs. Ces objets, caractéristiques et avantages, ainsi que d'autres de la présente invention seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles la figure 1, précédemment décrite, symbolise une cellule logique la figure 2 représente un anneau oscillant d'inverseurs permettant de mesurer le temps de propagation moyen d'un inverseur la figure 3 représente un anneau oscillant selon la présente invention permettant de mesurer indépendamment les temps de propagation d'un inverseur pour les fronts positifs et pour les fronts négatifs la figure 4 représente un anneau permettant de mesurer indépendamment les temps de propagation de chaque arc d'une cellule à plusieurs entrées ; et la figure 5 représente une architecture d'un circuit de test permettant des mesures sur 1'ensemble des cellules logiques d'une bibliothèque. La figure 2 représente un oscillateur classique constitué d'un nombre impair d'inverseurs connectés en anneau. A la sortie de l'un quelconque des inverseurs, on recueille un signal rectangulaire de rapport cyclique sensiblement égal à 50 %. La demi-période du signal de sortie est égale au temps que met un front à 1 'entrée du premier inverseur à apparaître sur la sortie du dernier inverseur. Ce temps est la somme des temps de propagation des inverseurs. Toutefois, parmi les 2k+1 inverseurs de l'anneau, k inverseurs reçoivent un front donné tandis que les k+l inverseurs restants reçoivent un front de polarité opposée. Le temps de propagation t,, d'un inverseur qui reçoit un front positif ou montant diffère du temps de propagation t~+ d'un inverseur qui reçoit un front négatif ou descendant (les signes "+" et "-" indiquent les polarités respectives du front entrant et du front sortant). I1 en résulte que la première demi-période du signal produit par l'anneau diffère de la deuxième demi-période par la valeur t+~ - t+. Cette valeur, trop faible, n'est pas mesurable et ne permet donc pas de déterminer indépendamment les valeurs t,, et t~,. La figure 3 représente un mode de réalisation d'anneau oscillant selon la présente invention permettant, dans l'exemple d'un inverseur, de déterminer indépendamment le temps t+ de propagation des fronts positifs et le temps t~+ de propagation des fronts négatifs. Dans cet anneau, 1 'entrée de chaque inverseur 10 reçoit la sortie d'un multiplexeur respectif 12 à deux entrées de donnée. L'entrée de sélection de chaque multiplexeur 12 est reliée à la sortie de l'inverseur 10 précédent. Les multiplexeurs 12 ont, selon l'invention, deux fonctions. Une première fonction est de réaliser un inverseur programmable, c'est-à-dire un élément qui, dans un premier état, inverse le signal qu'il reçoit, et, dans l'autre état, n'inverse pas le signal. Pour cela, les deux entrées de donnée de chaque multiplexeur 12 reçoivent des états logiques opposes. La deuxième fonction des multiplexeurs 12, qui sera décrite plus en détail en relation avec la figure 4, est de fixer 1 'état d'une entrée non-testée. Pour cela, les deux entrées de donnée de chaque multiplexeur sont mises au même état, celui que l'on veut appliquer à l'entrée non-testée. Par ailleurs, lorsque les arcs à tester sont inverseurs, comme c'est le cas dans la figure 3, les multiplexeurs 12 sont mis dans un mode inverseur. Chaque multiplexeur 12 reçoit alors sur sa première entrée 1' état "0" et sur sa deuxième entrée 1 'état "1", la première entrée étant celle qui est sélectionnée lorsque l'entrée de sélection est à "1". Dans la figure 3, lorsqu'un multiplexeur reçoit un "1" de l'inverseur précédente, il fournit la valeur "0" et, lorsqu'il reçoit un "0", il fournit la valeur "1". Si les arcs à tester ne sont pas inverseurs, comme on le verra en relation avec la figure 4, les états des deux entrées de donnée de chaque multiplexeur 12 sont intervertis, ce qui rend les multiplexeurs non-inverseurs. En conséquence, chaque cellule à tester (10) précédée de son multiplexeur 12, constitue un élément non-inverseur. Pour que la boucle constituée de ces éléments oscille, on insère un inverseur supplémentaire 14 dans la boucle. Dans la figure 3, entre deux fronts du signal de sortie de l'anneau, tous les inverseurs 10 reçoivent un front de même polarité. I1 en va de même pour les multiplexeurs 12. En conséquence, la durée d'un état prédéterminé du signal de sortie (une "demi-période") fait intervenir le même temps de propagation d'inverseur et le même temps de propagation de multiplexeur. Si on connaît le temps de propagation des multiplexeurs 12 et de l'inverseur 14, on pourra facilement déduire le temps de propagation des inverseurs 10 en mesurant les "demi-périodes" du signal de sortie. Ceci sera exposée plus en détail ultérieurement. La figure 4 représente un mode de réalisation d'anneau oscillant selon l'invention prévu pour tester, à titre d'exemple, les arcs d'une porte ET 16. Une porte ET 16 ne comporte que des arcs non-inverseurs. Ainsi, les multiplexeurs 12 associés aux arcs à tester sont mis dans un mode non-inverseur, c'est-à-dire que les entrées sélectionnées par un "1" sont mises à "1" et les entrées sélectionnées par un "0" sont mises à "0". En outre, une entrée d'une porte ET n'est sensibilisée que si son autre entrée est à "1". Ainsi, les autres entrées des portes 16 sont reliées aux sorties de multiplexeurs respectifs 12', connectés de la même manière que les multiplexeurs 12, mais dont les deux entrées sont mises à "1". De manière générale, chaque entrée d'une cellule quelconque à tester est précédée d'un multiplexeur. Ce multiplexeur est mis en mode inverseur ou non-inverseur, comme les multiplexeurs 12, lorsque l'on souhaite tester 1 'entrée correspondante. Le multiplexeur précédant toute entrée non testée est réglé comme les multiplexeurs 12' pour fixer 1 'état de 1 'entrée correspondante à une valeur permettant de sensibiliser 1'entrée à tester. L'inverseur supplémentaire 14 de la figure 3 peut être remplacé par une porte NON ET 14 dont une première entrée reçoit la sortie de la dernière cellule 16 à tester, dont une deuxième entrée reçoit un signal de validation EN, et dont une troisième entrée reçoit le complément RST* d'un signal de remise à zéro. Lorsqu'un circuit de test comporte plusieurs anneaux pour tester différentes cellules, une telle porte 14' servira à remettre à zéro les anneaux en début de test et à valider un seul des anneaux à la fois. Bien entendu, pour que les mesures fournies par un circuit selon 1' invention soient correctes, chaque cellule de 1 'anneau doit être testée dans les mêmes conditions. En particulier on teste le même arc dans chacune des cellules de 1 'anneau, même si ces cellules ont une fonction logique symétrique, comme une porte logique élémentaire. En effet, la structure interne d'une porte logique élémentaire n'est pas symétrique et les temps de propagation de chaque arc d'une telle porte sont effectivement différents. Ainsi, les entrées de donnée des multiplexeurs associés à une même entrée de cellule sont connectées en parallèle. La figure 5 représente schematiquement un circuit de test selon l'invention. Ce circuit de test comporte un ensemble d'anneaux 50, du type de la figure 4, destinés à tester un ensemble de cellules logiques, par exemple d'une bibliothèque. Les entrées de donnée des multiplexeurs des anneaux 50 sont reliées aux lignes d'un bus de commande CTRL commun. Le nombre de lignes du bus de commande CTRL est égal au double du nombre d' entrées de la cellule ayant le plus grand nombre d'entrées. Comme on l'a précédemment indiqué, pour chaque cellule à tester, on peut prévoir deux anneaux, l'un avec des condensateurs de forte valeur, et 1 'autre sans ces condensateurs. Outre les anneaux 50 permettant de tester les cellules de bibliothèque, le circuit comprend des anneaux spéciaux. Un premier anneau spécial 52 est destiné à tester les éléments inverseurs 14'. Cet anneau pourra exceptionnellement être constitué seulement d'éléments inverseurs 14'. Un deuxième anneau special 53 est destiné à tester les multiplexeurs 12 en mode non-inverseur. L'anneau est simplement constitué des multiplexeurs 12 connectés directement l'un à l'autre. Un troisième anneau spécial 54 est destiné à tester les multiplexeurs en mode inverseur. Chaque multiplexeur est précédé d'un élément inverseur 14'. Les entrées de donnée des multiplexeurs des anneaux spéciaux 52 à 54 sont mis à des états fixes et elles ne sont donc pas reliées au bus de commande CTRL. Un seul anneau à la fois est sélectionné par un décodeur d'adresses 56 qui valide le signal EN de cet anneau en fonction d'une adresse Ad. En même temps, on applique des états adéquats sur les lignes du bus de commande CTRL afin de déterminer les temps de propagation souhaités de la cellule de l'anneau sélectionné. Une ligne de remise à zéro générale RST est reliée à tous les anneaux. Si l'arc d'une cellule testée dans un anneau 50 est inverseur, le circuit de test permet d'établir les deux équations suivantes TH50 = t14± + n(t12,, + t50±) TL50 = t14-+ + n(t12,, + t50~+) La valeur TH50 est la durée mesurée des "demi-périodes" à l'état haut du signal de sortie de l'anneau 50 sélectionné et la valeur TL50 est la durée mesuree des "demi-périodes" à l'état bas du signal de sortie. Les signes "+" et "-" designent les polarités respectives des fronts en entrée et en sortie d'un arc. Les valeurs t50 sont les temps de propagation que l'on souhaite déterminer, les valeurs t12 sont des temps de propagation d'un multiplexeur 12, les valeurs t14 sont des temps de propagation d'un élément inverseur 14', et n est le nombre de cellules testes dans un anneau. A partir des temps mesurés TH50 et TL50, on cherche à calculer les temps t50+~ et t50~+. I1 faut donc connaître les deux temps t12 et les deux temps t14. Pour cela on se sert des anneaux spéciaux 52 et 54 qui permettent d'établir le système de quatre équations à quatre inconnues suivant TH52 = t14± + n(tl4~+ + t14±) TL52 = t14-+ + n(t14,, + t14-+) TH54 = t14± + n(t12-+ + t14±) TL54 = t14-+ + n(t12± + t14-+) Toutefois, 1' anneau 52 étant constitué seulement d 'élé- ments inverseurs, on rencontre le problème évoqué en relation avec la figure 2, c'est-à-dire que l'on ne parvient pas à mesurer une différence entre les temps TH52 et TL52, différence égale à t14± - t14-+. I1 en résulte que les deux dernières équations cidessus sont équivalentes et ne permettent pas de calculer individuellement les temps t14± et t14-+. Une première solution consiste à considérer que les temps t14± et t14~, sont égaux, ce qui constitue une approximation raisonnable, car un élément inverseur simple, tel qu'une porte NON-ET 14', présente des temps de propagation peu différents. Une solution plus précise consiste à introduire une équation supplémentaire en utilisant les résultats d'une simulation électrique de l'élément inverseur. L'équation supplémentaire pourra être du type tl4+~ = kt14-+, où le coefficient k, égal au rapport des temps de propagation fournis par la simulation, est de tordre de 0,9 pour un élément inverseur simple dans une technologie courante. Lorsque les arcs à tester dans un anneau 50 sont noninverseurs, le circuit de test permet d'établir les équations suivantes TH50 = T14± + n(t12 + t50~~) TL50 = t14~, + n(t12++ + t50++) L'anneau spécial 53 permet d'établir les équations suivantes TH53 = T14± + ntl2~~ TL53 = t14,, + nt12++ à partir desquelles on détermine les temps de propagation t12++ et t12--, les temps t14 ayant déjà été calculés plus haut. Afin de permettre des mesures optionnelles, les anneaux d'un circuit de test selon l'invention peuvent comporter d'autres éléments. Dans ce cas, on prévoit des anneaux spéciaux supplémentaires permettant de déterminer les temps de propagation de ces éléments. Un circuit de test selon l'invention permet de mesurer tous les temps de propagation des cellules logiques d'une bibliothèque. Lorsque ces cellules sont réalisées dans une technologie nouvelle, les paramètres mesurés pourront servir directement à constituer des modèles de simulation analogique (SPICE). Si la technologie est déjà mûre, les temps de propagation mesurés pourront être confrontés aux temps de propagation fournis par le simulateur analogique, afin de vérifier la concordance et éventuellement corriger les paramètres des modèles du simulateur analogique. Bien entendu, les temps de propagation mesurés dépendent des capacités des interconnexions entre les cellules du circuit de test. Pour qu'une comparaison entre le circuit de test et le circuit simulé (en logique ou en analogique) soit valable, les capacités des interconnexions doivent être estimées et fournies en tant que paramètres de la simulation. Pour éviter cette étape et les erreurs qu'elle peut introduire, on préférera, comme cela est représenté en figure 3, connecter un condensateur C aux sorties des éléments disposés dans les anneaux du circuit de test. Les condensateurs C sont de valeur importante par rapport aux valeurs normales des lignes d'interconnexion. Ils sont réalisés à partir de transistors dont on connaît avec précision les capacités de grille. Ainsi, les capacités des lignes d'interconnexion pourront être négligées et on fournira les valeurs des condensateurs C comme paramètres de simulation à la place des capacités des lignes d'interconnexion. Afin de multiplier les possibilités de test, le circuit de test pourra comprendre, pour chaque cellule, un premier anneau muni des condensateurs C et un deuxième anneau dépourvu des condensateurs C. Un circuit de test selon l'invention permet par ailleurs de vérifier ou d'optimiser les compromis et choix effectués dans un simulateur logique. Un circuit de test selon l'invention, réalisé à partir d'un grand nombre de cellules logiques, est de taille comparable à celui d'un circuit typiquement réalisé dans une technologie donnée. En soumettant ce circuit de test au simulateur logique, il révélera des défauts de précision que présente le simulateur avec un circuit normal. Les paramètres du simulateur pourront alors être optimisés pour améliorer les résultats de simulation. REVENDICATIONS 1. Circuit destine à mesurer le temps de propagation d'un front de signal entre une entrée (A) et une sortie (Z) d'une cellule logique, caractérisé en ce qu'il comprend plusieurs cellules logiques de même type connectées en anneau, une même entrée à tester de chaque cellule étant reliée à la sortie d'un multiplexeur respectif (12) ayant une entrée de sélection reliée à la sortie de la cellule précédente, et deux entrées de donnée mises à des états fixes différents. 2. Circuit selon la revendication 1, caractérisé en ce que les états des entrées de donnée des multiplexeurs sont choisis pour que les entrées des cellules reçoivent successivement un front de même polarité entre deux fronts successifs d'un signal de sortie de 1 'anneau, un élément inverseur (14) étant connecté dans l'anneau. 3. Circuit selon la revendication 2, caractérisé en ce que chaque cellule (16) a plusieurs entrées dont une seule est testee, chaque entrée non-testée d'une cellule étant reliée à la sortie d'un multiplexeur respectif (12') ayant une entrée de sélection reliée à la sortie de la cellule précédente, et deux entrées de donnée mises à un même état fixe choisi pour sensibiliser l'entrée testée. 4. Circuit selon la revendication 2 ou 3, caractérisé en ce que les entrées de donnée des multiplexeurs associés à une même entrée des cellules sont connectées en parallèle. 5. Circuit selon l'une quelconque des revendications 1 à 4, caractérisé en ce que les sorties des multiplexeurs et des cellules sont reliées à des condensateurs (C) de capacité élevée par rapport à la capacité d'entrée des cellules et des multiplexeurs. 6. Circuit selon 1 'une quelconque des revendications 1 à 5, caractérisé en ce qu'il comprend plusieurs anneaux associés à différentes cellules à tester, un premier des anneaux étant destiné à tester des multiplexeurs avec une première combinaison d'états différents sur leurs entrées de donnée, un deuxième anneau étant destiné à tester des multiplexeurs avec une deuxième combinaison d'états différents sur leurs entrées, et un troisième anneau étant destiné à tester des éléments inverseurs. 7. Circuit selon la revendication 6, caractérisé en ce qu'il comprend, pour chaque cellule à tester, un premier anneau dans lequel les sorties des cellules et des multiplexeurs sont reliées à des condensateurs (C) de capacité élevée par rapport à la capacité d'entrée des cellules et des multiplexeurs, et un deuxième anneau dans lequel les sorties des cellules et des multiplexeurs ne sont pas reliées à des condensateurs.