Brevet FR3120953A1 — publié le 20220923

Protection du contenu d'une mémoire fusible La présente description concerne un procédé dans lequel un état d’un circuit intégré entre un premier état (CLOSED), autorisant un accès pour lecture d’une première zone d’une mémoire non volatile de type fusible à une unité de traitement, et un deuxième état (OPEN), interdisant l’accès pour lecture de ladite mémoire à l’unité de traitement, est conditionné par une vérification, par une machine à états finis, d’un premier mot de type fusible de ladite mémoire, représentant un nombre de transitions vers ledit premier état, et d’un deuxième mot de type fusible de ladite mémoire, représentant un nombre de transitions vers ledit deuxième état. Figure pour l'abrégé : Fig. 3 Protection du contenu d'une mémoire fusible La présente description concerne de façon générale les circuits électroniques, et plus particulièrement les circuits intégrés comportant une mémoire non volatile de type fusible. La présente description concerne, en particulier, la mise en œuvre d’un procédé permettant d’exécuter un test d’un tel circuit. Les circuits intégrés sont utilisés dans la conception de dispositifs électroniques ayant des applications diverses. Que ce soit en production ou lors de la vie du produit, les circuits intégrés sont testés pour des défauts de fabrication. Ces tests requérant un accès font généralement appel à un protocole normalisé, connu sous la dénomination JTAG (Joint Test Action Group), par l'intermédiaire d'un port dédié du circuit intégré. L'interface JTAG est couramment utilisée pour tester des mémoires, notamment des mémoires non-volatiles, et est susceptible d'être utilisée en production ainsi que dans la vie du produit, notamment lors d'opérations de maintenance afin d'identifier de potentiels défauts provenant de la fabrication. Le circuit intégré est alors généralement renvoyé au fabriquant. En particulier, des utilisateurs peuvent vouloir retourner le produit au fabriquant afin qu’il soit re-testé pour défauts de fabrication. L’utilisateur n’exécute pas ces tests comme étant une opération de routine de maintenance. L’utilisateur constate un problème, soupçonne qu’il pourrait s’agir d’un défaut de fabrication et renvoie le produit afin que le fabriquant puisse réexécuter un test de balayage (scan) pour analyser le défaut. Les procédures de test et l'accès aux informations contenues dans les mémoires d'un circuit intégré sont susceptibles de poser problème dans des applications où ces mémoires contiennent des informations censées être cachées du fabricant. Il peut s'agir de clés d'authentification ou de chiffrement (plus généralement de mots de passe, codes ou clés utilisés dans la vie du circuit), de codes logiciels ou protocoles propriétaires stockés dans le circuit lors d'une phase de personnalisation effectuée par l'utilisateur final du circuit ou par une entité intermédiaire entre le fabricant et cet utilisateur. Ces éléments constituent des informations à cacher du fabriquant (secrets), qu'il n'est généralement pas souhaitable de communiquer au fabricant du circuit intégré. Dans le cas où les mémoires non volatiles du circuit sont de type effaçable ou reprogrammable (mémoire flash ou EPROM), il est possible d'effacer des zones de la mémoire contenant le "secret" avant de retourner le circuit pour analyse de défauts. Par contre, lorsque les mémoires non volatiles sont de type fusible, leur programmation est irréversible et il est alors problématique de laisser l'accès au circuit via son interface JTAG lors d’une exécution de tests de fonctionnement des composants du circuit. Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation et modes de mise en œuvre particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la représente, de façon très schématique et sous forme de blocs, un mode de réalisation d’un dispositif à circuit intégré du type auquel s’appliquent, à titre d’exemple, des modes de réalisation décrits ; la représente, de façon schématique et sous forme de blocs, plus détaillée qu'en , un mode de réalisation de circuit intégré du type auquel s’appliquent, à titre d’exemple, des modes de réalisation décrits ; la est un arbre de décision illustrant un mode de mise en œuvre d'un procédé de protection du contenu d'une mémoire fusible ; et la est un organigramme représentant des étapes d'un mode de mise en œuvre d'une transition vers un mode de test de balayage d'un circuit intégré. Procédé dans lequel un état d’un circuit intégré (102) entre un premier état (CLOSED), autorisant un accès pour lecture d’une première zone (202) d’une mémoire non volatile de type fusible (110) à une unité de traitement (112), et un deuxième état (OPEN), interdisant l’accès pour lecture de ladite mémoire à l’unité de traitement (112), est conditionné par une vérification, par une machine à états finis (108), d’un premier mot de type fusible (WORD1) de ladite mémoire, représentant un nombre de transitions vers ledit premier état, et d’un deuxième mot de type fusible (WORD2) de ladite mémoire, représentant un nombre de transitions vers ledit deuxième état. Procédé selon la revendication 1, dans lequel ladite vérification consiste à comparer (303) les valeurs respectives desdits premier et deuxième mots et à vérifier (305) la valeur du bit le plus significatif du premier mot. Procédé selon la revendication 1 ou 2, dans lequel le circuit est dans le premier état (CLOSED) si la valeur du deuxième mot (WORD2) est plus basse que la valeur du premier mot (WORD1) ou si le bit le plus significatif du premier mot est dans un état programmé. Procédé selon l’une quelconque des revendications 1 à 3, dans lequel ladite vérification est effectuée à chaque réinitialisation du circuit intégré. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel, dans le premier état (CLOSED), un test du circuit intégré est interdit. Procédé selon l’une quelconques des revendications 1 à 5 , dans lequel, dans le deuxième état (OPEN), un test du circuit intégré est permis, excepté pour la mémoire non volatile de type fusible (110). Procédé selon l’une quelconque des revendications 1 à 6, dans lequel : - chaque transition dudit circuit intégré dans le premier état (CLOSED) est précédée par une incrémentation d’un premier compteur (208) défini par le premier mot (WORD1) de ladite mémoire (110) ; et - chaque transition dudit circuit intégré dans le deuxième état (OPEN) est précédée par une incrémentation d’un deuxième compteur (210) défini par le deuxième mot (WORD2) de ladite mémoire (110). Procédé selon la revendication 7, dans lequel une incrémentation du deuxième compteur (210) est provoquée exclusivement par la machine d'état finis (108). Procédé selon la revendication 7 ou 8, dans lequel une incrémentation du premier compteur (208) est accessible à l’unité de traitement (112). Procédé selon l’une quelconque des revendications 1 à 9, dans lequel une transition dudit circuit du premier état (CLOSED) vers le deuxième état (OPEN) est effectuée si, et seulement si, en sortant de réinitialisation, une valeur, entrée dans un registre à partir de l’extérieur du circuit pendant que ledit circuit est en cours de réinitialisation, correspond à un code (204) stocké dans ladite première zone (202) de la mémoire non volatile de type fusible (110), ledit code étant uniquement lisible par la machine à états finis. Procédé selon la revendication 10, dans lequel toute introduction de valeur dans le registre, lorsque le circuit intégré est dans le premier état (CLOSED) en sortant de réinitialisation, incrémente un troisième compteur (212) défini par un troisième mot (WORD3) de ladite mémoire (110) à condition que le bit le plus significatif dudit troisième mot soit différent de 1. Procédé selon la revendication 11, dans lequel, après réinitialisation, le circuit est dans le deuxième état (OPEN) si : la valeur du troisième compteur (208) est supérieure à la valeur du deuxième compteur (210) ; ou le bit de type fusible le plus significatif du premier mot de type fusible (WORD1) est dans un état programmé ; ou le bit de type fusible le plus significatif du troisième mot de type fusible (WORD3) est dans un état programmé. Procédé selon l a revendication 11 ou 1 2 , dans lequel le circuit est dans le premier état (CLOSED) si : la valeur du premier compteur (208) est inférieure ou égale à la valeur du deuxième compteur (210) ; et les bits de type fusible les plus significatifs des troisième (WORD3) et premier (WORD1) mots de type fusible sont dans un état non programmé. Circuit intégré configuré pour la mise en œuvre du procédé selon l’une quelconque des revendications 1 à 13.