Brevet FR2787597A1 — publié le 20000623

1' PROCÉDÉ DE CONCEPTION D'UN COEUR DE MICROPROCESSEUR La présente invention concerne un procédé de conception d'un coeur de processeur. On entend par coeur de processeur (ou de microprocesseur) l'ensemble des ressources qui assurent des fonctions vitales comprenant principalement un décodeur d'instruction et des circuits de commande, pour gérer le registre d'instructions, l'unité arithmétique et logique, le compteur de programme (qui contient l'adresse courante dans le programme).... Dans l'invention, on s'intéresse plus particulièrement à une conception assistée par ordinateur qui permet de sortir, pour un circuit, les schémas de fabrication correspondants (schéma d'implantation, masques). Généralement un certain nombre de ressources périphériques optionnelles du processeur sont proposées, ce qui permet de répondre aux besoins spécifiques des utilisateurs. Par exemple, on peut avoir comme ressources périphériques possibles, un convertisseur numérique analogique, un compteur... En outre, d'une application à l'autre, ces ressources peuvent être configurées à différentes adresses physiques dans l'espace adressable du processeur (défini par la largeur de ses bus d'adresses et de données) et avec différents mode d'accès, selon les besoins des utilisateurs. Or le coeur de processeur doit connaître l'adresse physique des différentes ressources périphériques du processeur dans l'espace adressable du processeur, ainsi que leur mode d'accès (typiquement, mode multiplex, 8 bits ou mode démultiplex, 16 bits) et cela, généralement dès la fin du signal de ré- initialisation.. Pour cela, des registres de configuration sont habituellement prévus, pour contenir les adresses physiques de ces ressources et leur mode d'accès correspondant. La programmation de ces registres de configuration est obtenue en câblant chacun des bits de ces registres, soit à 1 (connexion du bit à VDD) soit à O (connexion du bit à la masse). Ces registres de configuration peuvent-être physiquement à l'extérieur du coeur comme le registre Rle représenté sur la figure 1. Dans ce cas, il faut remonter chaque bit des registres, dans l'exemple, bl à bn, jusqu'au bloc DEC de décodage correspondant, dans le coeur. Un site d'entrée (input pin) est alors prévu pour chaque bit des registres de configuration sur le schéma d'implantation (layout, selon la terminologie anglo-saxonne) du coeur. Dans l'exemple, on a les sites si à sn. Les registres de configuration peuvent être prévus à l'intérieur même du coeur, comme le registre Rli représenté sur la figure 2. Dans les deux cas, cette programmation est figée, définitive. On ne peut donc tester le bloc de décodage correspondant dans le coeur qu'avec les valeurs définitives prises par les bits des registres de configuration. Cela ne permet pas d'assurer une couverture complète du test du bloc. En outre, si on prend le procédé de configuration représenté sur la figure 1, beaucoup de sites d'entrée sur le schéma d'implantation du coeur peuvent être à prévoir, selon le nombre de ressources offertes au choix de l'utilisateur (c'est à dire le nombre de bits nécessaires pour coder toutes les adresses physiques et les modes d'accès correspondants. Cela contribue à augmenter les dimensions du coeur du processeur. On notera qu'en contre-partie du nombre de sites d'entrée à prévoir, le placement de ces registres à l'extérieur du coeur permet d'avoir un seul coeur répondant aux besoins de toutes les applications (c'est à dire toutes les combinaisons possibles coeur + ressources). Avec le procédé de configuration représenté sur la figure 2, il n'y a pas de sites d'entrée à prévoir, mais le coeur est alors dédié à un type d'application. A chaque application différente, correspond un nouveau coeur. Il faut en outre prévoir un coeur différent pour la réalisation de l'émulateur correspondant. En effet, il est nécessaire dans l'émulateur de pouvoir configurer n'importe quelle adresse ou n'importe quel mode d'accès de ressource. Il faut donc prévoir des sites d'entrée pour les bits de configuration, comme dans la figure 1 et des registres externes pour piloter les bits de configuration. Dans l'invention, on a cherché à résoudre le problème de la testabilité du bloc de décodage dans le coeur, tout en assurant l'irréversibilité de la programmation des registres de configuration. On a ainsi cherché une solution technique permettant d'assurer une couverture complète du test du bloc de décodage du coeur, c'est à dire avec toutes les valeurs possibles dans les registres de configuration. Dans l'invention, on a aussi cherché un procédé de conception du coeur, qui permette de garder un unique coeur de processeur, le même pour toute la famille, y compris l'émulateur. Une solution à ces différents problèmes techniques a été trouvée dans l'utilisation de cellules de type bascule D ("latch"), la configuration à un, respectivement à zéro d'une telle cellule étant obtenue par l'inhibition de la commande de mise à zéro, respectivement de la commande de mise à un, dans la cellule considérée, et la testabilité étant assurée par l'utilisation de la commande de chargement de la bascule en combinaison avec l'entrée de donnée D de la cellule, cette commande de chargement n'étant utilisable qu'en mode de test. Selon le procédé de conception de l'invention, les cellules, qu'elles soient configurées à un ou à zéro ont un schéma sommaire identique, c'est à dire qu'il faut leur réserver un emplacement de même dimension dans un schéma d'implantation, avec les mêmes sites d'entrée et de sortie. Ainsi, on peut placer une telle cellule dans un schéma d'implantation sans problème de place et d'interface différent selon que c'est une cellule configurée à 1 ou une cellule configurée à 0. Le coeur obtenu selon ce procédé est un coeur programmé, spécifique d'une application. Une variante de ce procédé permet d'obtenir dans un premier temps, un coeur non programmé, que l'on vient instancier (dans l'outil de conception) à chaque nouvelle application pour le programmer. Cette variante du procédé de conception du coeur consiste à utiliser une cellule vide, définie comme ayant le même schéma sommaire qu'une cellule configurée, mais vide de transistors: c'est à dire que le schéma d'implantation correspondant ne contient que les sites d'entrée et de sortie et les niveaux de métal correspondants. Ce schéma sommaire permet à l'outil de conception de le placer dans le schéma d'implantation du coeur, en lui réservant la place nécessaire et en routant les signaux nécessaires jusqu'à la périphérie de cette cellule vide. Ceci permet donc de concevoir le schéma d'implantation du coeur, sans le programmer, en plaçant une cellule vide pour chaque bit des registres de configuration. A chaque nouvelle application, il suffit alors: d'instancier le coeur non programmé; - d'instancier un bloc de programmation, qui peut- être vu comme une ressource périphérique du coeur, et qui contient pour chaque bit des registres de configuration, une cellule configurée à 1 ou à 0, fonction de l'application considérée; - à remplacer dans le schéma d'implantation du coeur, chaque cellule vide par la cellule configurée correspondante du bloc de programmation. On récupère au final, un coeur programmé, résultant de la combinaison du coeur vide et du bloc de programmation. Selon l'invention, on a ainsi un coeur de processeur vide, une cellule vide, une cellule programmée à 1 et une cellule programmée à 0 qui sont tous des éléments de la bibliothèque de l'outil de conception. L'invention concerne donc un procédé de conception d'un coeur de processeur selon la revendication 1. D'autres caractéristiques et avantages de l'invention sont décrits dans la description suivante, faite à titre indicatif et nullement limitatif et en référence aux dessins annexés dans lesquels: - la figure 1 déjà décrite montre schématiquement un processeur dont le coeur est configuré selon un procédé de l'état de la technique; - la figure 2 déjà décrite montre schématiquement un processeur dont le coeur est configuré selon un autre procédé de l'état de la technique; - la figure 3 représente le schéma descriptif de la cellule de base utilisée dans le procédé de configuration d'un coeur de processeur selon l'état de la technique; - la figure 4 représente le schéma descriptif d'une cellule configurée à 1 selon le procédé de configuration de l'invention. - la figure 5 représente le schéma descriptif d'une cellule configurée à 0 selon le procédé de configuration de l'invention; - la figure 6 représente le schéma descriptif d'une cellule vide selon le procédé de conception d'un coeur selon l'invention; - la figure 7 représente le schéma sommaire commun aux cellules configurées à 1 ou 0 et aux cellules vides selon l'invention; et - la figure 8 est un synoptique du procédé de conception d'un coeur selon l'invention. La figure 3 représente le schéma descriptif d'une cellule de base CB utilisée dans l'invention. C'est le dessin d'une bascule D classique (latch), comprenant un étage d'entrée 1, deux inverseurs 2 et 3 rebouclés entre un noeud E et une sortie Q, un circuit 4 de commande directe de mise à 1 et un circuit 5 de commande directe de mise à zéro. L'étage d'entrée 1 permet de forcer le noeud interne E, et par suite, la sortie Q, au niveau binaire 0 ou 1 de l'entrée de donnée D de la bascule, sur activation d'une commande de chargement LD (typiquement sur un état 1). Dans l'exemple représenté, cet étage comprend une porte de transfert à deux transistors MOS N et P en parallèle. Le circuit 4 de commande directe de mise à 1 comprend un transistor T4, dans l'exemple un transistor MOS de type N, connecté entre le noeud interne E et la masse GND, et commandé sur sa grille par un signal de mise à 1 noté SD. Un niveau 0 sur ce signal force le noeud E à 0, et par suite la sortie Q, à 1. Le circuit 5 de commande directe de mise à O comprend un transistor T5, dans l'exemple un transistor MOS de type P, connecté entre le noeud interne E et la tension logique VDD, et commandé sur sa grille par un signal de mise à 0 noté NCD. Un niveau O sur ce signal force le noeud E à 1, et par suite la sortie Q, à 0. Selon l'invention, on utilise cette cellule de base CB pour configurer le coeur de processeur. La configuration à 1, respectivement à 0, est obtenue en inhibant dans cette cellule de base CB la commande directe de mise à zéro, respectivement la commande de mise à 1. Le schéma descriptif résultant de la cellule configurée à 1, notée Cl est représenté sur la figure 4. Dans l'exemple, on a tout simplement supprimé le transistor T5. Le schéma descriptif résultant de la cellule configurée à 0 notée CO est représenté sur la figure 4. Dans l'exemple, on a tout simplement supprimé le transistor T4. Le schéma sommaire de la cellule configurée CO et celui de la cellule configurée Cl sont les mêmes. Ce schéma sommaire (abstract selon la terminologie anglo- saxonne) définit l'encombrement de la cellule et ses sites d'entrée/sortie. Il permet à l'outil de conception de réserver la place nécessaire à la cellule dans le schéma d'implantation du coeur et de placer les différents sites d'entrée/sortie. Ce schéma sommaire est représenté sur la figure 6. Pour la cellule configurée Cl comme pour la cellule configurée CO, ce schéma réserve une place (un rectangle) identique et détermine l'emplacement des sites d'entrée/sortie de la cellule sur la périphérie de cette cellule (de ce rectangle), à savoir, les sites d'entrée SD', SLD, SSD, SNCD, SVDD, SGND correspondants aux signaux D, LD, SD, NCD et aux signaux d'alimentations et le site de sortie SQ, correspondant au signal Q. Cela permet le routage des signaux externes jusqu'à la périphérie de chaque cellule dans le schéma d'implantation du coeur. Dans l'exemple, le site d'entrée SD est relié à une ligne du bus de données, le site SLD est relié à un signal d'écriture /wr du registre qui contient la cellule, le site SSD est connecté à un signal d'initialisation Rst actif à 1, le site SNCD est relié à un autre signal d'initialisation Rst-n, actif à O et les sites SVDD et SGND reçoivent respectivement la tension d'alimentation logique VDD et la masse GND. Le site de sortie SQ est relié à un signal de configuration Confj appliqué en entrée vers le bloc de décodage. Pour chaque cellule, qu'elle soit une cellule configurée Cl ou une cellule configurée CO, on a le même routage des sites d'entrée/sortie dans le schéma d'implantation du coeur. De façon bien connue, les deux signaux d'initialisation Rst et Rst-n sont générés par un circuit de détection d'une mise sous-tension (présence de VDD) du circuit du processeur, tandis que le signal d'écriture /wr est généré par un bloc de commande du coeur (non représenté), qui gère l'accès aux registres. Ce signal d'écriture ne peut-être en pratique activé qu'en mode de test. Dans ce mode de test, ces registres peuvent être chargés à n'importe quelle valeur. On peut donc tester complètement le coeur programmé, avec toutes les configurations possibles, selon un mode d'accès en écriture au registre tout à fait classique, mais disponible uniquement en mode de test. En dehors du mode de test, la valeur prise par chaque cellule, une fois le processeur mis sous tension et initialisé, est la valeur forcée par la seule commande disponible, c'est à dire 1, pour les cellules configurées Cl et 0 pour les cellules configurées CO. Les registres de configuration contenus dans le coeur sont donc configurés de façon définitive. L'utilisation de telles cellules selon l'invention dans les registres de configuration permet en outre de proposer un procédé de conception du coeur de processeur particulièrement avantageux. Ce procédé de conception consiste à utiliser une troisième cellule, notée CV, qui est définie comme ayant le même schéma sommaire que les cellules configurées à 1 ou à 0, mais qui est vide: si on se réfère aux figures 2 et 3, la cellule vide CV ne contient elle aucun transistor: son schéma sommaire est celui représenté sur la figure 6. Mais son schéma descriptif représenté sur la figure 7, ne comporte que les sites d'entrée/sortie: D, LD, ND, NCD, VDD, GND et Q. Son schéma d'implantation (non représenté), ne comprend que ces sites et des niveaux de métal. Avec un outil de conception assistée par ordinateur on peut concevoir selon l'invention un schéma d'implantation d'un coeur de processeur non programmé comprenant, pour chaque bit de configuration, une cellule vide, les signaux étant routes jusqu'à la périphérie de cette cellule, sur les sites d'entrée/sortie comme définis pour cette cellule vide par son schéma sommaire. On obtient ainsi un coeur non programmé. Le procédé de conception consiste ensuite, dans une étape de programmation correspondant à la réalisation d'un coeur programmé pour une nouvelle application, à: - instancier le coeur non programmé; - instancier un bloc de programmation, qui comprend pour chaque bit à configurer une cellule configurée correspondante. - à superposer chacune de ces cellules configurées sur l'emplacement d'une cellule vide correspondante dans le coeur. On obtient un coeur programmé, spécifique d'une application. Ainsi, dans le synoptique de ce procédé de conception selon l'invention représenté sur la figure 7, le coeur non programmé comprend par exemple k registres R1 à Rk, comprenant chacun n bits bl à bn et pour chacun de ces bits, une cellule vide CV. Le schéma d'implantation correspondant est complet à l'excepté des emplacements de ces cellules vides, mais tous les routages de signaux sont faits jusqu'aux sites d'entrée/sortie de toutes ces cellules. Un bloc de programmation d'une application comprend k registres Rlp à Rkp, avec pour chaque bit bl à bn de ces registres, une cellule programmée, soit Cl soit CO selon les spécifications de l'application. Dans le coeur programmé, chacune de ces cellules configurées vient remplir l'emplacement de la cellule vide CV correspondante. Pour une application donnée, on peut n'avoir que x Pour cela il est prévu en pratique qu'un des bits du registre de configuration, typiquement un des bits correspondant au mode d'accès, est un bit de validation, pour activer ou désactiver le décodage en aval, par le bloc de décodage. Ainsi, si dans une application on utilise peu de ressources, on configure ce bit de validation, pour invalider (typiquement en le mettant à 0) le décodage des registres de configuration non utilisés. Les autres bits de ces registres sont alors indifféremment configurés à 1 ou à 0. Enfin, le procédé de conception selon l'invention s'applique de manière similaire pour le coeur d'un émulateur correspondant. On utilise alors des cellules configurées indifféremment à 1 ou à O, l'écriture de ces cellules étant permise non seulement en test mais aussi en opérationnel. Le procédé de conception selon l'invention permet de définir un seul coeur, non programmé. Pour chaque nouvelle application du processeur à réaliser, ou pour la réalisation d'un émulateur, il suffit de réaliser un bloc de programmation correspondant et de l'appliquer au coeur non programmé, pour obtenir un coeur programmé pour l'application considérée. On gagne donc du temps en conception puisqu'il ne faut pas faire toute la conception du coeur. On part d'un schéma d'implantation dans lequel il n'y a que les emplacements vides correspondants aux cellules vides à combler. E REVENDICATIONS 1. Procédé de conception d'un coeur d'un processeur comprenant une étape de programmation de registres de configuration, caractérisé en ce que ladite étape consiste à utiliser pour chaque bit une cellule configurée à un (Cl) ou à zéro (C0), ladite cellule configurée étant une bascule avec une entrée de donnée (D) et un signal de commande (LD) pour écrire dans ladite cellule, un signal (NCD) de commande directe de mise à zéro et un signal (SD) de commande directe de mise à un, la configuration à un, respectivement à zéro, d'une telle cellule étant obtenue par l'inhibition de la commande de mise à zéro, respectivement de la commande de mise à un, dans la cellule considérée, l'écriture de la cellule n'étant autorisée qu'en mode de test. 2. Procédé de conception selon la revendication 1, caractérisé en ce que lesdites cellules configurées ont un même schéma sommaire définissant leur encombrement et leurs sites d'entrée/sortie. 3. Procédé de conception selon la revendication 2, caractérisé en ce que ce procédé de conception consiste: - à concevoir une cellule vide (CV) ayant le même schéma sommaire que lesdites cellules configurées (CO, Cl), - à concevoir un coeur de processeur non programmé en utilisant une cellule vide par bit de registres de configuration; et en ce qu'une étape ultérieure de programmation du coeur consiste - à instancier ledit coeur non programmé; - à instancier un bloc de programmation comprenant une cellule configurée soit à un soit à zéro pour chaque bit des registres de configuration; - à superposer chacune desdites cellules configurées sur l'emplacement d'une cellule vide correspondante dans le coeur non programmé.