• Aucun résultat trouvé

Factorisation/Mapping fonctions boolénnes

N/A
N/A
Protected

Academic year: 2022

Partager "Factorisation/Mapping fonctions boolénnes"

Copied!
35
0
0

Texte intégral

(1)

Polytech' Montpellier Université Montpellier II

Place Eugène Bataillon, 34095 Montpellier cedex 05, FRANCE

Laboratoire d'Informatique, de Robotique et de Microélectronique de Montpellier UMR 9928 Université Montpellier II / CNRS

161 rue Ada, 34392 Montpellier cedex 05, FRANCE

Factorisation des fonctions logiques

(2)

F = a.c + a.d + b.c + b.d Factorisation => F = (a + b) . (c + d)

1 1

1 1

1 1

1 1

1 ab

cd

00 01 11 10 00

01 11 10

24 Transistors

12 Transistors

Effet de la factorisation

(3)

Soit F et G deux expressions algébriques de deux fonctions booléennes F =  mi pour i=1,...,n G =  mj pour j=1,...,m

Le produit algébrique F.G est défini par:

F.G =  mi.mj 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)

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 qu’il n’existe 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)

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)

Une expression algébrique F est une expression libre s’il n’existe pas de monôme m (avec m différent de 1) qui soit un facteur

algébrique de F.

F = a.b + a.c n’est pas libre F = a.b.c n’est pas libre F = a.b + c est libre

Expression libre

(7)

K est un noyau d’une 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 n’est pas de degré 0 (degré 1)

K admet un noyau K1 = (b + c), d étant son co-noyau

Un noyau est de degré 0 s’il n’admet pas d’autre noyau que lui même.

(Le degré d’un noyau est défini de manière récursive)

Les noyaux d’une expression algébrique représentent toutes les factorisations maximales possibles (en nombre de variables)

Noyau

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

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 d’une fonction simple - Algorithme 1

(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 d’une fonction simple - Algorithme 1

(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 qu’il n’y ait plus de noyau

4 - Réinjecter toutes les sous-fonctions pour obtenir la forme factorisée de F.

Factorisation d’une fonction simple - Algorithme 2

(12)

f2 f1 f1

f2

Factorisation des fonctions multiples

Sous-expressions communes à plusieurs fonctions.

Les noyaux ou parties de noyaux communs

f1 = acd+ade+abd+i Noyau de f1 : b+c+e => f1 = ad (c+e) +abd + i

f2 = bcd+bde+bdh Noyau 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)

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)

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)

Pour chaque fonction i où la partie commune est renommée, gain local Gi

Gi = (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 =  [ Gi]

+ [(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)

Recherche de monômes ou parties de monômes communes

Algorithme

1 - On rajoute à chaque monôme de chaque fonction Fi une variable vi 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 vi 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.v1 + d.e.v1 + h.v1 + a.b.c.e.v2 + d.e.v2 + h.v2 Noyau Co-noyau

d.v1 + e.v2 a.b.c v1 + v2 d.e v1 + v2 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)

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)

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 l’ajouter à la liste des fonctions.

 5 - Retourner en 1 tant qu’il 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: K11 = (a'.d' + a.d) => Gain = 2*(2-1) = 2 K12 = (b'.c'.d' + b.d + c.d) => Gain = 1*(3-1) = 2 K13 = (a'.b + a'.c + a.b'.c') => Gain = 1*(3-1) = 2 K14 = (b + c) => Gain = 2*(2-1) = 2 Noyau de F2:

K21 = (b + c) => Gain = 2*(2-1) = 2 2 - Parties de noyaux communes

(b + c) => Gain = [2+2] + [(2-1)*2] - [2] = 4 3 - Parties de monômes communs

a'.b'.c' => Gain = [(3-1)*2 ] -[3] = 1 4 - 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)

Exemple

1 - Noyaux de chaque fonction

Noyau de F1: K11 = (b'.c'.d' + d.G1) => Gain 1 K12 = (a'.G1 + a.b'.c') => Gain 1 K13 = (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 1

4 - 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.d 19 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'.d Gain 0

Il n’existe 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'.G1 F2 = a'.b'.c'.d + a.d'.(b + c)

G1 = b + c

G2 = a'.d' + a.d

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

Décomposition technologique (Technology Mapping)

Exemple:

t1 = a + bc;

t2 = d + e;

t3 = ab + c;

t4 = t1t2 + fg;

t5 = t4h + t2t3; F = t5’;

Ensemble d'équations logiques non optimisées de 16 littéraux

d+e a+bc

t

5

t

1

t

2

+ fg

F

ab+c

t

4

h + t

2

t

3

(24)

Equations Optimisées

En utilisant la factorisation (indépendante de la technologie) ces équations sont optimisées en utilisant seulement 14 littéraux :

t1 = d + e;

t2 = b + h;

t3 = at2 + c;

t4 = t1t3 + fgh;

F = t4’;

d+e b+h

t

4

at

2

+c t

1

t

3

+ fgh

F

a+bc d+e

t

5

t

1

t

2

+ fg

F

ab+d

t

4

h + t

2

t

3

t1 t2

t3

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

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)

Graphe sujet

d+e b+h

t4

at2 +c t1t3 + fgh

b’ h’

a d’ e’

h g

f

c

Graphe sujet représenté en opérateurs NAND2 et NOT

F F

t1 t2

t3

t1 = d + e;

t2 = b + h;

t3 = at2 + c;

t4 = t1t3 + fgh;

F = t4’;

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

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)

