Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Synthèse logique: Quelques algorithmes et techniques La synthèse logique consiste en un très grand nombre d’opérations diverses, qui doivent produire un circuit performant (délai, puissance, taille, etc). Dans ce qui suit, nous examinerons les Binary Decision Diagrams (BDD), leur utilisation dans un problème de couverture, et nous inventerons un algorithme de création d’arbres de buffers.
23
Embed
Synthèse logique: Quelques algorithmes et techniques
Synthèse logique: Quelques algorithmes et techniques. La synthèse logique consiste en un très grand nombre d’opérations diverses, qui doivent produire un circuit performant (délai, puissance, taille, etc). - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Gei
431
Architecture des ordinateurs II – Frédéric Mailhot
Synthèse logique:Quelques algorithmes et techniques
La synthèse logique consiste en un très grand nombre d’opérations diverses, qui doivent produire un circuit performant (délai, puissance, taille, etc).
Dans ce qui suit, nous examinerons les Binary Decision Diagrams (BDD), leur utilisation dans un problème de couverture, et nous inventerons un algorithme de création d’arbres de buffers.
• Les Binary Decision Diagrams (BDD) ont été proposés en 1986 par Randy Bryant, pour représenter efficacement les fonctions booléennes.
• Problème: soit une fonction booléenne de N variables. Sa représentation par un tableau de vérité (ou un tableau de Karnaugh, qui est équivalent) requière 2^N bits. Lorsque N est grand (N>30), cette taille devient prohibitive.
• Autres règles: La décomposition de Boole doit se faire avec le même
ordre de variables dans tous les chemins entre les entrées et les sorties. On dit dans ce cas que le BDD est ordonné (Ordered Binary Decision Diagram, ou OBDD)
Les sous-circuits identiques doivent être partagés. On dit alors que le BDD est réduit
• Pour la plupart des fonctions logiques intéressantes, les BDD correspondants sont petits, même pour des fonctions ayant un très grand nombre de variables.
• Parmi les quelques ombres au tableau: Multiplicateurs
• Pour plus de renseignements et le code source d’un gestionnaire de BDD, voir CUDD de Fabio Somenzi (University of Colorado, Boulder)
• Problème: l’extraction de noyaux, qui est très efficace pour réduire la taille des circuits lors de la synthèse logique, crée des portes avec de très grands « fanouts », ce qui ralentit beaucoup le circuit.
Puisque Dopt doit être aussi petit que possible, et que les et les vont de pair, alors il doit y avoir un buffer idéal b pour lequel le produit ( ) est minimum. Si on utilise ce buffer b, on obtient:
• Nous avons maintenant une formule qui nous donne le délai minimum qu’on peut espérer pour un problème de buffering donné. En quoi cela nous est-il utile?
• On peut utiliser cette formule dans un algorithme « branch and bound »: On commence avec la porte de départ, et sa charge
totale. On calcule le délai total entre la porte et les charges. On utilise cette valeur comme notre meilleur délai pour le moment
On ajoute les buffers de notre bibliothèque de cellules, un type à la fois, pour tenter d’ajouter un étage de buffer. Il doit y avoir au minimum un buffer, et au maximum le fanout de départ.
Pour chaque cas, on calcule le délai entre la porte de départ et le nouvel étage de buffers, puis on calcule le délai entre le nouvel étage de buffers et la charge totale en utilisant notre formule. Il est certain qu’on ne peut faire mieux avec les vrais buffers.
On élimine les solutions qui donnent des résultats moindre que le meilleur résultat jusqu’à présent, et on tente d’ajouter un nouvel étage pour les solutions qui sont bonnes jusqu’à maintenant
En début de chaque nouvelle exploration, on tente de brancher la charge totale directement à l’étage de buffer courant. Si le délai obtenu est plus petit que le meilleur résultat en mémoire, on met celui-ci à jour.
On continue ce manège jusqu’à ce qu’il ne reste aucune solution avec un bon potentiel.
La meilleure solution est utilisée lorsque l’algorithme se termine.