Participant : Christophe
Wolinski.
Mots clés : Signal, programmation
synchrone, conception conjointe matériel/logiciel, composant
matériel, synthèse de circuits, consommation des circuits
.
Résumé :
Nous poursuivons notre étude dans le domaine de la
synthèse comportementale de circuits digitaux à partir de
graphe GHDC (format interne du compilateur
Signal). Un graphe GHDC peut être obtenu
soit à partir d'applications décrites en langage Signal à
la suite d'un processus de compilation, soit à partir de
langages impératifs tels que C, HardwareC,
VHDL à la suite d'un processus de
construction à deux niveaux [14]. Dans ce graphe, le traitement et le
contrÔle sont représentés de faÇon uniforme, ce qui
simplifie l'analyse globale. La synthèse est basée sur la
transformation formelle du graphe GHDC.
Notre attention a porté cette année sur la synthèse de
haut niveau.
En nous basant sur la méthodologie développée précédemment
dans le cadre du projet européen Syrf, concernant la
pré-synthèse de haut niveau, nous avons défini toute la
chaîne de conception qui permet l'optimisation du processus
de génération de circuits au niveau RTL. Dans
notre chaîne de conception, la première étape consiste en des
pré-traitements classiques en synthèse comportementale, mais
également en une utilisation optimale des informations
présentes dans la hiérarchie des gardes, par une
restructuration du graphe. Dans l'optique d'une exécution
spéculative, nous pouvons ainsi augmenter la fréquence
d'exécution de certains noeuds de calcul lors du processus
d'ordonnancement sous contraintes (réalisé en aval), ce qui
permet d'optimiser l'utilisation des ressources physiques. La
première étape se termine par la modification du graphe
GHDC lié au processus de placement et
d'ordonnancement. En outre, on introduit dans le graphe
l'information concernant les noeuds spéculatifs et le partage
des ressources. Dans l'étape suivante on génère des chemins
de données, l'automate de contrÔle et la partie
«glue»[14]. Pendant la génération de chemins de
données, on minimise le nombre des registres en appliquant un
processus de partage des registres à la fois spatial et
temporel et on équilibre les calculs sur différentes unités
fonctionnelles. L'équilibrage peut par exemple avoir des
conséquences non négligeables sur le gradient thermique du
circuit. Un algorithme génétique a été élaboré afin de
trouver la meilleure assignation. Dès lors que le chemin des
données est réalisé, nous pouvons générer l'automate de
contrÔle orchestrant l'ensemble. Dans cette phase de
génération de circuits, on optimise la fonction de transfert
de l'automate. Nous avons démontré que, grâce au calcul des
gardes, nous pouvons accéder à des optimisations qu'un
synthétiseur classique peut difficilement détecter.
Nous avons finalisé cette recherche par la réalisation
d'un système complet, CODESIS [11,14,22,23].