Graphe Sujet

t1 = d + e;

t2 = b + h;

t3 = at2 + c;

t4 = t1t3 + fgh;

F = t4’;

F f

g

d

e

h

b

a

c

(31)

Couverture du graphe sujet

t1 = d + e;

t2 = b + h;

t3 = at2 + c;

t4 = t1t3 + fgh;

F = t4’;

F f

g d e h b a Coût total = 23 c

nand2(2) inv(1)

(32)

Une autre couverture (meilleure)

t1 = d + e;

t2 = b + h;

t3 = at2 + c;

t4 = t1t3 + fgh;

F = t4’;

F f

g d e h b a c

aoi22(4) and2(3)

or2(3)

or2(3)

Coût total = 19

nand2(2)

nand2(2)

inv(1)

(33)

Une autre couverture (encore meilleure)

t1 = d + e;

t2 = b + h;

t3 = at2 + c;

t4 = t1t3 + fgh;

F = t4’;

F f

g d e h b a c

nand3(3) nand3(3) oai21(3)

oai21(3)

oai21 (3) oai21 (3)

Coût total = 15

and2(3)

inv(1)

nand2(2)

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

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)

Chercher tous les "matches" possibles {mk } (ellipses dans fig.) pour chaque noeud du graphe sujet

En utilisant une variable mi booléenne pour chaque "match" d'un graphe forme dans le graphe sujet, (mi =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 {m1, m2, ...}, la clause est (m1 + m2 + ...), càd le nœud de la fonction peut être couvert par m1 ou m2 ou …

Ex :

Cas général => problème de satisfiabilité

1 2

3

4

5

6

7 8

9

ba dc

o1

o2

m1 :porte NAND2 m2 :porte OR2

(37)

Répéter pour chaque noeud :

(mi1+mi2+…+min)

Prendre le produit de toutes les clauses càd tous les nœuds doivent être couverts => (CNF ou forme πΣ)

(mi1+mi2+…+min) . (mj1+mj2+…+mjn)…….. (mk1+mk2+…+mkn)

Déterminer les jeux de valeurs des mi pour lesquels la forme πΣ =1

(mi1+mi2+…+min) . (mj1+mj2+…+mjn)…….. (mk1+mk2+…+mkn) = 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)

problème de satisfiabilité

Sortie Couvre

m11 n7 n4,n6,n7

m10 n9 n7,n8,n9

….. …. ….

1 2

3

4

5

6

7 8

9

ba dc

o1

o2

Porte nand3 (3)

Pour n7 : (m10 + m11 + …..)

m11 m10

