La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Polytech' Montpellier Université Montpellier II Place Eugène Bataillon, 34095 Montpellier cedex 05, FRANCE Laboratoire d'Informatique, de Robotique et.

Présentations similaires


Présentation au sujet: "1 Polytech' Montpellier Université Montpellier II Place Eugène Bataillon, 34095 Montpellier cedex 05, FRANCE Laboratoire d'Informatique, de Robotique et."— Transcription de la présentation:

1 1 Polytech' Montpellier Université Montpellier II Place Eugène Bataillon, Montpellier cedex 05, FRANCE Laboratoire d'Informatique, de Robotique et de Microélectronique de Montpellier UMR 9928 Université Montpellier II / CNRS 161 rue Ada, Montpellier cedex 05, FRANCE Factorisation des fonctions logiques

2 2 F = a.c + a.d + b.c + b.d Factorisation => F = (a + b). (c + d) ab cd Transistors 12 Transistors Effet de la factorisation

3 3 Soit F et G deux expressions algébriques de deux fonctions booléennes F = m i pour i=1,...,n G = m j pour j=1,...,m Le produit algébrique F.G est défini par: F.G = m i.m j pour i=1,...,n et j=1,...,m F = a + b G = c + d.e F.G = a.c + a.d.e + b.c + b.d.e Produit algébrique

4 4 Soit F et G deux expressions algébriques de deux fonctions booléennes G est un diviseur algébrique de F si F = G.Q + R où : G.Q est le produit algébrique Q est la plus grande expression possible non nulle, càd quil nexiste pas Q tel que Q < Q et F = G.Q + R R est une expression algébrique F = a.b + a.d + c.b + d.c + e G = a + c G est un diviseur de F. Q = b + d R = e Le quotient Q (noté aussi F/G) et le reste R de cette division sont uniques Si F = G.Q (càd R = 0) avec les mêmes conditions, G est un facteur algébrique de F Division algébrique

