Université Joseph Fourier Département Licence Sciences & Technologie RAPPORT DE STAGE Amélioration de plateforme de simulation de fautes transitoires en systèmes intègrés Zerroug Aimen Laboratoire d‟accueil : TIMA équipe CIS Directeur du laboratoire : Salvador Mir Responsables du stage : Rodrigo Possamai Bastos Licence Sciences et Technologies 2ème année Mathématiques et Informatique Année Universitaire : 2014 – 2015 1 Présentation du laboratoire TIMA (Unité Mixte de Recherche N°5159) est un Laboratoire public de recherche sous la tutelle du CNRS (Centre National de la Recherche Scientifique), de Grenoble INP (Institut Polytechnique de Grenoble), et de l'UJF (Université Joseph Fourier). TIMA est une équipe cosmopolite, avec des chercheurs et stagiaires du monde entier. Une grande partie de la recherche s'effectue dans le contexte de projets coopératifs, avec des partenaires industriels et académiques, financés par des contrats régionaux, nationaux et européens. Les sujets de recherche du Laboratoire TIMA couvrent la spécification, la conception, la vérification, le test, les outils CAO et méthodes d'aide à la conception pour les systèmes intégrés, depuis les composants de base analogiques et numériques jusqu'aux systèmes multiprocesseurs sur la puce et à leur système d'exploitation de base. TIMA est à l'origine de 8 créations d'entreprises. Parmi les plus récentes, TIEMPO a été créée en 2007 pour commercialiser la technologie de conception de circuits asynchrones inventée par le Groupe CIS; UROMEMS est issue des résultats de thèse de Hamid Lamraoui (groupe MNS) en collaboration avec TIMC et l'hôpital de la Pitié Salpétrière à Paris. La plupart des personnels universitaires de TIMA sont rattachés à Grenoble INP ou à l'UJF. Ils ont d'importantes responsabilités pédagogiques. En particulier, ils sont responsables des filières : 3I et E2I à Polytech (UJF), Systèmes Electroniques Embarqués à PHELMA (Grenoble INP), Systèmes et Logiciels Embarqués à l'ENSIMAG et à PHELMA (Grenoble INP), Master CSINA (conception de systèmes intégrés numériques et analogiques) à l'UJF. Les personnels universitaires de TIMA enseignent dans toutes les filières mentionnées ci-dessus. Ils assurent également l'enseignement de 80 % des cours de l'option « Conception » du Master Micro-Nano-Electronique, et sont impliqués dans la Licence d'Informatique ainsi que dans les programmes de Masters. Des membres de TIMA sont responsables de 4 plateformes de recherche et d'enseignement sur 8 au CIME-Nanotech (Centre Inter-universitaire de Micro Electronique) : salle blanche, systèmes embarqués, micro-nano systèmes, conception. Les membres de TIMA sont également très présents dans la formation continue dispensée chaque année aux ingénieurs dans le secteur industriel. Sommaire: 2 Sommaire : - Présentation abstraite 4 - Introduction 4 - La simulation de la procédure d‟injection et détection de fautes 6 1. 2. 3. 4. 5. 6. Le programme HSPICE et son utilisation La composition de la simulation de scripts et HSPICE Entrée de la simulation Sorties de la simulation Procédure de la simulation Exemple de simulation - Améliorations de la simulation 1. Affichage des variables 2. Création des variables - Conclusion 6 6 7 8 9 12 15 15 16 18 3 présentation abstraite: les bbics sont des systèmes de protection des circuits intégrés. Avant de lancer une vraie expérience, une simulation sur l’ordinateur est conduite pour tester la performance du système. La simulation est aussi une procédure complexe qui demande beaucoup de données et de temps pour donner des résultats utilisables. Ce travail détail la procédure de simulation et donne des améliorations possible sur la plate-forme. Introduction Les circuits intégrés sont les composants de plusieurs systèmes et machines modernes, leurs conception et fabrication est un processus difficile et complexe, mais leurs rôles sont important et ils sont objet des attaques des pirates. Le but des attaques est d‟induire des défauts transitoires dans le circuit, une variation de voltage à un endroit dans le circuit peut propager et à un certain moment peut être la cause de perte ou fuite d‟informations. Les défauts transitoires peuvent être produits par des perturbations environnementales (comme les particules alpha libéré par des éléments radioactive) ou intentionnées comme les attaques des pirates. Il existe plusieurs manières pour changer le voltage d‟un endroit dans un circuit; parmi les méthodes les moins chers on compte : sous-alimenter le circuit en changeant la source de tension, L‟injection de hautes tensions dans des petits intervalles de temps, changer le cycle d‟horloge du circuit (réduire ou allonger) ou changer la température du circuit. Et parmi les méthodes les plus chers : utiliser un faisceau de lumière fort et précisément focalisé pour induire un effet photoélectrique et changer un certain voltage et utiliser un rayon laser ou un faisceau ionique. La précision des dernières techniques les rend plus chers et efficaces. Un exemple d‟une attaque efficace est de cibler l‟entrée d‟une porte logique afin de changer sa sortie, si la sortie d‟une porte est l‟entrée d‟une autre l‟erreur va propager et peut avoir un grand effet sur le travail du circuit. Pour défendre les circuits un système de détection de fautes peut y être implémenté, c‟est BBICS (“Bulk Built-in Current Sensor” traduit en français: ). Le bbics était présenté pour la première fois en 2005 par un professeur brésilien et était amélioré pendant les dernières années. Le but de BBICS est de signaler toute faute commise dans le circuit, lorsqu‟un courant de sortie d‟une porte logique n‟est pas conforme au résultat attendu, BBICS lance un signal pour décider comment agir. BBICS est un circuit intégré qui peut être implémenté dans tout circuit. 4 Pour tester l‟efficacité du BBICS dans la détection des fautes, un système était développé dans le serveur du laboratoire TIMA. Ce système utilise une bibliothèque de données et sauvegarde une grande quantité de résultats qui est utile pour la recherche. Le système contient plusieurs scripts shell de manipulation de fichiers et d'exécution de programmes. Le plus important des programme est HSPICE. HSPICE s‟occupe de la simulation du circuit, des conditions de travail et des mesures sur le circuit, donne les résultats sous des formes spéciales et affiche les graphs. Les résultats produits enfin sont des graphs et des mesures du temps, courant voltage...Etc. Le but de ce stage était de comprendre la structure du système de la simulation, de l‟améliorer et d‟y ajouter des options. Ce travail donne d‟abord une description profonde de la procédure de simulation ainsi que des exemples de simulation, et présente les modifications faites sur ce système afin de l‟améliorer. 5 La simulation de la procédure d‟injection et détection de fautes Le programme HSPICE: SPICE (Simulation Program with Integrated Circuit Emphasis) est un logiciel de simulation généraliste de circuits électroniques analogiques. SPICE a été créé à l'université de Californie (Berkeley) au début des années 1970. Il existe plusieurs versions de SPICE, SPICE2, SPICE3, HSPICE, PSPICE. HSPICE est une version gratuite du programme et qui offre assez de liberté pour le niveau de circuit de BBICS et les circuits de test. HSPICE est un programme avec une interface graphique. il donne le choix entre construire son circuit et faire les mesures utilisant les fenêtres de l‟interface ou utilisant un fichier d‟entrée qui décrit le circuit. HSPICE peut être décrit comme un langage descriptif similaire à VHDL. Voici un exemple de l‟utilisation de HSPICE: Le code correspondant au circuit suivant est: Multiple dc sources v1 1 0 dc 24 v2 3 0 dc 15 r1 1 2 10k r2 2 3 8.1k r3 2 0 4.7k .end Chaque composant est décrit par ses liaisons avec les branches, par sa nature (dc/ac pour les source de voltage) et par d‟autre caractéristiques spécifiques à sa nature. La composition de la simulation de scripts et HSPICE La simulation d‟un seul circuit avec quelques mesures peut être fait avec un simple fichier HSPICE. Mais dans le cas de notre simulation, il existe plusieurs circuits avec encore plus de scénario pour chaque circuit. De plus, les recherches conduites dans le laboratoire ne concernent pas que BBICS. Donc il faut automatiser le procédé de simulation pour pouvoir obtenir plusieurs résultats à partir d‟un seul fichier d‟entrée. Le travail de HSPICE est de simuler un circuit, de prendre des mesures, donner les résultats dans un fichier de sortie et d‟afficher les graphes. Plusieurs scripts shell sont utilisé pour créer les fichiers .sp à partir d‟un fichier tab d‟entrée, et d‟autres scripts récupèrent les résultats et les affichent dans le format demandé. 6 Entrée de la simulation: Le fichier donné en entrée est un fichier texte qui représente un tableau. Dans le tableau, chaque colonne représente un paramètre et chaque ligne représente une configuration, simulation ou multiples simulation du/des circuit(s). Le tableau a de très longues lignes car une simulation contient plusieurs paramètres. A cause de cette particularité, le fichier est lu difficilement utilisant n‟importe quel éditeur de texte, donc l‟éditeur vim est utilisé facilitant la lecture et la modification du fichier. La première colonne du tableau décide si la ligne correspondante va être lue ou non, si la ligne est précédé par 1 elle est prise en compte, c‟est le contraire pour 0. Parmi Les lignes qui ne sont pas prises en compte sont les commentaires: - La première ligne qui représente les noms des paramètres. - Chaque ligne qui indique le début d‟un scénario - Les lignes vides - Les lignes qui représente une simulation/configuration mais sont ignorées à titre de test. Les lignes de configurations représentent des modifications ou des ajouts dans le circuit en question, l‟utilisateur a le choix de lancer une simulation après une configuration, les configurations servent aussi à la fin du fichier à fermer les fichier “.csv” remplis au cours de la simulation. Les lignes de simulation servent à jouer le scénario préparé en certain conditions (paramètres), les résultats sont à stocker dans un fichier donné en paramètre. Le fichier tab reste un simple fichier qui ne peut pas décrire tout un circuit tout seul, il peux être appelé un pointeur vers la banque de données sur le framework. 7 Tout les circuits (les circuits BBICS et les circuits de teste), composants et types de liens sont prédéfinies comme des blocs de code HSPICE sur la librairie avec tout les codes de mesure de stimulations du circuit. Le fichier tab indique quels blocs de code à prendre et mettre dans le fichier HSPICE d‟une simulation. Sorties de la simulation La procédure de simulation est compliquée et quand elle prend un fichier en entrée elle donne plusieurs en sortie. Les signaux et les graphes sont les premiers sorties de la simulation. Ce sont les graphes qui aident à voir l‟effet de l‟attaque comme une petite variation de tension et sa propagation dans le circuit dans les autres graphes avec des délais de pico-seconds. L‟affichage des graphes est un choix: si 1 est mis comme le paramètre “ DO ANALYSIS” les graphes seront affichés. L‟affichage est à l‟aide du logiciel CosmosScope vu qu‟il peut afficher plusieurs signaux à la fois et qu‟il plusieurs options de mesure, traitement et calculs. Les sorties écrits sont affichées dans le consoles de façon organisée: - le circuit, la branche attaquée et la date et puis pour chaque simulation : - le numéro de la simulation - les variables et leurs valeurs correspondants à une simulation dans une seul colonne Les variables affichés varient entre des tensions, courants, puissance, période de temps, composants du circuit et facteurs importants pour l‟étude de BBICS. 8 Procédure de la simulation 1- préparer le fichier tab et lancer la simulation Préparer le fichier tab comprend décider le nombre de scénario à faire et pour chaque scénario écrire les lignes de configuration et lignes d'exécution. Sur chaque ligne doit être mentionné : - les circuits de tests les circuits de BBICS - les composants à attaquer - le voltage de l‟attaque - la source de tension, température et les paramètres génériques - les variables de sorties - faire la simulation ou non et afficher les résultats ou non - si avec simulation, faire multiples simulations en boucle Le procédé n‟est pas facile à comprendre ou à apprendre car il est sensé être utilisé par un chercheur habitué. Seul le chercheur peut choisir les bons paramètres pour faire une simulation qui a un sens et interpréter les résultats. La boucle: Avant cette étape, un compteur de ligne est initialisé. La procédure entre dans une boucle de lecture de lignes et exécutions. 2- lire et traduire une ligne La première chose lue et le premier caractère de la ligne, si c‟est 0 la ligne est ignorée directement et le compteur est incrémenté si c‟est 1 la ligne passe à la lecture. A la lecture d‟une ligne par un script, des variables sont affectés et des scripts sont exécutés pour commencer à remplir un fichier HSPICE. Ici le choix est pris de faire une configuration simple, une simulation ou multiples simulations. 3- Création ou modification d‟un fichier .sp Un fichier HSPICE est automatiquement créé lors le choix d‟un circuit. Le nom fichier est parmi les paramètres dans la ligne. Après traduire les demandes dans la ligne, les taches sont répartis entre plusieurs scripts, quelque scripts d‟écriture sont exécutés pour remplir le fichier HSPICE. Un des scripts écrit le descriptif du circuit général, un autre ajoute le BBICS, un autre applique les sources de tensions et les fautes, et un autre fait les mesures. Tout ces scripts utilisent la banque de données sur le framework, ils écrivent le contenu d‟un fichier HSPICE prédéfini qui -par exemple- mesure le courant dans une branche, dans le fichier HSPICE en question changent des noms de variables pour familiariser le code avec le nouveau fichier. 4- lancer l‟outil de simulation avec le fichier sp Cette étape consiste à lancer HSPICE avec le fichier HSPICE préparé. HSPICE est un logiciel qui présente un vaste liberté d‟utilisation, mais le prix à payer pour cette liberté est le temps d'exécution. La simulation d‟un système complexe comme les circuits CMOS est difficile à simuler et donc HSPICE prend du temps léger à le simuler. A cause de ça, lancer un fichier tab qui contient plusieurs exécutions peut prendre des heures. 9 L‟outil de simulation sauvegarde les résultats dans le fichier log au fur et à mesure de chaque simulation. 5- extraire tout les paramètres des résultats obtenus de la simulation Après que le fichier log soit prés, les variables de résultats sont créés. La majorité des variables existent pour toutes les simulations et quelques variables sont créés en fonction de la simulation. Lors des simulations multiples (où on utilise l‟option sweep) ou bien lors de l‟injection de plusieurs fautes simultanées, plusieurs tensions sont mesurées et donc un variable ne suffit pas, alors d‟autres variables sont créés avec le même préfixe et avec un suffixe numéroté. Ce genre de variable est créé et affecté utilisant une boucle. Car plusieurs simulation sont enchaînées, plusieurs variables sont réutilisés, c‟est pour ça que l‟affichage des résultats se fait au fur et à mesure des scénarios. 6- sauvegarde des valeurs en variables globaux Pour sauvegarder les résultats un script d‟affichage suit le script de création des variables. Ce script écrit tout les variables et leurs valeurs dans un fichier résultat log et les affiche à l‟écran. Les variables peuvent être les variables de données qui étaient créés lors de la lecture de la ligne, des variables créés pendant la simulation ou des variables créés à la fin comme résultat. La question qui se pose est “ pourquoi récupérer les valeurs d‟un fichier log pour les mettre dans un autre fichier log?” la réponse est que le premier fichier log contient beaucoup d‟informations dont l‟utilisateur n‟a pas besoin. La procédure de récupérer et écrire les variables est une procédure de filtrage d‟informations. Fin de boucle La condition de sortie de la boucle est l‟arrivée à la fin du tableau. La ligne lue n‟est pas la dernière du tableau, le compteur est incrémenté et la procédure va à l‟étape (2). 7- affichage des résultats Quand le tableau est fini, les simulations sont finies et le fichier log est rempli de résultats. Les résultats écrits sont affichées au fur et à mesure de la simulation et il ne reste que les graphes à afficher. Si le variables DO ANALYSIS est 1 pour au moins une ligne lue du tableau, des graphes seront affichés à la fin de la simulation. Les graphes sont dessinés à l‟aide du logiciel CosmosScope et 10 ça montre les mesures de tension/courant/puissance pour quelques composants en fonction du temps. Ce diagramme approche la procédure de simulation: 11 Exemple de simulation L‟exemple consiste à lancer le fichier tab déjà créé avec différents courant de faute injecté dans le circuit. Les graphes représentent les voltages aux bornes quelques composants du circuit. Les graphes en vert sont ceux de la simulation sans faute et ceux en rose sont ceux de la simulation avec faute, ils sont superposé dons on ne voit le rose que dans les cas de différence. Le deuxième représente la branche attaquée, le 5ème et 6ème représente les liaisons de la branche avec le BBICS, et le dernier représente le signal lancé par le BBICS qui indique les fautes. La première valeur à tester est 96 microampères Sur le graphe de la branche attaquée il y a un petit changement mais le BBICS détecte ce changement comme indique les graphes 5 et 6. La faute n‟est pas de l‟amplitude qui peux induire un problème donc le BBICS décide de ne rien signaler comme vu dans le dernier graphe. 12 La deuxième valeur à tester est 130 microampères Sur le graphe de la branche attaquée il y a un changement plus grand et le BBICS le détecte comme indique les graphes 5 et 6. La faute reste en dessous de l‟amplitude qui déclenche le signal donc le BBICS ne signal rien comme vu dans le dernier graphe. 13 La dernière valeur à tester est 230 microampères Sur le graphe de la branche attaquée il y a un changement aussi grand que l‟amplitude du voltage initial et le BBICS le détecte comme indique les graphes 5 et 6. L‟amplitude de la faute est supérieure à l‟amplitude seuil donc le BBICS signal une faute en changeant le voltage comme vu dans le dernier graphe. 14 Améliorations de la simulation La plate-forme de simulation est complexe et la simulation dure long temps (même des heures) mais la plate-forme est performante, elle donne les résultats attendus. Malgré la performance, la procédure est encore à améliorer. L'excès d‟utilisation de la mémoire et l‟affichage d‟informations non importante sont des problèmes qui sont traité dans cette partie. L‟affichage des variables: Pour créer le fichier log, un script du nom “create_log_file_with_hspice_simulation_results.scr” est exécuté. Le fichier utilise l‟instruction echo pour écrire les variables et leurs valeurs et il utilise la redirection avec “>” pour les écrire dans un fichier donné en paramètre. Parce que le script est lancé dans une boucle il commence avec une condition: - si l‟ensemble de simulations va commencer, il écrit une bordure (ligne pleine de „#‟) et il écrit le nom de la simulation, le fichier d‟entrée et la date. - si l‟ensemble de simulations vient de finir, il écrit le nom de la simulation, le fichier d‟entrée, la date et puis il écrit une bordure. - sinon il écrit tout les variables avec leurs valeurs en prenant une ligne pour chaque variable. Pour améliorer le script, l‟idée d‟afficher les variables dans une boucle d‟abord était mise en place. Les noms des variables sont dans un fichier accessible par le script. A chaque tour de la boucle le nom du variable est lu et sa valeurs est récupéré, si la valeur existe le variable est affiché avec la valeur, sinon le variable est affichée avec la valeur “novalue”. Quelques variables spéciaux sont à afficher avec un commentaire sauvegardé dans un autre variable. Pour les afficher proprement un “switch” est placé dans la boucle, il affiche les commentaires pour les bons variables et affiche simplement les autres variables. Quelque autres variables ont un préfixe fixe et un suffixe numéroté (comme variable_1 variable_2 ...). Pour mieux les afficher un cas est ajouté au “switch” pour ces variable qui affiche tout les variables numéroté étant donné leur préfixe. L‟utilisation de la nouvelle version du script demande créer un autre fichier “target_output_parameters” qui contient le nom des variables à écrire mais ça donne une bonne idée, c‟est de laisser l‟utilisateur choisir les variables à afficher. De cette façon l‟étude de la simulation sera plus facile car l‟utilisateur n‟est pas obligé à chercher les variables qu‟il veut parmi tous les autres variables. Quelque petits détails étaient ajoutés après pour rendre l‟affichage semblable à l‟affichage initial comme: sauter la ligne quand un ligne vide est rencontré dans “target_output_parameters”, laisser la marge avant d‟écrire le nom du variable et écrire “=” entre le nom du variable et sa valeur. 15 Création des variables: Le script qui crée les variables après une simulation est “define_variables_with_hspice_simulation_results.scr”. Ce script récupère les valeurs des variables du fichier design.log qui est le résultat de la simulation. Pour récupérer les valeurs le script utilise l‟instruction “awk”. Awk peut s‟appeler une instruction comme elle peut s‟appeler un langage de programmation. Cette instruction sert à lire un fichier ligne par ligne et effectuer des opérations d‟écriture ou de modification. Je vais expliquer l‟utilisation basic de l‟instruction: awk prend en paramètre un texte écrit entre „‟ et le nom d‟un fichier. le texte doit etre entre {} et c‟est un ensemble d‟instructions. “print” est l‟instruction de base dans awk. „{print}‟ écrit la ligne en cours pour chaque ligne donc “ awk „{print}‟ fichier” écrit le contenu du fichier. les champs dans awk sont les textes séparés par un espace dans une ligne: $1 est le premier champ, $2 est le deuxième … Ajouter -F= à awk change l‟indice des champs (les définitions des champs devient : les textes séparés par „=‟) Le script qui affecte les variables utilise cette instruction principalement et utilise aussi l‟instruction export. “Export” globalise le variable donné en paramètre, sans faire “export” la valeur du variable reste restreinte au contexte du script. Pour l‟utiliser dans le console et dans d‟autre script, export le défini dans l'environnement UNIX utilisé. Il y a trois genres de variables; ceux qui se trouvent dans design.log (les résultats),ceux qui sont à initialiser et les autres qui ont une valeur même avant la simulation. les premiers sont affectés utilisant l‟instruction awk comme suit: On peut imaginer que FALL_DELAY est enregistré dans design.log de cette façon: fall_delay=1.2000000 from 5.4 to ….. alors la première instruction awk récupère la partie 1.2000000 from 5.4 to … et la deuxième récupère 1.2000000 de la partie (2). L‟instruction devient Les deuxièmes sont initialisés avec des valeurs utilisant “export”. Et les troisièmes tombent dans la catégorie des variables de suffixe numéroté. Ces variables sont à la base un seul variable qui contient les valeurs de tous les variables du même préfixe en ordre séparés par des espaces. Pour récupérer ces variables, une boucle sur le nombre de variables du même préfixe (ce nombre est le nombre de simulation exécutées par une seule ligne du fichier tab). a chaque tour de la boucle, le script crée le variable avec le suffixe automatique et avec la valeur correspondante dans le variable original. En accord avec les améliorations du script de l‟affichage, ce script était modifié aussi. D‟abord pour affecter juste les variables demandé par l‟utilisateur une boucle était ajouté dans le script, la boucle lit par le tour tout les variables dans “target_output_parameters” et affecte chacun d‟eux automatiquement. Pour éviter les erreurs, les variables utilisés dans d‟autre scripts sont créés avant la boucle. Pour créer les variables de suffixe numéroté il suffit de mettre le préfixe dans target_output_parameters, car dans la boucle, si la valeur du variable n‟est pas trouvée dans design.log, 16 une vérification de la valeur du variable est faite. Si une ligne de valeurs est trouvée l‟affectation des variables de même préfixe se fait dans une autre boucle contenue dans la première. Après ces améliorations étaient testé et approuvé. Elles étaient intégrées dans le système et ça a donné de bons résultats. Ce Diagramme approche la procédure de simulation après les améliorations: 17 Conclusion: Le domaine de la recherche en électronique est très vaste, et la protection des circuits en est une branche importante. Mais faire la recherche comprend faire des simulations qui coutent beaucoup d‟argent et d‟effort. La meilleure alternative est la simulation avec des logiciels sur des ordinateurs. Une simulation peut être complexe et peut prendre du temps d‟exécution mais elle donne des résultats exactes et peut devenir la base de la recherche. Et c‟est le cas pour ce stage. Donc il maintenir la plate-forme de simulation et la développer est très important pour le chercheur. 18