Brevet FR2999313A1 — publié le 20140613

Circuit intégré comprenant un module de logique programmable L'invention concerne un circuit intégré comprenant un module de logique programmable et un procédé pour fabriquer un tel circuit. Elle 5 s'applique au domaine de la confidentialité de l'architecture des circuits intégrés. Le modèle économique du marché des composants électroniques montre depuis plus d'une dizaine d'années une transformation de la valeur. 10 Ainsi, la description haut-niveau du matériel à générer est la partie la plus stratégique et il est par conséquent nécessaire de la protéger contre la contrefaçon. La figure 1 représente de manière simplifiée les étapes de conception d'un circuit intégré. 15 Pour concevoir un circuit intégré, après que celui-ci ait été spécifié 100, une description fonctionnelle synthétisable 101 doit être produite. Pour cela, un langage de description matérielle HDL, acronyme venant de l'expression anglo-saxonne « Hardware Description Langage » est utilisé. Des exemples couramment utilisés de tels langages sont les langages VHDL 20 et Verilog. Les langages HDL sont utilisés habituellement pour décrire le fonctionnement attendu des blocs dédiés et permettre leur traduction en un assemblage de portes logiques, cet assemblage de portes logiques étant obtenu à l'aide d'un outil de synthèse 102. Plus précisément, le résultat de la 25 synthèse correspond à une liste d'interconnections de portes logiques 103, ladite liste étant présentée habituellement sous la forme d'un fichier désigné par l'expression anglo-saxonne « netlist gate ». Ce fichier correspond à une liste contenant l'ensemble des portes logiques élémentaires à utiliser pour la mise en oeuvre du circuit intégré ainsi que des informations sur la manière 30 dont ces portes sont connectées les unes aux autres. Lorsqu'un concepteur de circuits intégrés arrive en phase de production pour l'un de ses produits, il est habituel qu'il fasse appel aux services d'une société tierce pour fabriquer 106 ses composants 107. Pour cela, il fournit à cette société un fichier géométrique 105 désigné habituellement par le mot anglais « layout » et correspondant à une image de la puce à fondre. Le problème est que ce fichier géométrique peut servir de base pour la rétro-conception du circuit. En particulier, ce fichier peut être utilisé pour dupliquer le circuit et/ou pour comprendre son fonctionnement. Ainsi, le transfert d'un tel fichier au fondeur présente un risque industriel conséquent. Un but de l'invention est notamment de pallier les inconvénients précités. L'invention a pour objet un circuit intégré composé d'au moins un premier et un deuxième cône logique, un cône logique correspondant à une portion du circuit comportant une pluralité d'entrées et une sortie et réalisant une 15 fonction logique. Le premier cône logique comprend au moins un module de logique programmable MLP positionné dans le premier cône logique, la fonction logique dudit cône ne pouvant être mise en oeuvre qu'à l'aide d'un fichier de configuration du module MLP. Le module MLP met en oeuvre au moins une connexion non fonctionnelle avec le second cône logique. 20 Selon un aspect de l'invention, le module programmable MLP est adapté pour mettre en oeuvre un circuit d'aiguillage. Selon un autre aspect de l'invention, le circuit d'aiguillage est un réseau de routage. Le module programmable MLP est par exemple adapté pour mettre en 25 oeuvre une table de correspondance. Dans un mode de réalisation de l'invention, le module de logique programmable MLP comprend plus d'entrées que le cône logique substitué. Le module MLP est par exemple connecté par une connexion non fonctionnelle au deuxième cône logique en un noeud de sorte qu'il y ait au 30 moins un registre séquentiel entre ce noeud et l'entrée dudit module utilisée pour cette connexion. Le module MLP est par exemple connecté par la au moins une connexion non fonctionnelle à un générateur de signaux constants. L'invention a aussi pour objet un procédé de fabrication d'un circuit intégré avec au moins deux cônes logiques comprenant les étapes 5 suivantes : - génération d'une liste de portes logiques et d'interconnexions leurs étant associées ; - sélection d'un premier cône logique dans ladite liste ; - identification d'au moins une porte logique à substituer par un module 10 de logique programmable MLP; - sélection d'un module de logique programmable MLP parmi des modules mettant en oeuvre soit un circuit d'aiguillage soit une table de correspondance ; - substitution de la au moins une porte logique identifiée par le module 15 MLP sélectionné ; - connexion du module MLP de manière à ce que la fonction initiale réalisée par la au moins une porte logique ayant été substituée puisse être mise en oeuvre par le module MLP tout en ajoutant au moins une connexion non fonctionnelle vers un second cône logique. 20 Le module programmable MLP choisi permet par exemple soit de mettre en oeuvre un circuit d'aiguillage soit de mettre en oeuvre une table de correspondance. Le procédé comprend par exemple une étape exécutée lorsque le module MLP choisi met en oeuvre une table de correspondance, ladite étape 25 correspondant à la compilation de l'équation logique de ladite table à partir de la porte logique substituée afin de générer des bits de configuration permettant de programmer le module MLP de manière à ce que la fonction de ladite porte puisse être reproduite. L'invention a aussi pour objet un programme d'ordinateur comportant des 30 instructions pour l'exécution du procédé d'attribution décrit précédemment, lorsque le programme est exécuté par un processeur. Avantageusement, l'invention permet d'introduire des zones de flou dans le circuit intégré qui ne peuvent être clarifiées qu'avec l'utilisation conjointe d'un fichier de configuration. Si ce fichier de configuration n'est pas transmis au fondeur, il lui sera alors difficile de remonter aux fonctions réellement implémentées. Le terme « obfuscation » peut être utilisé pour désigner cette technique. A cet effet l'invention a pour objets un procédé et un dispositif tels que décrits par les revendications. D'autres caractéristiques et avantages de l'invention apparaîtront à l'aide de la description qui suit donnée à titre illustratif et non limitatif, faite en regard des dessins annexés parmi lesquels : - la figure 1 représente de manière simplifiée les étapes de conception d'un circuit intégré ; - les figures 2a et 2b présentent schématiquement le principe de substitution de portes logiques et de connexion dans un circuit intégré ; - la figure 3 représente schématiquement un procédé permettant de modifier le fichier contenant la liste indiquant l'ensemble des portes logiques élémentaires à utiliser pour la mise en oeuvre du circuit intégré ainsi que la manière dont ces portes sont connectées les unes aux autres ; - la figure 4 donne un exemple de circuit d'aiguillage comprenant quatre entrées et trois sorties ; - les figures 5a et 5b illustrent la manière dont un circuit d'aiguillage peut être utilisé comme module de logique programmable dans le cadre de l'invention ; - les figures 6a et 6b illustrent la manière dont une table de correspondance peut être utilisée comme module de logique programmable dans le cadre de l'invention. 2 9993 13 5 Les figures 2a et 2b présentent schématiquement le principe de substitution de portes logiques et de connexion dans un circuit intégré. Une technique permettant d'introduire des zones de flou dans le 5 fichier géométrique est d'ajouter de « faux circuits » dans le fichier géométrique. Pour cela, des éléments non programmables de l'architecture sont remplacés par de petites architectures programmables associées à leurs fichiers de configuration. La figure 2a donne un exemple d'architecture après synthèse d'une 10 partie d'un circuit intégré. Dans cet exemple, deux signaux d'entrée binaires A, B sont traités par des portes logiques de manière à obtenir un signal de sortie binaire C. Dans cette architecture, quatre portes logiques 200, 201, 202, 203 sont utilisées pour inverser le signal binaire qui leur est appliqué en entrée, une porte 204 15 est utilisée pour réaliser un « ou » logique à deux entrées et une porte logique 205 est utilisée pour réaliser un « et » logique à deux entrées. Si un tiers arrive à déterminer quels sont les portes logiques utilisées ainsi que la manière dont elles sont connectées, il pourra potentiellement reproduire le circuit intégré mettant en oeuvre cette architecture. 20 Afin d'éviter qu'un tiers puisse reproduire un tel circuit intégré, en particulier lorsque celui-ci possède le fichier géométrique, des portes logiques peuvent être retirées lors de la conception et remplacées par des éléments programmables. La figure 2b présente un exemple d'architecture modifiée introduisant 25 une zone de flou empêchant de remonter à la fonction implémentée sans posséder un fichier dit de configuration. Comme dans l'exemple de la figure 2a, deux signaux d'entrée binaires A, B sont traitées par des portes logiques de manière à obtenir un signal de sortie binaire C. On retrouve les trois portes logiques 200, 201, 202 utilisées 30 pour inverser le signal binaire qui leur est appliqué en entrée. Par contre, les portes logiques 203 et 204 ont été remplacées par des circuits programmables 207, 208. Pour que la fonction implémentée soit exécutable, il faut associer le circuit à un fichier de configuration 210. Par exemple, à la mise sous tension du circuit intégré, ledit fichier sera chargé de manière à ce que les circuits programmables mettent en oeuvre les fonctions voulues par 5 le concepteur. En outre, des circuits de type multiplexeurs 209 peuvent également être utilisés de manière à brouiller la manière dont les portes logiques sont connectées entre elles ou avec les éléments programmables. Une fois de plus, c'est en possédant le bon fichier de configuration 210 que les fonctions implémentées par le circuit intégré pourront être mises en 10 oeuvre. Afin d'obtenir un tel résultat, il est avantageusement possible de modifier le fichier « netlist » après synthèse. Il est également possible d'ajouter des portes logiques supplémentaires en parallèle d'une porte logique d'origine. Un multiplexeur peut alors être utilisé pour sélectionner la 15 bonne porte logique. Des défauts inhérents à la logique programmable peuvent être exploités. En effet, certaines fonctions nécessitent plus de bits de programmation que d'autres et pourront être privilégiées lors du remplacement. Cela vient du fait que plus il y a de bits de programmation à 20 trouver, plus il est difficile de déchiffrer la ou les fonctions implémentées. Ainsi, l'invention met en oeuvre différents modules de logique programmable MLP de manière à cacher une ou plusieurs sous fonctions mises en oeuvre par le circuit intégré. 25 Il est à noter qu'un circuit intégré est composé d'un assemblage de cônes logiques réalisant des sous fonctions. Un cône logique est un ensemble composé d'une pluralité de portes logiques interconnectées comportant une pluralité d'entrées et une sortie. Selon un aspect essentiel de l'invention, le circuit intégré est composé 30 d'au moins un premier cône logique comprenant un module de logique programmable MLP, ledit module étant adapté de manière à ajouter au 2 9993 13 7 moins une connexion non fonctionnelle avec un second cône logique. Avantageusement, cette connexion non fonctionnelle peut être ajoutée en dehors des barrières séquentielles normales de manière à modifier le comportement séquentiel du bloc protégé avec pour effet de rendre plus erratique le comportement du circuit intégré lorsqu'un mauvais fichier de configuration est utilisé. La figure 3 représente schématiquement un procédé permettant de modifier le fichier contenant la liste indiquant l'ensemble des portes logiques 10 élémentaires à utiliser pour la mise en oeuvre du circuit intégré ainsi que la manière dont ces portes sont connectées les unes aux autres. Ce procédé a pour objectif lors de la conception du circuit de substituer une partie du fichier « netlist » généré par l'outil de synthèse par au moins un module de logique programmable MLP. Ce module MLP peut 15 être soit un circuit d'aiguillage, soit un circuit mettant en oeuvre une table de correspondance. Il est également possible d'utiliser une combinaison de modules MLP de différents types. Dans une première étape 300, un cône logique de K entrées vers une sortie est sélectionné dans le fichier « netlist » comprenant au moins une 20 porte logique. Dans une seconde étape 301, la ou les portes logiques et/ou la ou les connexions à substituer par un module MLP sont identifiées. Dans une troisième étape 302, au moins un module MLP est choisi pour la substitution ainsi que ses caractéristiques. En d'autres termes, un 25 circuit d'aiguillage ou un circuit mettant en oeuvre une table de correspondance peuvent être sélectionnés. Leurs nombres d'entrées et de sorties peuvent également être adaptés. Dans une quatrième étape 303, les portes logiques et/ou connexions identifiées 301 sont remplacées par le ou les modules MLP sélectionnés 302. 30 Dans un cinquième étape 304, le ou les MLP sont connectés de manière à ce que la fonction initiale réalisée par les portes ayant été retirées puisse être mises en oeuvre par le ou les modules MLP, tout en ajoutant au moins une connexion non fonctionnelle vers un autre cône logique. Une connexion non fonctionnelle est une connexion qui n'existait pas avant la substitution par le ou les modules MLP. Dans une sixième étape 305, les bits de configuration du ou des MLP sont déterminés de manière à permettre la mise en oeuvre de la ou des fonctions initiales lorsqu'ils sont utilisés. A titre d'exemple, si le MLP choisi est une table de correspondance, l'équation logique de ladite table est compilée à partir des portes logiques retirées. En d'autres termes, une synthèse d'équation est réalisée à petite échelle. Des techniques identiques à celles utilisées pour des circuits FPGA peuvent être mises en oeuvre. Pour chaque table de correspondance, on utilise l'information de la porte ou des portes logiques d'origine afin de générer les bits de configuration correspondant à l'aide d'un outil de synthèse d'équation. De ce fait, cette méthode est utilisable sur toutes les portions du circuit intégré à protéger. Ce procédé peut être mis en oeuvre par un programme d'ordinateur exécuté par un processeur. La figure 4 donne un exemple de circuit d'aiguillage comprenant quatre entrées et trois sorties. Un circuit d'aiguillage, désigné habituellement par le mot anglais « crossbar », est composé d'un assemblage de multiplexeurs. Dans le cadre de l'invention, un circuit d'aiguillage peut être utilisé 25 comme module de logique programmable MLP pour remplacer tout ou partie du réseau d'interconnexion d'un circuit intégré par un réseau programmable. Des circuits d'aiguillages qualifiées de complets et désignés habituellement par l'expression anglo-saxonne « full crossbar » permettent de réaliser toutes les combinaisons de connexions entre un nombre donné 30 d'entrées et un nombre donné de sorties. Avantageusement, ce type de 2 9993 13 9 circuit d'aiguillage peut être utilisé facilement dans le cadre de l'invention car la fonction de connexion d'origine peut toujours être programmée. L'introduction de circuits d'aiguillage pour introduire des zones de flou dans le circuit intégré revient à ajouter des circuits là ou il n'y avait que des 5 fils en métal. Avantageusement, la partie logique initiale reste inchangée. Le circuit d'aiguillage 400 donné en exemple comprend quatre entrées a, b, c, d et trois sorties e, f, g. Il est composé d'un assemblage de trois multiplexeurs 401, 402, 403. Chacun de ces multiplexeurs utilise comme entrées les signaux a, b, c et d afin de produire une unique sortie. Ainsi le 10 multiplexeur 401 sélectionne l'une de ses entrées a, b, c ou d pour déterminer son signal de sortie e. Cette sélection est opérée en fonction d'un signal de configuration conf1. Ainsi dans le cadre de l'invention, si un circuit d'aiguillage 400 est utilisé pour brouiller le réseau d'interconnexion du circuit intégré, il ne sera pas possible de reproduire la fonction implémentée sans 15 connaître les différents signaux de configuration conf 1, conf 2 et conf3. Ces signaux peuvent être générés après le chargement d'un fichier dit de configuration. Les figures 5a et 5b illustrent la manière dont un circuit d'aiguillage 20 peut être utilisé comme module de logique programmable dans le cadre de l'invention. La figure 5a représente une portion d'architecture de circuit intégré avant mise en oeuvre de l'invention. Un cône logique 500 est représenté. Ce cône logique utilise en entrée deux signaux D et E et produit un signal de sortie G. Il comprend trois portes logiques 501, 502, 504. La sortie de la porte logique 501 est également utilisée en entrée d'une porte logique 503 appartenant par exemple à un autre cône logique. La figure 5b représente le même cône logique 500 dans lequel a été introduit un circuit d'aiguillage 505 permettant de brouiller le réseau 30 d'interconnexion interne audit cône. 2 9993 13 10 De la même manière que le circuit donné en exemple avec la figure 4, le circuit d'aiguillage 505 comprend quatre entrées et trois sorties. La première entrée du circuit 505 correspond à la sortie d'une porte logique 501 appartenant au cône logique 500. La seconde entrée du circuit 505 5 correspond à la sortie d'une autre porte logique 502 appartenant au cône logique 500. Pour ce qui est des deux autres des entrées du circuit d'aiguillage 505, des signaux extérieurs au cône logique 500 sont utilisés. Dans cet exemple, ces signaux sont extraits d'un cône logique 511 comprenant deux portes logiques 506, 507. Le cône logique 511 traite deux 10 signaux d'entrée H et I de manière à générer un signal de sortie J. Le signal H est extrait 509 de ce cône logique 511. Il est introduit en entrée du circuit d'aiguillage 505. Un signal intermédiaire 510 correspondant à la sortie de la porte logique 506 est utilisé comme quatrième signal d'entrée du circuit d'aiguillage 500. Ainsi, lorsque les données de configuration 520 utilisées 15 pour définir la manière dont les portes logiques sont connectées les unes aux autres au sein du cône logique 500 ne sont pas correctes, des signaux provenant de différents cônes logiques et non utilisés avant la substitution par le module MLP peuvent être mélangés, ce qui implique que le circuit intégré devient inutilisable. Il apparaît dans cet exemple que deux 20 connexions non fonctionnelles 509, 510 ont été ajoutées de manière à compliquer la tâche des contrefacteurs ne possédant pas le bon fichier de configuration. Lorsque l'on veut remplacer une portion du réseau ce connexions par un circuit d'aiguillage par un module MLP de type circuit d'aiguillage, on 25 sélectionne une portion du réseau de connexions initial en choisissant un nombre Ms de sorties et un nombre Me d'entrées d'une ou plusieurs portes logiques appartenant au cône logique en veillant à ce que les connexions originelles puissent être retrouvées. Le choix de la taille du circuit d'aiguillage mène à des résultats 30 différents. Si le circuit d'aiguillage est choisi de type complet et de petite taille, l'implémentation est facilitée du fait qu'il ne remet pas en cause la faisabilité du circuit. Au contraire, si le circuit d'aiguillage est choisi de grande taille et que ce n'est pas un circuit d'aiguillage de type complet mais un réseau de routage incomplet, il faut valider le fait que le routage d'origine puisse être retrouvé avec fiabilité lors de l'utilisation du bon fichier de configuration. Des circuits d'aiguillage de grande taille pouvant être utilisés sont par exemple des réseaux de routage composés de circuits d'aiguillage complets plus petits. L'efficacité de la protection ainsi introduite est proportionnelle au nombre de bits de programmation. Les figures 6a et 6b illustrent la manière dont une table de correspondance peut être utilisée comme module de logique programmable 15 dans le cadre de l'invention. Une table de correspondance, habituellement désignée par l'expression anglo-saxonne « Look-Up Table » permet l'implémentation directe et physique de la table de Karnaugh de n'importe quelle équation logique comprenant K entrées et une sortie. En d'autres termes, une table de 20 correspondance est une table de Karnaugh programmable. Dans un mode de réalisation de l'invention, une table de correspondance peut être utilisée comme moyen de substitution à n'importe quelle portion du circuit intégré comprenant K entrées et une sortie, cette portion pouvant englober plusieurs portes logiques. 25 Le remplacement d'une ou plusieurs portes logiques par des tables de correspondance offre une solution robuste car il ne reste pas de trace des fonctions à mettre en oeuvre. Dans ce cas, les zones cachées sont identifiables car on peut reconnaitre la structure d'une table de correspondance, mais il n'est pas possible de savoir ce qui est caché si 30 l'observateur ne possède pas le bon fichier de configuration. 2 9993 13 12 Une porte logique ou un groupe de portes logiques peut être remplacé par une table de correspondance qui a au moins un nombre d'entrées et de sorties équivalent. C'est en effet une condition pour que la fonction logique réalisée par la ou les portes logiques substituées puisse être mise en oeuvre. 5 Dans un mode de réalisation préféré, la table de correspondance comprend plus d'entrées et ou de sorties que le cône logique substitué. Ainsi, des entrées supplémentaires peuvent être connectées à des générateurs de signaux constants ou des noeuds existant selon le même principe que la substitution par circuit d'aiguillage. 10 En outre, des sauts de barrières séquentielles peuvent être mis en place. Avantageusement, ces sauts de barrière séquentielle permettent d'augmenter l'effet de panne lorsque le fichier de configuration utilisé n'est pas le bon. La figure 6a représente une portion d'architecture de circuit intégré avant substitution. Un cône logique 620 est représenté. Ce cône logique utilise en entrée des signaux M, J et K et produit un signal de sortie L. Il comprend deux portes logiques 603, 605. D'autres portes logiques en dehors de ce cône 20 logique 620 sont également représentées 600, 602, 606, 604, 607. Le cône logique 620 comprend une porte logique 605 à trois entrées et une sortie. La première entrée est connectée à la sortie de la porte logique 603, la seconde entrée est connectée à la sortie de la porte logique 602 et la troisième à la sortie de la porte logique 606. En outre, la sortie de la porte 25 logique 605 est connectée à une entrée des portes 604 et 607. La figure 4b représente la même portion de circuit comprenant le même cône logique 620 dans lequel a été introduit une table de correspondance 608. Dans cet exemple, la porte logique 605 ayant trois entrées et une 30 sortie ont été remplacées par une table de correspondance 608 comprenant quatre entrées et une sortie. Ainsi, la table de correspondance 608 comprend une entrée de plus que la porte logique substituée 605. Trois entrées de la table de correspondance restent connectées de la même manière que la porte logique 605. Cela est nécessaire pour que la fonction initialement mise en oeuvre par la porte logique 605 puisse être reproduite une fois le table de correspondance 605 reprogrammée. Pour ce qui est de la sortie de la table de correspondance 608, celle-ci doit également rester connectée comme la sortie de la porte logique 605. L'entrée supplémentaire de la table de correspondance 608 est connectée 609 en un noeud de connexion 621 situé en dehors du cône logique 620. En outre, ce noeud est sélectionné de sorte qu'il soit situé derrière une barrière séquentielle. En d'autres termes, le noeud 621 est choisi de sorte qu'il y ait au moins un registre séquentiel 601 entre lui et l'entrée de la table de correspondance 620. Ainsi, la mise en oeuvre de la connexion supplémentaire 609 a pour effet de mélanger les signaux du cône logique 620 avec des signaux extérieur mais en plus de mélanger temporellement ces signaux. Ainsi, dans un fonctionnement normal du circuit intégré pour une période d'horloge donnée, le signal présent au noeud 621 ne devrait jamais pouvoir intervenir dans les traitements mis en oeuvre par le cône logique 620. Si la table de correspondance n'est pas correctement configurée, le fonctionnement du cône logique devient alors particulièrement imprévisible et éloigné de la fonction devant normalement être mise en oeuvre. REVENDICATIONS1- Circuit intégré composé d'au moins un premier et un deuxième cône logique, un cône logique correspondant à une portion du circuit comportant une pluralité d'entrées et une sortie et réalisant une fonction logique, le premier cône logique comprenant au moins un module de logique programmable MLP (505, 608) positionné dans le premier cône logique, la fonction logique dudit cône ne pouvant être mise en oeuvre qu'à l'aide d'un fichier de configuration du module 10 MLP, le module MLP mettant en oeuvre au moins une connexion non fonctionnelle (509, 510, 609) avec le second cône logique (511, 631). 2- Circuit intégré selon la revendication 1 dans lequel le module programmable MLP est adapté pour mettre en oeuvre un circuit 15 d'aiguillage (400, 505). 3- Circuit selon la revendication 2 dans lequel le circuit d'aiguillage est un réseau de routage. 20 4- Circuit intégré selon l'une des revendications précédentes dans lequel le module programmable MLP est adapté pour mettre en oeuvre une table de correspondance (608). 5- Circuit intégré selon l'une des revendications précédentes dans lequel 25 le module de logique programmable MLP comprend plus d'entrées que le cône logique substitué. 6- Circuit intégré selon l'une des revendications précédentes dans lequel le module MLP est connecté par une connexion non fonctionnelle 30 (609) au deuxième cône logique (631) en un noeud (621) de sorte qu'ily ait au moins un registre séquentiel (601) entre ce noeud et l'entrée dudit module utilisée pour cette connexion. 7- Circuit intégré selon l'une des revendications précédentes dans lequel le module MLP est connecté par la au moins une connexion non fonctionnelle à un générateur de signaux constants. 8- Procédé de fabrication d'un circuit intégré avec au moins deux cônes logiques comprenant les étapes suivantes : 10 génération d'une liste de portes logiques et d'interconnexions leurs étant associées ; sélection (300) d'un premier cône logique dans ladite liste ; identification (301) d'au moins une porte logique à substituer par un module de logique programmable MLP; 15 sélection (302) d'un module de logique programmable MLP parmi des modules mettant en oeuvre soit un circuit d'aiguillage soit une table de correspondance ; substitution (303) de la au moins une porte logique identifiée par le module MLP sélectionné ; 20 connexion du module MLP (304) de manière à ce que la fonction initiale réalisée par la au moins une porte logique ayant été substituée puisse être mise en oeuvre par le module MLP tout en ajoutant au moins une connexion non fonctionnelle vers un second cône logique. 25 9- Procédé selon la revendication 8 dans lequel le module programmable MLP choisi permet soit de mettre en oeuvre un circuit d'aiguillage (400, 505) soit de mettre en oeuvre une table de correspondance (608). 30 10-Procédé selon l'une des revendications 8 ou 9 comprenant une étape exécutée lorsque le module MLP choisi met en oeuvre une table de correspondance, ladite étape correspondant à la compilation de l'équation logique de ladite table à partir de la porte logique substituée afin de générer des bits de configuration permettant de programmer le module MLP de manière à ce que la fonction de ladite porte puisse être reproduite. 11- Programme d'ordinateur comportant des instructions pour l'exécution du procédé selon l'une quelconque des revendications 8 à 10, lorsque le programme est exécuté par un processeur.