5 5 Division algébrique vs division booléenne F = a' b + b.c + a.c et Q = a + b Division algébrique : F = c (a+ b) + a' b Division booléenne : F = (a+ b) (a' + c) Plus efficace mais difficile à automatiser

6 6 Une expression algébrique F est une expression libre sil nexiste pas de monôme m (avec m différent de 1) qui soit un facteur algébrique de F. F = a.b + a.c nest pas libre F = a.b.c nest pas libre F = a.b + c est libre Expression libre

7 7 K est un noyau dune expression algébrique F si K = F/m (quotient) où m est un monôme et K une expression libre m est appelé le co-noyau de K F = a.b.c.d + a.b.d + a.c.d + a.b.c.d K = (b.c.d + b.d + c.d) est un noyau de F, a est son co-noyau K nest pas de degré 0 (degré 1) K admet un noyau K1 = (b + c), d étant son co-noyau Un noyau est de degré 0 sil nadmet pas dautre noyau que lui même. (Le degré dun noyau est défini de manière récursive) Les noyaux dune expression algébrique représentent toutes les factorisations maximales possibles (en nombre de variables) Noyau

8 8 G: Gain en nombre de littéraux associé à un noyau G = (Nombre de littéraux du co-noyau) * (Nombre de monômes du noyau -1) F = a.b.c.d + a.b.d + a.c.d + a.b.c.d => 14 littéraux K = (b.c.d + b.d + c.d) est un noyau de gain G = 2 (1*(3-1)) F = a.(b.c.d + b.d + c.d) + a.b.c.d => 12 littéraux Gain associé à un noyau

9 9 F = a.b.c.d + a.b.d + a.c.d + a.b.c.d Les noyaux et co-noyaux de degré 0 de F sont: K1 = a.d + a.d (Co-noyau: b.c) => Gain 2 K2 = b + c (Co-noyau: a.d) => Gain 2 F/K1 = b.c.(a.d + a.d) + a.b.d + a.c.d (F/K1)/K2 = b.c.(a.d + a.d) + a.d.(b + c) Algorithme: 1 - Calculer tous les noyaux de degré 0 de F 2 - Classer les noyaux par gain croissant 3 - Opérer les divisions successives de la fonction par les noyaux. Factorisation dune fonction simple - Algorithme 1

10 10 F = a.b + a.c.d + c.e Les noyaux et co-noyaux de degré 0 de F sont: K1 = b + c.d (Co-noyau: a) => Gain 1 K2 = a.d + e (Co-noyau: c) => Gain 1 F/K1 = a.(b + c.d) + c.e (F/K1)/K2 => Impossible Attention : une fois une factorisation effectuée, il est possible que certaines des factorisations suivantes soient impossibles Factorisation dune fonction simple - Algorithme 1

11 11 F = a.b.c.d + a.b.d + a.c.d + a.b.c.d noyaux et co-noyaux de degré 0 de F : K1 = a.d + a.d (Co-noyau: b.c) => Gain 2 K2 = b + c (Co-noyau: a.d) => Gain 2 Gain identique => division par K1 F = b.c.(K1) + a.b.d + a.c.d noyaux et co-noyaux de degré 0 de F : K3 = b + c (Co-noyau: a.d) => Gain 2 Division par K3 F = b.c.(K1) + a.d.(K3) Plus de noyau de degré 0. En réinjectant K1 et K3 on obtient: F = b.c.(a.d + a.d) + a.d.(b + c) Algorithme: 1 - Calculer tous les noyaux de degré 0 de F 2 - Diviser par le noyau de gain maximal et renommer ce noyau par une sous- fonction 3 - Recommencer en 1 jusquà ce quil ny ait plus de noyau 4 - Réinjecter toutes les sous-fonctions pour obtenir la forme factorisée de F. Factorisation dune fonction simple - Algorithme 2

12 12 f2 f1 f2 Factorisation des fonctions multiples Sous-expressions communes à plusieurs fonctions. Les noyaux ou parties de noyaux communs f1 = acd+ade+abd+iNoyau de f1 : b+c+e => f1 = ad (c+e) +abd + i f2 = bcd+bde+bdhNoyau de f2 : c+e+h => f2 = bd (c+e) + bdh Les monômes ou parties de monômes communs f1 = abcd + e=> f1 = S d + e f2 = abce + d=> f2 = S e + d S = abc

13 13 Recherche de noyaux ou parties de noyaux communs Algorithme: 1 - On calcule tous les noyaux de chaque fonction Fi 2 - On associe à chaque monôme de tous les noyaux une variable Tj 3 - Pour chaque noyau on associe le monôme Tk qui compose ce noyau 4 - On calcule tous les noyaux de la fonction Z = ( Tk) 5 - Chaque co-noyau d'un noyau de degré 0 de la fonction Z correspond à une partie de noyau commune. F1 = a.c.d + a.d.e + a.i F2 = b.c.d + b.d.e + b.h F3 = e.c.d + e.i Noyau de F1:(c.d + d.e + i)(Co-noyau = a)Gain = 1*(3-1) = 2 (c + e)(Co-noyau = a.d)Gain = 2*(2-1) = 2 Noyau de F2: (c.d + d.e + h)(Co-noyau = b)Gain = 1*(3-1) = 2 (c + e)(Co-noyau = b.d)Gain = 2*(2-1) = 2 Noyau de F3: (c.d + i)(Co-noyau = e)Gain = 1*(2-1) = 1

14 14 Recherche de noyaux ou parties de noyaux communs On associe une variable Ti à chaque monôme des noyaux: T1 = c.d T2 = d.e T3 = i T4 = c T5 = e T6 = h On forme la fonction Z = T1.T2.T3 + T4.T5 + T1.T2.T6 + T4.T5 + T1.T3 Les noyaux et co-noyaux des noyaux de degré 0 de Z sont: T1.T2, T1.T3 et T4.T5 Les parties de noyaux communs sont donc: (c.d + d.e), (c.d + i) et (c + e)

15 15 Pour chaque fonction i où la partie commune est renommée, gain local G i G i = (Nombre de lit. du co-noyau i) * (Nombre de monômes de la partie commune -1) Gain global G (en nombre de littéraux) G = [ G i ] + [(Nombre de lit. de la sous-fonction -1) * (Nombre d'occurrences de la sous-fonction)] - [Nombre de lit. de la sous-fonction] Gain associé à un noyau commun ou partie commune F1 = a.c.d + a.d.e + a.i F2 = b.c.d + b.d.e + b.h F3 = e.c.d + e.i 21 littéraux H = c.d + d.e F1 = a.H + a.i F2 = b.H + b.h F3 = e.c.d + e.i 17 littéraux Gain associé à H = c.d + d.e: G = [1*(2 - 1) + 1*(2 - 1)] + [(4 - 1) * 2] - [4] G = 4

16 16 Recherche de monômes ou parties de monômes communes Algorithme 1 - On rajoute à chaque monôme de chaque fonction Fi une variable v i 2 - On calcule tous les noyaux de degré 0 et co-noyaux associés de la fonction Z composée de tous les monômes précédemment construits 3 - Les co-noyaux de noyaux de degré 0 dans lesquels aucune variable v i n'apparaît correspondent à des parties de monômes communs. Si plusieurs co-noyaux sont associés au même noyau, ils forment une somme de monômes communs Exemple F1 = a.b.c.d + d.e + h F2 = a.b.c.e + d.e + h Z = a.b.c.d.v 1 + d.e.v 1 + h.v 1 + a.b.c.e.v 2 + d.e.v 2 + h.v 2 Noyau Co-noyau d.v 1 + e.v 2 a.b.c v 1 + v 2 d.e v 1 + v 2 h 1) a.b.c : partie de monômes commune à F1 et F2 2) (d.e + h) : somme de monômes commune à F1 et F2

17 17 Gain associé G = [(Nombre de lit. de la sous-fonction -1) * (Nombre d'occurrences de la sous-fonction)] - [Nombre de lit. de la sous-fonction] F1 = a.b.c.d + d.e + h F2 = a.b.c.e + d.e + h F1 = F3.d + d.e + h F2 = F3.e + d.e + h F3 = abc 14 Littéraux 13 Littéraux Sous-fonction commune F3 = a.b.c G = [(3 - 1) * 2] - [3] = 1

18 18 Algorithme général de factorisation des fonctions multiples 1- Calculer tous les noyaux de chaque fonction et déterminer leur gain 2 - Calculer toutes les parties de noyaux communes à plusieurs fonctions et calculer le gain 3 - Calculer toutes les parties de monômes et sommes de monômes communs à plusieurs fonctions et calculer le gain 4 - Renommer la sous-fonction de gain maximal et lajouter à la liste des fonctions. 5 - Retourner en 1 tant quil existe un noyau, une partie de monôme commune ou une somme de monômes communs dont le gain est positif. 6 - Réinjecter toutes les sous-fonctions

19 19 Exemple F1 = a'.b'.c'.d' + a'.b.d + a'.c.d + a.b'.c'.d 24 littéraux F2 = a'.b'.c'.d + a.b.d' + a.c.d 1 - Noyaux de chaque fonction Noyau de F1: K1 1 = (a'.d' + a.d)=> Gain = 2*(2-1) = 2 K1 2 = (b'.c'.d' + b.d + c.d)=> Gain = 1*(3-1) = 2 K1 3 = (a'.b + a'.c + a.b'.c')=> Gain = 1*(3-1) = 2 K1 4 = (b + c)=> Gain = 2*(2-1) = 2 Noyau de F2: K2 1 = (b + c)=> Gain = 2*(2-1) = Parties de noyaux communes (b + c)=> Gain = [2+2] + [(2-1)*2] - [2] = Parties de monômes communs a'.b'.c'=> Gain = [(3-1)*2 ] -[3] = Choix de la sous-fonction de gain maximal F1 = a'.b'.c'.d' + a'.d.G1 + a.b'.c'.d F2 = a'.b'.c'.d + a.d'.G1 G1 = b + c 20 littéraux

20 20 Exemple 1 - Noyaux de chaque fonction Noyau de F1: K1 1 = (b'.c'.d' + d.G1)=> Gain 1 K1 2 = (a'.G1 + a.b'.c')=> Gain 1 K1 3 = (a'.d' + a.d)=> Gain 2 Noyau de F2: Aucun Noyau de G1: Aucun 2 - Parties de noyaux communs => Aucun 3 - Parties de monômes communs a'.b'.c'=> Gain Choix de la sous-fonction de gain maximal F1 = b'.c'.G2 + a'.d.G1 F2 = a'.b'.c'.d + a.d'.G1 G1 = b + c G2 = a'.d' + a.d19 littéraux F1 = a'.b'.c'.d' + a'.d.G1 + a.b'.c'.d F2 = a'.b'.c'.d + a.d'.G1 G1 = b + c

21 21 Exemple 1 - Noyaux de chaque fonction Noyau de F1: Aucun Noyau de F2: Aucun Noyau de G1: Aucun Noyau de G2: Aucun 2 - Parties de noyaux communes => Aucun 3 - Parties de monômes communs => b'.c'Gain 0 => a'.dGain 0 Il nexiste plus de sous-fonction possible de gain positif (b'.c' et a'.d ont un gain nul) 6 - Réinjecter toutes les sous-fonctions F1 = b'.c'.G2 + a'.d.G1 F1 = b'.c'.(a'.d' + a.d) + a'.d.(b + c) F2 = a'.b'.c'.d + a.d'.G1F2 = a'.b'.c'.d + a.d'.(b + c) G1 = b + c G2 = a'.d' + a.d

22 22 Décomposition technologique - niveau portes Décomposition sur une bibliothèque déléments précaractérisés Technology mapping ou "assignation technologique" Ensemble déquations booléennes minimisées Bibliothèque déléments prédéfinis Réseau de cellules (chemin critique et surface optimisés) Etape suivant la factorisation (minimisation du nombre de littéraux)

23 23 Décomposition technologique (Technology Mapping) Exemple: t 1 = a + bc; t 2 = d + e; t 3 = ab + c; t 4 = t 1 t 2 + fg; t 5 = t 4 h + t 2 t 3 ; F = t 5; Ensemble d'équations logiques non optimisées de 16 littéraux d+ea+bc t 5 t 1 t 2 + fg F ab+c t 4 h + t 2 t 3

24 24 Equations Optimisées En utilisant la factorisation (indépendante de la technologie) ces équations sont optimisées en utilisant seulement 14 littéraux : t 1 = d + e; t 2 = b + h; t 3 = at 2 + c; t 4 = t 1 t 3 + fgh; F = t 4; d+e b+h t 4 at 2 +c t 1 t 3 + fgh F d+e a+bc t 5 t 1 t 2 + fg F ab+d t 4 h + t 2 t 3 t1 t2 t3

25 25 Implanter ce réseau en utilisant un ensemble de portes appartenant à une bibliothèque. Chaque porte a un coût (surface, délai, puissance, …) Bibliothèque

26 26 Approche algorithmique Approche algorithmique [DAGON, MISII] 1.Représenter chaque fonction du réseau en utilisant un ensemble d' opérateurs de base. Cette représentation est appelée le graphe sujet. Typiquement, la base est le NAND 2 entrées et l'inversion [MISII]. Cet ensemble doit être fonctionnellement complet. 2.De même, chaque porte de la bibliothèque est représentée en utilisant les opérateurs de base => graphes formes Représenter chaque porte de toutes les façons possibles 3. Chercher une couverture optimale du graphe sujet par des graphes formes

27 27 Graphe sujet d+e b+h t 4 at 2 +c t 1 t 3 + fgh bh a de hg f c Graphe sujet représenté en opérateurs NAND2 et NOT F F t1 t2 t3 t 1 = d + e; t 2 = b + h; t 3 = at 2 + c; t 4 = t 1 t 3 + fgh; F = t 4;

28 28 Exemple de bibliothèque : graphes formes inv(1) nand3 (3) oai22 (4) nor(2) nor3 (3) xor (5) aoi21 (3) and2(3) nand2(2) or2(3) xnor (5) Graphes des portes représentés en opérateurs NAND2 et NOT

29 29 Approche algorithmique Une couverture est une collection de graphes formes telle que 1.chaque noeud du graphe sujet est contenu dans un (ou plusieurs) graphes formes 2.chaque entrée d'un graphe forme est la sortie d'un autre graphe forme (i.e. les entrées d'une porte sont la sortie d'autres portes) Si l'on vise la surface minimale, le coût de la couverture est la somme des surfaces des portes de la couverture. Problème du mapping technologique : trouver une couverture de coût minimum du graphe sujet en choisissant les portes dans la bibliothèque.

30 30 Graphe Sujet t 1 = d + e; t 2 = b + h; t 3 = at 2 + c; t 4 = t 1 t 3 + fgh; F = t 4; F f g d e h b a c

31 31 Couverture du graphe sujet t 1 = d + e; t 2 = b + h; t 3 = at 2 + c; t 4 = t 1 t 3 + fgh; F = t 4; F f g d e h b a c Coût total = 23 nand2(2) inv(1)

32 32 Une autre couverture (meilleure) t 1 = d + e; t 2 = b + h; t 3 = at 2 + c; t 4 = t 1 t 3 + fgh; F = t 4; F f g d e h b a c aoi22(4) and2(3) or2(3) Coût total = 19 nand2(2) inv(1)

33 33 Une autre couverture (encore meilleure) t 1 = d + e; t 2 = b + h; t 3 = at 2 + c; t 4 = t 1 t 3 + fgh; F = t 4; F f g d e h b a c nand3(3) oai21(3) oai21 (3) Coût total = 15 and2(3) inv(1) nand2(2)

34 34 Technology mapping par couverture Entrée 1.Réseau logique optimisé, indépendamment de la technologie 2.La description des portes dans une bibliothèque avec leur coût. Sortie Réseau de portes (netlist) de la bibliothèque qui minimise le coût total Approche Générale Construire le graphe sujet du réseau. Représenter chaque porte de la bibliothèque par un graphe forme (ou plusieurs) Trouver une couverture optimale du graphe sujet par les graphes formes des portes de la bibliothèque

35 35 Résolution Dans le cas général, le problème de la recherche d'une couverture optimale est un problème dit NP-dur i.e. qu'il faut d'abord générer toutes les solutions, et ensuite choisir la meilleure Si le graphe sujet et les graphes formes sont des arbres (pas de reconvergence) il existe un algorithme efficace.

36 36 Chercher tous les "matches" possibles {m k } (ellipses dans fig.) pour chaque noeud du graphe sujet En utilisant une variable m i booléenne pour chaque "match" d'un graphe forme dans le graphe sujet, (m i =1 si le match est choisi, 0 sinon) Ecrire une clause pour chaque nœud du graphe sujet indiquant les possibilités de recouvrement de ce nœud. Chaque nœud doit être couvert. si un noeud du graphe sujet est couvert par les matches {m 1, m 2,... }, la clause est (m 1 + m ), càd le nœud de la fonction peut être couvert par m 1 ou m 2 ou … Ex : Cas général => problème de satisfiabilité a b c d o1o1 o2o2 m1 :porte NAND2 m2 :porte OR2

37 37 Répéter pour chaque noeud : (m i1 +m i2 +…+m in ) Prendre le produit de toutes les clauses càd tous les nœuds doivent être couverts => (CNF ou forme π Σ) (m i1 +m i2 +…+m in ). (m j1 +m j2 +…+m jn )…….. (m k1 +m k2 +…+m kn ) Déterminer les jeux de valeurs des m i pour lesquels la forme π Σ =1 (m i1 +m i2 +…+m in ). (m j1 +m j2 +…+m jn )…….. (m k1 +m k2 +…+m kn ) = 1 Déterminer parmi tous les jeux de valeurs celui-ci qui a le cout minimal Cas général => problème de satisfiabilité

38 38 problème de satisfiabilité SortieCouvre m11n7n4,n6,n7 m10n9n7,n8,n9 …..… a b c d o1o1 o2o2 Porte nand3 (3) Pour n7 : (m10 + m11 + …..) m11 m10

39 39 problème de satisfiabilité Toute assignation des mi pour laquelle la CNF est satisfaite (i.e. =1) garantit que toutes les noeuds du graphe sujet sont couverts, mais ne garantit pas que les entrées d'une porte choisie corresponde à des sorties d'autres portes Ex : On rectifie en ajoutant des clauses supplémentaires à la CNF a b c d o1o1 o2o2

40 40 Problème de satisfiabilité : entrées/sorties Soit le match m i qui a les noeuds e i1,…,e in comme entrées. Si m i est choisi, un des matches qui implante e ij doit aussi être choisi pour chaque entrée (j n'est pas une entrée primaire). Soit S ij une expression disjonctive (le "ou") des variables m k donnant les matches qui implantent e ij et pour lesquels e ij est une sortie. Sélectionner le match m i implique de satisfaire chacune des expressions S ij pour j = 1 … n. On peut l'écrire : ( m i (S i1 … S in ) ) ( m' i + (S i1 … S in ) ) (( m' i + S i1 ) … ( m' i + S in ) ) 1 2 3

41 41 couverture de DAG => problème de statisfiabilité Un match pour chaque sortie primaire doit être sélectionné Une assignation des variables m i pour laquelle la CNF vaut 1 est une couverture possible. Minimisation surface : chaque match m i a un coût c i i.e. la surface de la porte que le matche représente. Le but est de trouver une assignation qui satisfasse la CNF dont le coût total soit minimum. Trouver un monôme premier de coût minimum: si la variable m i = 0, (m i n'est pas choisi), son coût est 0 si la variable m i = 1, (m i est choisi), son coût est c i

42 a b c d o1o1 o2o2 Exemple

43 43 Exemple Générer les contraintes de couverture de chaque noeud : (m 1 + m 12 + m 14 ) (m 2 + m 12 + m 14 ) (m 3 + m 12 + m 14 ) (m 4 + m 11 + m 12 + m 13 ) (m 5 + m 12 + m 14 ) (m 6 + m 11 + m 13 ) (m 7 + m 10 + m 11 + m 13 ) (m 8 + m 10 + m 13 ) (m 9 + m 10 + m 13 )

44 44 Exemple Pour assurer qu'une couverture conduit à un circuit valide, des clauses supplémentaires sont générées. Par exemple, sélectionner m 3 nécessite de : choisir un match qui a n 2 comme sortie, et choisir un match qui a n 1 comme sortie. Le seul match dont la sortie est n 1 est m 1, et le seul match dont la sortie est n 2 est m 2 m1m a b c d o1o1 o2o2 m3m3 m2m2 On rajoute la clause : (m 3 {m 1,m 2 }) i.e. (m' 3 + m 1 ) (m' 3 + m 2 )

45 45 Exemple On avait : (m 1 + m 12 + m 14 ) (m 2 + m 12 + m 14 ) (m 3 + m 12 + m 14 ) (m 4 + m 11 + m 12 + m 13 ) (m 5 + m 12 + m 14 ) (m 6 + m 11 + m 13 ) (m 7 + m 10 + m 11 + m 13 )(m 8 + m 10 + m 13 ) (m 9 + m 10 + m 13 ) On rajoute : (m' 3 + m 1 ) (m' 3 + m 2 ) (m 3 +m' 5 ) (m' 5 + m 4 ) (m' 6 + m 4 ) (m' 7 + m 6 ) (m' 8 + m 7 ) (m 8 +m' 9 ) (m' 10 + m 6 ) (m' 14 + m 4 ) (m 5 + m 12 + m 14 ) (m 9 + m 10 + m 13 ) On développe ….. L'expression de la couverture a 58 monômes premiers Le monôme premier de coût minimal est m' 3 m' 5 m' 6 m' 7 m' 8 m' 9 m' 10 m 12 m 13 m' 14 c-à-d deux portes de coût total 9. Cela correspond à une couverture qui sélectionne les matchs m 12 (xnor2) et m 13 (nand4).

46 a b c d o1o1 o2o2 m' 3 m' 5 m' 6 m' 7 m' 8 m' 9 m' 10 m 12 m 13 m' 14 NB le noeud n 4 est couvert par les 2 matchs càd sa fonction est dédoublée. Exemple

47 47 Methodes de résolution: Branch and bound [Thelen] BDD-s [Lin and Somenzi] Même pour des circuits de taille modérée, résolution longue. = > Se ramener à des arbres Complexité de la couverture de DAG

48 48 Couverture optimale par des arbres F = (f1,f2) f1 = cd+ abe + ce + abde + cbde f2 = a + abd + cd + e Factorisation =>g1 = a.b+c g2= b.d.e g3= g1.e+ (a+c).g2 f1 = c d +g3 f2 = a+ d.g1+e g2 g1 g3 f2 f1 Partitionnement : Fonctions mono-sortie (arbres)

49 49 Mapping optimisé Algorithme : programmation dynamique (des feuilles vers la racine) Bibliothèque inv = 2 nand2 =3 and2 =4 aoi21 = 6 nor2 = 2,5 a b c d x y z t u Fonction

50 50 Mapping optimisé Bibliothèque a b c d x y z t u Fonction Somme t PorteCoûtCoût total xNand2(b,c)1 Nand23 yInv(a)1 Inv2 zNand2 (x,d)2 Nand26 tNand2 (y,z)3 Nand2+1 Inv11 uInv(t)3 Nand2+2 Inv13 And2 (y,z)2 Nand2+1And2+1Inv12 AOI21(x,d,a)1 Nand2+AOI219 inv:2 nand2:3 and2:4 aoi21:6 nor2:2,5

51 51 Mapping optimisé bcda Coût = 9

52 52 Exercice : optimisation vitesse a b c d x y z t u v w e Exemple délais : inv = 2, nand2 =3, and2 =4, aoi21 = 6, or2 = 3

53 53 Discussion Résultat dépendant de la décomposition en NAND2 et INV. Ex : F=A.B + C nand (nand (A,B),C) nand (not(not(nand (A,B))),C) 2NAND1NAND+1AND+INV2NAND2+(2INV)

54 54 Insertion systématique - un inverseur sur les entrées - une paire d inverseur sur les arcs internes Inversion Possibilité d'inverser les entrées et/ou la fonction Possibilité d insérer des paires d'inverseur (de coût nul) F = ad + abc a b c d x y z t u

55 55 Inversion o a d' b'c' Coût = 7,5 exemple : inv = 2, nand2 =3, and2 =4, aoi12 = 6, nor2 = 2,5 Coût = a b c d x y z t u bcda

56 56 Partitionnement direct : coupure à chaque divergence => fonctions mono-sortie (arbres) => pas de recouvrement des graphes formes, pas de duplication Inconvénient => beaucoup de "petits" arbres Partitionnement

57 57 Autre partitionnement : A partir d'une sortie, former un cône jusqu'aux entrées primaires Mapper successivement chaque sortie jusqu'à ce qu'elle corresponde à des sorties formées par les mappings précédents Duplication de logique Plus grands arbres => optimisation plus efficace Partitionnement Sortie Sortie

58 58 Décomposition sur portes complexes CMOS But: saffranchir des limitations dues aux bibliothèques Ensemble déquations booléennes factorisées Contraintes liées à la technologie Liste des portes et réseau de cellules (chemin critique et surface optimisés) Etape suivant la factorisation (minimisation du nombre de littéraux) 2 étapes: - Génération des portes complexes nécessaires (layout synthesis) - Placement / routage comme pour des cellules standards Nb MOS max en série (k) Nb MOS max en // (k) Décomposition technologique - niveau transistors

59 59 Vdd Vss E S Vdd Vss E1 E2 E1 E2 S S Vss Vdd E1 E2 E1 E2 Portes inverseuses Inverseur Nand2 Nor2 Portes élémentaires CMOS

60 60 Vss Vdd Réseau PMOS Réseau NMOS Ei S=F(Ei) F(Ei) F(Ei)* Portes logiques statiques CMOS

61 61 Vss F = a.b + c.(d + e) F = (a + b). (c + d.e) F* = a.b + c.(d + e) S Vdd a b c d e a b c d e Porte complexe CMOS

62 62 Décomposition Réseaux N et P duaux => Rôle dual des limites k et k => Rôle dual de S et P (S valable soit pour le plan N soit pour le plan P selon inversion) Préparation de la décomposition: Calcul des degrés série S et parallèle P pour chaque nœud N de larbre N est une feuille => S = P = 1 N =. => S = somme des S des nœuds fils P = maximum des P des nœuds fils N = + => S = maximum des S des nœuds fils P = somme de P des nœuds fils

63 63 Exemple de calcul des couples (S,P) (1,1) (3,1) (2,1)(2,2) (4,2) (2,2) (1,2) (2,2) (2,1) (4,8) (1,2) F = abc + df + (a+b).(c+f ) + dc(i + j.k) + g.(i+k) S P

64 64 Algorithme de décomposition Point de départ: feuille associée au plus long chemin dans larbre Définition de groupes de nœuds associés à une porte complexe: - Un nœud est absorbé dans un groupe tant que S k et P k - Le premier nœud rencontré tel que S>k ou P>k est un nœud de coupure Expansion des nœuds de coupure (si nécessaire) pour définir une sous-fonction associée à une porte complexe maximale (S=k et/ou P=k) Itération sur larbre restant après définition de la sous-fonction

65 65 Expansion dun nœud de coupure + (1,1) (4,2) (2,2) (2,1) k=k=3 + (1,1) (2,1) (2,2) (2,1) (3,2) Noeud de coupure + (1,1) (4,2) (2,2) (2,1) (3,2) (1,1) SF

66 66 Représentation de la sous-fonction + (2,2) (2,1) (3,2) a b cd SF SF = a.(b + c.d) SF = a + b.(c + d) SF* = a.(b + c.d) Vss SF Vdd b a d a b c d Vss c d

67 67 Décomposition - Exemple (1) (3,1) (2,1)(2,2) (4,2) (2,2) (1,2) (2,2) (2,1) (4,8) abcdf abcf d c i j k g ik F = abc + df + (a+b).(c+f ) + dc(i + j.k) + g.(i+k) (1,2)

68 68 Décomposition - Exemple (2) (3,1) (2,1)(2,2) (4,2) (2,2) (1,2) (4,8) abcdf abcf d c + (2,2) (2,1) i j k g ik (3,2) SF1 (1,2)

69 69 Décomposition - Exemple (3) (3,1) (2,1)(2,2) (2,1) (2,2) (1,2) (3,7) SF1 abcdf abcf d g ik (1,2)

70 70 Décomposition - Exemple (4) (3,1) (2,1) (2,2) (2,1) (2,2) (1,2) (3,7) SF1 abc df abcf d g ik + (3,3) SF2 (1,2)

71 71 Décomposition - Exemple (5) + (2,1) (2,2) (2,5) SF1dfd g ik + SF2 (1,2)

72 72 Décomposition - Exemple (6) + (2,1) (2,2) (2,5) SF1 d f d g ik + SF2 + (2,3) SF3 (1,2)

73 73 Décomposition - Exemple (7) (2,1) (2,3) d f + SF2 SF3 Vss F Vdd d f SF2 SF3 SF2 SF3 d f F = SF2 + SF3 + d.f F = SF2.SF3.(d + f) F* = SF2 + SF3 + d.f

74 74 Exemple (8) + ++ (3,1) (2,2) (1,2) abc abcf (3,3) SF2 SF2 = abc + (a'+b') (c'+f) SF2' voulu Vss SF2' a a b c a c b b b cf a f c Vdd

75 75 Plan Synthèse de contrôleurs (FSM) Spécification de contrôleurs Influence du codage Optimisation des équations logiques Minimisation des fonctions 2 niveaux Minimisation des fonctions multi-niveau Décomposition technologique (Mapping) Niveau portes Niveau transistors Réseaux programmables

76 76 Circuits Logiques Programmables : PLD PAL : Programmable Array Logic GAL : Generic Array Logic EPLD : Erasable Programmable Logic Device FPGA : Forecasting programmable Logic Array PLD : Programmable Logic Device

77 77 Circuits Logiques Programmables : PLD PAL (Programmable Array Logic) : Circuits logiques programmables dans lesquels seules les fonctions ET sont programmables, les fonctions OU ne le sont pas. Programmation par destruction de fusibles. GAL (Generic Array Logic) LATTICE SEMICONDUCTOR : Circuits logiques PAL reprogrammables à technologie CMOS (Effaçables électriquement). EPLD (Erasable Programmable Logic Device) : Circuits logiques reprogrammables (Effaçables électriquement ou par UV). FPGA (Forecasting Programmable Gate Array) : Réseau de portes programmables à la demande. Technologie qui utilise des circuits encapsulés comportant des réseaux de portes logiques non reliées : lutilisateur réalise les interconnexions nécessaires par programmation. CPLD (Complex Programmable Logic Device) : Désigne des PLD ayant un haut niveau d'intégration.

78 78 PAL : Programmable Array Logic Ce sont les circuits logiques programmables les plus anciens. Les PAL sont programmés par destruction de fusibles. Ils ne sont donc programmables quune fois, ce qui peut être gênant en phase de développement. Un PAL permet de remplacer jusquà 10 boîtiers SSI ou 2 à 3 boîtiers MSI. Ce PAL simplifié comporte 2 entrées I 1 et I 2 et une sortie O. Huit fusibles (F 1 à F 8 ) permettent de réaliser diverses fonctions logiques. La programmation va consister à faire sauter les fusibles nécessaires afin de réaliser la fonction voulue.

79 79 PAL : Programmable Array Logic PAL 4 entrées 4 sorties

80 80 Implantation sur FPGA Block logique Block logique Block logique Block logique Block logique Block logique Block logique Block logique Block logique Switch Matrix: Interrupteurs programmables

81 81 Architecture des blocks logiques : Actel 1 1 a b 1 cd 1 f f = a + b + c + d Pas de programmation du block logique

82 82 Architecture des blocks logiques : Quicklogic Pas de programmation du block logique C D R S Q

83 83 Architecture des blocks logiques : Xilinx 3000 C D R S Q C D R S Q Look-up Table (LUT) A B C D E X Y Data in Enable Clock Clock Reset Global Reset Gnd Vcc LUT : ROM = Utilisée pour implanter toute fonction de k variables


Télécharger ppt "1 Polytech' Montpellier Université Montpellier II Place Eugène Bataillon, 34095 Montpellier cedex 05, FRANCE Laboratoire d'Informatique, de Robotique et."

Présentations similaires


Annonces Google