Brevet FR3106681A1 — publié le 20210730

Architecture neuromorphique La présente description concerne un circuit de routage pour router des signaux entre des circuits de neurones d’un réseau neuronal artificiel, le circuit de routage comprenant : une première cellule mémoire (302) ayant une entrée couplée à une première piste d’entrée (304) du circuit de routage et une sortie couplée à une première piste de colonne (308) ; une deuxième cellule mémoire (302) ayant une entrée couplée à une deuxième piste d’entrée (304) du circuit de routage et une sortie couplée à la première piste de colonne (308) ; et un premier circuit comparateur (310) agencé pour comparer un signal (IREAD1) présent sur la première piste de colonne (308) à un niveau de référence, et pour activer sélectivement un signal (VOUT1) sur une première piste de sortie (312) du circuit de routage en fonction de la comparaison. Figure pour l'abrégé : Fig. 3 Architecture neuromorphique La présente description concerne de façon générale le domaine des réseaux neuronaux, et en particulier une architecture neuromorphique et un procédé de routage de signaux dans un réseau neuronal ayant une telle architecture neuromorphique. Les processeurs neuromorphiques sont des architectures informatiques qui sont développées pour imiter, dans une certaine mesure, des systèmes neurobiologiques. De tels réseaux neuronaux comprennent en général un réseau de neurones artificiels, qui sont des circuits électriques qui reçoivent des entrées, combinent ces entrées avec leur état interne et souvent avec un seuil, et produisent un signal de sortie. Les sorties de neurones sont couplées aux entrées d’autres neurones par des connexions, qui sont souvent appelées synapses, leur équivalent dans le cerveau biologique. Dans un réseau neuronal, des signaux, ayant parfois la forme de pics, produits par des neurones sources sont émis vers un ou plusieurs circuits de synapses de destination, qui réalisent une ou plusieurs transformations sur les signaux avant qu’ils soient intégrés, éventuellement avec des facteurs de gain différents, et communiqués à un ou plusieurs neurones post-synaptiques. La fonction utilisée pour générer l’entrée dirigée vers un neurone post-synaptique, en fonction des sorties de ses neurones prédécesseurs et des connexions sous forme d’une somme pondérée, est connue sous le nom de fonction de propagation. Il a été proposé d’utiliser des mémoires adressables par contenu (CAM) afin de mettre en œuvre les connexions programmables complexes entre les neurones dans un réseau neuronal. Par exemple, la représentation adresse-événement (AER ; de l’anglais Address-Event Representation) est un protocole de communication couramment adopté dans des architectures de réseaux neuronaux pour mettre en œuvre un routage entre neurones. Par exemple, un système basé sur une telle approche est décrit dans la publication intitulée "A Scalable Multicore Architecture With Heterogeneous Memory Structures for Dynamic Neuromorphic Asynchronous Processors (DYNAPs)", S.Moradi et al., IEEE transactions on biomedical circuits and systems Vol.12, no. 1, February 2018. Selon l’AER, chaque neurone se voit attribuer une adresse. Lorsqu’un neurone décharge, son adresse est activée sur un bus numérique partagé. Après un événement de décharge, chaque neurone compare, dans une CAM, l’adresse du neurone qui se décharge aux adresses d’un nombre fini de neurones auquel il est virtuellement connecté. Pour chaque concordance d’adresse, le neurone post-synaptique correspondant va produire localement une impulsion pour lui-même. Ainsi, la programmation de la CAM permet de configurer des topologies personnalisées de réseaux neuronaux. Toutefois, l’approche AER présente des inconvénients en raison des limitations en nombres d’entrées et de sorties possibles vers ou à partir de chaque neurone, et en ce qui concerne la consommation d’énergie statique, qui est relativement élevée. Un objet de modes de réalisation de la présente description est de répondre au moins partiellement à un ou plusieurs inconvénients de l’art antérieur. Selon un aspect, on prévoit un circuit de routage pour router des signaux entre des circuits de neurones d’un réseau neuronal artificiel, le circuit de routage comprenant : une première cellule mémoire ayant une entrée couplée à une première piste d’entrée du circuit de routage et une sortie couplée à une première piste de colonne ; une deuxième cellule mémoire ayant une entrée couplée à une deuxième piste d’entrée du circuit de routage et une sortie couplée à la première piste de colonne ; et un premier circuit comparateur agencé pour comparer un signal présent sur la première piste de colonne à un niveau de référence, et pour activer sélectivement un signal sur une première piste de sortie du circuit de routage en fonction de la comparaison. Selon un mode de réalisation, le circuit de routage comprend en outre : une troisième cellule mémoire ayant une entrée couplée à la première piste d’entrée du circuit de routage et une sortie couplée à une deuxième piste de colonne ; une quatrième cellule mémoire ayant une entrée couplée à la deuxième piste d’entrée du circuit de routage et une sortie couplée à la deuxième piste de colonne ; et un deuxième circuit comparateur agencé pour comparer un signal présent sur la deuxième piste de colonne à un niveau de référence, et pour activer sélectivement un signal sur une deuxième piste de sortie du circuit de routage en fonction de la comparaison. Selon un mode de réalisation, la première cellule mémoire est agencée pour mémoriser un premier bit d’activation, et la première cellule mémoire est agencée pour activer un signal sur la première piste de colonne lorsque le premier bit d’activation et un signal sur la première piste d’entrée du circuit de routage sont activés ; et la deuxième cellule mémoire est agencée pour mémoriser un deuxième bit d’activation, la deuxième cellule mémoire étant agencée pour activer un signal sur la première piste de colonne lorsque le deuxième bit d’activation et un signal sur la deuxième piste d’entrée du circuit de routage sont activés. Selon un mode de réalisation, les première et deuxième cellules mémoires sont agencées pour activer des signaux de courant sur la première piste de colonne. Selon un mode de réalisation, les première et deuxième cellules mémoires comprennent des éléments de stockage non volatils, comme des éléments mémoires résistifs. Selon un autre aspect, on prévoit un réseau neuronal artificiel comprenant une pluralité de circuits de neurones, chaque circuit de neurone comportant au moins une piste d’entrée et au moins une piste de sortie ; et une pluralité des circuits de routage susmentionnés, chaque circuit de routage couplant une ou plusieurs pistes de sortie d’un ou plusieurs des circuits de neurones à une ou plusieurs pistes d’entrée d’un ou plusieurs des circuits de neurones. Selon un mode de réalisation, chaque circuit de neurone comprend : une première cellule mémoire ayant une entrée couplée à une première piste d’entrée du circuit de neurone et une sortie couplée à une première piste de colonne du circuit de neurone ; une deuxième cellule mémoire ayant une entrée couplée à une deuxième piste d’entrée du circuit de routage et une sortie couplée à la première piste de colonne du circuit de neurone ; et un premier circuit de calcul agencé pour comparer un signal présent sur la première piste de colonne du circuit de neurone à un niveau de référence, et pour activer sélectivement un signal sur une première piste de sortie du circuit de neurone en fonction de la comparaison. Selon un mode de réalisation, le réseau neuronal artificiel comprend en outre : une troisième cellule mémoire ayant une entrée couplée à la première piste d’entrée du circuit de neurone et une sortie couplée à une deuxième piste de colonne du circuit de neurone ; une quatrième cellule mémoire ayant une entrée couplée à la deuxième piste d’entrée du circuit de neurone et une sortie couplée à la deuxième piste de colonne ; et un deuxième circuit de calcul agencé pour comparer un signal présent sur la deuxième piste de colonne du circuit de neurone à un niveau de référence, et pour activer sélectivement un signal sur une deuxième piste de sortie du circuit de neurone en fonction de la comparaison. Selon un mode de réalisation, la pluralité de circuits de neurones et la pluralité de circuits de routage sont formées dans une pluralité de couches d’une structure de circuit tridimensionnelle. Selon un autre aspect, on prévoit un procédé de routage de signaux entre des circuits de neurones d’un réseau neuronal artificiel, le procédé comprenant : programmer une première cellule mémoire ayant une entrée couplée à une première piste d’entrée du circuit de routage et une sortie couplée à une première piste de colonne ; programmer une deuxième cellule mémoire ayant une entrée couplée à une deuxième piste d’entrée du circuit de routage et une sortie couplée à la première piste de colonne ; comparer, par un premier circuit comparateur, un signal présent sur la première piste de colonne à un niveau de référence ; et activer sélectivement un signal sur une première piste de sortie du circuit de routage en fonction de la comparaison. Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 représente schématiquement une liaison dans un réseau neuronal comprenant des circuits de neurones et un circuit de synapse selon un exemple de réalisation ; la figure 2 représente schématiquement une partie d’un réseau neuronal comprenant des pavés de neurones et un pavé de routage selon un exemple de réalisation de la présente description ; la figure 3 représente schématiquement le pavé de routage de la figure 2 plus en détail selon un exemple de réalisation de la présente description ; la figure 4 représente schématiquement une cellule mémoire du pavé de routage de la figure 3 plus en détail selon un exemple de réalisation de la présente description ; la figure 5A représente schématiquement un réseau neuronal comprenant des pavés de neurones et des pavés de routage selon un exemple de réalisation de la présente description ; la figure 5B représente schématiquement un système comprenant plusieurs réseaux neuronaux selon un exemple de réalisation de la présente description ; la figure 6 représente schématiquement un pavé de routage plus en détail selon un autre exemple de réalisation de la présente description ; la figure 7 représente schématiquement un pavé de routage plus en détail selon encore un autre exemple de réalisation de la présente description ; la figure 8 représente schématiquement un pavé de routage comportant un circuit comparateur partagé selon un exemple de réalisation de la présente description ; la figure 9 représente schématiquement un pavé de neurone des figures 2 et 5 plus en détail selon un exemple de réalisation de la présente description ; la figure 10 représente schématiquement un pavé de neurone des figures 2 et 5 plus en détail selon un autre exemple de réalisation de la présente description ; la figure 11 représente schématiquement un pavé de neurone des figures 2 et 5 plus en détail selon encore un autre exemple de réalisation de la présente description ; la figure 12 représente schématiquement un pavé de neurone plus en détail selon encore un autre exemple de réalisation de la présente description ; la figure 13 représente schématiquement une sous-matrice de neuf pavés selon un exemple de réalisation de la présente description ; la figure 14 représente schématiquement un circuit de calcul d’un pavé de neurone plus en détail selon un exemple de réalisation de la présente description ; la figure 15 représente schématiquement un circuit comparateur d’un pavé de routage plus en détail selon un exemple de réalisation de la présente description ; la figure 16 représente schématiquement un circuit de calcul/comparateur générique capable de mettre en œuvre une partie de la colonne soit d’un pavé de neurone soit d’un pavé de routage selon un exemple de réalisation de la présente description ; la figure 17 représente schématiquement une colonne d’un pavé de neurone plus en détail selon un exemple de réalisation de la présente description ; la figure 18 représente schématiquement une colonne d’un pavé de routage plus en détail selon un exemple de réalisation de la présente description ; la figure 19 représente schématiquement un multiplexeur/démultiplexeur des colonnes de neurones et de routage des figures 17 et 18 plus en détail selon un exemple de réalisation de la présente description ; la figure 20 représente schématiquement un tampon de courant des colonnes de neurones et de routage des figures 17 et 18 plus en détail selon un exemple de réalisation de la présente description ; la figure 21 représente schématiquement un demi-circuit NON ET de la colonne de neurone de la figure 17 plus en détail selon un exemple de réalisation de la présente description ; la figure 22 représente schématiquement une synapse d’intégration à paire différentielle de la colonne de neurone de la figure 17 plus en détail selon un exemple de réalisation de la présente description ; la figure 23 représente schématiquement un soma de neurone de la colonne de neurone de la figure 17 plus en détail selon un exemple de réalisation de la présente description ; la figure 24 représente schématiquement un extenseur d’impulsion des colonnes de neurones et de routage des figures 17 et 18 plus en détail selon un exemple de réalisation de la présente description ; et la figure 25 représente schématiquement un comparateur de courant de la colonne de routage de la figure 18 plus en détail selon un exemple de réalisation de la présente description. De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques. Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et sont détaillés. En particulier, les techniques pour l’apprentissage d’un réseau neuronal et l’application pour utiliser des réseaux neuronaux sont bien connues de la personne du métier, et n’ont pas été décrites en détail. Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments couplés entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés par l'intermédiaire d'un ou plusieurs autres éléments. Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures. Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10 % près, et de préférence à 5 % près. La figure 1 représente schématiquement une liaison 100 dans un réseau neuronal comprenant des circuits de neurones et un circuit de synapse selon un exemple de réalisation qui a été proposé. Par exemple, une approche similaire à celle de la figure 1 est décrite dans la publication de S.Moradi et al. référencée dans la section d’art antérieur susmentionnée. L’approche est basée sur un routage d’adresse de source de point à point et un routage d’adresse de destination à multidiffusion. Comme cela est représenté en figure 1, lorsqu’un neurone source (SOURCE NEURON) 102 se décharge, son adresse de source SA est utilisée pour cibler un sous-ensemble de nœuds intermédiaires (INTERMEDIATE NODE) 104, dont l’un est représenté en figure 1 comprenant une mémoire adressable par contenu (CAM). Par exemple, chaque nœud intermédiaire compare l’adresse de source SA à des adresses mémorisées dans sa CAM, et s’il y a une concordance, le nœud intermédiaire est identifié comme étant le nœud ciblé. Chaque nœud intermédiaire 104 ciblé diffuse l’événement entrant, accompagné d’une étiquette (TAG), vers les neurones de son secteur. Ces neurones comprennent aussi une CAM, et chacun va comparer l’étiquette à des valeurs se trouvant dans sa CAM pour déterminer s’il est un neurone de destination pour l’événement de décharge, un tel neurone de destination (DESTINATION NEURON) 106 étant représenté en figure 1. Comme cela a été mentionné précédemment, l’approche AER, ou des approches similaires qui utilisent une CAM, présentent des inconvénients en ce qui concerne les capacités de configuration et aussi en raison des limitations en nombres d’entrées et de sorties qui sont possibles vers/à partir de chaque neurone. La figure 2 représente schématiquement une liaison 200 dans un réseau neuronal comprenant N pavés de neurones sources (SOURCE NEURON TILE 1, SOURCE NEURON TILE N) 202 couplés à M pavés de neurones de destination (DESTINATION NEURON TILE 1, DESTINATION NEURON TILE M) 204 par l’intermédiaire d’un pavé de routage (ROUTING TILE) 206. Le nombre N de pavés de neurones sources 202 reliés par le pavé de routage 206 est par exemple égal à au moins un, et le nombre M de pavés de neurones de destination 204 reliés par le pavé de routage 206 est aussi par exemple égal à au moins un. En outre, bien qu’un seul pavé de routage 206 soit illustré en figure 1 reliant les pavés de routage sources et de destination, dans certains modes de réalisation il pourrait y avoir une connexion en série de plus qu’un seul pavé de routage 206 réalisant l’opération de liaison, comme on va le décrire plus en détail ci-après. La figure 3 représente schématiquement le pavé de routage 206 de la figure 2 plus en détail selon un exemple de réalisation. Le pavé de routage 206 comprend par exemple une ou plusieurs colonnes, et la figure 3 illustre un exemple dans lequel il comprend quatre colonnes COL1 à COL4. Chaque colonne comprend par exemple une ou plusieurs cellules mémoires 302. Dans l’exemple de la figure 3, chaque colonne COL1 à COL4 comprend quatre cellules mémoires 302 de la sorte. Chaque cellule mémoire 302 reçoit une piste d’entrée de pavé 304 correspondante à partir d’un ou plusieurs pavés de neurones sources (non représentés en figure 3), et il y a quatre pistes d’entrée de pavé de la sorte, référencées VIN à VIN , dans l’exemple de la figure 3. Chaque cellule mémoire 302 couple sélectivement, en fonction de son état programmé et d’une tension d’entrée, une piste de tension d’alimentation de colonne 306 (VTOP) à une piste de colonne 308. En effet, chaque cellule mémoire 302 comprend par exemple un élément de propagation programmable, comme une résistance programmable, agencée de telle sorte que la piste de tension d’alimentation de colonne 306 est appliquée par la cellule mémoire 302 par l’intermédiaire de l’élément de propagation à la piste de colonne 308 seulement si la tension d’entrée est à un état haut et si l’élément de propagation est programmé pour propager cet état. Dans certains modes de réalisation, les signaux de sortie provenant de toutes les cellules mémoires 302 d’une colonne sont combinés sur une seule piste de colonne 308 sous la forme d’un courant de lecture IREAD. Dans l’exemple de la figure 3, les pistes de colonnes 308 des quatre colonnes COL1 à COL4 fournissent respectivement des courants de lecture IREAD1 à IREAD4. Chaque colonne du pavé de routage 206 comprend en outre un circuit comparateur 310, qui par exemple compare le signal de courant IREAD présent sur la piste de colonne 308 correspondante à une valeur de seuil. Le circuit comparateur 310 génère, en fonction de cette comparaison, une tension de sortie VOUT sur une piste de sortie de pavé 312 correspondante. La tension de sortie VOUT est par exemple un signal binaire. Dans l’exemple de la figure 3, les quatre colonnes COL1 à COL4 du pavé de routage 206 génèrent respectivement des tensions de sortie VOUT1 à VOUT4 sur quatre pistes de sortie de pavé 312 correspondantes. Les pistes de sortie de pavé 312 sont fournies à un ou plusieurs pavés de neurones de destination (non représentés en figure 3). Comme cela a été expliqué précédemment, alors que les pistes d’entrée de pavé 304 et les pistes de sortie de pavé 312 peuvent être connectées directement à un ou plusieurs pavés de neurones source/destination, elles pourraient en plus ou à la place être couplées à un ou plusieurs pavés de neurones source/destination par l’intermédiaire d’un ou plusieurs autres pavés de routage 206 (non illustrés en figure 3). Dans certains modes de réalisation, chacune des cellules mémoires 302 du pavé de routage est programmée de manière binaire pour prendre l’un de seulement deux états, et le circuit comparateur 310 est par exemple agencé pour générer une impulsion de tension au niveau de sa sortie si au moins une cellule mémoire 302 de la colonne est programmée avec un état à faible résistance et reçoit une impulsion de tension sur sa piste d’entrée. Toutefois, dans des variantes de réalisation, les cellules mémoires 302 pourraient être programmées de manière à prendre l’un de plus que deux états de résistance, comme par exemple l’un de quatre ou huit états de résistance. Dans un tel cas, le circuit comparateur 310 est par exemple agencé pour réaliser une comparaison plus complexe afin de décider s’il doit ou non générer une impulsion de sortie. En outre, dans certains cas, le routage de l’impulsion pourrait dépendre de l’état de résistance programmé particulier de la cellule mémoire. Par exemple, chaque circuit comparateur 310 est par exemple agencé pour générer une pluralité de tensions de sortie sur une pluralité correspondante de pistes de sortie 312, et pour activer une impulsion de tension sur l’une de ses pistes de sortie 312 en fonction du niveau du courant IREAD sur la piste de colonne 306 correspondante. Par exemple, dans un tel cas, chaque circuit comparateur 310 comprend plus qu’un seul comparateur, permettant de distinguer plus que deux niveaux d’amplitude du courant de lecture IREAD. En plus ou à la place, une ou plusieurs des tensions de sortie VOUT1 à VOUT4 pourraient être générées par un circuit logique (non illustré) en fonction de deux, ou plus, des signaux de sortie des comparateurs 310. La figure 4 représente schématiquement une cellule mémoire 302 du pavé de routage de la figure 3 selon un exemple de réalisation dans lequel elle est mise en œuvre par une structure 1T1R (un transistor, une résistance) dans laquelle la résistance est un élément mémoire non volatil basé sur une mémoire résistive, comme une RRAM (mémoire résistive à accès aléatoire). En particulier, chaque cellule mémoire 302 comprend par exemple un transistor 402 ayant l’un de ses nœuds de conduction de courant principaux couplé à la piste de tension d’alimentation de colonne 306. Le transistor 402 est par exemple contrôlé au niveau de sa grille par une tension VINi sur la piste d’entrée de pavé 304, où i vaut 1, 2, 3 ou 4 pour chaque rangée correspondante dans l’exemple de la figure 3. L’autre nœud de conduction de courant principal du transistor 402 est par exemple couplé, par l’intermédiaire d’un élément résistif programmable 404, à la piste de colonne 308, qui fournit un courant de lecture IREADj, où j vaut 1, 2, 3 ou 4 pour chaque rangée correspondante dans l’exemple de la figure 3. Dans le mode de réalisation de la figure 4, le transistor 402 est un transistor MOS à canal P (PMOS), et le signal d’entrée VINi est actif à l’état bas, autrement dit le transistor devient conducteur lorsque la tension VINi est à un état de tension bas. Dans des variantes de réalisation, le transistor 402 pourrait être mis en œuvre par un transistor MOS à canal N (NMOS), et le signal d’entrée VINi pourrait être actif à l’état haut, en d’autres termes le transistor devient conducteur lorsque la tension VINi est à un état de tension haut. En outre, l’ordre du transistor 402 et de l’élément résistif programmable 404 entre le rail de tension VTOP et la piste de colonne 308 pourrait être inversé. Dans des variantes de réalisation, l’élément résistif programmable 404 pourrait être mis en œuvre par d’autres types de technologies non volatiles, comme les technologies CBRAM (RAM à pontage conducteur), OxRAM (mémoire résistive à base d’oxyde), MRAM (RAM magnéto-résistive), FTJ (jonction tunnel ferroélectrique), FeFET (transistor à effet de champ ferroélectrique), ou similaire. Dans certains modes de réalisation, l’état résistif de l’élément mémoire 404 est programmé par un courant ou une tension appliqué à l’élément résistif programmable 404, ou par d’autres techniques, en fonction de la technologie de l’élément. Dans des variantes de réalisation, plutôt que d’être mis en œuvre par une cellule mémoire non volatile, chacune des cellules mémoires 302 du pavé de routage pourrait être mise en œuvre par une cellule mémoire volatile, comme une cellule SRAM (RAM statique). La figure 5A représente schématiquement un réseau neuronal 500 comprenant des pavés de neurones 202, 204 (N) et des pavés de routage 206 (R) agencés en une grille de colonnes et de rangées selon un exemple de réalisation. Les pavés de neurones 202, 204 peuvent chacun correspondre à des pavés de neurones sources 202 et/ou des pavés de neurones de destination 204. L’exemple de la figure 5A comprend neuf pavés de neurones, et trois pavés de routage par pavé de neurone. En particulier, le réseau est constitué de blocs deux par deux comportant chacun un pavé de neurone, qui dans l’exemple de la figure 5A est disposé comme pavé inférieur gauche de chaque bloc deux par deux, et les trois pavés restant de chaque bloc deux par deux sont les pavés de routage. Dans certains modes de réalisation, chaque pavé de neurone et chaque pavé de routage comporte un ensemble d’entrées et de sorties sur chacun de ses côtés. Par exemple, chacun des pavés de neurones et chacun des pavés de routage comporte une ou plusieurs pistes d’entrée couplées à son ou ses pavés de neurones ou de routage voisins dans les directions de rangées et de colonnes, et une ou plusieurs pistes de sortie couplées à son ou ses pavés de neurones ou de routage voisins dans les directions de rangées et de colonnes. Ainsi, en programmant les cellules mémoires 302 (non illustrées en figure 5A) dans chaque pavé de routage, les pistes de sortie de chaque neurone peuvent être couplées à une ou plusieurs pistes d’entrée d’un ou plusieurs autres neurones. Des pistes d’entrée et de sortie externes du réseau neuronal 500 sont par exemple couplées à des entrées et des sorties respectivement d’un ou plusieurs des pavés de routage et/ou de neurones. Par exemple, comme on va le décrire plus en détail dans la suite en faisant référence à la figure 12, dans certains modes de réalisation un ou plusieurs des pavés de routage et/ou de neurones peuvent comporter une matrice mémoire comportant une ou plusieurs rangées additionnelles pour recevoir de tels signaux d’entrée externes. Un exemple de chemin de propagation à travers le réseau neuronal 500 est illustré par une piste en trait interrompu 502 en figure 5A, par laquelle un signal d’entrée externe INPUT dans le réseau est reçu par un pavé de neurone sur le côté gauche de la matrice de pavés, et est acheminé par l’intermédiaire de deux autres pavés de neurones et par des pavés de routage intermédiaires avant de fournir un signal de sortie OUTPUT au niveau du côté droit de la matrice de pavés, le signal OUTPUT fournissant une sortie externe du réseau. Bien sûr, alors que la figure 5A illustre un exemple d’un réseau relativement petit de 6 par 6 pavés, en pratique un réseau neuronal du type représenté en figure 5A pourrait comporter un nombre quelconque de colonnes et de rangées, et comprendre des milliers ou même des millions de pavés de neurones et de routage. En outre, l’exemple de la figure 5A, dans lequel il y a trois pavés de routage par pavé de neurone, n’est simplement qu’un exemple, et dans des variantes de réalisation il pourrait y avoir un rapport différent entre le nombre de pavés de neurones et de routage. Par exemple, il pourrait y avoir des nombres égaux de pavés de neurones et de routage, les pavés de neurones étant par exemple agencés en colonnes ou en rangées, ou selon un motif en damier. Le réseau neuronal 500 comprend aussi par exemple un circuit de commande (CTRL) 504 qui est par exemple agencé pour programmer la configuration du réseau, par exemple en programmant les cellules mémoires des pavés de routage, comme on va le décrire plus en détail ci-après. La figure 5B représente un système 510 comprenant une pluralité de réseaux neuronaux 500 recevant chacun des signaux d’entrée externes par l’intermédiaire d’un bus 512, et fournissant des signaux de sortie externes par l’intermédiaire d’un bus 514. Les bus 512, 514 sont par exemple couplés à une interface d’entrée/sortie globale (G I/O INTERFACE) 515, qui par exemple reçoit des entrées globales (G_INPUTS) et fournit des sorties globales (G_OUTPUTS). Chacun des réseaux neuronaux 500 comprend par exemple, en plus d’une matrice de pavés de neurones et de routage, comme ceux de la figure 5A, une interface d’entrée 516 couplée au bus 512, et une interface de sortie 518 couplée au bus 514. Dans certains modes de réalisation, l’interface globale 515, les bus 512, 514 et les interfaces d’entrée et de sortie 516, 518 fonctionnent sur la base du protocole de représentation adresse-événement. Alors que la figure 5A est basée sur un exemple d’une matrice bidimensionnelle (2D) de pavés de neurones et de routage, dans certains modes de réalisation le réseau neuronal 500 pourrait avoir une architecture tridimensionnelle (3D) comprenant une pluralité de matrices 2D empilées. Dans une telle architecture, plutôt que d’avoir quatre ensembles de pistes d’entrée/sortie allant vers et provenant de chaque pavé de neurone et de routage, on pourrait avoir cinq ou six ensembles, comprenant, en plus des ensembles nord, est, sud et ouest, un ensemble vers le haut communiquant avec un pavé de routage ou de neurone dans une couche située au-dessus (si elle est présente), et/ou un ensemble vers le bas communiquant avec un pavé de routage dans une couche en dessous (si elle est présente). Par exemple, dans le cas d’une première couche 2D ayant l’agencement des pavés de neurones et de routage de la figure 5A, une couche 2D adjacente formée sur la première couche 2D, et/ou une couche 2D adjacente formée sous la première couche 2D, pourraient par exemple être constituées seulement de pavés de routage. En variante, la ou les couches 2D adjacentes pourraient être formées de manière à comporter des pavés de neurones et de routage avec un motif similaire à celui de la figure 5A, mais décalé, par exemple de telle sorte que les pavés de neurones soient disposés au-dessus des pavés de routage de la première couche 2D qui sont dans des rangées et des colonnes sans pavés de neurones. Ces pavés de routage sont indiqués par la référence (N) en figure 5A. La figure 6 représente schématiquement le pavé de routage 206 de la figure 5A plus en détail selon un exemple de réalisation dans lequel il comprend quatre ensembles d’entrées et de sorties, les ensembles étant couplés respectivement à des pavés voisins de la colonne et de la rangée. Dans la présente description, les ensembles de connexions au pavé voisin au-dessus, au pavé voisin à droite, au pavé voisin en dessous, et au pavé voisin à gauche dans le réseau seront appelés ensembles de connexions nord, est, sud et ouest. Dans l’exemple de la figure 6, chacun des ensembles de connexions nord, est, sud et ouest est constitué d’une seule piste d’entrée Ni, Ei, Si et Wi respectivement, et d’une seule piste de sortie No, Eo, So et Wo respectivement. En outre, la matrice de cellules mémoires 302 dans l’exemple de la figure 6 est une matrice 4 par 4, chaque cellule mémoire étant représentée par un point. Chacune des quatre entrées Ni, Ei, Si et Wi est couplée, par des cellules mémoires correspondantes 302, à chacune de quatre pistes de colonnes 308. Chacune des quatre pistes de colonnes 308 est couplée à un circuit comparateur 310 correspondant de la colonne, le circuit comparateur 310 des quatre colonnes fournissant des signaux à la piste de sortie respective No, Eo, So et Wo. Ainsi, dans l’exemple de la figure 6, en programmant chacune des cellules mémoires 302, il est possible de router des signaux d’entrée présents sur l’une quelconque des pistes d’entrée Ni, Ei, Si et Wi, vers une ou plusieurs des pistes de sortie No, Eo, So et Wo. L’exemple de la figure 6 est basé sur une matrice de cellules mémoires ayant un nombre de rangées égal au nombre de pistes d’entrée du pavé de routage, et un nombre de colonnes égal au nombre de pistes de sortie du pavé de routage. Cette solution permet ainsi une versatilité maximum des possibilités de routage, en d’autres termes, que les signaux puissent être routés de manière indépendante. Comme cela sera expliqué plus en détail ci-après, dans d’autres modes de réalisation moins versatiles dans lesquels un partage de chemins est mis en œuvre entre entrées et/ou sorties, les choix de routage pour certains signaux dépendent, dans certaines limites, du routage d’autres signaux. Des colonnes des pavés de routage peuvent être partagées par plus qu’une seule piste d’entrée, et ainsi par une pluralité de neurones sources. En effet, il y a une probabilité relativement faible que deux neurones sources déchargent en même temps, ce qui amènerait un événement de décharge à en cacher un autre. Toutefois, puisque le nombre de neurones sources partageant des colonnes augmente, le risque d’événements de décharge simultanés augmente, et il pourrait être souhaitable d’augmenter le nombre de pistes d’entrée et/ou de pistes de sortie de chaque pavé de routage afin de prendre en charge un plus grand nombre de chemins de transmission. En effet, cela va réduire le partage de chemins et apporter de plus grandes possibilités de configuration. L’approche de la figure 6 pourrait être étendue à un plus grand nombre de pistes d’entrée et de pistes de sortie. Par exemple, dans le cas de deux pistes d’entrée et de deux pistes de sortie par ensemble nord, est, sud et ouest, il y aurait huit rangées et huit colonnes, et ainsi une matrice de 64 cellules mémoires. Dans le cas de quatre pistes d’entrée et de quatre pistes de sortie par ensemble nord, est, sud et ouest, il y aurait 16 rangées et 16 colonnes, et ainsi une matrice de 256 cellules mémoires. Pour réduire dans une certaine mesure la taille de la matrice de cellules mémoires dans chaque pavé de routage tout en assurant un nombre relativement élevé de pistes d’entrée et/ou de sortie, des pistes d’entrée et/ou des pistes de sortie communes peuvent être prévues, comme on va le décrire maintenant plus en détail en faisant référence aux figures 7 et 8. La figure 7 représente schématiquement le pavé de routage 206 de la figure 5A plus en détail selon un autre exemple de réalisation. Dans l’exemple de la figure 7, chacun des ensembles de pistes d’entrée et de sortie du pavé est constitué de quatre pistes d’entrée, référencées respectivement Ni1 à Ni4, Ei1 à Ei4, Si1 à Si4 et Wi1 à Wi4, et de quatre pistes de sortie Q1 à Q4, qui sont communes entre les ensembles. Les 16 pistes d’entrée sont couplées, par 16 rangées correspondantes des cellules mémoires 302, à chacune de quatre pistes de colonnes 308, chacune comprenant un circuit comparateur 310. Les circuits comparateurs couplés aux quatre pistes colonnes génèrent respectivement les signaux Q1, Q2, Q3 et Q4. Ainsi, dans l’exemple de la figure 7, en programmant chacune des cellules mémoires 302, il est possible de router des signaux d’entrée présents au niveau de l’une quelconque des 16 pistes d’entrée vers une ou plusieurs des pistes de sortie communes Q1, Q2, Q3 et Q4. En prévoyant les pistes de sortie communes Q1, Q2, Q3 et Q4, la matrice de cellules mémoires 302 peut être nettement plus petite que si les sorties étaient programmables individuellement pour chaque ensemble, comme dans l’exemple de la figure 6, ce qui pourrait nécessiter 256 cellules mémoires, plutôt que 64 cellules mémoires, et le nombre de circuits comparateurs 310 peut aussi être réduit de 16 à 12. Si, par exemple, on souhaite seulement router une piste d’entrée dans l’une ou certaines des directions nord, est, sud et ouest, les cellules mémoires des pavés de neurones ou de routage voisins sont par exemple programmées en conséquence pour atteindre ce résultat. La figure 8 représente schématiquement le pavé de routage 206 de la figure 5A plus en détail selon encore un autre exemple de réalisation. Dans l’exemple de la figure 8, chacun des ensembles de pistes d’entrée et de sortie du pavé est constitué de quatre pistes d’entrée référencées respectivement Ni1 à Ni4, Ei1 à Ei4, Si1 à Si4 et Wi1 à Wi4, et de quatre pistes de sortie, référencées respectivement No1 à No4, Eo1 à Eo4, So1 à So4 et Wo1 à Wo4. Toutefois, les 16 pistes d’entrée sont par exemple combinées, par quatre portes OU à 4 entrées, 801-1 à 801-4, sur quatre pistes. Par exemple, dans certains modes de réalisation, la porte OU 801-1 combine les entrées Ni1, Ei1, Si1 et Wi1, la porte OU 801-2 combine les entrées Ni2, Ei2, Si2 et Wi2, la porte OU 801-3 combine les entrées Ni3, Ei3, Si3 et Wi3, et la porte OU 801-4 combine les entrées Ni4, Ei4, Si4 et Wi4. En variante, la porte OU 801-1 pourrait combiner les quatre entrées nord Ni1 à Ni4, la porte OU 801-2 pourrait combiner les quatre entrées est Ei1 à Ei4, la porte OU 801-3 pourrait combiner les quatre entrées sud Si1 à Si4, et la porte OU 801-4 pourrait combiner les quatre entrées ouest Wi1 à Wi4. Les sorties des quatre portes OU 801-1 à 801-4 sont couplées, par quatre rangées correspondantes des cellules mémoires 302 à chacune de 16 pistes de colonnes 308. Le pavé 206 comprend en outre quatre blocs comparateurs 802 dans l’exemple de la figure 8, dont un seul est illustré. Dans l’exemple de la figure 8, chaque bloc comparateur 802 comprend un seul circuit comparateur 310, qui est partagé par plus qu’une seule colonne de cellules mémoires 302. Par exemple, chaque bloc comparateur 802 en figure 8 est couplé à quatre colonnes et génère les quatre signaux de sortie associés à l’un des ensembles de signaux. La figure 8 illustre le bloc comparateur 802 générant l’ensemble de signaux de sortie No1, No2, No3 et No4. Trois autres blocs comparateurs 802 (non illustrés) génèrent respectivement par exemple les trois ensembles de signaux de sortie Eo1 à Eo4, So1 à So4 et Wo1 à Wo4. Chaque bloc comparateur 802 comprend par exemple des transistors connectés en diode 804, dont l’un correspondant couple chacune des pistes de colonnes d’entrée du bloc comparateur 802 à une entrée correspondante du circuit comparateur 310. Par exemple, chacun des transistors 804 est un transistor MOS à canal N ayant sa grille et son drain couplés à la piste de colonne, et sa source couplée au circuit comparateur 310. Une sortie du circuit comparateur 310 est couplée à un démultiplexeur (demultiplexer) 806, qui génère les quatre signaux de sortie No1 à No4. Le démultiplexeur 806 comporte quatre entrées de commande couplées aux quatre pistes de colonnes du bloc comparateur 802, et sélectionne l’une des pistes de sortie sur la base d’une représentation du type 1 parmi n sur les entrées de commande. En effet, lorsqu’un signal est activé sur l’une des pistes de colonnes du bloc comparateur 802, le signal va être fourni au circuit comparateur 310, et va aussi amener le démultiplexeur 806 à sélectionner la piste de sortie No1, No2, No3 ou No4 qui est associée à la piste de colonne. Bien sûr, plutôt que de partager un circuit comparateur 310 entre chaque ensemble de sorties du pavé de routage, les circuits comparateurs 310 pourraient être partagés d’une manière différente. Par exemple, un circuit comparateur 310 pourrait être utilisé pour générer la première sortie No1, Eo1, So1 et Wo1 de chaque ensemble de pistes d’entrée/sortie du pavé de routage, un autre pour générer la deuxième sortie No2, Eo2, So2 et Wo2 de chaque ensemble de pistes d’entrée/sortie du pavé de routage, etc. La figure 9 représente schématiquement le pavé de neurone source ou destination 202, 204 des figures 2 et 5 plus en détail selon un exemple de réalisation. Chaque pavé de neurone 202, 204 a par exemple une structure similaire à un pavé de routage, et comprend en particulier une ou plusieurs colonnes de cellules mémoires 902. La figure 9 illustre un exemple dans lequel le pavé de neurone comprend quatre colonnes COL1 à COL4 comprenant chacune une ou plusieurs cellules mémoires 902. Dans l’exemple de la figure 9, chaque colonne COL1 à COL4 comprend quatre cellules mémoires 902 de la sorte. Chaque cellule mémoire 902 reçoit une piste d’entrée de pavé 904 correspondante, qui est par exemple couplée à un pavé de routage (non représenté en figure 9) ou à une entrée externe du réseau neuronal. Il y a quatre pistes d’entrée 904 dans l’exemple de la figure 9, recevant respectivement des signaux d’entrée VIN à VIN . Chaque cellule mémoire 902 est par exemple agencée pour coupler sélectivement, en fonction de son état programmé, une piste de tension d’alimentation de colonne 906 (VTOP) à une piste de colonne 908. Par exemple, chaque cellule mémoire 902 mémorise un bit d’activation, et est agencée pour activer un signal sur sa piste de colonne 908 correspondante lorsqu’à la fois le bit d’activation et un signal sur la piste d’entrée 904 du circuit de routage sont activés, en d’autres termes sont dans un état amenant la conduction d’un courant par la cellule mémoire. Par exemple, les signaux de sortie provenant de toutes les cellules mémoires 902 d’une colonne sont combinés sur une seule piste de colonne 908 sous la forme d’un courant de lecture IREAD. Dans l’exemple de la figure 9, les pistes de colonnes 908 des quatre colonnes COL1 à COL4 fournissent respectivement des courants de lecture IREAD1 à IREAD4. Chaque colonne du pavé de neurone 202, 204 comprend en outre un circuit de calcul 910, qui génère par exemple, sur une piste de sortie 912 correspondante du pavé de neurone, un signal de sortie VOUT sur la base du signal de courant IREAD sur la piste de colonne 908 correspondante. Dans l’exemple de la figure 9, les quatre colonnes COL1 à COL4 du pavé de neurone 202, 204 génèrent respectivement des tensions de sortie VOUT1 à VOUT4 sur quatre pistes de sortie de pavé 912 correspondantes. Les pistes de sortie de pavé 912 sont par exemple fournies, par l’intermédiaire d’un ou plusieurs pavés de routage 206 (non représentés en figure 9), à un ou plusieurs pavés de neurones de destination (également non représentés en figure 9) et/ou à une ou plusieurs sorties externes du pavé de neurone. Chaque cellule mémoire 902 est par exemple mise en œuvre par un circuit identique ou similaire à celui des cellules mémoires 302 des pavés de routage. En fonctionnement, chaque circuit de calcul 910 accumule par exemple le signal sur sa piste de colonne correspondante sur un ou plusieurs condensateurs, jusqu’à ce que la tension aux bornes desdits un ou plusieurs condensateurs dépasse une tension de seuil, point où le circuit de calcul 910 par exemple décharge, en d’autres termes un signal de sortie est généré sur la piste de sortie 912, et la tension du condensateur est réinitialisée. La figure 10 représente schématiquement un pavé de neurone source et/ou destination 202, 204 de la figure 3 plus en détail selon un autre exemple de réalisation. Le pavé de neurone 202, 204 de la figure 10 est par exemple le même que celui de la figure 9, et sa matrice mémoire comprend une partie additionnelle 1002 de cellules mémoires 902 assurant des chemins de rétroaction. En particulier, chacune des pistes de sortie 912 du circuit de calcul 910 du pavé de neurone 202, 204 est par exemple fournie à une autre rangée 1004 correspondante de la partie additionnelle 1002 de la matrice mémoire. Chaque cellule mémoire 902 de la partie 1002 reçoit par exemple le signal VOUT1, VOUT2, VOUT3 ou VOUT4 sur la rangée correspondante, et aussi la tension d’alimentation de colonne (non représentée en figure 10), et a sa sortie couplée à l’une correspondante des pistes de colonnes 908. Ainsi, la partie additionnelle 1002 permet aux sorties du pavé de former des entrées additionnelles, aussi connues sous le nom de connexions récurrentes, vers chaque colonne du circuit de neurone. Dans les exemples du circuit de neurone 202, 204 des figures 9 et 10, le signal vu par chaque circuit de calcul 910 va correspondre à l’addition de chacun des signaux générés par chaque cellule mémoire 902, et le circuit de calcul 910 accumule par exemple les signaux présents sur la piste de colonne 908 correspondante en tant que signaux positifs. Dans certains modes de réalisation, il peut en plus y avoir une ou plusieurs entrées d’inhibition allant vers chaque circuit de calcul 910, correspondant à des signaux qui sont soustraits des signaux accumulés, comme on va le décrire maintenant plus en détail en faisant référence à la figure 11. La figure 11 représente schématiquement le pavé de neurone 202, 204 plus en détail selon encore un autre exemple de réalisation. Le mode de réalisation de la figure 11 comprend deux colonnes COL1, COL2, qui sont similaires aux colonnes COL1 et COL2 de la figure 9, excepté que chaque colonne comprend une paire de pistes de colonnes 908, 908’. Chaque piste de colonne 908 est couplée à une entrée positive du circuit de calcul 910 de sa colonne correspondante, tandis que chaque piste de colonne 908’ est couplée à une entrée négative du circuit de calcul 910 de sa colonne correspondante. Le circuit de calcul 910 génère par exemple le signal de sortie sur sa piste de sortie 912 en fonction des signaux sur chacune des pistes de colonne 908, 908’ correspondantes. La figure 12 représente schématiquement un pavé de neurone 1200 plus en détail selon encore un autre exemple de réalisation. Dans l’exemple de la figure 12, le pavé de neurone 1200 comprend deux colonnes de façon similaire à l’exemple de la figure 11 dans lequel il y a deux pistes de colonne 908, 908’ par colonne couplées respectivement à des entrées positive et négative du circuit de calcul 910 de chaque colonne. Les cellules mémoires 902 de chaque colonne sont couplées à une piste d’entrée 904 recevant une tension d’entrée INPUT, qui est par exemple une entrée provenant d’une source externe du réseau neuronal, comme par exemple provenant d’un capteur basé sur des événements, et à quatre autres pistes d’entrée Ni, Ei, Si et Wi correspondant respectivement à des entrées nord, est, sud et ouest du pavé de neurone 1200. En outre, comme dans l’exemple de la figure 10, les tensions de sortie VOUT1 et VOUT2 des circuits de calcul 910 des colonnes sont renvoyées vers deux rangées respectives de cellules mémoires 902 de chaque piste de colonne 908, 908’ de chaque colonne. La figure 12 représente aussi un exemple de l’état binaire programmé de chaque cellule mémoire 902, avec un rectangle en trait plein représentant des cellules mémoires 902 programmées avec un état résistif bas, ou avec un état programmé à l’état haut dans le cas d’une mise en œuvre SRAM des cellules mémoires 902, tandis qu’un rectangle vide représente des cellules mémoires 902 programmées avec un état résistif haut, ou avec un état programmé à l’état bas dans le cas d’une mise en œuvre SRAM des cellules mémoires 902. Les cellules mémoires 902 du signal d’entrée INPUT et les tensions de rétroaction VOUT1, VOUT2 sont programmées de telle sorte que ces signaux vont être appliqués aux pistes de colonnes 908, et les cellules mémoires des entrées Ni, Ei, Si et Wi sont par exemple programmées de telle sorte que ces signaux vont être appliqués aux pistes de colonnes 908’. Ainsi, en fonctionnement, les entrées Ni, Ei, Si et Wi provenant des pavés de neurones voisins vont agir comme des entrées d’inhibition, et lorsque le signal d’entrée INPUT est activé pendant que les entrées Ni, Ei, Si et Wi sont relativement basses, la rétroaction positive va avoir tendance à amener la sortie de colonne à rester à l’état haut. Ce type de fonctionnement peut par exemple être utilisé pour mettre en œuvre une fonction du type le gagnant prend tout parmi un groupe de pavés de neurones. La figure 13 représente schématiquement une sous-matrice 1300 de neuf pavés selon un exemple de réalisation, et illustre un exemple d’un schéma de programmation pour programmer les cellules mémoires de la matrice mémoire d’un pavé de neurone ou de routage. La figure 13 illustre un exemple d’une matrice de pavés trois par trois, et de la sélection d’un pavé central 1200 pour sa programmation. Par exemple, un décodeur de rangée 1302 commande des pistes de rangées R1 à R3, chaque piste de rangée étant couplée aux cellules mémoires d’une rangée correspondante, et un décodeur de colonne 1304 commande des pistes de colonnes C1 à C3, chaque piste de colonne étant couplée aux cellules mémoires d’une colonne correspondante. Chaque pavé comprend par exemple une porte ET 1306 ayant ses entrées couplées respectivement aux pistes de rangée et de colonne correspondantes, de sorte que la porte ET produit en sortie un état haut lorsque les signaux à la fois sur la piste de colonne et la piste de rangée correspondante sont activés à l’état haut. La sortie de la porte ET 1306 est utilisée pour activer la programmation du pavé, par exemple en contrôlant un ou plusieurs multiplexeurs ou démultiplexeurs 1308, comme on va le décrire plus en détail ci-après. La figure 14 représente schématiquement le circuit de calcul 910 d’un pavé de neurone 202, 204 plus en détail selon un exemple de réalisation. Le circuit de calcul 910 comprend par exemple un tampon de courant (CURRENT BUFFER) 1402, un soma de neurone (NEURON SOMA) 1404, et un extenseur d’impulsion (PULSE EXTENDER) 1406. Le tampon de courant 1402 reçoit sur son entrée le signal IREAD provenant de la piste de colonne 908, et a sa sortie couplée à l’entrée du soma de neurone 1404, qui à son tour a sa sortie couplée à l’entrée de l’extenseur d’impulsion 1406. L’extenseur d’impulsion génère le signal de sortie VOUT du circuit de calcul 910. La figure 15 représente schématiquement le circuit comparateur 310 du pavé de routage 206 plus en détail selon un exemple de réalisation. Le circuit comparateur 310 est par exemple identique au circuit de calcul 910, excepté que le soma de neurone 1404 est remplacé par un comparateur de courant (CURRENT COMPARATOR) 1502. Vu les similarités entre le circuit de calcul 910 d’un pavé de neurone et le circuit comparateur 310 d’un pavé de routage, dans certains modes de réalisation les pavés de routage et les pavés de neurones sont mis en œuvre par un même circuit, comprenant à la fois le soma de neurone 1404 et le comparateur de courant 1502, qui peuvent être activés sélectivement comme on va le décrire maintenant en faisant référence à la figure 16. La figure 16 représente schématiquement un circuit de calcul/comparateur générique 1600 capable de mettre en œuvre une partie de la colonne de soit un pavé de neurone soit un pavé de routage. Le circuit 1600 comprend le tampon de courant 1402, à la fois le soma de neurone 1404 et le comparateur de courant 1502, et l’extenseur d’impulsion 1406. Un démultiplexeur 1602 couple par exemple la sortie du tampon de courant 1402 soit à l’entrée du soma de neurone 1404, soit à l’entrée du comparateur de courant 1502. Un multiplexeur 1604 couple par exemple soit la sortie du soma de neurone 1404, soit la sortie du comparateur de courant 1502, à l’entrée de l’extenseur d’impulsion 1406. Le démultiplexeur 1602 et le multiplexeur 1604 sont par exemple contrôlés par un signal de configuration CONFIG, qui configure le circuit soit comme un circuit de calcul avec des signaux qui passent en direction et en provenance du soma de neurone 1404, soit comme un circuit comparateur avec des signaux qui passent en direction et en provenance du comparateur de courant 1502. Le signal de configuration CONFIG est par exemple généré par le circuit de commande 504 de la figure 5A. On va maintenant décrire plus en détail des exemples de mise en œuvre du circuit de calcul 910 et du circuit comparateur 310 en faisant référence aux figures 17 à 25. Bien sûr, ces mises en œuvre ne sont que des exemples et il apparaîtra clairement à la personne du métier que de nombreuses variantes seraient possibles. La figure 17 représente schématiquement une colonne 1700 du pavé de neurone 202, 204 plus en détail selon un exemple de réalisation. La colonne 1700 comprend des cellules mémoires 902, dont trois sont représentées en figure 17. Dans l’exemple de la figure 17, la piste d’alimentation de colonne 906 est couplée au rail d’alimentation VTOP par l’intermédiaire d’un multiplexeur 1702, qui reçoit, au niveau d’une deuxième entrée, une tension de programmation VPROG1. La tension de programmation VPROG1 est par exemple générée par le circuit de commande 504 de la figure 5A. La piste de colonne 908 est couplée au circuit de calcul 910 par l’intermédiaire d’un démultiplexeur 1704, qui couple la piste de colonne 908 à l’entrée du tampon de courant 1402 du circuit de calcul 110, ou à une tension de programmation VPROG2. En effet, les tensions de programmation VPROG1 et VPROG2 ensemble permettent d’appliquer un signal de courant ou de tension d’une polarité ou de l’autre à une cellule mémoire sélectionnée 902. Dans certains modes de réalisation, l’une des tensions de programmation VPROG1, VPROG2 est la tension de masse. Le multiplexeur 1702 et le démultiplexeur 1704 sont contrôlés par un signal d’activation d’écriture WE généré, par exemple, par le circuit de commande 504 de la figure 5A, ou par la porte ET 1306 de la figure 13. Le signal d’activation d’écriture WE est par exemple utilisé pour la programmation des cellules mémoires 902. Par exemple, le signal d’activation d’écriture WE est utilisé pour contrôler le multiplexeur 1702 et le démultiplexeur 1704 de telle sorte que pendant un mode de programmation, la tension de programmation VPROG est fournie sur la piste d’alimentation de colonne 906, la piste de colonne 908 est couplée à la masse, et l’un des signaux d’entrée VIN à VIN est activé pour sélectionner la cellule mémoire à programmer. La programmation de cellules mémoires volatiles ou non volatiles en utilisant des tensions est une chose bien connue de la personne du métier, et ne sera pas décrite plus en détail ici. Dans certains modes de réalisation, le tampon de courant 1402 reçoit en outre une tension de référence Vref et une tension de polarisation Vbias, et fournit une tension Vw. La sortie du tampon de courant 1402 est couplée à l’entrée d’une synapse DPI (intégrateur à paire différentielle) superposée 1706, qui reçoit aussi la tension de sortie Vp d’une porte NON ET 1708. La porte NON ET 1708 réalise une fonction NON ET sur les signaux d’entrée VIN à VIN reçus par les cellules mémoires 902. La synapse 1706 reçoit aussi par exemple des tensions Vthr est Vtau, décrites plus en détail ci-après. Une tension de sortie Vi de la synapse 1706 est fournie au soma de neurone 1404, qui reçoit aussi par exemple des tensions Vlk et Vrp, décrites plus en détail ci-après. La tension de sortie Vout du soma de neurone 1404 est par exemple fournie à l’extenseur d’impulsion 1406, qui reçoit aussi par exemple une tension Vpw, décrite plus en détail ci-après. La figure 18 représente schématiquement une colonne 1800 du pavé de routage 206 plus en détail selon un exemple de réalisation. La colonne 1800 du pavé de routage 206 est similaire à la colonne 1700 du pavé de neurone 202, 204, et comprend en particulier un multiplexeur 1802 et un démultiplexeur 1804 permettant de programmer les cellules mémoires 302 de manière similaire aux cellules mémoires 902 comme décrit précédemment en relation avec la figure 17. Le circuit comparateur 310 est aussi par exemple similaire au circuit de calcul 910, excepté que les éléments 1706, 1708 et 1404 sont remplacés par le comparateur 1502, qui reçoit par exemple, en plus de la tension Vw générée par le tampon de courant 1402, un signal d’entrée Iref, correspondant à un courant de référence. La figure 19 représente schématiquement un exemple de circuit 1900 mettant en œuvre les multiplexeurs et les démultiplexeurs 1702, 1704 de la figure 17 et 1802, 1804 de la figure 18. Dans le cas des multiplexeurs 1702, 1802, les nœuds référencés A et B en figure 19 constituent les nœuds d’entrée et le nœud référencé Z constitue le nœud de sortie. Dans le cas des démultiplexeurs 1704, 1804, les nœuds référencés A et B en figure 19 constituent les nœuds de sortie et le nœud Z constitue le nœud d’entrée. Le nœud A est couplé au nœud Z par les nœuds de conduction principaux d’une paire de transistors 1902 et 1904 montés en parallèle, et de manière similaire le nœud B est couplé au nœud Z par les nœuds de conduction principaux d’une paire de transistors 1906 et 1908 montés en parallèle. Les transistors 1902 et 1908 ont par exemple leurs grilles couplées à l’entrée de commande recevant le signal d’activation d’écriture WE. Le signal WE commande aussi les grilles des transistors 1904 et 1906 par l’intermédiaire d’un inverseur 1910. Les transistors 1902 et 1906 sont par exemple des transistors MOS à canal P (PMOS) et les transistors 1904 et 1908 sont par exemple des transistors MOS à canal N (NMOS), les nœuds de conduction principaux de ces transistors étant leurs sources/drains. La figure 20 représente schématiquement le tampon de courant 1402 des colonnes de neurone et de routage des figures 17 et 18 plus en détail selon un exemple de réalisation. L’entrée du tampon de courant 1402, qui reçoit le signal de courant IREAD, est couplée à un nœud 2002, qui à son tour est couplé au rail de masse par l’intermédiaire des nœuds de conduction principaux d’un transistor 2004 et au rail de tension d’alimentation VDD par l’intermédiaire des nœuds de conduction principaux d’un transistor 2006. Le transistor 2006 est par exemple un transistor PMOS et le transistor 2004 est par exemple un transistor NMOS. Le transistor 2006 reçoit sur son nœud de grille la tension de polarisation Vbias. Le transistor 2004 a sa grille couplée à la sortie d’un amplificateur opérationnel 2008, qui a son entrée positive couplée au nœud 2002, et son entrée négative couplée de manière à recevoir la tension de référence Vref. Le tampon de courant 1402 sert à convertir le signal de courant IREAD en la tension Vw à la sortie de l’amplificateur opérationnel 2008, et plus le courant IREAD est élevé, plus la tension Vw est élevée. Par exemple, le signal de tension Vw est basé sur le logarithme du courant IREAD. La figure 21 représente schématiquement un demi-circuit NON ET mettant en œuvre la porte NON ET 1708 de la colonne de neurone 1700 de la figure 17 plus en détail selon un exemple de réalisation de la présente description. La demi-porte NON ET 1708 comprend par exemple un transistor 2102 couplant, par ses nœuds de conduction principaux, un nœud 2104 au rail de masse, et un agencement en parallèle de K transistors couplant, par leurs nœuds de conduction principaux, le nœud 2104 au rail d’alimentation VDD, trois transistors de la sorte 2106, 2108 et 2110 étant représentés en figure 21. Le transistor 2102 est par exemple un transistor NMOS, et les K transistors 2106 à 2110 sont par exemple des transistors PMOS. Les transistors 2106, 2108 et 2110 sont respectivement contrôlés sur leurs grilles par les tensions VIN , VIN et VIN . Une connexion en série d’inverseurs 2114 et 2116 est couplée au nœud 2104 et génère une tension de sortie Vp de la demi-porte NON ET 1708. La figure 22 représente schématiquement la synapse DPI superposée 1706 de la colonne de neurone de la figure 17 plus en détail selon un exemple de réalisation. La tension Vp générée par la porte NON ET 1708 est par exemple fournie à la grille d’un transistor 2202 et la tension Vw générée par le tampon de courant 1402 est par exemple fournie à la grille d’un transistor 2204. Les transistors 2202 et 2204 sont par exemple couplés en série par leurs nœuds de conduction principaux entre un nœud 2206 et le rail de masse. Le nœud 2206 est en outre couplé au rail d’alimentation VDD par l’intermédiaire des nœuds de conduction principaux d’un transistor 2208 recevant sur sa grille la tension Vthr, et par l’intermédiaire de la connexion en série, par leurs nœuds de conduction principaux, de transistors 2210 et 2212. Le transistor 2210 est contrôlé au niveau de sa grille par la tension Vtau. Les transistors 2202, 2204 et 2208 sont par exemple des transistors NMOS, et le transistor 2210 est par exemple un transistor PMOS. La grille du transistor 2212 est par exemple couplée à un nœud intermédiaire 2214 entre les transistors 2210 et 2212, qui est aussi par exemple la source du transistor 2212. Le nœud 2214 est par exemple couplé à la masse par l’intermédiaire d’un condensateur 2216, qui dans l’exemple de la figure 22 est mis en mis en œuvre par la grille d’un transistor MOS. Le nœud 2214 fournit aussi par exemple une tension de sortie Vi de la synapse DPI superposée 1706. Les tensions Vthr et Vtau sont par exemple des tensions en courant continu, DC, fixes qui règlent un paramètre du modèle de colonne mise en œuvre par la colonne de neurone, mais elles pourraient varier dans certains modes de réalisation pour ajuster le modèle. En fonctionnement, la tension Vi à la sortie de la synapse DPI superposée 1706 diminue par exemple à chaque impulsion de la tension d’entrée Vw provenant du tampon de courant 1402. En effet, pour chaque impulsion d’entrée sur la piste de colonne, la tension Vp va passer à l’état haut, et un courant qui est une fonction exponentielle de la polarisation en tension Vw provenant du tampon de courant 1402 (et aussi de la tension de polarisation Vthr), va s’écouler à partir du condensateur 2216 vers le rail de masse. Ainsi, chaque impulsion d’entrée va provoquer une diminution de la tension Vi. Le condensateur 2216 est aussi couplé au rail VDD par l’intermédiaire du transistor 2210, la tension de polarisation Vtau réglant la vitesse avec laquelle le condensateur va se charger de nouveau en l’absence d’impulsions d’entrée. En outre, lorsque la tension Vi descend à un certain niveau, le transistor 2212 va être rendu conducteur, ce qui provoque une augmentation du courant d’entrée dans le soma de neurone 1404. La figure 23 représente schématiquement le soma de neurone 1404 de la colonne de neurone de la figure 17 plus en détail selon un exemple de réalisation. Le soma de neurone 1404 comprend par exemple un transistor 2302 couplé par ses nœuds de conduction principaux entre le rail de tension d’alimentation VDD et un nœud 2304, et recevant sur sa grille la tension Vi générée par la synapse DPI superposée 1706. Le nœud 2304 est couplé au rail de masse par les nœuds de conduction principaux d’un transistor 2306, recevant sur sa grille la tension d’entrée Vlk. Le nœud 2304 est en outre couplé au rail d’alimentation VDD par l’intermédiaire d’un condensateur 2308, constitué par exemple par la grille d’un transistor MOS, et par l’intermédiaire des nœuds de conduction principaux d’un transistor 2310. Le nœud 2304 est en outre couplé au rail de masse par l’intermédiaire des nœuds de conduction principaux d’un transistor 2312. En outre, un inverseur 2314 a son entrée couplée au nœud 2304, et sa sortie couplée à un autre nœud 2316. Le nœud 2316 est par exemple couplé à la grille du transistor 2310, à la grille d’un autre transistor 2318, et à l’entrée d’un inverseur 2320, qui fournit, sur sa sortie, une tension de sortie Vout du soma de neurone 1404. Les transistors 2306 et 2324 sont par exemple des transistors NMOS, et les transistors 2302, 2310, 2312 et 2318 sont par exemple des transistors PMOS. Le transistor 2318 est couplé par ses nœuds de conduction principaux entre le rail d’alimentation VDD et un autre nœud 2322, qui à son tour est couplé au rail de masse par l’intermédiaire des nœuds de conduction principaux d’un transistor 2324, à la grille du transistor 2312, et au rail d’alimentation VDD par un condensateur 2326, qui est par exemple formé par la grille d’un transistor MOS. La grille du transistor 2324 reçoit par exemple la tension Vrp. En fonctionnement, la charge stockée par le condensateur 2308 au niveau du nœud 2304 du soma de neurone 1404 va augmenter en fonction de la tension d’entrée Vi, et va être réduite par un courant conduit par le transistor 2306 en fonction du signal Vlk, qui est par exemple une tension de polarisation fixe. Si la tension sur le nœud 2304 dépasse le niveau de seuil de l’inverseur 2314, alors le soma de neurone 1404 va générer une impulsion de sortie rapide au niveau de Vout, et aussi charger le condensateur 2326, qui à son tour active le transistor 2312, qui réinitialise la tension sur le nœud 2304. La durée de la période de réinitialisation va dépendre de la tension de polarisation Vrp, qui amène le transistor 2324 à décharger le condensateur 2326. Par exemple, pour une tension d’alimentation VDD d’environ 1,2 V, les tensions Vlk et Vrp sont par exemple comprises entre 200 et 500 mV, de sorte que les transistors 2306 et 2324 fonctionnent dans le mode en dessous du seuil. La figure 24 représente schématiquement le comparateur de courant 1502 de la colonne de routage de la figure 18 plus en détail selon un exemple de réalisation. La tension Vw générée par le tampon de courant 1402 est par exemple fournie à la grille d’un transistor 2402 couplé par ses nœuds de conduction principaux entre un nœud 2403 et le rail de masse. Le nœud 2403 est à son tour couplé à un miroir de courant 2404. Le miroir de courant 2404 est par exemple formé par un transistor 2406 couplé par ses nœuds de conduction principaux entre le nœud 2403 et le rail d’alimentation VDD, et par un transistor 2408 couplé par ses nœuds de conduction principaux entre le rail d’alimentation VDD et un autre nœud 2410. Les grilles des transistors 2406, 2408 sont par exemple couplées entre elles et au nœud 2403. Le nœud 2410 est en outre couplé à un autre miroir de courant 2412. Le miroir de courant 2412 est par exemple formé par un transistor 2414 couplé par ses nœuds de conduction principaux entre le nœud 2410 et le rail de masse, et par un transistor 2416 ayant l’un de ses nœuds de conduction principaux couplé au rail de masse, qui reçoit un courant Iref. Les transistors 2402, 2414 et 2416 sont par exemple des transistors NMOS, et les transistors 2406 et 2408 sont par exemple des transistors PMOS. Les grilles des transistors 2414, 2416 sont par exemple couplées entre elles et au nœud 2410. Le nœud 2410 est en outre couplé à l’entrée d’un inverseur 2420, dont la sortie est couplée à l’entrée d’un autre inverseur 2422, dont la sortie fournit la tension de sortie Vout du comparateur de courant 1502. En fonctionnement, un courant proportionnel au courant de lecture IREAD est généré dans le transistor 2402 en fonction du niveau de tension Vw, et est comparé au courant de référence Iref. Si le courant de référence Iref est dépassé, une impulsion de tension va être générée sur le signal de sortie Vout. La largeur de l’impulsion est par exemple égale à, ou sensiblement égale à, la durée pendant laquelle le courant IREAD est supérieur au courant Iref. La figure 25 représente schématiquement l’extenseur d’impulsion 1406 des colonnes de neurones et de routage des figures 17 et 18 plus en détail selon un exemple de réalisation. L’extenseur d’impulsion 1406 comprend par exemple un transistor 2502 couplé par ses nœuds conductions principaux entre un nœud 2504 et le rail de masse. Le nœud 2504 est en outre couplé au rail d’alimentation VDD par l’intermédiaire d’un transistor 2506 et d’un transistor 2508, et au rail de masse par l’intermédiaire d’un condensateur 2510, qui dans l’exemple de la figure 25 est formé par la grille d’un transistor MOS. La grille du transistor 2502 reçoit la tension Vout générée par le comparateur de courant 1502 dans le cas de la colonne de routage de la figure 18, ou la tension Vout générée par le soma de neurone 1404 dans le cas de la colonne de neurone de la figure 17. La grille du transistor 2506 reçoit la tension Vpw, qui est par exemple une tension de polarisation DC fixe. Le nœud 2504 est en outre couplé à l’entrée d’un inverseur 2512, dont la sortie est couplée à la grille du transistor 2508, et à l’entrée d’un autre inverseur 2514. La sortie de l’inverseur 2514 est par exemple couplée à l’entrée d’un autre inverseur 2516, qui fournit sur sa sortie la tension de sortie VOUT de l’extenseur d’impulsion 1406. Le transistor 2502 est par exemple un transistor NMOS, et les transistors 2506 et 2508 sont par exemple des transistors PMOS. En fonctionnement, une impulsion de tension du signal Vout à l’entrée du transistor 2502 provoque par exemple la décharge du condensateur 2510, et provoque ainsi le passage à l’état haut de la tension de sortie VOUT pendant une durée allant jusqu’à ce que la tension sur le nœud 2504, qui est chargé par le transistor 2506, atteigne de nouveau le niveau de seuil de l’inverseur 2512. Un avantage des modes de réalisation décrits ici est que, en prévoyant des pavés de routage pour des pavés de neurones d’interconnexion dans un réseau neuronal, les pavés de routage comprenant des cellules mémoires pour programmer des interconnexions, ces cellules mémoires peuvent être réparties spatialement dans le tissu de calcul et offrent la possibilité d’une connectivité locale dense entre les neurones, rendant cette architecture particulièrement appropriée pour prendre en charge des systèmes informatiques d’inspiration biologique. En outre, il est possible d’obtenir des possibilités relativement élevées en nombres d’entrées et de sorties, un niveau de possibilités de configuration relativement élevé et une consommation d’énergie statique relativement faible. Divers modes de réalisation et variantes ont été décrits. La personne du métier comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d’autres variantes apparaitront à la personne du métier. Circuit de routage pour router des signaux entre des circuits de neurones d’un réseau neuronal artificiel, le circuit de routage comprenant : - une première cellule mémoire (302) ayant une entrée couplée à une première piste d’entrée (304) du circuit de routage et une sortie couplée à une première piste de colonne (308) ; - une deuxième cellule mémoire (302) ayant une entrée couplée à une deuxième piste d’entrée (304) du circuit de routage et une sortie couplée à la première piste de colonne (308) ; et - un premier circuit comparateur (310) agencé pour comparer un signal (IREAD1) présent sur la première piste de colonne (308) à un niveau de référence, et pour activer sélectivement un signal (VOUT1) sur une première piste de sortie (312) du circuit de routage en fonction de la comparaison. Circuit de routage selon la revendication 1, comprenant en outre : - une troisième cellule mémoire (302) ayant une entrée couplée à la première piste d’entrée (304) du circuit de routage et une sortie couplée à une deuxième piste de colonne (308) ; - une quatrième cellule mémoire (302) ayant une entrée couplée à la deuxième piste d’entrée (304) du circuit de routage et une sortie couplée à la deuxième piste de colonne (308) ; et - un deuxième circuit comparateur (310) agencé pour comparer un signal (IREAD2) présent sur la deuxième piste de colonne (308) à un niveau de référence, et pour activer sélectivement un signal (VOUT2) sur une deuxième piste de sortie (312) du circuit de routage en fonction de la comparaison. Circuit de routage selon la revendication 1 ou 2, dans lequel : - la première cellule mémoire (302) est agencée pour mémoriser un premier bit d’activation, la première cellule mémoire (302) étant agencée pour activer un signal sur la première piste de colonne (308) lorsque le premier bit d’activation et un signal sur la première piste d’entrée (304) du circuit de routage sont activés ; - la deuxième cellule mémoire (302) est agencée pour mémoriser un deuxième bit d’activation, la deuxième cellule mémoire (302) étant agencée pour activer un signal sur la première piste de colonne (308) lorsque le deuxième bit d’activation et un signal sur la deuxième piste d’entrée (304) du circuit de routage sont activés. Circuit de routage selon la revendication 3, dans lequel les première et deuxième cellules mémoires (302) sont agencées pour activer des signaux de courant sur la première piste de colonne (308). Circuit de routage selon l’une quelconque des revendications 1 à 4, dans lequel les première et deuxième cellules mémoires comprennent des éléments de stockage non volatils, comme des éléments mémoires résistifs. Réseau neuronal artificiel comprenant : - une pluralité de circuits de neurones (202, 204, N), chaque circuit de neurone comportant au moins une piste d’entrée et au moins une piste de sortie ; et - une pluralité de circuits de routage selon l’une quelconque des revendications 1 à 5, chaque circuit de routage couplant une ou plusieurs pistes de sortie d’un ou plusieurs des circuits de neurones à une ou plusieurs pistes d’entrée d’un ou plusieurs des circuits de neurones. Réseau neuronal artificiel selon la revendication 6, dans lequel chaque circuit de neurone (202, 204, N) comprend : - une première cellule mémoire (902) ayant une entrée couplée à une première piste d’entrée (904) du circuit de neurone et une sortie couplée à une première piste de colonne (908) du circuit de neurone ; - une deuxième cellule mémoire (902) ayant une entrée couplée à une deuxième piste d’entrée (904) du circuit de routage et une sortie couplée à la première piste de colonne (908) du circuit de neurone ; et - un premier circuit de calcul (910) agencé pour comparer un signal (IREAD1) présent sur la première piste de colonne (908) du circuit de neurone à un niveau de référence, et pour activer sélectivement un signal (VOUT1) sur une première piste de sortie (312) du circuit de neurone en fonction de la comparaison. Réseau neuronal artificiel selon la revendication 7, comprenant en outre : - une troisième cellule mémoire (902) ayant une entrée couplée à la première piste d’entrée (904) du circuit de neurone et une sortie couplée à une deuxième piste de colonne (908) du circuit de neurone ; - une quatrième cellule mémoire (902) ayant une entrée couplée à la deuxième piste d’entrée (904) du circuit de neurone et une sortie couplée à la deuxième piste de colonne (908) ; et - un deuxième circuit de calcul (910) agencé pour comparer un signal (IREAD2) présent sur la deuxième piste de colonne (908) du circuit de neurone à un niveau de référence, et pour activer sélectivement un signal (VOUT2) sur une deuxième piste de sortie (912) du circuit de neurone en fonction de la comparaison. Réseau neuronal artificiel selon l’une quelconque des revendications 6 à 8, dans lequel la pluralité de circuits de neurones et la pluralité de circuits de routage sont formées dans une pluralité de couches d’une structure de circuit tridimensionnelle. Procédé de routage de signaux entre des circuits de neurones d’un réseau neuronal artificiel, le procédé comprenant : - programmer une première cellule mémoire (302) ayant une entrée couplée à une première piste d’entrée (304) du circuit de routage et une sortie couplée à une première piste de colonne (308) ; - programmer une deuxième cellule mémoire (302) ayant une entrée couplée à une deuxième piste d’entrée (304) du circuit de routage et une sortie couplée à la première piste de colonne (308) ; - comparer, par un premier circuit comparateur (310), un signal (IREAD1) présent sur la première piste de colonne (308) à un niveau de référence ; et - activer sélectivement un signal (VOUT1) sur une première piste de sortie (312) du circuit de routage en fonction de la comparaison.