FR 2948785 A1 20110204 FR 0955284 A 20090728 TERMINATEUR DE TRANSACTION Domaine Technique L'invention se rapporte de manière générale au domaine des systèmes en circuit(s) intégré(s), par exemple les systèmes sur une puce ou SoC (de l'anglais "System on-Chip"). Elle concerne plus particulièrement la clôture du traitement d'une transaction en cours lors de la coupure de l'alimentation d'un domaine d'alimentation dans un tel système. L'invention trouve des applications, en particulier, dans les appareils électroniques portables, tels que les téléphones portables, dans lesquels l'alimentation est assurée par une batterie en sorte qu'une gestion efficace de l'alimentation est souhaitable pour augmenter l'autonomie de l'appareil. Arrière Plan Technologique Dans les systèmes sur une puce, notamment, des modules fonctionnels dédiés au traitement de certaines fonctions du système sont interconnectés entre eux et/ou avec une unité centrale de traitement, ou CPU (de l'anglais "Central Processing Unit"), via un bus d'interconnexion. Ce dernier assure la communication d'informations de contrôle et de données, entre la CPU et les modules fonctionnels et/ou entre les modules fonctionnels directement, selon un protocole déterminé. Ce protocole peut être de type séquentiel ou de type combinatoire. Dans le premier cas, une transaction entre un module maître et un module esclave s'effectue par échange de messages, appelés requêtes et réponses. Dans le second cas, la transaction intervient par l'intermédiaire de signaux logiques, qui sont positionnés par des unités logiques à base de portes logiques ad-hoc. Afin de permettre une gestion de l'alimentation du système qui vise à limiter la consommation électrique globale, le système est organisé en domaines d'alimentation séparés et indépendants. L'alimentation électrique d'un tel domaine peut donc être coupée indépendamment des autres domaines. Chaque domaine d'alimentation comprend au moins un module fonctionnel. Le nombre de modules fonctionnels dans un domaine d'alimentation donné n'est pas limité, mais est peu élevé par rapport au nombre total de modules fonctionnels du système afin que la gestion de l'alimentation puisse être flexible. Ainsi par exemple, dans un téléphone portable, un module fonctionnel dédié à l'écoute du signal radiofréquence balise qui est émis par le réseau dans la cellule, est alimenté la plupart du temps. Inversement, un module fonctionnel dédié à la lecture et au décodage de données audio au format MP3, peut avoir son alimentation coupée pendant une grande partie du temps, dès lors que la fonction correspondante n'est pas sollicitée par l'utilisateur. On diminue ainsi la consommation statique en courant de la puce (à laquelle contribuent des courants de fuite), en sorte que l'énergie de la batterie est économisée et l'autonomie de l'appareil est augmentée. La coupure de l'alimentation pour un domaine donné est décidée par la CPU. Au moment où l'alimentation d'un module fonctionnel est coupée, il peut arriver que le module soit engagé dans une transaction avec un autre module fonctionnel, sans que la CPU en soit consciente. Cela est notamment le cas des modules esclaves, qui répondent directement à des requêtes émanant de modules maîtres. La coupure de l'alimentation d'un module fonctionnel peut alors conduire à la situation dans laquelle l'autre module fonctionnel reste dans l'attente d'une réponse qui ne viendra jamais. Si le protocole de communication n'est pas robuste vis-à-vis de ce genre de situations, cela peut conduire à un blocage du système qui nécessite alors sa réinitialisation complète. Le document US 6,590,907 décrit l'utilisation d'une logique de routage et d'arbitrage, qui est localisée au niveau du bus d'interconnexion (appelé "routeur de paquets" dans le document), et qui a notamment pour fonction de répondre à une requête adressée par un module maître à un module additionnel, lorsque ledit module additionnel n'est pas présent sur un port d'extension auquel le module maître s'attend à ce qu'il soit connecté. La réponse consiste en l'émission d'un message d'erreur. Cette solution permet de prévoir des ports d'extension pour la connexion éventuelle de modules fonctionnels additionnels dans certaines applications du système, et d'éviter tout blocage du système lorsqu'une requête est adressée sur le port du routeur de paquets associé à un module fonctionnel 2 qui n'est toutefois pas présent. Outre qu'elle répond à une problématique qui est différente de celle qui est envisagée par la présente invention, cette solution présente néanmoins des difficultés pour une mise en oeuvre avec un nombre élevé de domaines d'alimentation. Résumé de l'Invention Il existe donc un besoin pour une solution plus efficace pour clôturer de façon satisfaisante une transaction en cours avec un module fonctionnel dont l'alimentation est coupée. Selon un premier aspect, des modes de réalisation de l'invention proposent ainsi un système comprenant : - une unité centrale de traitement; - un bus d'interconnexion; - une pluralité de modules fonctionnels correspondant à des domaines d'alimentation distincts, et capables de communiquer entre eux et/ou avec l'unité centrale de traitement via le bus d'interconnexion; et, - au moins un module esclave associé à l'un des domaines d'alimentation, et configuré pour se substituer à un module fonctionnel esclave dudit domaine d'alimentation lorsque l'alimentation dudit domaine d'alimentation est coupée par l'unité centrale de traitement, et pour signaler une erreur en réponse à toute requête d'une transaction en cours entre le module fonctionnel esclave et un module fonctionnel maître au moment de la coupure d'alimentation. Ainsi, même en cas de coupure de l'alimentation d'un module fonctionnel esclave pendant le traitement d'une transaction en cours entre ce module et un module fonctionnel maître, ce dernier reçoit un message d'erreur qui lui permet de gérer la situation résultant de l'indisponibilité du module esclave. On évite ainsi le blocage du système. Le système peut être distribué dans plusieurs circuits intégrés. Typiquement, toutefois, il peut être réalisé sous la forme d'un système sur une 30 puce (SoC). 3 Dans un mode de réalisation, le module esclave associé comprend une première logique adaptée pour produire une réponse signalant l'erreur en cas d'opération de lecture en cours au moment de la coupure d'alimentation, et pour pendant toute la durée de l'émission de la réponse en lecture attendue par le module fonctionnel maître. Du point de vue protocolaire, pour le module fonctionnel maître, tout ce passe donc comme si le module fonctionnel esclave était toujours alimenté et signalait lui-même l'erreur en lieu et place des données lues, i.e., pendant toute la durée de l'émission de la réponse en lecture attendue par le module fonctionnel maître. En variante ou en complément, le module esclave associé comprend une seconde logique adaptée pour produire une réponse signalant l'erreur en cas d'opération d'écriture en cours au moment de la coupure d'alimentation, à la fin d'une réception de la requête en écriture quelque soit l'instant auquel se produit la coupure d'alimentation du module fonctionnel esclave pendant la transaction en cours. Du point de vue protocolaire, pour le module fonctionnel maître, tout se passe comme si le module fonctionnel esclave était toujours alimenté, et signalait lui-même l'erreur immédiatement après réception de la requête en écriture. Le bus d'interconnexion peut supporter un protocole de communication de type combinatoire, et dans ce cas l'erreur peut être signalée sous la forme de l'activation d'un signal d'erreur conformément audit protocole. Si le réseau d'interconnexion supporte un protocole de communication de type séquentiel, l'erreur peut être signalée sous la forme d'un message d'erreur conformément audit protocole. Dans un second aspect, l'invention propose aussi un procédé de gestion de l'alimentation d'un système sur une puce comprenant une unité centrale de traitement, un bus d'interconnexion, et une pluralité de modules fonctionnels correspondant à des domaines d'alimentation distincts, et capables de communiquer entre eux et/ou avec l'unité centrale de traitement via le bus d'interconnexion, dans lequel un module esclave associé à l'un des 4 domaines d'alimentation se substitue à un module fonctionnel esclave dudit domaine d'alimentation lorsque l'alimentation dudit domaine d'alimentation est coupée par l'unité centrale de traitement, et signale une erreur en réponse à toute requête d'une transaction en cours entre le module fonctionnel esclave et un module fonctionnel maître au moment de la coupure d'alimentation. Dans un troisième aspect, l'invention concerne également un appareil électronique comprenant un circuit sur une puce selon le premier aspect. Il peut s'agir typiquement d'un téléphone portable ou de tout autre appareil alimenté sur batterie, pour lequel l'énergie de la source d'alimentation doit être économisée par une gestion de l'alimentation. Avantageusement, les modes de réalisation de l'invention n'augmentent pas en complexité en fonction du nombre de domaines d'alimentation prévus dans le système. Dit autrement, la solution proposée est compatible avec un nombre élevé de domaines d'alimentation. Egalement, elle ne nécessite pas de changement important dans le design du circuit lorsque, partant d'une version donnée, on la fait évoluer pour répondre aux besoins d'une nouvelle application qui implique une augmentation du nombre de domaines d'alimentation (par exemple l'ajout d'une fonctionnalité à une puce existante). Enfin, elle peut être utilisée pour des mises à jour de circuits existants qui ne l'implémentent pas encore, avec peu de modifications de leur architecture interne. Brève Description des Dessins D'autres caractéristiques et avantages de l'invention apparaîtront encore à la lecture de la description qui va suivre. Celle-ci est purement illustrative et doit être lue en regard des dessins annexés sur lesquels: - la Figure 1 est un schéma fonctionnel d'un système sur une puce; - la Figure 2 est un schéma fonctionnel illustrant le couplage sélectif d'un module fonctionnel esclave et de son module terminateur associé, 30 au bus de communication du système; 5 - la Figure 3 montre de façon plus détaillée les signaux reçus de, ou émis vers le bus par le module terminateur, et un schéma fonctionnel simplifié dudit module terminateur; - la Figure 4 est diagramme fonctionnel d'une première logique mise en oeuvre dans le module terminateur; - la Figure 5 donne des chronogrammes de signaux échangés entre le bus et la première logique du module terminateur; - la Figure 6 est diagramme fonctionnel d'une seconde logique mise en oeuvre dans le module terminateur; - la Figure 7 donne des chronogrammes de signaux échangés entre le bus et la seconde logique du module terminateur; - la Figure 8 est un diagramme détapes d'un procédé selon le deuxième aspect; et, - la Figure 9 est un schéma fonctionnel d'un appareil selon le troisième aspect, incorporant un système selon le premier aspect. Description de Modes de Réalisation Des modes de réalisation de l'invention vont maintenant être décrits en référence aux schémas annexés, dans un exemple de système sur une puce qui utilise un protocole de communication de type séquentiel appelé AXITM. Les spécifications de ce protocole, qui a été proposé par la société ARM Limited, sont librement accessibles sous la forme d'un document public (standard ouvert), ci-après la Spécification AXI, intitulé "AMBA Advanced eXtensible Interface (AXI) Protocol Specification", Version 1.0, Ed. B, 19 Mars 2004, auquel le lecteur est invité à se reporter en tant que de besoin. Néanmoins, cet exemple n'est nullement limitatif. En effet, des modes de réalisation de l'invention peuvent s'appliquer à d'autres protocoles de type séquentiel, comme par exemple le STBusTM de la société STMicroelectronics, et à des protocoles de type combinatoire, comme les protocoles APBTM (de l'anglais "Advanced Peripheral Bus") ou AHBTM (de l'anglais "Advanced High- performance Bus") qui sont d'autres protocoles de la suite AMBATM (de l'anglais "Advanced Microcontroller Bus Architecture") de la société ARM Limited, ou encore le protocole NoC (de l'anglais "Network on Chip"), par exemple. 6 Le système décrit ici peut être réalisé selon une technologie CMOS à 45 nm (pour la partie matérielle) en utilisant le langage de description VerilogTM (pour les parties logicielles). La Figure 1 illustre schématiquement l'architecture d'un système sur 5 une puce. Le système comprend des modules fonctionnels 11, 12, 13, 14 et 15, respectivement associés à une fonction du système. Il peut s'agir, par exemple, d'une mémoire interne, une unité de gestion d'une mémoire externe, un décodeur MP3 pour lire des données audio, un décodeur MPEG pour lire des 10 données vidéo, une unité de gestion d'interface USB, une unité de gestion d'affichage, etc. Ces modules peuvent être de type maître, ou esclave, ou les deux selon le contexte. Par exemple, un décodeur MP3 peut accéder en mode maître à une mémoire interne qui fonctionne en mode esclave, pour y lire des données à décoder. 15 Le système comprend aussi une unité centrale de traitement 10, ou CPU, qui gère l'ensemble du système. Ces différents éléments communiquent par l'intermédiaire d'un bus d'interconnexion 1, auquel ils sont respectivement couplés via une interface appropriée (non représentée). Chaque transaction comprend l'émission d'un 20 message de requête par le module maître, et le retour d'un message de réponse par le module esclave. Ces messages comprennent, sous la forme d'arguments, un identificateur de source et un identificateur de destination, ou adresses, qui permettent l'acheminement des messages à travers le bus 1 entre les interfaces respectives du module maître et du module esclave 25 impliqués dans la transaction. Pour simplifier, on considérera dans la suite que chaque module fonctionnel correspond à un domaine d'alimentation particulier. Dit autrement, un domaine d'alimentation ne comprend ici qu'un unique module fonctionnel. Mais il est bien entendu que plus d'un module fonctionnel peuvent faire partie 30 d'un domaine d'alimentation sans que le principe décrit ici soit modifié. Au niveau de la réalisation sur la puce de silicium, une grille d'alimentation est définie, qui amène sélectivement une tension d'alimentation 7 Vdd au module. Par ailleurs, un plan de masse relie l'ensemble des modules fonctionnels à un potentiel de masse Gnd, ou masse commune. La coupure de l'alimentation pour un domaine donné est décidée par la CPU en fonction de critères déterminés, sur lesquels il n'apparaît pas utile de s'étendre ici, afin d'économiser l'énergie de la batterie. Pour au moins l'un des domaines d'alimentation du système, le système comprend un module particulier, dit "terminateur", qui est associé audit domaine d'alimentation. Ce module terminateur est agencé et configuré pour se substituer au module fonctionnel du domaine d'alimentation concerné, et pour terminer toute transaction éventuellement en cours avec ledit module fonctionnel au moment de la coupure d'alimentation. Il fonctionne en mode esclave seulement. La clôture de la transaction comprend, dans l'exemple considéré ici, l'émission d'un message d'erreur SLVERR (tel que défini au paragraphe 7.2.3 de la Spécification AXI) à destination du module maître ayant initié la transaction. La prise en compte de ce message d'erreur permet au module maître de poursuivre l'exécution de son processus, d'une manière tout à fait classique, en tenant compte de l'indisponibilité du module fonctionnel esclave. De préférence, le système comprend un terminateur pour chaque domaine d'alimentation dans lequel il y a au moins un module fonctionnel esclave. Ainsi, on est certain que le système ne restera jamais bloqué. Mais les avantages de l'invention sont cependant déjà obtenus dès lors qu'au moins un domaine d'alimentation du système est protégé par un terminateur. De préférence également, un terminateur est exclusivement associé à un domaine d'alimentation. Dit autrement, un terminateur est prévu pour au plus un unique domaine d'alimentation. Cela simplifie sa conception. Par exemple, un terminateur Ti est associé à un module fonctionnel M1, un terminateur T2 est associé à un module fonctionnel M2, ... un terminateur Ti est associé à un module fonctionnel Mi, où i est un indice qui désigne l'un des domaines d'alimentation correspondant aux modules fonctionnels du système. 8 Avant de décrire en détails la conception du terminateur puis son fonctionnement, on va d'abord décrire son agencement avec le module fonctionnel du domaine d'alimentation auquel il est associé. A la Figure 2, un module terminateur 22 (Ti) est ainsi associé à un module fonctionnel 21 (Mi) dont l'alimentation peut être sélectivement coupée par la CPU 10. Ceci est illustré par le signal de commande représenté en traits pointillés entre la CPU et un interrupteur commandé à travers lequel le module 21 reçoit la tension d'alimentation Vdd. Pour simplifier la représentation du couplage du module 21 au bus d'interconnexion 1, on supposera que ce module peut uniquement fonctionner en mode esclave. Mais la description qui suit est entièrement compatible avec un fonctionnement du module 21 aussi en mode maître. Dans ce cas, le couplage au bus 1 doit juste être complété par rapport à ce qui suit, sans que les éléments ajoutés interviennent avec l'agencement du terminateur 22. Dans l'exemple, le module 21 est couplé au bus 1 à travers un démultiplexeur 23 pour recevoir un message de requête Rq, et à travers un multiplexeur 24 pour retourner un message de réponse Rp. Le terminateur 22 est aussi couplé au démultiplexeur 23 pour recevoir le message Rq, en lieu et place du module 21, selon le positionnement du démultiplexeur. De même, le terminateur 22 est aussi couplé au multiplexeur 24 pour transmettre le message de réponse Rp vers le bus 1, en lieu et place du module 21, selon le positionnement du multiplexeur. Plus particulièrement, le démultiplexeur est une porte à une entrée couplée au bus 1 et à deux sorties couplées au module 21 et au terminateur 22, respectivement. Et le multiplexeur 24 est une porte à deux entrées couplées au module 21 et au terminateur 22, respectivement, et à une sortie couplée au bus 1. Le couplage au bus 1 peut se faire à travers une interface (non représentée à la Figure 2) qui assure la mise aux niveaux électriques corrects. Le système comprend encore un banc de registres 20, dans lequel il y a un registre par domaine d'alimentation. On a ainsi des registres R1, R2, ..., Ri,... etc. La CPU peut écrire la valeur stockée dans ces registres, par exemple en accédant en écriture au banc de registres 20, à travers le bus 1, en initiant 9 une requête en écriture. Par exemple, s'il y a un nombre N de domaines d'alimentation, en sorte qu'il y a N registres dans le banc de registres 20, la valeur à écrire est une valeur sur N bits, chaque bit étant respectivement associé à un domaine d'alimentation. En variante, la CPU peut écrire dans le banc de registres sans passer par le bus d'interconnexion, si un plan de liaisons de commande existe qui lui permet de le faire directement. La valeur binaire stockée dans le registre Ri qui est associé au module fonctionnel Mi, qui porte la référence 21 à la Figure 2, commande le positionnement du démultiplexeur 23 et du multiplexeur 24. Par exemple, pour la valeur logique 1 de ce bit, c'est le module 21 qui est couplé au bus 1, alors que pour la valeur logique 0 de ce bit, c'est le terminateur 22 qui est couplé au bus 1. Lorsque la CPU coupe l'alimentation du module 21, il commande l'ouverture de l'interrupteur 25 et, en outre, il modifie la valeur stockée dans le banc de registres 20 afin que le bit du registre Ri passe de 1 à 0. Les opérations inverses sont effectuées quand la CPU établit ou rétablit l'alimentation du module 21. La structure générale et l'agencement du module terminateur 22 associé au module fonctionnel 21 vont maintenant être décrits en référence au 20 schéma de la Figure 3. Le terminateur 22 est un module de type esclave. Comme le module fonctionnel 21 auquel il est associé, il est couplé au bus d'interconnexion 1 via les cinq canaux prévus dans la Spécification AXI, à savoir: - un canal d'adresse de lecture 31; et, 25 - un canal de données en lecture 32. - un canal d'adresse d'écriture 33; - un canal de données en écriture 34; - un canal de réponse en écriture 35; En outre, il reçoit un bus 1 un signal d'horloge ACLK, et un signal de 30 remise à zéro asynchrone ARESETn (la lettre n en minuscule indiquant que ce signal est actif à l'état logique bas). 10 L'ensemble de ces signaux représente environ 400 lignes, en fonction de la largeur des canaux de données. Plus d'information est disponible dans la Spécification AXI précitée. Comme le terminateur ne traite pas de données, les canaux de données sont dans l'état "indifférent" ("don't care" en anglais). De même pour le signal du protocole AXI qui indique la taille des données, et pour celui qui indique le type de "bursts" (un "burst" est une entité de données transmises en réponse à une requête, et correspond à un nombre entier de périodes du signal d'horloge). Parmi les signaux du protocole AXI, certains ne sont pas utilisés par le terminateur. Les signaux utilisés sont donnés par le Tableau 1 ci-dessous: .......................................................................... .......................................................................... ........................................................................ . Horloge et Remise à zéro ACLK 1 IN Horloge AXI ARESETn 1 IN Remise à zéro asynchrone, actif à l'état bas Canal d'Adresse d'Ecriture AW I D 4 I N Identification d'adresse AWVALID 1 IN Validation d'adresse AWREADY 1 OUT Acceptation d'adresse d'écriture Canal de Données en Ecriture WVALID 1 IN Validation de données en écriture WLAST 1 IN Dernier transfert en écriture WREADY 1 OUT Acceptation de données en écriture Canal de Réponse en Ecriture BID 4 OUT Identification d'Ecriture BRESP 2 OUT Réponse en écriture BVALID 1 OUT Validation de réponse en écriture BREADY 1 IN Acceptation de réponse en écriture Canal d'Adresse de Lecture ARID 4 IN Identification d'adresse ARLEN 4 IN Longueur de "Burst" ARVALID 1 IN Validation d'adresse ARREADY 1 OUT Prêt à accepter l'adresse de lecture 11 Canal de Données en Lecture RID 4 OUT Identification de lecture RRESP 2 OUT Réponse en lecture RVALID 1 OUT Validation de données en lecture RLAST 1 OUT Dernier transfert en lecture RREADY 1 IN Acceptation de lecture Tableau 1 Dans ce tableau, le nom du signal (en référence à la Spécification AXI) est donné dans la première colonne, sa largeur (en octets) est donnée dans la deuxième colonne, son type ("IN" pour un signal entrant, et "OUT" pour un signal sortant) est donné par la troisième colonne, et sa description est donnée par la quatrième colonne. La largeur binaire des signaux ARID, AWID, RID, WID et BID peut être configurable à l'aide de génériques et de paramètres, sur lesquels il n'apparaît pas utile de s'étendre plus avant. On notera juste que l'utilisateur peut choisir la valeur du paramètre ID_WIDTH qui définit la largeur (en octets) des étiquettes d'identification sur le bus. La valeur par défaut est égale à l'unité. La valeur du paramètre ID_MAX, qui définit la limite haute de la largeur (en octets) des étiquettes d'identification sur le bus, est calculée automatiquement à partir du paramètre ID_WIDTH défini par l'utilisateur. Comme illustré schématiquement à la Figure 3, le terminateur comprend deux sources du message d'erreur SLVERR qu'il retourne: une logique 221 de génération du signal d'erreur en cas d'opération de lecture en cours, d'une part, et une logique 221 de génération du signal d'erreur en cas d'opération d'écriture en cours, d'autre part. Ces deux cas distincts se réfèrent à la transaction en cours au moment de la coupure d'alimentation, qui appelle l'émission du message SLVERR par le terminateur. Ainsi, la logique 221 est activée lorsque l'alimentation du module fonctionnel 21 est coupée alors qu'il est engagé, en mode esclave, dans une opération de lecture. Inversement, la logique 222 est activée lorsque l'alimentation du module fonctionnel 21 est coupée alors qu'il est engagé, en mode esclave, dans une opération d'écriture. La Figure 4 donne un schéma fonctionnel de la logique 221 de génération de la réponse avec message d'erreur en cas de lecture. Sur cette 12 figure, les signaux reçus ou émis par la logique 221 sont représentés sur la gauche, avec une flèche entrante pour les signaux reçus, ou une flèche sortante pour les signaux émis. La logique 221 est chargée du fonctionnement du canal d'adresse en lecture et du canal de données de lecture. Elle comprend par exemple un bloc logique d'interface d'adresse de lecture 41, un bloc logique d'interface de données en lecture 42, et un compteur 43 (en fait un décompteur). Le bloc 41 est chargé du fonctionnement du canal d'adresse de lecture 31, et du canal de données en lecture 32. Par ailleurs, il charge l'information présente sur le canal d'adresse de lecture, active le signal ARREADY, et réinitialise la valeur initiale du compteur 43. Par exemple, cette réinitialisation positionne la valeur courante du compteur 43 à une valeur N, où N est un nombre entier non nul, reçue dans le signal ARLEN. A cet effet, le bloc 41 transmet le signal ARLEN au compteur 43. Le bloc 41 transmet aussi le signal ARID au bloc 42, afin que celui-ci connaisse l'identificateur ID du module maître qui a initialisé la transaction, lequel identificateur ID est reçu dans le signal ARID. Le bloc 42 positionne le signal de réponse RRESP de manière à ce qu'il indique le message d'erreur SLVERR, qui correspond à l'indication que le module esclave n'est pas disponible. Il génère aussi le signal RVALID, ainsi que le signal RLAST à partir de la valeur de comptage du compteur 43, notée "readleft', qu'il reçoit du compteur 43. Dans un exemple de réalisation, le code Verilog correspondant à cette fonction peut être le suivant: assign iRLAST = (readleft = = 4'b0000) ? 1 'b 1 : 1 'b0; assign RLAST = iRLAST; Le bloc 42 génère un signal interne à la logique 221, noté counter en, qui est un signal d'activation du compteur. Ce signal est par exemple le résultat de l'opération "ET Logique" entre le signal RVALID, le signal RREADY, et de la condition additionnelle que la valeur de comptage du compteur readleft ne soit pas égale à zéro. Quand le signal counter en est à l'état haut, la valeur readleft est décrémentée d'une unité sur chaque front d'activation du signal d'horloge ACLK qui se présente. 13 Les chronogrammes de la Figure 5 illustrent le séquencement ("Timing" en anglais) des différents signaux qui interviennent dans, et/ou sont modifiés par, le fonctionnement de la logique 221. Dans ces chronogrammes, les valeurs et les messages de réponses portés par les signaux, le cas échéant, ont été indiqués. Comme on peut le voir, la logique 221 est configurée de manière que, lorsqu'une opération de lecture est en cours dans le module fonctionnel 21 au moment de la coupure de son alimentation, le terminateur 22 retourne la réponse SLVERR dans le canal de données en lecture, pendant toute la durée du burst de réponse attendu par le module maître, à savoir pendant N cycles du signal d'horloge ACLK (on N est la valeur reçu dans le signal ARLEN). Dit autrement, tout ce passe de façon transparente pour le module maître ayant initié la transaction quelque soit l'instant auquel se produit la coupure d'alimentation du module esclave 21 pendant la transaction de lecture en cours. Le terminateur opère de telle façon que, pour le module initiateur, tout se passe comme si le module fonctionnel 21 était toujours alimenté, et émettait lui-même le message d'erreur SLVERR en lieu et place des données lues, i.e., pendant toute la durée de l'émission de la réponse en lecture attendue par le module fonctionnel maître. La Figure 6 donne un schéma fonctionnel de la logique 222 de génération du signal d'erreur en cas d'opération d'écriture. Sur cette figure, les signaux reçus ou émis par la logique 222 sont représentés sur la gauche, avec une flèche entrante pour les signaux reçus, ou une flèche sortante pour les signaux émis. La logique 222 est chargée du fonctionnement du canal d'adresse en écriture 34, du canal de données d'écriture 35, et du canal de réponse en écriture 33. Elle comprend un bloc logique d'interface d'adresse de d'écriture 61, un bloc logique d'interface de données en écriture 62, et une logique d'interface de réponse en écriture 63. L'adresse d'écriture et les données sont indifférentes, l'opération d'écriture n'étant pas achevée mais terminée par l'émission d'un signal de réponse BRESP contenant le message d'erreur SLVERR. 14 Le bloc 61 et le bloc 62 traitent, indépendamment l'un de l'autre, les signaux du canal d'adresse en écriture 34 et les signaux du canal de données d'écriture 35, respectivement. Le bloc 61 fournit le signal AWREADY au bloc 62 et le signal AWID au bloc 63. Le bloc 62 fournit le signal WREADY, le signal WLAST et le signal WVALID au bloc 63. Le signal de validation de réponse en écriture BVALID y est généré en échantillonnant ces trois signaux. Quand ils sont simultanément à l'état logique haut, le signal BVALID est positionné à l'état logique haut. Cela indique que la transaction d'écriture en cours est terminée. Les chronogrammes de la Figure 7 illustrent le séquencement des différents signaux qui interviennent dans, et/ou sont modifiés par, le fonctionnement de la logique 222. Dans ces chronogrammes, les valeurs et les messages de réponses portés par les signaux, le cas échéant, ont été indiqués. On note que le signal BID émis est dérivé du signal AWID reçu, en ce sens que le premier contient la valeur d'identificateur ID reçue dans le second. De plus, le signal WREADY passe à l'état haut quand le signal AWREADY passe à l'état bas, avec un cycle de retard. Il, à savoir le signal WREADY, repasse à l'état bas quand le signal WVALID et le signal WLAST sont simultanément à l'état bas. Dit autrement, tout ce passe de façon transparente pour le module maître ayant initié la transaction quelque soit l'instant auquel se produit la coupure d'alimentation du module esclave 21 pendant la transaction en cours. Le terminateur opère de telle façon que, pour le module initiateur, tout se passe comme si le module fonctionnel 21 était toujours alimenté, et émettait lui-même le message d'erreur SLVERR à la fin de la réception des mots binaires à écrire, i.e., à la fin de la réception de la requête en écriture. Les étapes d'un procédé selon des modes de mises en oeuvre de l'invention, sont illustrées schématiquement à la Figure 8. Dans une étape 81, un module fonctionnel maître initie une transaction avec un module fonctionnel esclave d'un système sur une puce tel que décrit ci-dessus. Il peut s'agir d'une requête en lecture, ou d'une requête en écriture. 15 Dans une étape 82, la CPU du système sur une puce coupe l'alimentation du module fonctionnel esclave, afin d'économiser l'énergie, et sans savoir que ce module fonctionnel est impliqué dans une transaction encore en cours. Dans une étape 83, le module terminateur Ti associé au module fonctionnel esclave Mi, prend le relais sur ce dernier. Comme il a été dit plus haut, cela s'opère en découplant le module fonctionnel esclave du bus, et en couplant le module terminateur associé audit bus. Dans une étape 84, le module terminateur génère et émet une réponse 10 à la requête en cours de traitement. Cette réponse correspond à un message d'erreur. Dans une étape 85, le module maître qui avait initié la transaction en émettant la requête, reçoit et traite le message d'erreur. Charge est laissée au logiciel implémenté dans ce module maître pour identifier la cause du message 15 d'erreur reçu, d'une manière classique en soi, et de réagir en conséquence. Le schéma-bloc de la Figure 9 montre les éléments d'un appareil incorporant un système sur une puce tel que présenté ci-dessus. Un tel appareil peut être un téléphone portable ou tout autre appareil électronique, communicant ou non. Typiquement, il s'agit d'un appareil fonctionnant sur 20 batterie d'alimentation, dans lequel une gestion de l'alimentation visant à l'économie de l'énergie de la batterie est souhaitable. L'appareil 100 comprend une unité centrale de traitement 101, et une unité de communication 102, pour émettre et recevoir des informations de l'extérieur, notamment par modulation d'une porteuse radiofréquence. Il 25 comprend aussi une unité 103 de lecture de fichiers au format MP3 (qui sont par exemple stockés dans une mémoire non représentée), par exemple des morceaux de musique. L'unité 101 communique avec l'unité 102 et l'unité 103 via un bus de communication 1. Chacun de ces éléments est alimenté par la tension d'alimentation Vdd qui est délivrée par une batterie 106. 30 Dans des modes de réalisation, l'unité de commande 101 est une CPU et les unités 102 et 103 sont des modules fonctionnels d'un système sur une puce 104, tel que décrit plus haut. Le système 104 génère un signal audio qui, 16 après amplification de puissance par un amplificateur 105, et restitué à un utilisateur via un haut-parleur 109, par exemple. La mise en oeuvre de ces modes de réalisation permet de diminuer la consommation de courant par les éléments du système sur puce 104, et donc d'allonger l'autonomie de l'appareil 100, c'est-à-dire la durée d'utilisation entre deux recharges de la batterie 106. Avantageusement, cette économie d'énergie est obtenue sans risque de générer des blocages du fonctionnement du système par absence de réponse d'un module fonctionnel esclave impliqué dans une transaction au moment de la coupure de son alimentation. L'invention a été décrite ci-dessus par référence à des modes de réalisation. Il est bien entendu, toutefois, que toute variante techniquement envisageable rentre dans le cadre de la présente demande. En particulier, si l'invention a été décrite dans le contexte d'un système sur une puce (SoC), il est bien entendu que le système peut comprendre des éléments dans plus d'un circuit intégré, i.e., dans plus d'une puce. Dans ce cas, le bus d'interconnexion peut comprendre un bus interconnectant les différents circuits intégrés. 17 REVENDICATIONS1. Système comprenant : - une unité centrale de traitement (10), - un bus d'interconnexion (1) - une pluralité de modules fonctionnels (11-15, 21) correspondant à des domaines d'alimentation distincts, et capables de communiquer entre eux et/ou avec l'unité centrale de traitement via le bus d'interconnexion; et, - au moins un module esclave (22) associé à l'un des domaines d'alimentation, et configuré pour se substituer à un module fonctionnel esclave (21) dudit domaine d'alimentation lorsque l'alimentation dudit domaine d'alimentation est coupée par l'unité centrale de traitement, et pour signaler une erreur en réponse à toute requête d'une transaction en cours entre le module fonctionnel esclave et un module fonctionnel maître au moment de la coupure d'alimentation. 2. Système selon la revendication 1, dans lequel le module esclave associé comprend une première logique (221) adaptée pour produire une réponse signalant l'erreur en cas d'opération de lecture en cours au moment de la coupure d'alimentation, et pour pendant toute la durée de l'émission de la réponse en lecture attendue par le module fonctionnel maître. 3. Système selon la revendication 1 ou la revendication 2, dans lequel le module esclave associé comprend une seconde logique (222) adaptée pour produire une réponse signalant l'erreur en cas d'opération d'écriture en cours au moment de la coupure d'alimentation, à la fin d'une réception de la requête en écriture quelque soit l'instant auquel se produit la coupure d'alimentation du module fonctionnel esclave pendant la transaction en cours. 4. Système selon l'une quelconque des revendications 1 à 3, dans lequel le bus d'interconnexion supporte un protocole de communication de type 18combinatoire, et dans lequel l'erreur est signalée sous la forme de l'activation d'un signal d'erreur conformément audit protocole. 5. Système selon l'une quelconque des revendications 1 à 3, dans lequel le réseau d'interconnexion supporte un protocole de communication de type séquentiel, et dans lequel l'erreur est signalée sous la forme d'un message d'erreur conformément audit protocole. 6. Procédé gestion de l'alimentation d'un système comprenant une unité centrale de traitement (10), un bus d'interconnexion (1), et une pluralité de modules fonctionnels (11-15, 21) correspondant à des domaines d'alimentation distincts, et capables de communiquer entre eux et/ou avec l'unité centrale de traitement via le bus d'interconnexion, dans lequel un module de esclave (22) associé à l'un des domaines d'alimentation se substitue à un module fonctionnel esclave (21) dudit domaine d'alimentation lorsque l'alimentation dudit domaine d'alimentation est coupée par l'unité centrale de traitement, et signale une erreur en réponse à toute requête d'une transaction en cours entre le module fonctionnel esclave et un module fonctionnel maître au moment de la coupure d'alimentation. 7. Procédé selon la revendication 6, dans lequel le module esclave associé produit une réponse signalant l'erreur en cas d'opération de lecture en cours au moment de la coupure d'alimentation, pendant toute la durée de l'émission de la réponse en lecture attendue par le module fonctionnel maître. 8. Procédé selon la revendication 6 ou la revendication 7, dans lequel le module esclave associé produit une réponse signalant l'erreur en cas d'opération d'écriture en cours au moment de la coupure d'alimentation, à la fin d'une réception de la requête en écriture quelque soit l'instant auquel se produit la coupure d'alimentation du module fonctionnel esclave pendant la transaction en cours. 1910 9. Procédé selon l'une quelconque des revendications 6 à 8, dans lequel le bus d'interconnexion supportant un protocole de communication de type combinatoire, l'erreur est signalée sous la forme de l'activation d'un signal d'erreur conformément audit protocole. 10. Procédé selon l'une quelconque des revendications 6 à 8, dans lequel le réseau d'interconnexion supportant un protocole de communication de type séquentiel, l'erreur est signalée sous la forme d'un message d'erreur conformément audit protocole. 11. Appareil électronique comprenant un système selon l'une quelconque des revendications 1 à 5. 20