1 / 23

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).

yachi
Download Presentation

Synthèse logique: Quelques algorithmes et techniques

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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.

  2. Les BDD • 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.

  3. Les BDD (suite) • Idée: • Représenter les fonctions logiques à l’aide d’un graphe qui permet de réutiliser des parties communes. • Plus spécifiquement, utiliser la décomposition de Boole (aussi appelée décomposition de Shannon), ce qui produit tout simplement un réseau de multiplexeurs contrôlés par les variables d’entrée de la fonction: • F(…, x, …) = x * Fx + x’ * Fx’ • Exemple: f = a + b c F = a * fa + a’ * fa’ F = a * 1 + a’ * (b c) F = a + a’ * (b c)

  4. F a 0 1 1 b 0 1 0 c 0 1 0 1 Exemple simple de BDD • Exemple: f = a + b c F = a * fa + a’ * fa’ F = a * 1 + a’ * (b c) F = a * 1 + a’ * ( b * (c) + b’ * 0) F = a * 1 + a’ * (b * (c * 1 + c’ * 0) + b’ * 0)

  5. Les BDD – autres règles de création • 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

  6. F F a a 0 1 0 1 0 1 0 1 0 1 0 1 c b b b 0 1 0 1 0 1 1 b c c 0 c 0 1 0 1 0 1 1 0 0 0 1 1 Ordonné (bon) Exemple de BDD ordonné, et non-ordonné • Exemple: f = a (b + c) + a’ b’ c Non-ordonné (mauvais)

  7. F F a a 0 1 0 1 0 1 0 1 0 1 b b b b 0 1 0 1 1 1 c 0 c 0 0 1 0 1 0 0 0 1 1 1 c Ordonné Exemple de BDD simutanément ordonné et réduit • Exemple: f = a (b + c) + a’ b’ c Ordonné et réduit

  8. F F a 0 1 0 1 a b b c b b 0 1 1 0 0 1 0 1 0 1 c Représentation du ROBDD • Exemple: f = a (b + c) + a’ b’ c 1 0 1 0 0 1 1 0

  9. Pourquoi les BDD sont-ils intéressants? • Pour un ordre de variables donné, les BDD sont canoniques, c’est-à-dire que leur représentation est unique pour une fonction booléenne donnée. • Exemple: Est-ce que F = a (b + c) + a’ b’ c et G = a b + b’ c sont des fonctions équivalentes? Difficile à dire sans établir la table de vérité… mais leurs BDD respectifs sont identiques.

  10. Pourquoi les BDD sont-ils intéressants? (2) • 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)

  11. Buffering • 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.

  12. Délais • Nous utiliserons un modèle simple de délai: • Chaque porte logique aura: • Un délai intrinsèque,  • Une résistance interne,  • Une capacité à l’entrée,  • Pour une porte donnée « P », qui est connectée à une capacité à la sortie S, alors le délai DP est: DP = P + P * S

  13. Buffering • Dans un problème réel, si une porte a un très grand fanout, il est probable que les charges des différentes portes de son fanout soient inégales. • Ce problème est complexe, alors nous le simplifierons: • Nous supposerons que toutes les charges sont identiques. Nous supposerons de plus que les charges peuvent être divisées autant que l’on veut.

  14. Buffering (2) 0 1 T 1 1 D = 0 * 1 + 1 + 1 * T

  15. Buffering (3) 2 0 1 2 2 n2 T 1 1 2 n1 2 2 D = 0 1 n1 + 1 + 1 n2 2 + 2 + 2 T n1 n2

  16. d D = 0 1 - 2 T  0 d D = 1 2 - 2 T  0 d n1 d n2 n12n2 n22n1 Buffering (4) D = 0 1 n1 + 1 + 1 n2 2 + 2 + 2 T n1 n2 Nous cherchons le minimum pour D. D’ou:

  17. 3 3 n1 = 1 2 2 T n2 = 0 2 1 T 0212 1222 Buffering (5) Des équations précédentes, on tire: Dopt = 3 ( 0 1 2 1 2 T)1/3+  1 + 2

  18. Buffering (6) Les résultats obtenus étaient pour 2 niveaux de buffers, mais nous ignorons combien il devrait y en avoir idéalement: Soit k la quantité idéale de niveaux, alors: D = 0 1 n1 + 1 + 1 n2 2 + … + k T n1 n2 …nk-1 Dopt = (k + 1) ( 0 1 … k 1 2 … k T)1/(k+1)+   i

  19. Buffering (7) • 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: Dopt = (k + 1) ( b b )k 0 T)1/(k+1)+ k b Mais… on ne connaît toujours pas k…

  20. Buffering (8) Il s’agit donc tout simplement de dériver par rapport à k… Puis il ne reste qu’à solutionner pour k en égalant la dérivée à zéro. On obtient alors: Dmin =  ln 0 T - b b b Avec  = b b exp( 1 +  b/  )

  21. Algorithme de buffering • 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?

  22. Algorithme de buffering – branch and bound • 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.

  23. Branch and bound (2) • 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.

More Related