Résumé
Les circuits élastiques généralisent les notions précédentes d’asynchronisme d’une façon qui s’applique aussi aux circuits synchrones. L’idée est de donner davantage de liberté architecturale en dissociant le temps logique du calcul du temps physique de la réalisation. Un exemple classique est celui des circuits GALS (Globally Asynchronous Locally Synchronous), où des îlots localement synchrones sont connectés par des synchroniseurs multi-horloges ou des files d’attenteasynchrones. Le problème délicat est alors celui de la métastabilité des registres (je renvoie à mon cours de 2013-2014).
Un bel exemple plus récent est celui des circuits synchrones élastiques. Ils restent synchrones, mais utilisent le protocole valid/stop des circuits asynchrones. L’horloge est conservée et la conception logique reste la même qu’en synchrone, mais les registres sont automatiquement remplacés par des paires de verrous transparents (transparent latches) qui stockent leur entrée pendant une phase de l’horloge et se comportent comme de simples fils pendant l’autre phase. Les fils valid/stop sont gérés par une couche asynchrone qui commande des portes de masquage d’horloge (clock gating) inhibant les transitions des verrous transparents. L’élasticité vis-à-vis de l’horloge est alors garantie. On peut couper tout fil trop long par une bulle (registre non initialisé)sans modifier le contrôle du circuit, ce qui est impossible en design synchrone, et on peut réaliser des pipelines plus élaborés. Ces nouveaux circuits représentent un progrès conceptuel certain, mais le conformisme industriel fait que leur succès est loin d’être garanti.