En 1996, Adrian Thompson de l'Université de Sussex a publié un remarquable article sur un circuit FPGA qui a évolué pour remplir certaines fonctions. À l'aide d'algorithmes évolutionnistes, chaque génération de configurations a été évaluée en fonction de sa pertinence en la testant de manière intrinsèque, c'est-à-dire à l'intérieur du FPGA XC6216 de Xilinx. Si la configuration se rapprochait de la fonction souhaitée, elle était autorisée à se propager. Des milliers de générations plus tard, la configuration a atteint son but : distinguer les signaux d'entrée de 1 kHz et de 10 kHz. Et il l'a fait sans disposer de sa propre horloge et sans utiliser de composants externes.
 
Circuit Shorts: Evolving Hardware

Etonnamment, certaines parties du circuit apparemment inutiles étaient essentielles à son bon fonctionnement. Sans ces éléments, l'aptitude du circuit se dégradait ; ils influençaient indirectement le circuit. Déplacer ce même circuit dans une autre partie du même FPGA pouvait dégrader son aptitude, ce qui nécessitait une évolution supplémentaire ; déplacer le circuit dans une autre instance du même FPGA, selon Thompson, risque fort d'entraîner également une dégradation plus ou moins importante. Toutefois, en tenant compte de certains paramètres techniques, ces effets pourraient permettre au circuit de fonctionner sur tous les dispositifs et dans toutes les conditions environnementales.
 
Cet article est accessible et reste inspirant, même 25 ans plus tard. Imaginez que le programme d'évaluation de l'aptitude soit intégré dans le FPGA et qu'il se programme lui-même en fonction de la fonction dont il a besoin, en partant d'un petit noyau de circuit. Le résultat pourrait alors être conçu pour ne fonctionner que sur ce seul FPGA, et à un seul endroit dans celui-ci. Des circuits non fongibles, quelqu’un en veut?
 
On travaille toujours sur le matériel évolutif, mais pour autant que je sache, on n'a pas encore trouvé d'application grand public. Cependant, les conclusions de Thompson sur l'unicité physique des instances d'un même FPGA sont également utilisées dans la création de fonctions physiques inclonables (PUF en anglais), où l'unicité de chaque puce, due à la variabilité de fabrication, est utilisée pour créer des identifiants spécifiques à la puce.
 
Ce travail me rappelle également que, dernièrement, les entreprises de semi-conducteurs ont révélé qu'elles utilisaient l'IA pour aider à organiser des puces afin de créer... des puces IA. Comme pour le circuit de Thompson, je me demande comment ces entreprises vont gérer l'incertitude inhérente au processus : un circuit qu'un être humain ne peut pas comprendre ou recréer entièrement est difficile, voire impossible à vérifier et à caractériser entièrement.
 
Je parie que le simple fait de répéter l'expérience de Thompson sur du matériel moderne serait un exploit vraiment intéressant. Nous pouvons le faire plus facilement maintenant que nous disposons d'outils de développement FPGA à code source ouvert ! Qui est prêt à relever le défi ?

Plus d'informations sur la conception de circuits, l'évolution du matériel, etc.

Vous êtes intéressé par la conception de circuits, les FPGA et les sujets liés ?
 
ElektorPCB4Makers.com