Amélioration de plateforme de simulation de fautes transitoires en

publicité
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
Téléchargement