(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

1 2

3

4

5

6

7 8

9

ab cd

o1

o2

(40)

Problème de satisfiabilité : entrées/sorties

Soit le match mi qui a les noeuds ei1,…,ein comme entrées. Si mi est choisi, un des matches qui implante eij doit aussi être choisi pour chaque entrée (j n'est pas une entrée primaire).

Soit Sij une expression disjonctive (le "ou") des variables mk donnant les matches qui implantent eij et pour lesquels eij est une sortie.

Sélectionner le match mi implique de satisfaire chacune des expressions Sij pour j = 1 … n.

On peut l'écrire :

(

m

i

(Si1 … Sin ) )

(

m'

i + (Si1 … Sin ) )

((

m'

i + Si1)… (

m'

i + Sin ) )

1 2

3

(41)

couverture de DAG => problème de statisfiabilité

 Un match pour chaque sortie primaire doit être sélectionné

 Une assignation des variables mi pour laquelle la CNF vaut 1 est une couverture possible.

 Minimisation surface : chaque match mi a un coût ci 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 mi = 0, (mi n'est pas choisi), son coût est 0

si la variable mi = 1, (mi est choisi), son coût est ci

(42)

42

Porte Coût Entrées Sortie Couvre

m1 inv 1 b n1 n1

m2 inv 1 a n2 n2

m3 nand2 2 n1, n2 n3 n3

m4 nand2 2 a, b n4 n4

m5 nand2 2 n3, n4 n5 n5

m6 inv 1 n4 n6 n6

m7 nand2 2 n6, c n7 n7

m8 inv 1 n7 n8 n8

m9 nand2 2 n8, d n9 n9

m10 nand3 3 n6, c, d n9 n7, n8, n9 m11 nand3 3 a, b, c n7 n4, n6, n7

m12 xnor2 5 a, b n5 n1, n2, n3, n4, n5 m13 nand4 4 a, b, c, d n9 n4, n6, n7, n8, n9 m14 oai21 3 a, b, n4 n5 n1, n2, n3, n5

1 2

3

4

5

6

7 8

9

ab dc

o1

o2

Exemple

(43)

Porte Coût Entrées Sortie Couvre m1 inv 1 b n1 n1

m2 inv 1 a n2 n2

m3 nand2 2 n1, n2 n3 n3

m4 nand2 2 a, b n4 n4

m5 nand2 2 n3, n4 n5 n5

m6 inv 1 n4 n6 n6

m7 nand2 2 n6, c n7 n7

m8 inv 1 n7 n8 n8

m9 nand2 2 n8, d n9 n9

m10 nand3 3 n6, c, d n9 n7, n8, n9 m11 nand3 3 a, b, c n7 n4, n6, n7

m12 xnor2 5 a, b n5 n1, n2, n3, n4, n5 m13 nand4 4 a, b, c, d n9 n4, n6, n7, n8, n9

m14 oai21 3 a, b, n4 n5 n1, n2, n3, n5

Exemple

Générer les contraintes de couverture de chaque noeud : (m1 + m12 + m14) (m2 + m12 + m14) (m3 + m12 + m14)

(m4 + m11 + m12 + m13) (m5 + m12 + m14) (m6 + m11 + m13) (m7 + m10 + m11 + m13) (m8 + m10 + m13) (m9 + m10 + m13)

(44)

Exemple

Pour assurer qu'une couverture conduit à un circuit valide, des clauses supplémentaires sont générées.

Par exemple, sélectionner m3 nécessite de :

choisir un match qui a n2 comme sortie, et

choisir un match qui a n1 comme sortie.

Le seul match dont la sortie est n1 est m1, et le seul match dont la sortie est n2 est m2

m

1 1

2

3

4

5

6

7 8

9

ba dc

o1

o2

m

3

m

2

On rajoute la clause : (m3  {m1,m2}) i.e. (m'3 + m1) (m'3 + m2)

(45)

Exemple

On avait :

(m1 + m12 + m14) (m2 + m12 + m14) (m3 + m12 + m14) (m4 + m11 + m12 + m13) (m5 + m12 + m14) (m6 + m11 + m13) (m7 + m10 + m11 + m13)(m8 + m10 + m13) (m9 + m10 + m13)

On rajoute :

(m'3 + m1) (m'3 + m2) (m3 +m'5) (m'5 + m4) (m'6 + m4) (m'7 + m6) (m'8 + m7) (m8 +m'9) (m'10 + m6)

(m'14 + m4) (m5 + m12 + m14) (m9 + m10 + m13)

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 m12 m13 m'14

c-à-d deux portes de coût total 9. Cela correspond à une couverture qui sélectionne les matchs m12 (xnor2) et m13 (nand4).

(46)

1 2

3

4

5

6

7 8

9

ab dc

o1

o2

m'm'33 m'm'55 m'm'66 m'm'77 m'm'88 m'm'99 m'm'1010 m m1212 m m1313 m'm'1414

NB le noeud n4 est

couvert par les 2 matchs càd sa fonction est

dédoublée.

Exemple

Porte Coût Entrées Sortie Couvre

m1 inv 1 b n1 n1

m2 inv 1 a n2 n2

m3 nand2 2 n1, n2 n3 n3

m4 nand2 2 a, b n4 n4

m5 nand2 2 n3, n4 n5 n5

m6 inv 1 n4 n6 n6

m7 nand2 2 n6, c n7 n7

m8 inv 1 n7 n8 n8

m9 nand2 2 n8, d n9 n9

m10 nand3 3 n6, c, d n9 n7, n8, n9 m11 nand3 3 a, b, c n7 n4, n6, n7

m12 xnor2 5 a, b n5 n1, n2, n3, n4, n5 m13 nand4 4 a, b, c, d n9 n4, n6, n7, n8, n9 m14 oai21 3 a, b, n4 n5 n1, n2, n3, n5

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

Couverture optimale par des arbres

F = (f1,f2)

f1 = cd’+ abe + ce + a’b’de + cb’de 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)

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)

Mapping optimisé

Bibliothèque

a

b c

d x

y z

t u

Fonction

Sommet Porte Coût Coût total

x Nand2(b,c) 1 Nand2 3

y Inv(a) 1 Inv 2

z Nand2 (x,d) 2 Nand2 6

t Nand2 (y,z) 3 Nand2+1 Inv 11

u Inv(t) 3 Nand2+2 Inv 13

And2 (y,z) 2 Nand2+1And2+1Inv 12 AOI21(x,d,a) 1 Nand2+AOI21 9

inv:2 nand2:3 and2:4 aoi21:6 nor2:2,5

(51)

Mapping optimisé

b c d a

Coût = 9

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

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)

2NAND 1NAND+1AND+INV 2NAND2+(2INV)

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

1 2

3 4

5 6

7 8 9

10 11

12

F = a’d ’+ a’bc 13

a

b c

d x

y z

t u

(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 = 9

1 2

3 4

5 6

7 8 9

10 11

12 13

a

b c

d x

y z

t u

b c d a

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

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

Sortie Sortie

(58)

Décomposition sur portes complexes CMOS

But: s’affranchir 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)

Vdd

Vss

E S

Vdd Vdd

Vss

E1 E2

E1 E2

S

S

Vss Vss

Vdd E1

E2

E1 E2

Portes inverseuses

Inverseur Nand2 Nor2

Portes élémentaires CMOS

(60)

Vss Vdd

Réseau PMOS

Réseau NMOS

Ei S=F(Ei)

F(Ei) F(Ei)*

Portes logiques statiques CMOS

(61)

Vss

Vss F = a.b’ + c.(d’ + e’)

F’ = (a’ + b) . (c’ + d.e) F’* = a’.b + c’.(d + e)

S Vdd

a’

b

Vdd c’

d e

a’ b

c’ d

e

Porte complexe CMOS

(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 l’arbre 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)

Exemple de calcul des couples (S,P)

+

+ + + +

(1,1) (1,1) (1,1) (1,1) (1,1)

(1,1)(1,1) (1,1) (1,1)

(1,1) (1,1)

(1,1) (1,1) (1,1)

(1,1) (1,1) (1,1)

(3,1) (2,1) (2,2) (4,2) (2,2)

(1,2) (1,2)

(2,2)

(2,1) (4,8)

(1,2)

F = abc + df + (a’+b’).(c’+f ’) + d’c’(i + j.k) + g’.(i’+k’)

S

P

(64)

Algorithme de décomposition

Point de départ: feuille associée au plus long chemin dans l’arbre 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 l’arbre restant après définition de la sous-fonction

(65)

Expansion d’un nœud de coupure

+

(1,1) (1,1) (1,1)

(1,1) (1,1) (4,2)

(2,2)

(2,1)

k=k’=3

+

(1,1) (1,1) (1,1)

(1,1)

(1,1) (2,1)

(2,2)

(2,1) (3,2)

Noeud de coupure

+

(1,1) (1,1) (1,1)

(1,1)

(1,1) (4,2)

(2,2)

(2,1) (3,2)

(1,1) SF

(66)

Représentation de la sous-fonction

+ (2,2)

(2,1) (3,2)

a

b

c d

SF

SF = a.(b + c.d)

SF’ = a’ + b’.(c’ + d’) SF’* = a’.(b’ + c’.d’)

Vss

Vss

SF Vdd

b’

a’

Vdd

d

a’ b’

d’ c’

Vss c’

d’

(67)

Décomposition - Exemple (1)

+

+ + + +

(3,1) (2,1) (2,2) (4,2) (2,2)

(1,2) (1,2)

(2,2)

(2,1) (4,8)

a b c d f

a’ b’ c’ f’

d’ c’

i

j k

g’

i’ k’

F = abc + df + (a’+b’).(c’+f ’) + d’c’(i + j.k) + g’.(i’+k’)

(1,2)

(68)

Décomposition - Exemple (2)

+

+ + +

(3,1) (2,1) (2,2) (4,2) (2,2)

(1,2) (1,2)

(4,8)

a b c d f

a’ b’ c’ f’

d’

c’ +(2,2)

(2,1)

i

j k

g’

i’ k’

(3,2)

SF1

(1,2)

(69)

Décomposition - Exemple (3)

+

+ + +

(3,1) (2,1) (2,2) (2,1) (2,2)

(1,2) (1,2)

(3,7)

a b c d f SF1

a’ b’ c’ f’

d’ g’

i’ k’

(1,2)

(70)

Décomposition - Exemple (4)

+

+ +

(3,1) +

(2,1)

(2,2)

(2,1) (2,2)

(1,2) (1,2)

(3,7)

SF1

a b c

d f

a’ b’ c’ f’

d’ g’

i’ k’

+

(3,3)

SF2

(1,2)

(71)

Décomposition - Exemple (5)

+

(2,1) (2,1) (2,2)

(2,5)

SF1

d f d’ g’

i’ k’

+

SF2

(1,2)

(72)

Décomposition - Exemple (6)

+

(2,1)

(2,1) (2,2)

(2,5)

SF1 d f

d’ g’

i’ k’

+

SF2 + (2,3)

SF3

(1,2)

Références

Documents relatifs

Programme de colle de SI pour les semaines 26 et 27 Mode lisation des liaisons: Graphe Loi entre e sortie. Questions de

Un filtre peut alors sélectionner l’un de ces pics.. On a donc en sortie une onde

Quelle formule faut-il taper en C10 pour obtenir le premier terme de la matrice des coefficients techniques C associée à la répartition sectorielle proposée?. Compléter alors la

[r]

• Parmi les personnes handicapées nouvellement inscrites à l’ANPE, les jeunes de moins de 25 ans ne représentent que 9 % des demandes d’emploi enregistrées, proportion beaucoup

Calculer la surflace de la pe louse après le premier automne puis après le sccond

Quand les espaces des entrées et des sorties sont multidimensionnels, la réalisation obtenue avec les invariants de Vapplication n'est pas minimale ; on donne un algorithme pour

Après avoir formulé ce problème comme un programme quadratique en variables 0,1 SOMS contrainte, nous montrons comment calculer une borne inférieure par relaxation lagrangienne;