Brevet FR3145819A1 — publié le 20240816

L’invention présente un procédé de programmation d’un circuit intégré comprenant un ou plusieurs microprocesseurs, au moins une mémoire vive, au moins une mémoire morte et au moins une mémoire réinscriptible non volatile, au moins un bus haute vitesse et un bus, des constituants fonctionnels, consistant à enregistrer dans ladite mémoire réinscriptible non volatile un ensemble de codes informatiques exécutables. Figure de l’abrégé : Figure 2 Circuit intégré avec système d'information intégré pour programmation interactive simplifiée par système multi-agents. Domaine de l’invention La présente invention concerne le domaine des circuits électroniques, et concerne plus particulièrement le contrôle des circuits intégrés à microprocesseur. Un microcontrôleur est un exemple de circuit intégré programmable comportant, outre un ou plusieurs microprocesseurs, des mémoires (flash, ROM, EEPROM, RAM, OTP, etc.), des périphériques d'interface, de traitement du signal, etc. Au démarrage, un microcontrôleur exécute un programme d'amorçage, constitué d'instructions de code aptes à être exécuté par un microprocesseur. Un tel programme d'amorçage est réalisé dans une mémoire non volatile, par exemple une mémoire ROM (acronyme anglais pour « Read Only Memory »), et permet de lancer par défaut l'exécution d'un programme général plus complexe, souvent appelé « application », adapté à remplir certaines tâches en exploitant les différentes fonctions du microcontrôleur. En particulier dans les systèmes embarqués, le microcontrôleur peut également être configuré pour exécuter un programme de chargement d'un programme spécifique. Le programme spécifique permet notamment de modifier le programme général en modifiant le contenu d'une mémoire non volatile dans laquelle est enregistré tout ou partie dudit programme général. Le mode dans lequel ledit microcontrôleur exécute le programme de chargement (connu sous le nom de « bootstrap loader » dans la littérature anglo-saxonne) est ci-après désigné par « mode bootstrap ». L'activation du mode bootstrap se fait par polarisation de ports (broches, pattes, « Strapping Pins en anglais ») du microcontrôleur, c'est-à-dire en appliquant des signaux sur lesdits ports, qui seront interprétés par le microcontrôleur comme une commande d'activation du mode bootstrap. Ces ports sont le plus souvent dédiés à l'activation de différents modes opératoires traditionnels. Le microcontrôleur est agencé pour exécuter un programme d'exploitation qui est contenu dans la mémoire morte ROM et qui comprend des parties fonctionnelles définissant chacune une fonction de l'unité de traitement. Les données utilisées par le microcontrôleur sont généralement contenues dans la mémoire morte programmable, le programme d'exploitation étant enregistré dans la mémoire morte ROM au moment de la fabrication du circuit intégré et n'est plus modifiable par la suite. L'amélioration du programme d'exploitation et, d'une manière générale, toute modification de celui-ci suppose donc la fabrication de nouveaux circuits intégrés. Etat de la technique On connaît dans l’état de la technique le brevet européen EP2252978 décrivant un circuit intégré comportant une unité de traitement associée à une mémoire morte ROM et à une mémoire morte programmable, la mémoire morte ROM contenant un programme d'exploitation qui est exécutable par l'unité de traitement et qui comporte des parties fonctionnelles définissant chacune une fonction de l'unité de traitement. Le programme comporte un point d'entrée/sortie pour chaque partie fonctionnelle et un identifiant est associé à chaque partie fonctionnelle. La mémoire morte programmable contient au moins une partie fonctionnelle substituable à une des parties fonctionnelles de la mémoire morte ROM et associée à un identifiant correspondant à celle de la partie fonctionnelle correspondante de la mémoire morte ROM. L'unité de traitement est agencée pour exécuter la partie fonctionnelle substituable à la place de la partie fonctionnelle correspondante de la mémoire morte ROM. Les points d'entrée/sortie du programme d'exploitation sont ainsi disposés entre chaque partie fonctionnelle de sorte que l'unité de traitement peut court-circuiter une partie fonctionnelle originelle du programme d'exploitation en allant exécuter à sa place une partie fonctionnelle substituable enregistrée dans la mémoire morte programmable. En outre la multiplicité des points d'entrée/sortie du programme d'exploitation permet de limiter la taille des morceaux de programme constituant les parties fonctionnelles substituables enregistrées dans la mémoire morte programmable à la taille des parties fonctionnelles à remplacer. L'encombrement de la mémoire morte programmable du fait des parties fonctionnelles substituables est de la sorte relativement faible. Ces parties fonctionnelles substituables peuvent être enregistrées dans la mémoire morte programmable non seulement par le fabricant du circuit intégré mais également par l'émetteur des cartes, ce qui en simplifie la gestion. Avantageusement, la partie fonctionnelle substituable est chargée dans une zone de début de la mémoire morte programmable. Ceci permet d'accélérer la recherche des parties fonctionnelles substituables de sorte que l'exécution du programme d'exploitation ne soit pas ralentie de manière préjudiciable. De préférence, la mémoire morte programmable comprend un indicateur de présence de partie fonctionnelle substituable. Ainsi, l'unité de traitement peut détecter rapidement s'il est nécessaire de lire la mémoire morte programmable à la recherche d'une partie fonctionnelle substituable. Inconvénients de l’art antérieur De façon générale, les circuits intégrés nécessitent le développement d’un programme informatique constitué de lignes de codes établies dans un langage spécifique reconnu par le processeur du circuit intégré. On connait depuis longtemps les langages de programmation de type « ASSEMBLEUR » dont les mnémoniques sont des symboles représentatifs du jeu d’instruction d’un processeur donné, afin d’en permettre la programmation. L’assembleur est qualifié « de langage bas niveau », car il est proche du langage de la machine concernée, qui est composé de mots binaires constitués d’une suite de 1 et de 0. Les lignes de codes peuvent alors être directement exécutées par le microcontrôleur, mais le développement d’un tel programme représente un travail très technique voire rebutant. On connait également des langages de programmation dit «de haut niveau d’abstraction » tels que le BASIC, le FROTRAN, le PASCAL, l’ANSI C, etc.. qui à la différence de l’assembleur, permettent de faire abstraction du jeux d’instruction d’un processeur, micro-processeur ou un microcontrôleur donné. Ces langages permettent à l’humain d’écrire des programmes à l’aide d’une syntaxe compréhensible par lui (souvent empruntée à l’anglais), pour traduire ensuite le programme écrit (le code source) en langage compréhensible par un type de machine donné (Un fichier binaire constitué d’une suite de 1 et de 0). L’opération de traduction du langage compréhensible par les humains vers le langage compréhensible par une machine s’appelle « la compilation ». Il existe des compilateurs permettant de traduire un même code source de programme haut niveau vers plusieurs « langage machine » en fonction du processeur ciblé (Cross compilateurs en anglais). On connait par ailleurs des bibliothèques logicielles dénommées « librairies », considérées comme des « briques de programme » capables d’accomplir toutes sorte d’actions génériques ou particulières pouvant s’avérer complexes, comme l’emploi de certains périphériques (Caméra, capteurs, etc..). Ainsi le concepteur utilise avantageusement « des composants logiciels » prêts à l’emploi pour maximiser son temps à se concentrer sur les spécificités de son code programme. La programmation assembleur dépend du choix préalable du processeur, tandis que la programmation en langage de haut niveau (tel que par ex. Basic, Pascal, C, C++…), dépend de l’existence du compilateur requis pour la cible visée. Lorsque la cible n’est pas un simple micro-processeur programmable séquentiellement, mais qu’elle est déjà configurée pour offrir des fonctionnalités évoluées, (tels que des circuits intégrés spécialisés dans des tâches complexes ou des microcontrôleurs « MCUs » en anglais), l’étude préalable de ce type de matériel est indispensable afin de pouvoir utiliser leurs fonctionnalités soit en programmant directement leurs registres, soit en le faisant au travers de librairies facilitant leurs mises en œuvre. Avant de pouvoir programmer un circuit intégré, une étape de prise en mains est indispensable : l’opérateur devra préalablement étudier un manuel technique (« Datasheet » ou « Technical Reference manual » en anglais) qui comporte plusieurs centaines - voire plusieurs milliers de pages qu’il faudra lire avec concentration. Cela peut prendre un temps considérable, particulièrement si l’opérateur n’a jamais travaillé avec le circuit intégré considéré au préalable. Après étude du manuel technique, l’opérateur sera en mesure d’identifier les ressources du circuit intégré qui répondent aux besoins de son projet. Ensuite l’opérateur devra identifier par lui-même les bons registres pour configurer les ressources désirées. Chacun des registres utiles devront être configurés selon le manuel technique, par l’écriture d’un programme d’exploitation du circuit intégré spécialisé. L’étape suivante consiste à installer et prendre en mains la suite logicielle et les outils nécessaires qui permettront la saisie du code programme, puis son télé-versement dans le circuit intégré, et enfin de tester et déboguer ses fonctionnalités. Cette chaîne d’outils (ou Toolchain en anglais) est souvent désignée pas le terme générique d’Environnement de développement intégré (IDE en anglais), où la chaîne d’outils est intégrée et accessible à partir d’une même interface utilisateur. Il apparait clairement que toutes ces étapes préalables à la programmation sont d’une complexité notoire, entraînant une perte de temps et d’énergie parfois considérable, selon la nature du projet et de la complexité du circuit intégré requis. (Comme à titre d’exemple avec le circuit intégré de type MCU « AM243x » de chez Texas Instruments, qui requiert l’étude d’un manuel technique de 9305 pages, afin d’apprendre à programmer les milliers de registres de cette puce). Toute cette complexité environnante représente à elle seule deux tiers de l’effort investi, alors que l’essentiel de la valeur ajoutée et du savoir-faire, réside dans la programmation, qui est la tâche principale. Dans l’idéal l’opérateur devrait donc pouvoir y consacrer la majeure partie de son temps et de son énergie, tout le reste étant secondaire, ne devrait l’occuper que pour une part négligeable. Pour ce faire il faudrait simplifier la prise en main, simplifier l’environnement de développement, et surtout repenser des méthodes de programmation qui n’ont jamais évoluées depuis plus de 50ans. Si l’on considère par exemple un environnement servant à expérimenter et programmer des circuits intégrés dédiés, il serait très avantageux de pouvoir disposer de leurs fonctions et paramètres de registres accessibles au sein d’un langage interactif de haut niveau d’abstraction et d’une intelligence embarquée visant à les mettre instantanément en œuvre , en évitant ainsi toute la complexité actuelle. In fine, même si un utilisateur connait la (ou les) fonctions d’un circuit intégré sans connaitre son mode d’emploi (manuel technique ou « datasheet » en anglais), il lui est jusqu’à présent impossible de le mettre en œuvre. L’utilisation d’un circuit intégré selon l’état de la technique nécessite donc des compétences techniques élevées au prix d’un investissement couteux en énergie et en temps, une documentation connexe indispensable pour exploiter les fonctionnalités du circuit intégré, et enfin une suite d’outils matériels et logiciels complexes (Tollchain) pour s’y connecter, l’expérimenter, le programmer, le déboguer pour obtenir à la finale un résultat exploitable, éventuellement Solution apportée par l’invention Afin de remédier à ces inconvénients, la présente invention concerne selon son acception la plus générale un Circuit intégré (IC en anglais) ou « Puce ». Ce Circuit Intégré qui est programmable, se distingue fondamentalement d’un circuit intégré connu par l’implantation au cœur même de son architecture : d’agents intelligents, d’un Système d’information, et d’un « Environnement de Programmation Interactif Assisté par agent» (EPIAA). Parmi les agents on distingue des agents esclaves intercalés entre les registres de la puce et le réseau du Système d’information en charge de renseigner un agent maître qui contrôle la puce par le biais d’instructions saisies par un opérateur humain utilisant ledit « EPIAA », ou bien d’instructions préenregistrées dans un fichier qui seront lues pour être exécutées, ou enfin en fonction de la polarisation des broches/pattes du circuit intégré. Certains agents comprennent un dispositif d’intelligence artificielle intégré. L’invention concerne en particulier un procédé de programmation d’un circuit intégré comprenant un ou plusieurs microprocesseurs, au moins une mémoire vive, au moins une mémoire morte et au moins une mémoire réinscriptible non volatile, au moins un BUS haute vitesse et un bus , des constituants fonctionnels consistant à enregistrer dans ladite mémoire réinscriptible non volatile un ensemble de codes informatiques exécutables Caractérisé en ce qu’il comporte : Une étape initiale, activée par la mise sous tension dudit circuit intégré, d’interrogation de l’ensemble desdites ressources matérielles et logicielles dudit circuit intégré, et d’enregistrement dans une base données locale, pour chacune desdites ressources au moins un descripteur numérique de chacune desdites ressources une liste de commandes de programmation simplifiées pour chacune desdites ressources Une étape de sélection entre un mode d’exécution ou de programmation, Dans le cas de sélection du mode de programmation, La transmission à un terminal connecté d’une application web exécutable par le navigateur dudit terminal, ladite application web contenant une documentation technique et les spécifications dudit circuit intégré, une suite logicielle de programmation spécifique dudit circuit intégré la transmission par ledit terminal connecté de ladite liste de commandes de programmation simplifiées pour chacune desdites ressources Dans le cas de sélection du mode d’exécution le chargement d’un fichier de configuration système enregistré dans la mémoire non volatile constitué par une liste de commandes interprétables, la présence de chacune desdites commandes dans ladite base de données locale étant vérifiée pour être compilées et exécutées à la volée. Selon une variante ladite étape initiale comporte en outre la lecture de l’état de broches du circuit intégré pour déterminer un mode « maître » ou un mode « esclave », et, dans le cas du mode maître, la collecte du contenu des bases de données locales des circuits intégrés « esclaves » interconnectés. L’invention concerne aussi un circuit intégré comprenant un ou plusieurs microprocesseurs , au moins une mémoire vive , au moins une mémoire morte et au moins une mémoire réinscriptible non volatile , au moins un bus haute vitesse et un bus , des constituants fonctionnels caractérisé en ce qu’il comporte en outre : Une pluralité d’agents constitués chacun par un calculateur comprenant chacun un processeur , un microprocesseur de type accélérateur d'intelligence artificielle , une mémoire morte , une mémoire non volatile , une mémoire vive , un routeur et une pluralité d’interfaces d’échanges de données Un bus pour l’échange de données entre lesdits agents L’un desdits agents étant un agent-R de renseignement comprenant : une interface pour l’accès direct à ladite mémoire vive et une interface pour l’échange de données avec un bus D’autres desdits agents étant des agents-S de simplification comprenant une interface pour l’échange de données via le bus avec ladite pluralité d’agents une interface pour l’échange de données avec chacun desdits constituants fonctionnels et pour l’échange et pour l’échange de données avec une application logicielle L’un desdits agents étant un agent-M Maître une interface pour l’échange de données via le bus avec ladite pluralité d’agents une interface pour l’échange de données avec un terminal périphérique connecté et pour l’accès aux programmes et aux données enregistrés dans ladite mémoire réinscriptible non volatile. Avantageusement, le circuit intégré comporte en outre des broches de configuration pour commander l’état dudit agent agent-R de renseignement par l’application d’une tension. De préférence il comprend en outre une mémoire non-volatile contenant : Un premier microcode dont l’exécution commande la recherche, la collecte, le traitement et le stockage des données relatives à chaque sous-ensemble du circuit intégré ledit premier microcode générant automatiquement des requêtes acheminées aux constituants internes par au moins un bus de configuration bidirectionnel , ces requêtes déclenchant des réponses par les constituants internes et périphériques disponibles et opérationnels dans le circuit intégré, lesdites réponses étant traitées pour construire une base de données identifiant lesdites ressources internes et les périphériques et répertoriant leurs commandes respectives, ladite base de données l’exécution dudit premier microcode étant commandé lors du démarrage (BIOS) en inscrivant dans un registre en mémoire vive de démarrage, un code défini par la polarité d’une ou de plusieurs broches externes dédiées à la configuration initiale (Boot). Selon une variante, ladite mémoire vive de démarrage de l’agent-R comporte en outre un registre dont l’état indique si le mode d’exécution ou le mode de programmation est sélectionné, et en outre un registre dont l’état indique si le MCU est désigné maitre ou esclave, en fonction de la polarité d’une ou de plusieurs broches externes dédiées à la configuration initiale (Boot). Avantageusement, ladite mémoire vive de démarrage comporte en outre un registre dont l’état indique si le MCU est désigné maitre ou esclave, en fonction de la polarité d’une ou de plusieurs broches externes dédiées à la configuration initiale (Boot). Selon une réalisation particulière, lesdits sous-ensembles du circuit intégré sont associés chacun à un agent autonome comprenant des mémoires ROM, FLASH et RAM, un microprocesseur, un microprocesseur de type accélérateur d'intelligence artificielle, une interface d’entrées/sorties, un micro-interpréteur de langage naturel, et une table contenant les attributs et les fonctionnalités du sous-ensemble associé audit agent. De préférence, lesdits sous-ensembles du circuit intégré sont associés à un agent autonome comprenant des mémoires ROM, FLASH et RAM, microprocesseur, et une interface d’entrée/sortie un micro-interpréteur de langage naturel, une table contenant les attributs et les fonctionnalités du sous-ensemble. Selon une variante ladite mémoire non-volatile comprend en outre un deuxième microcode commandant l’interrogation des bus de communication pour interroger la présence d’un ou de plusieurs circuits intégrés additionnels esclaves, et le cas échéant, la recherche et l’importation des tables des commandes de chacun desdits circuit intégré esclaves, et l’enregistrement dans une seconde table de commandes, ledit deuxième microcode interpréteur de commandes assurant, en réponse à une requête en langage naturel transmise, soit par ledit terminal distant, soit par la lecture d’un fichier stocké en mémoire, l’interrogation de ladite table de commandes locale et à défaut l’interrogation de ladite seconde table de commandes, pour assurer la configuration des registres associés à la fonction correspondant à ladite commande interprétée, en fonction le cas échéant, des arguments de ladite requête. Selon une autre variante, ladite mémoire non-volatile comprend en outre un deuxième microcode commandant l’interrogation des bus de communication pour interroger la présence d’un ou de plusieurs circuits intégrés additionnels esclaves, et le cas échéant, la recherche et l’importation des tables des commandes de chacun desdits circuit intégré esclaves, et l’enregistrement dans une seconde table de commandes, ledit deuxième microcode interpréteur de commandes assurant, en réponse à une requête en langage naturel transmise par ledit terminal distant, l’interrogation de ladite table de commandes locale et à défaut l’interrogation de ladite seconde table de commandes, pour assurer la configuration des registres associés à la fonction correspondant à ladite commande interprétée, en fonction, le cas échéant, des arguments de ladite requête. Avantageusement, ladite base de données comprend des informations codées en langage naturel et communique avec ladite interface de communication d’une part et un interpréteur en code binaire exécutant les actions ordonnées par les instructions dudit langage. Avantageusement ladite base de données comprend un système d’Information associé à un agent de renseignement , un agent de gestion de sous-réseau comprenant un réseau de communication par paquets reliant une pluralité d’agents intelligents , interfacés à leurs sous-ensembles, un agent maître pour configurer le circuit intégré et son programme applicatif, un réseau multi couche reconfigurable , contrôlé par agent et un Environnement de Programmation Interactif Assistée par l’agent maître. Optionnellement, ladite base de données comprend un système d’Information associé à un agent de renseignement, un réseau de communication par paquets reliant une pluralité d’agents intelligents, chacun interfacés à leurs sous-ensembles, un agent maître pour configurer le circuit intégré et son programme applicatif, un réseau multi couche reconfigurable, contrôlé par agent et un environnement de programmation interactif assistée par l’agent maître, EPIAA. Pour alléger les descriptions qui vont suivre en évitant la redondance de précisions, le Glossaire ci-après constitue une référence pour les termes attribués aux dispositifs fondamentaux qui constituent la présente invention : GLOSSAIRE 1- Système sur Puce ou « S.O.C » et microcontrôleur ou « MCU » Un système sur puce ou S.O.C (de l’anglais System On Chip) est un circuit intégré (IC) dans lequel sont intégrés tous les composants d’un système électronique complexe VLSI (de l’anglais Very Large Scale Integration). Typiquement, ce circuit intégré comprend à titre d’exemple non limitatif, des fonctions digitales, des fonctions analogiques, des fonctions de signal mixte et des fonctions radio fréquence, rassemblées par photolithographie sur un même substrat (par ex. de silicium) pour former un « circuit intégré monolithique ». Alternativement, ces fonctions peuvent se présenter sous forme de matrices (en anglais « Dies ») distinctes qui seront collés et reliées sur un substrat formant « un circuit intégré hybride». Typiquement, le circuit intégré comprend du hardware (par exemple un microprocesseur, un microcontrôleur, des circuits logique, des mémoires…), mais aussi le logiciel pour contrôler ses fonctionnalités et mettre en œuvre une application sur son hardware. Dans la terminologie moderne, un microcontrôleur (ou MCU de l’anglais pour Micro Controller Unit) est similaire mais il est moins sophistiqué qu’un SOC qui peut intégrer des périphériques plus avancés, tels qu’un processeur graphique (GPU), une interface radio WIFI, une interface Ethernet, etc… Toutefois les systèmes sur puce et microcontrôleur sont destinés aux applications embarquées, à la différence des microprocesseurs d’ordinateurs ou chaque fonctionnalité se trouve dans des puces distinctes. 2 - Système d’information (S.I) Selon l’invention «le système d’information» est un dispositif indépendant composé d’un processeur (CPU) exécutant un programme autonome enregistré dans une mémoire dédiée, qui collecte, stocke, structure, modélise, gère, manipule, analyse, transporte, échange et diffuse de l’information. De tels systèmes d’information opèrent fréquemment au sein des entreprises. Ils sont habituellement décrits comme « un ensemble de ressources et de dispositifs informatique » destinés à effectuer l’ensemble des tâches énumérées ci-dessus. Pour les besoins de la présente invention, un tel système d’information est miniaturisé à l’extrême pour pouvoir être implanté au sein d’un circuit intégré, afin de reproduire des tâches identiques à celles énumérées ci-dessus, pour contribuer à simplifier et accélérer la programmation dudit circuit intégré par l’opérateur humain, selon l’invention. 3 - agent et agent Intelligent Selon l’invention «un agent » comprend un calculateur constitué de mémoires rom, ram, flash, d’un CPU et d’un NPU dédiés. Ce calculateur exécute un code de programme (logiciel) indépendant, actif en tâches de fond, capable d’opérations autonomes, sachant effectuer des opérations complexes pour le compte d’une autorité (pouvant être un autre logiciel, un fichier informatique contenant des commandes préenregistrées, la polarisation des broches/pattes du circuit intégré, ou un opérateur humain), ceci par le biais d’une communication interactive avec son environnement, via un langage commun ACL (de l’anglais agent Communication Language). Pour dialoguer via un langage l’agent dispose « d’un dispositif interpréteur », composé d’un analyseur lexical, d’un analyseur syntaxique (Parser en anglais), d’un dictionnaire de mots clefs, d’un traducteur, d’un interprète et d’un compilateur à la volée. (Une analyse lexicale opère sur les caractères individuels de l'entrée, tandis qu'une analyse syntaxique opère sur le flux de lexèmes générés par l'analyse lexicale.) Selon un procédé propre à l’invention, ledit compilateur génère un code binaire destiné à la programmation des registres d’un microcircuit de périphérique de microprocesseur, alors que le code binaire habituellement généré est du langage machine destiné au microprocesseur lui-même. Selon l’invention cette différence distingue fondamentalement l’interpréteur d’un agent – d’un interpréteur embarqué dans un microcontrôleur (comme le MCS-51 Basic dans l’INTEL 8051, ou aujourd’hui Micro-Phython dans un M4F de chez ARM). De surcroît, un « agent intelligent » perçoit le contexte dans lequel il opère, prend des mesures de façon autonome pour atteindre des objectifs tout en intégrant des contraintes, et peut améliorer ses performances grâce à l’apprentissage et utiliser des connaissances et des modèles. De tels agents et agents intelligents, opèrent habituellement dans le contexte de « WEB Applications » mises en réseau, ou de dispositifs d’intelligence artificielle pour ordinateurs. Pour les besoins de la présente invention, de tels agents et leurs ressources matérielles sont miniaturisés afin de pouvoir être intégrés à l’architecture d’un circuit intégré microscopique, afin de reproduire les tâches identiques à celles décrites ci-dessus, pour contribuer à simplifier et accélérer la programmation dudit circuit intégré par l’opérateur humain, selon l’invention. La présente invention a défini au moins trois catégories d’agents intelligents : l’agent de renseignement opérant le Système d’information, ou « agent-R » l’agent de Gestion du Système sur Puce (SOC), ou « agent maître », ou « agent-M » Les agents de Simplification, ou en abrégé « agent-S » 4 - Système Multi-agent en réseau, ou «SMA » Selon l’invention « un Système Multi agent » désigne un ensemble organisé d’agents tels que définis au paragraphe précédent. Il peut y a voir une ou plusieurs organisations qui structurent les règles des tâches collectives entre agents. Un agent peut appartenir à plusieurs organisations. Les agents sont des périphériques d’un réseau intégré à la puce (Network On Chip en anglais) qui leur est dédié. Ils communiquent entre eux par paquets, à l’aide d’un langage commun (ACL), soit en partageant de l’information via l’environnement (communication indirecte), soit par échange de messages (Communication directe). L’agent peut participer à un dialogue en étant passif ou actif. Un « agent passif » doit accepter les questions des autres agents et y répondre, tandis qu’un « agent actif » doit proposer et envoyer des interrogations. Dans un dialogue les agents alternent des rôles actifs et passifs, et leurs échanges de messages respectent des protocoles bien précis, à savoir, (1) Protocole de coordination, (2) Protocole de coopération, (3) Protocole de négociation. De tels « SMA » sont habituellement mis en œuvre dans des infrastructures de communication en réseaux, à titre d’exemple dans des réseaux sans fil locaux, métropolitains ou étendus. Pour les besoins de la présente invention, un tel SMA en réseau est miniaturisé pour pouvoir être intégrés à l’architecture d’un circuit intégré microscopique, afin de reproduire les processus conformes à ceux décrits ci-dessus, pour contribuer à simplifier et accélérer la programmation dudit circuit intégré par l’opérateur humain, selon l’invention. 5 - Environnement de Programmation Inter active Assistée (EPIA ) Selon l’invention « Environnement de Programmation Interactive Assistée» ou « EPIA » désigne un ensemble de ressources et de logiciels, utilisés simultanément, pour la prise en main, la programmation, le débogage et la mise en service du circuit intégré une fois terminé. Les ressources de l’EPIA se composent de documentations techniques. La suite logicielle est composée d’une Console, d’un éditeur multi-langage de programmation, d’un interpréteur de scripts et de son compilateur à la volée, d’un compilateur de code source, d’une sonde JTAG et d’un programmateur de mémoires. Selon l’invention, des agents intelligents tels que décris précédemment, assistent le fonctionnement de ladite suite logicielle, pour guider l’opérateur dans la saisie de ses instructions, mais peuvent aussi pour lui poser des questions en langage humain pour l’aider dans ses choix. Le but étant de simplifier et d’accélérer sa tâche de programmation dudit circuit intégré. Un tel environnement de programmation est habituellement désigné « EDI » pour Environnement de Développement Intégré (ou son équivalent anglais IDE). Un IDE est habituellement destiné à être installé sur des ordinateurs hôtes, qualifiés dans ce contexte de « Stations de Travail » par les développeurs. La station de travail hébergeant la suite logicielle sera ensuite connectée par câble ou par radio à la carte hébergeant le circuit intégré destiné être programmé par l’opérateur. Pour les besoins de la présente invention, un tel IDE est miniaturisé pour être intégré à l’architecture d’un circuit intégré microscopique, afin d’offrir les ressources et fonctionnalités identiques à celles décrites ci-dessus, pour contribuer à simplifier et accélérer la programmation dudit circuit intégré par l’opérateur humain, selon l’invention. 6 - Sous-ensembles du circuit intégré ou « constituant » Selon l’invention « sous-ensembles du circuit intégré » désigne des microcircuits (par exemple sous forme de Dies bondés sur le substrat silicium d’un « SOC Hybride », ou gravés sur un même substrat de silicium dans un « SOC Monolithique ») qui sont des constituants de l’architecture interne, tels que par exemple ses périphériques, ses interfaces, ses mémoires, ses dispositifs de mesure, ses microprocesseurs… Les codes programmes associés à ces composants sont également considérés comme « des sous-ensembles logiciels » du circuit intégré. 7 - Réseau multi couche reconfigurable Selon l’invention, « Réseau multi couche commutable » désigne au moins 2 réseaux de transmission de données sérielles qui sont superposés et reliés aux mêmes périphériques. Chaque réseau possède une couche logicielle (Session, transport) et une couche matérielle (paquet, trame, réseau). Chaque couche peut interconnecter certains périphériques, tandis qu’elle peut en ignorer d’autres. Les couches peuvent être interconnectées pour échanger des données, ou distinctes pour isoler des données. Selon l’invention, les différentes configurations sont opérées par un agent-S. Les descriptions qui vont suivre se réfèrent au Glossaire ci-dessus pour tous les termes concernés. Description détaillée d’un exemple non limitatif de réalisation La présente invention sera mieux comprise à la lecture de la description qui suit, concernant un exemple non limitatif de réalisation illustré par les dessins annexés où : La représente une vue schématique de l’architecture matérielle du circuit intégré (950) selon un exemple de l’invention La représente une vue schématique de l’architecture matérielle du circuit intégré (1000) selon une version plus évoluée de l’invention La représente une vue schématique de l’architecture matérielle de l’agent maître (500), qualifiée « d’agent de gestion du système » La représente une vue schématique de l’architecture matérielle d’un agent de simplification La représente une vue schématique de l’architecture matérielle de l’agent de renseignement (250) La représente une vue schématique de l’architecture fonctionnelle du circuit intégré (1000) selon l’invention La représente une vue schématique spécifique à l’invention, du boîtier (1100) du circuit intégré (1000) selon un exemple de réalisation. Architecture matérielle L’invention concerne un circuit intégré constitué d’une unité de microcontrôleur (MCU) ou d’un système sur une puce (SOC) (1000) dédié à une fonction, par exemple reconnaissance faciale, traitement de flux audio, traitement de flux vidéo, traitement de l’information, etc… et comprenant un ou plusieurs microprocesseurs (100), de la mémoire vive (230) et de la mémoire réinscriptible non-volatile (220), et une pluralité de périphériques (550) (ex. d’interface, de génération et traitement du signal, etc), ainsi qu’au moins une interface de communication (340) (Ethernet, USB, WIFI,…), et au moins un bus de configuration (580), La représente une vue schématique de l’architecture matérielle d’un circuit intégré de type système sur puce (« SOC ») pour la mise en œuvre de l’invention. Les circuits intégrés complexes (950) de type MCU ou S.O.C intègrent de façon générale : un ou plusieurs microprocesseurs (100) comme ceux par exemple proposés par la société INTEL™ ou ARM ™ également désigné par l’acronyme anglais CPU (« Central Processing Unit ») de la mémoire morte ROM (200) non volatile non réinscriptible pour l’enregistrement et la lecture du microcode d’amorçage du microprocesseur (100) ; de la mémoire OTP inscriptible une seule fois (210) ; de la mémoire réinscriptible non volatile flash (220) pour stocker les données qui doivent rester disponibles même en cas coupure de l’alimentation du circuit intégré ; et de la mémoire vive RAM (230) pour le stockage des variables de calcul et des données à traiter par le microprocesseur (100). des composants périphériques faisant partie intégrante du circuit intégré qui sont interconnectés par des bus (10, 20), comme des interfaces entrée/sortie de communication (560) (par exemple GPIO, bus série, bus Parallèle 8bit, 16bits...), ainsi que des périphériques tels que UART, I2C, SPI, USB, mais aussi des Timers/Compteurs, un contrôleur (PWM) ainsi que des périphériques analogiques (non synthétisable) tels que convertisseur analogique-numérique ADC, convertisseur numérique-analogique DAC constituant, en association avec au moins un microprocesseur, une unité à Microcontrôleur MCU ou SOC, qui peut de surcroît intégrer un GPU (120), voir un Crypto-processeur, un décodeur mpeg2, des interfaces pour mémoires additionnelles (FLASH ou SDRAM), une interface PCIe ou Ethernet, etc… un générateur d'horloge et une fonction de reset figurent souvent parmi les périphériques présents au sein d’un MCU ou SOC. Il est à noter que ce circuit n’est pas nécessairement intégré dans le circuit intégré, mais peut être externe, sous forme d’un composant additionnel délivrant un signal sur l’une des broches d’entrée du circuit d’intégré, ou bien sous forme d’un quartz connecté aux broches reliés à un oscillateur interne. La illustre l’architecture matérielle du circuit intégré qui présente 5 adjonctions par rapport à l’architecture illustrée par la , à savoir : Un Système d’Information (260) et son agent de renseignement intégré (250) Un SMA comprenant un réseau de communication par paquets (580) reliant une pluralité d’agents intelligents (250, 421, 500, 570…574), interfacés à leurs sous-ensembles Un agent maître (500) pour configurer le circuit intégré et son programme applicatif Un réseau multi couche reconfigurable (590), contrôlé par agent (573) Un Environnement de Programmation Interactif Assistée (800) par l’agent maître (500) Ce circuit intégré (1000) démarre selon un processus radicalement différent d’un circuit intégré connu (950). Au lieu d’exécuter de façon habituelle un microcode d’initialisation en ROM (200) pour lancer ensuite un programme applicatif enregistré par exemple en Flash (220) , le circuit intégré (1000) commence par exécuter selon l’invention, le microcode gravé dans une mémoire spécifique (260), afin d’activer l’agent de renseignement (250) préalablement à toute autre action dans le SOC. En premier lieu, L’agent-R (250) interroge via le réseau du SMA (580) tous les agents de simplification (421, 570 à 574), afin de construire dynamiquement en RAM (230) une base de données de référence (480) destinée à l’agent-M (500). Cette base de données indexe l’ensemble des capacités et des paramètres du circuit intégré (1000). L’agent-R (250) va ensuite invoquer l’agent-S (573) pour rechercher la présence d’éventuels circuits intégrés du même type configurés en mode « Esclave », et connectés audit circuit intégré (1000) qui dans cette hypothèse sera configuré en mode « maître ». Le cas échéant ladite base de données (480) est enrichie de l’ensemble des capacités et des paramètres de chaque circuit intégré « esclave » détecté (450). Cette base de données constitue le point d’entrée de toutes les ressources du circuit intégré (1000) qui sont contrôlées par l’agent-M (500) afin qu’il remplisse sa fonction de « gestion globale du S.O.C », mais aussi pour qu’il contrôle le cas échéant, d’autres S.O.C de même type interconnectés. L’agent-R (250) informe ensuite l’agent de gestion du Système (500) que la base de données est entièrement renseignée pour que ce dernier initialise le SOC avec le fichier de configuration (600). Si le mode « autorun » du SOC (1000) est activé, l’agent-M (500) transmet le fichier (700) à l’agent-S (421) de l’application (420), pour la configurer et lancer son exécution à la volée. Si le SOC est en cours de développement, l’agent-M (500) attend de recevoir des instructions de la part de l’opérateur humain (le Coder ou Développeur) via un terminal (900) connecté (330) à l’EPIA (800). Architecture matérielle composant l’ agent ma ître (500). La détaille l’architecture matérielle qui compose l’agent maître (500), qui peut être indifféremment qualifié « d’agent de gestion du système ». Selon l’invention tout agent est constitué sur le plan matériel de plusieurs composants interconnectés, dont certains sont communs à tous les types d’agents à savoir : des mémoires dédiées et plus précisément une mémoire morte (260, 261, 262) qui contient le programme constituant de chaque agent ; Une mémoire non volatile Flash (270) qui contient leur base de donnée intégrant parfois un modèle d’intelligence artificielle prédéfini ; Une mémoire RAM (280) pour stocker les données utilisées par son CPU (150) et son NPU (155) (NPU= Neural Processing Unit en anglais). En particulier, L’agent-M (500) possède une interface (355) dotée de trois ports de communication bidirectionnels. Le port (340) reçoit des intructions - soit d’un Opérateur via la console d’un terminal (830), - soit depuis un fichier (600 ou 700). Le port (370) est relié au réseau dédié du SMA (580) afin d’adresser via le routeur (390) les agents interprètes de simplification (570…574, 421) des sous-ensembles du circuit intégré, - ou bien l’agent-R (250) opérant le Système d’Information. Via le port (360) , (DMA= Direct Memory Access en anglais), l’agent accède directement à la mémoire centrale du SOC (230), notament pour exploiter la basse de données (480). Architecture matérielle composant un agent de simplification . La détaille l’architecture matérielle d’un agent de simplification (570…574, 421) , et la description qui suit décrit le rôle particulier de chacun de ses composants. En particulier un agent-S (570…574, 420) possède une interface (355) dotée de deux ports de communication bidirectionnels. Le port (370) est relié au réseau dédié du SMA (580) afin de dialoguer avec les autres agents du système qui sont adressés via le routeur (390). Le port (380) est relié aux registres d’un sous-ensemble du SOC (530,…560), avec lequel l’agent-S est intercalé pour remplir sa fonction d’interprète afin de simplifier la configuration des registres dudit sous-ensemble, selon de l’invention. La mémoire non volatile Flash (270) stocke la table de corespondance utilisée par l’agent-S pour établir le lien entre « la programmation complexe de nombreux registres à effectuer » et la réception « d’une simple instruction à traiter », selon l’un des mécanisme majeur de l’invention. La mémoire non volatile Flash (270) contient de surcroît le modèle d’intelligence artificielle prédéfini de l’agent-S. La mémoire morte (262) contient le programme constituant de l’agent-S. Le port (380) de l’agent-S est en outre interfacé aux resgistres d’un constituant logiciel, l’application (420) vias son API, qui se distingue par nature des constituants matériels (410). Architecture matérielle composant l’agent de renseignement . La détaille l’architecture matérielle de l’agent de renseignement (250), et la description qui suit décrit le rôle particulier de chacun de ses composants. En particulier, l ’agent-R (250) possède une interface (355) dotée de deux ports de communication bidirectionnels. Le port (370) est relié au réseau dédié du SMA (580) afin de dialoguer avec les autres agents du système, qui sont adressés via le routeur (390). Via le port (360) , (DMA= Direct Memory Access en anglais), l’agent-R accède directement à la mémoire centrale du SOC (230), notament pour y renseigner la basse de données (480) qu’il est chargé de constituer, selon l’invention. La mémoire non volatile Flash (270) stocke un répertoire contenant toutes les ressources de la puce, découvertes lors de son premier démarrage. Si la découverte des ressources à chaque démarrage du SOC par l’agent-R est désactivée, ce dernier utilise ce répertoire ou « base de donnée », pour efffecter sa tâche de renseignement. L’activation ou la désactivation de la découverte des ressources du SOC à chaque démarrage s’opère en appliquant une polarisation de ports (broches, pattes, « Strapping Pins en anglais ») du SOC, lesdites broches (300) seront lues par l’agent-R (250) à la mise sous tension, comme décrit plus en détails ci-après. Architecture Logicielle La présente l’Architecture fonctionnelle du circuit intégré selon l’invention, qui sera mieux comprise grâce à la description ci-après. Description pas à pas de l’initialisation du ci rcuit intégré , depuis sa mise sous tension jusqu‘à sa prise de fonction , selon l’invention. Au démarrage du circuit intégré (1000) et avant toute autre action, l’agent de renseignement (250) est activé par l’exécution automatique de son code programme résident en mémoire dédiée (260), ce qui a pour effet de lancer les tâches du Système d’Information (400, 430, 440, 460, 470, 480). La première action (260-1) de l’agent-R (250) consiste à lire l’état des broches externes de configuration (300) (Strapping Pins en anglais) pour savoir, (1) si la découverte des ressources du SOC est activée, ou si il doit lire les ressources depuis sa base de donnée stockée en mémoire (270) ; (2) configurer le port externe du bus de données (310), le port externe du réseau SMA (580), les interfaces (320) et (340), et l’interpréteur principal (500), afin de placer le circuit intégré dans un mode opératoire désigné « maître » ou « Esclave ». Le circuit intégré « maître » initiera les échanges et prendra le contrôle de circuits intégrés « Esclaves » (450) qui pourraient être éventuellement reliés à son interface (320). Interroga tion des Constitu ant internes du circuit intégré, et collecte de leurs fonctions La deuxième action (260-2) de l’agent-R (250) consiste à énumérer (400) les ressources des Constituants internes (410) du circuit intégré, qui sont regroupés en quatre catégories (liste non exhaustive donnée à titre d’exemple) : Indicateurs et mesures (530) des constituants internes du circuit intégré, Configurateur (540) du (des) CPU modulaire(s) personnalisable(s) (100), Périphériques intégrés au circuit intégré (550), Configuration des BUS et interfaces réseau (590), ainsi que des Entrées/Sorties (560), Pour procéder à l’énumération, l’agent-R (250) via son routeur (390), lance sur le réseau du SMA (580) des requêtes constituées par une commande en langage naturel comme par ex. «constituants.locaux.détection (adresse)» destinée à scanner l’ensemble des adresses du réseau SMA pour découvrir les sous-ensembles fonctionnels du circuit intégré, tels que repérés en 530, 540, 550, 560 dans l’exemple proposé par la . Chaque agent-S (570…573) intercalé entre le réseau SMA (580) et le sous-ensemble qu’il gère, va répondre par un message contenant l’identité des constituant opérationnels. L’agent-R enregistre les réponses dans la table d’un dictionnaire local (430), présent en RAM (230). Il adresse ensuite aux agents-S (570…573) des constituants ayant répondu, une seconde requête pour collecter la liste de fonctions de chaque constituant opérationnel (530, 540, 550, 560). Ces groupes de fonctions adressées à l’agent-R par les agents-S sont des commandes de programmation simplifiées, listées en langage naturel humain. A titre d’exemple, l’agent-S (571) d’une puce de traitement du son, a stocké dans sa mémoire flash (270) la liste de fonctions suivante en langage naturel, qu’il transmet ainsi à l’agent-R opérant le système d’information : audio.flux.play (On/Off) audio.volume.ajuster (0, 100) audio.aigue.ajuster (0, 100) audio.grave.ajuster (0, 100) audio.filtre.activer (0, 10) Par pure convention et à titre d’exemple non limitatif, ces commandes de programmation se présentent sous la forme d’une suite de mots désignant (1) l’objet, (2) sa (ses) capacité(s), (3) l’action à accomplir, (4) éventuellement des paramètres à transmettre ou à recevoir. Derrière chacune de ces commandes fort simple en apparence, se cache en réalité une grande complexité dont l’agent-S va faire abstraction du point de vue de l’opérateur de saisie (ou développeur). Pour chacune de ces commandes reçues par l’agent-S, une pluralité d’opérations dans les registres de ladite puce audio va être effectuée par ledit agent-S, substituant ainsi à l’opérateur humain une tâche jusqu’à présent très complexe, par une tâche simple et rapide, qui déclenche instantanément le résultat souhaité. Ces listes de fonctions transmises par l’agent-S à l’agent-R (250) sont ensuite triées, structurées, ordonnées puis stockées en RAM (230) par ledit agent-R, pour former un dictionnaire qui répertorie pour chaque constituant opérationnel, sa liste exhaustive de fonctions simplifiées mises à disposition de l’Opérateur humain en langage naturel (par opposition aux langages symboliques) Dans cet exemple il apparait clairement que le simple fait de porter à la connaissance de l’opérateur l’existence de la commande « audio.flux.play (On/Off), est suffisant pour mettre en œuvre fonction audio du SOC sans autre connaissance préalable. L’opérateur n’a plus besoin d’étudier la documentation de millier de pages de la puce audio pour y rechercher les registres impliqués dans cette action, et encore moins les emplacements des données binaires à lire ou écrire dans lesdits registres. On comprend aisément les bénéfices de la présente invention. Inte rrogation du logiciel Applicatif du circuit intégré , et collecte de ses fonctions Selon un mode opératoire identique au processus d’énumération des constituants internes (410) propre à l’invention, l’agent-R exécute la seconde partie de la fonction (260-2) qui consiste à poursuivre l’énumération (400) en interrogeant cette fois l’Application (420) enregistrée dans la mémoire flash (220) du circuit intégré. L’Application (420) est un logiciel stocké en mémoire flash (200), qui est directement exécutable par le CPU (100) une fois chargé en RAM (230), pour contrôler le circuit intégré afin de le spécialiser dans l’accomplissement de tâches variées, pouvant opérer dans de multiples domaines, comme à titre d’exemples non limitatifs : l’intelligence artificielle pour la reconnaissance d’objets, d’animaux, d’êtres humains, la reconnaissance vocale, les traitements audio ou vidéo, la surveillance, les télécommunications, les robots de control industriel, etc… Quel que soit le domaine d’application considéré, la fonction du circuit intégré pourra selon l’invention, être configurée et/ou contrôlée à travers une liste de commandes en langage naturel. Pour procéder à l’énumération (400) de l’Application (420), l’agent-R (250) lance sur le réseau SMA (580) une requête constituée par une commande en langage naturel comme par ex. «application.description.notifier», adressée via son routeur (390) à l’agent-S (421) de l’Application (420). L’agent-R (250) reçoit en réponse un message indiquant la nature de l’Application, son identifiant unique, sa date de télé-versement, etc… L’agent-R (250) ajoute ces informations au dictionnaire local (430), puis lance une seconde requête pour collecter les fonctions de l’Application sous forme de commandes de programmation simplifiées qui sont listées en langage naturel. L’agent-R (250) reçoit de l’agent-S (421) via le réseau du SMA (580) la liste des commandes mises à disposition par l’applicatif (420). A cette étape du démarrage du circuit intégré, l’agent-R (250) a collecté, rassemblé, trié, structuré et ajouté au dictionnaire local (430) toutes le commandes des constituants interne (410) ainsi que toutes les commandes du logiciel Applicatif (420). Un métalangage de haut niveau d’abstraction s’est ainsi dynamiquement assemblé, dans le but de porter à la connaissance de l’Opérateur humain les ressources mises à sa disposition par la puce, lui évitant ainsi d’avoir à les rechercher et à les étudier par lui-même, ceci afin simplifier et d’accélérer la programmation dudit circuit intégré, selon l’invention. Recherc he de Circuit intégrés externes, et collecte de leurs identités et dictionnaires Selon l’invention la troisième fonction (260-3) de l’agent-R (250) consiste à répertorier des circuits intégrés d’architectures identiques au circuit maître (1000), mais configurés pour opérer en mode « esclave » (450), éventuellement interconnectés à l’interface (320). Il est précisé que ladite interface peut être selon l’invention de type électronique ou photonique, c’est-à-dire employer des électrons ou des photons pour échanger de l’information avec d’autres circuits intégrés distants. Pour procéder à l’énumération(440) visant à détecter d’éventuels circuits intégrés esclaves interconnectés (450), l’agent-R (250) lance sur le réseau SMA (580) de l’interface (320) une requête émise vers l’extérieur. Cette requête est constituée par une commande en langage naturel comme par ex. «puce.présence.détection(adresse)», adressée via son routeur (390) aux agent-M (500) des puces esclaves (450) éventuellement reliées. Le cas échéant, ladite requête déclenche une réponse de chacune des puces (450) interconnectées avec le circuit intégré maître (1000), qui révèlera (1) leur identifiant unique, (2) la nature de leur application déterminant leur fonction (420). En cas de réponse, l’agent-R (250) du circuit intégré maître (1000) enverra une seconde requête adressée tour à tour via son routeur (390) à l’identifiant unique de chacun des Esclaves répertorié, afin de collecter et d’enregistrer dans sa mémoire vive (230) une copie des dictionnaires locaux (430) desdits Esclaves, qui seront identifiés comme des dictionnaires distants (460) dans la mémoire (230) du maître (1000). Ensuite l’agent-R (250) fusionne (470) son dictionnaire local (430) avec les dictionnaires distant éventuellement collectés (460), puis organise, et structure l’information pour générer dynamiquement la base de donnée globale (480). La base de données globale (480) regroupe ainsi toutes les commandes « de Constituants interne » et « d’Applicatifs » disponibles selon la topologie d’un système considéré dans son ensemble, qu’il soit « mono puce », ou « multi puces » pouvant être réparties sur une ou plusieurs cartes interconnectées, comme par exemple un circuit imprimé (PCB en anglais). Cette base de données « CDFL » (Construction Dynamique de Fonctionnalités de Langage de programmation simplifié) (480) reflète les ressources disponibles d’une infrastructure à chaque mise sous tension. Pour terminer sa tâche d’initialisation, l’agent-R (250) va lire un registre spécial présent dans sa mémoire flash non volatile (270), dont le rôle est de sauvegarder le mode opératoire qui est défini, pour que la puce travaille soit en « mode développement », soit en « mode production ». Description du « mode de programmation » d’une puce « ma ître » : Si la fonction de démarrage automatique du circuit intégré est active (Autorun en anglais), l’interpréteur principal (500) est chargé en RAM (230) pour être invoqué par les fichiers de configuration (600) et (700), afin d’effectuer un traitement par lots (batch processing en anglais) afin de lancer le SOC (1000) à accomplir ses tâches selon l’Applicatif (420). Une impulsion appliquée sur les broches (300) de la puce (1000) aura pour effet de stopper l’Application en cours d’exécution et d’activer l’interface de communication (340) en mode veille, de sorte qu’une tentative de connexion par un Opérateur sera détectée par le circuit intégré (1000). Si la fonction « Autorun » n’est pas activée, l’interface de communication (340) est automatiquement activée en mode veille, de sorte qu’une tentative de connexion par un Opérateur sera détectée par le circuit intégré (1000). Description du « mode de programmation » d’une puce « Esclave » : Si la fonction de démarrage automatique du circuit intégré est active (Autorun en anglais), l’interpréteur principal (500) est chargé en RAM (230) afin de scruter en boucle l’interface (320) dans l’attente de requêtes émises par une puce maître interconnectée. Si la fonction « Autorun » n’est pas active l’interface de communication (340) est activée en mode veille, de sorte qu’une tentative de connexion par un Opérateur sera détectée par le circuit intégré (1000). Description du « mode exécution » d’une puce : L’interpréteur principal (500) est chargé en RAM (230) pour être invoqué par les fichiers de configuration (600) et (700), afin d’effectuer un traitement par lots (batch processing en anglais) pour paramétrer puis lancer le SOC (1000) à accomplir ses tâches selon l’Applicatif (420). Toutefois, un opérateur de maintenance pourra accéder à la puce (1000) en appliquant une série d’impulsions sur les broches (300), afin de stopper l’Application en cours d’exécution, puis activer l’interface de communication (340) pour accéder à l’EPIAA moyennant la saisie d’une clef chiffrée selon un algorithme complexe, comme par exemple « DES ou « AES ». Description détaillée de « l’ agent de gestion du système», ou « agent -M » Tandis que les interpréteurs de langage des agent-R ou agent-S se réfèrent à leur base de données stockée en mémoire (270), l’interpréteur de l’agent-M à la particularité de se référer à une base de données extérieure (480) résidant en mémoire principale (230), qui aura été préalablement construite par l’agent-R (250) de façon dynamique. L’analyseur syntaxique ou parseur (510) de l’agent-M utilise cette base de données (480) pour rechercher et valider par comparaison des commandes entrantes pouvant provenir soit : d’une saisie effectuée par un opérateur à partir d’un terminal (900) ; de saisies préenregistrées dans des fichiers (600, 700) stockés en mémoire Flash (220), qui sont alors traitées par lot (batch processing en anglais) par l’interpréteur de l’agent-M (500). Un traitement par lots est un enchaînement automatique d'une suite de commandes (processus) sans intervention d'un opérateur. D’une requête d’un autre agent acheminée par le réseau du SMA (580) D’une saisie acheminée à l’interpréteur (500) via les interfaces (320, 340, 350) En l’absence de concordance avec la base de données (480), le parseur (510) de l’agent-M (500), génère un message d’erreur comme par exemple « Commande inconnue ». Si la concordance est vérifiée, l’agent-M route la commande à l’adresse de l’agent concerné pour être exécutée. Une seconde particularité de l’agent-M réside dans son « double mode opératoire ». Dans la description ci-dessus, l’agent-M opère au sein d’un système décentralisé, ou le traitement des instructions est réparti sur une pluralité de calculateurs en réseau (580) (constitués par au moins trois types « d’agents » selon l’invention). On peut aussi considérer que la charge de travail est répartie sur une pluralité d’interpréteurs qui opèrent un traitement distribué des commandes. A l’inverse, l’agent-M (500) a la capacité de changer de langage en chargeant en mémoire (230) une seconde base de données depuis la flash (220), afin de traiter directement des commandes via son compilateur à la volée « JIT » (520) (acronyme anglais de « just in time »), pour générer un microcode directement exécutable par l’unité à microprocesseur (100). A titre d’exemple un programme Applicatif écrit en Micro python peut être lancé selon un mode opératoire connu. En affichant par catégorie sur un terminal (900), les commandes de sa base de donnée (480), l’agent-M accélère considérablement la programmation d’un circuit intégré spécialisé (MCU) par un opérateur ne disposant pas de formation ni de connaissance à priori sur ce type de circuit intégré, lui évitant en particulier l’étape fastidieuse d’assimilation d’un manuel de spécifications (datasheet) pouvant représenter plusieurs milliers de pages pour un circuit intégré de l’état de l’art (par exemple 9305 pages pour le circuit intégré (AM64x /AM243x Processors Silicon, Revision 1.0, Texas Instruments Families of Products, Technical Reference manual). L’Environnement de Programmation Assistée par agent intelligent Une autre spécificité fondamentale de l’invention concerne l’intégration au sein de l’architecture du circuit intégré d’un Environnement de Programmation Assistée EPIAA (800), qui regroupe à lui seul l’ensemble des outils nécessaires pour répondre aux besoins de l’Opérateur, depuis la prise en main – en passant par la programmation, au débogage, jusqu’au résultat fonctionnel final. Les fichiers système (810) de cet environnement sont enregistrés en mémoire flash (220). L’EPIAA (800) comporte une interface homme-machine (820) dite « GUI » (pour Graphical User Interface en anglais) affichée par un terminal (900) connecté à l’interface de communication (340). La connexion (330) entre l’interface (340) de la puce (1000) et le terminal (900) de l’opérateur, s’établie par une liaison filaire (par exemple Ethernet) ou selon un mode préféré par une liaison Radio sans fil. Le circuit intégré (1000) inclue un die wifi ou plus généralement un die radiofréquence. L’interface graphique (820) est avantageusement une « Web-Application » qui peut être ainsi transmise à un quelconque Navigateur WEB, via le micro serveur de l’EPIAA intégré dans la puce (1000). Ce micro-serveur est accessible par une adresse IP en mode « Point d’Accès » pour la connexion initiale, puis en mode « Station » après que WIFI ait été configuré pour une connexion à un réseau local, offrant ainsi à l’Opérateur la possibilité d’accéder à Internet sans changer d’environnement, puisqu’il utilise déjà son « Navigateur Web ». L’opérateur accède ainsi sans effort préalables, à une suite d’outils logiciels intégrés, pour visualiser les documentations, paramétrer, configurer, programmer, tester, et déboguer le circuit intégré en toute autonomie, sans qu’aucun apport d’équipement extérieur supplémentaire ne soit nécessaire. L’interface graphique (820) de l’EPIAA (800) présente un menu utilisateur qui comporte à titre d‘exemple non limitatif, les outils suivants : Un Visualiseur (Viewer en anglais) de documentation technique du circuit intégré, présentant son boitier, son brochage (Pinout en anglais), le plan de câblage d’un exemple de mise en œuvre de la puce, un lexique des commandes simplifiées en langage naturel qui selon l’invention se réduit à quelques dizaines de pages, au lieu de plusieurs centaines.. Une console de saisie avec invite de commande (830), que l’Opérateur utilise pour dialoguer avec l’agent-M de gestion du système sur puce SOC, afin par exemple de lui demander d’afficher les commandes et paramètres d’un sous-ensemble de la puce pour le piloter instantanément. Avantageusement l’agent-M assure l’auto complétion de la saisie de l’Opérateur, et la mise en couleur des mots clefs des commandes du langage. Un gestionnaire de fichiers assure la sauvegarde et le chargement de « fichiers batch » de sortes à disposer instantanément « de modèles de configuration prédéfinis ». Un éditeur capable de gérer de multiples langages de programmation pour exploiter les APIs des Applications (420), ou bien pour programmer une Application (420). Un configurateur système, définissant à la fois le comportement de la puce au démarrage, des fonctionnalités optionnelles, la sécurité des données et l’économie d’énergie. Un dispositif complet de programmation sans fil à distance du circuit intégré Un utilitaire d’information sur le système, de self-test du circuit intégré, et de mesure. Un module de gestion de compte utilisateur, affichant les fonctions activées et la possibilité d’activer de nouvelles de nouvelles fonctions en option. Au-delà de la pluralité de fonctions présentes dans l’EPIAA (800), son intégration à l’échelle microscopique au cœur du circuit intégré (1000) contribue à la mise en œuvre des procédés de simplification décrits précédemment, qui seraient complexes voire impossible à réaliser selon les modes opératoires connues d’un environnement de développement avec sa suite d’outils, telle qu’une pluralité de logiciels installés sur un ordinateur hôte, des cartes dédiés, des câbles, des programmateurs, etc… Partie mécanique La représente une vue schématique, du boîtier (1100) du circuit intégré (1000) selon un exemple de réalisation. Le boîtier (1100) du circuit intégré (1000) comporte des broches métalliques (1200) et deux gorges de fixation latérale diamétralement opposées (1300, 1400) destinées à son maintien dans un support spécifiquement adapté à un verrouillage latéral innovant, selon l’invention. Des informations codées par des signaux lumineux multicolores sont transmises au monde extérieur grâce à des zones translucides (1500, 1600, 1700, 1800) spécifiques à l’invention, découpées sur la face avant dudit boitier de sorte à laisser passer la lumière, zones translucides vers lesquelles sont guidées les émissions lumineuses de quatre diodes électroluminescentes appartenant au groupe d’indicateurs (530) des constituants interne (410) du circuit intégré (1000). Procédé de programmation d’un circuit intégré comprenant un ou plusieurs microprocesseurs (100), au moins une mémoire vive (230), au moins une mémoire morte (200) et au moins une mémoire réinscriptible non volatile (220), au moins un bus haute vitesse (10) et un bus (20), des constituants fonctionnels (530, 540, 550, 560), consistant à enregistrer dans ladite mémoire réinscriptible non volatile (220) un ensemble de codes informatiques exécutables Caractérisé en ce qu’il comporte : A. Une étape initiale, activée par la mise sous tension dudit circuit intégré, d’interrogation de l’ensemble desdites ressources matérielles (100, 220, 230, 10, 20, 410, 530, 540, 550, 560) et logicielles (420) dudit circuit intégré, et d’enregistrement dans une base données (480) locale, pour chacune desdites ressources a) au moins un descripteur numérique de chacune desdites ressources b) une liste de commandes de programmation simplifiées pour chacune desdites ressources B. Une étape de sélection entre un mode d’exécution ou de programmation, a) Dans le cas de sélection du mode de programmation, I. La transmission à un terminal connecté (900) par un environnement de développement intégré (800) d’une application web (820) exécutable par un navigateur (910) dudit terminal (900), ladite application web comprenant une documentation technique et des spécifications dudit circuit intégré, une suite logicielle de programmation spécifique dudit circuit intégré II. La transmission audit terminal connecté (900) de ladite liste de commandes de programmation simplifiées pour chacune desdites ressources. b) Dans le cas de sélection du mode d’exécution, le chargement d’un fichier de configuration système (600) et d’un fichier de configuration applicatif (700), enregistrés dans la mémoire non volatile (220), constitués par une liste de commandes interprétables, la présence de chacune desdites commandes dans ladite base de données locale (480) étant vérifiée pour être compilées et exécutées à la volée. Procédé de programmation d’un circuit intégré selon la revendication 1 caractérisé en ce que ladite étape initiale comporte en outre la lecture de l’état de broches du circuit intégré (300) pour déterminer : un mode d’exécution ou un mode de programmation un mode « maître » ou un mode « esclave », et, dans le cas du mode maître, la collecte (440) du contenu (460) de bases de données (480) locales des circuits intégrés « esclaves » (450) interconnectés (320). L’activation de la découverte des ressources d’un SOC à chaque démarrage Circuit intégré comprenant un ou plusieurs microprocesseurs (100), au moins une mémoire vive (230), au moins une mémoire morte (200) et au moins une mémoire réinscriptible non volatile (220), au moins un bus haute vitesse (10) et un bus (20), un ensemble (410) de constituants fonctionnels (530, 540, 550, 560) caractérisé en ce qu’il comporte en outre : Une pluralité d’agents (250, 421, 500, 570 à 574) constitués chacun par un calculateur comprenant chacun un processeur (150), un microprocesseur de type accélérateur d'intelligence artificielle (155), une mémoire morte (260 à 262), une mémoire non volatile (270), une mémoire vive (280), un routeur (390) et une pluralité d’interfaces (355) d’échanges de données (340, 360, 370, 380) Un bus (580) pour l’échange de données entre lesdits agents (250, 421, 500, 570 à 574) L’un desdits agents étant un agent-R de renseignement (250) comprenant : une interface (360) pour l’accès direct à ladite mémoire vive (230) et une interface (370) pour l’échange de données avec un bus (580) D’autres desdits agents étant des agents-S de simplification (421 ; 570 à 574) Comprenant une interface (370) pour l’échange de données via le bus (580) avec ladite pluralité d’agents (250, 421, 500, 570 à 574) Comprenant une interface (380) pour l’échange de données avec chacun desdits constituants fonctionnels (530, 540, 550, 560, 120) et pour l’échange de données avec une application logicielle (420) L’un desdits agents étant un agent-M Maître (500) comprenant une interface (370) pour l’échange de données via le bus (580) avec ladite pluralité d’agents (250, 421, 500, 570 à 574) une interface (340) pour l’échange de données avec un terminal périphérique connecté (900) et pour l’accès aux programmes et aux données enregistrés dans ladite mémoire réinscriptible non volatile (220) Circuit intégré selon la revendication 3 caractérisé en ce qu’il comporte en outre des broches de configuration (300) pour commander l’état dudit agent agent-R de renseignement (250) par l’application d’une tension. Circuit intégré selon la revendication 3 caractérisé en ce qu’il comporte en outre une mémoire non-volatile (260) contenant : Un premier microcode dont l’exécution commande la recherche, la collecte, le traitement et le stockage des données relatives à chaque sous-ensemble (530 à 560, 420) du circuit intégré ledit premier microcode générant automatiquement des requêtes acheminées aux constituants internes (410) par au moins un bus de configuration bidirectionnel (580), ces requêtes déclenchant des réponses par des constituants internes et périphériques disponibles et opérationnels dans le circuit intégré, lesdites réponses étant traitées pour construire une base de données (480) identifiant lesdites ressources internes et les périphériques et répertoriant leurs commandes simplifiées respectives dans ladite base de données (480) l’exécution dudit premier microcode étant commandé lors du démarrage (BIOS) en inscrivant dans un registre en mémoire vive de démarrage (280) de l’agent-R, un code défini par la polarité d’une ou de plusieurs broches externes dédiées (300) à la configuration initiale (Boot). Circuit intégré selon la revendication précédente, caractérisé en ce que ladite mémoire vive de démarrage (280) de l’agent-R comporte en outre un registre dont l’état indique si le mode d’exécution ou le mode de programmation est sélectionné, et en outre un registre dont l’état indique si le MCU est désigné maitre ou esclave, en fonction de la polarité d’une ou de plusieurs broches externes (300) dédiées à la configuration initiale (Boot). Circuit intégré selon la revendication précédente caractérisé en ce que lesdits sous-ensembles du circuit intégré sont associés chacun à un agent autonome comprenant des mémoires ROM (260 à 262), FLASH (270) et RAM (280) , un microprocesseur (150), un microprocesseur de type accélérateur d'intelligence artificielle (155), une interface d’entrées/sorties (355), un micro-interpréteur de langage naturel, et une table contenant des attributs et des fonctionnalités du sous-ensemble associé audit agent. Circuit intégré selon la revendication précédente caractérisé en ce que ladite mémoire non-volatile (260) comprend en outre un deuxième microcode commandant l’interrogation des bus de communication pour interroger la présence d’un ou de plusieurs circuits intégrés additionnels esclaves (450) , et le cas échéant, la recherche et l’importation des tables des commandes (430) de chacun desdits circuit intégré esclaves (450), et l’enregistrement dans une seconde table de commandes (460), ledit deuxième microcode interpréteur de commandes assurant, en réponse à une requête en langage naturel transmise, soit par ledit terminal distant (900), soit par la lecture d’un fichier (600 ou 700) stocké en mémoire (220), l’interrogation de ladite table de commandes locale (430) et à défaut l’interrogation de ladite seconde table de commandes (460), pour assurer la configuration des registres associés à la fonction correspondant à ladite commande interprétée, en fonction le cas échéant, des arguments de ladite requête. Circuit intégré selon la revendication 3 en ce que ladite base de données (480) comprend des informations codées en langage naturel et communique avec ladite interface de communication (340) d’une part, et un interpréteur en code binaire exécutant les actions ordonnées par les instructions dudit langage. Circuit intégré selon la revendication 3 caractérisé en ce que ladite base de données (480) comprend un système d’Information (260) associé à un agent de renseignement (250), un réseau de communication par paquets (580) reliant une pluralité d’agents intelligents (250, 421, 500, 570…574), chacun interfacés à leurs sous-ensembles, un agent maître (500) pour configurer le circuit intégré et son programme applicatif, un réseau multi couche reconfigurable (590), contrôlé par agent (573) et un environnement de programmation interactif assistée par l’agent maître, EPIAA (800).