TICS: Présentation du projet
TICS (The Integrated Circuit Simulator) à pour but de fournir une suite d'outils ergonomiques et puissants pour apprendre, créer et simuler des circuits logiques.
Cette suite d'outils sera intégrée dans un jeu, avec une histoire et une progression linéaire pour apprendre la conception de micro circuits et le reverse engineering (rétro-ingénierie) de manière ludique.
Le jeu sera lui même associé à une bibliothèque collaborative de micro architectures, accessible à tous.

Simulation TICS d'un decodeur 7-Segment
Preservation et conservation
L'un des nombreux buts du projet TICS est de mettre au point un programme de preservation et de conservation d'architectures réelles et obsolètes de circuits intégrés (ou IC pour integrated circuits).
En effet, les architectures hardware évoluant très vite, de nombreux CPU et IC ne sont plus produits, deviennent difficiles à trouver, et disparaissent tout simplement. De nombreuses entreprises perdent les "plans" de ces fameuses puces et rares sont ceux qui vont les placer dans le domaine public.

Circuit TICS du Intel 4003
Pourtant, ces architectures ont à la fois une valeur historique (il s'agit la des débuts de l'informatique) mais aussi intellectuelle.
En effet, plus on remonte dans le passé, et moins les architectures comportent de composants. Cela les rend alors bien plus accessibles que ce soit au niveau de la comprehension, ou de la visualisation (en utilisant des outils de simulation).
Reverse engineering
Etant donné que dans la majorité des cas les plans ne sont plus accessibles, il faut alors les recréer directement à partir des puces.
C'est un travail complexe, fastidieux, qui demande un certain matériel, une certaine expertise et beaucoup de temps, d'ou l'importance d'un travail collaboratif.
Le jeu permettra aux personnes interessées par le projet d'apprendre tout ce qui est nécessaire pour participer au reverse engineering des circuits disponibles.
Analyse d'un IC
Pour reverse les plans d'une puce, il faut avoir accès à son DIE. Le DIE d'une puce est le petit block de silicium ou est gravé le circuit intégré. Il est généralement bien protégé dans un boitier noir, composé d'une matière plastique. Avec une photo assez précise (prise au microscope) d'un DIE, on peut recréer les plans d'origines utilisés pour la "gravure" de la puce (par photolithography), appellés layouts.

DIE du Intel 4004
Ce sont des images sur plusieurs couches, généralement:
- une couche de métal, conductrice, qui permet de relier les composants
- une ou deux couches de silicium polycristallin (appellée poly, pour polysilicon), dopé N ou P
- une couche "diffusion"
Cela n'est évidemment vrai que pour certaines technologies (comme PMOS ou CMOS). Des technologies récentes peuvent avoir beaucoup plus de couches.
Il est possible d'acceder au DIE d'une puce de deux façons.
Soit quelqu'un à déjà extrait le DIE d'une puce et a posté des photographies de bonne qualité sur un site dédié comme siliconpr0n.
Soit il faut extraire la puce soit même, ce qui demande un minimum de technique et de matériel pour accèder aux premières couches, voir un laboratoire complet pour acceder a des couches plus profondes.


Simulation TICS d'un circuit réel
Il faut bien entendu un microscope optique de bonne qualité pour pouvoir ensuite faire des photographies utilisables. Si on ne voit pas bien le circuit il est presque impossible de faire un reverse engineering fonctionnel.
Etapes du RE
Le reverse engineering consiste alors en plusieurs étapes:
- l'accès a des photographies du DIE de bonne qualité, il est important d'avoir une photographie de base et une photographie sans la couche métalique pour voir en dessous (sans cela le reverse peut devenir très complexe)
- retracer chaque couche du DIE pour obtenir les layouts d'origine
- faire une analyse automatique pour detecter les transistors et leur connexions, peut necessiter de modifier les layouts pour que l'analyse fonctione correctement
- définir les entrées sorties et les émuler pour faire éventuellement fonctionner le circuit
A partir de cette étape, on a normalement une simulation fonctionnelle. Si l'IC possède une documentation, on peut alors emuler les I/O (entrées/sorties) et utiliser la simulation comme un circuit fonctionnel.
Sinon il faudra comprendre le fonctionnement du circuit de manière empirique.


Simulation TICS transistor level
et logic gate level du même circuit
Challenges
Le reverse engineering d'une puce est une tache complexe, longue et fastidieuse à mettre en place seul. Le but de ce projet sera de fournir un maximum d'outils pour simplifier les opérations, et pousser les collaborations en présentant cela sous forme d'un jeu.

Simulation TICS du Intel 4004