1 polytech' montpellier université montpellier ii place eugène bataillon, 34095 montpellier...
TRANSCRIPT
1
Polytech' MontpellierUniversité Montpellier II
Place Eugène Bataillon, 34095 Montpellier cedex 05, FRANCE
Laboratoire d'Informatique, de Robotique et de Microélectronique de MontpellierUMR 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
11
1 1
1
ab
cd00 01 1011
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éennesF = 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 + bG = c + d’.eF.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ébriqueQ 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 + eG = 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 libreF = a.b.c n’est pas libreF = 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 2K2 = 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 F2 - Classer les noyaux par gain croissant3 - 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 1K2 = 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 2Division par K3F = 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 F2 - Diviser par le noyau de gain maximal et renommer ce noyau par une sous-
fonction3 - Recommencer en 1 jusqu’à ce qu’il n’y ait plus de noyau4 - Réinjecter toutes les sous-fonctions pour obtenir la forme factorisée de F.
Factorisation d’une fonction simple - Algorithme 2
12
f2
f1f1
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 Fi2 - On associe à chaque monôme de tous les noyaux une variable Tj3 - Pour chaque noyau on associe le monôme Tk qui compose ce noyau4 - 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) = 2Noyau 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) = 2Noyau 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.dT2 = d.eT3 = iT4 = cT5 = eT6 = 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
Algorithme1 - 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 construits3 - 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 + hF2 = 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.cv1 + v2 d.ev1 + 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 + hF2 = a.b.c.e + d.e + h
F1 = F3.d + d.e + hF2 = 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
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 fonctionNoyau 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 communsa'.b'.c' => Gain = [(3-1)*2 ] -[3] = 1
4 - Choix de la sous-fonction de gain maximalF1 = a'.b'.c'.d' + a'.d.G1 + a.b'.c'.dF2 = a'.b'.c'.d + a.d'.G1G1 = b + c 20 littéraux
20
Exemple
1 - Noyaux de chaque fonctionNoyau 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: AucunNoyau de G1: Aucun2 - Parties de noyaux communs
=> Aucun3 - Parties de monômes communs
a'.b'.c' => Gain 14 - Choix de la sous-fonction de gain maximal
F1 = b'.c'.G2 + a'.d.G1 F2 = a'.b'.c'.d + a.d'.G1G1 = b + cG2 = a'.d' + a.d 19 littéraux
F1 = a'.b'.c'.d' + a'.d.G1 + a.b'.c'.dF2 = a'.b'.c'.d + a.d'.G1G1 = b + c
21
Exemple
1 - Noyaux de chaque fonctionNoyau de F1: AucunNoyau de F2: AucunNoyau de G1: AucunNoyau 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 + cG2 = 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’équationsbooléennes minimisées
Bibliothèque d’élémentsprédéfinis
Réseau de cellules(chemin critique etsurface 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+ea+bc
t5’
t1t2 + fg
F
ab+c
t4h + t2t3
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
t4’
at2 +c
t1t3 + fgh
F
d+ea+bc
t5’
t1t2 + fg
F
ab+d
t4h + t2t3 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’
hg
f
c
Graphe sujet représenté en opérateurs NAND2 et NOT
FF
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
cCoût total = 23
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
ab
cd
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
ab
cd
o1
o2Porte nand3 (3)
Pour n7 : (m10 + m11 + …..)
m11m10
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 :(mi (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
1
2
3
4
5
6
7 8
9
ab
cd
o1
o2
Exemple
43
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
m1 1
2
3
4
5
6
7 8
9
ab
cd
o1
o2
m3
m2
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
cd
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
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’def2 = a ’ + abd + cd + e ’
Factorisation => g1 = a.b+cg2= b’.d.eg3= g1.e+ (a’+c).g2f1 = c d’ +g3f2 = 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
98
10 11
12
13
F = a’d ’+ a’bc
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 = 91 2
3
4
5 6
7
98
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
SortieSortie
SortieSortie
58
Décomposition sur portes complexes CMOSBut: s’affranchir des limitations dues aux bibliothèques
Ensemble d’équationsbooléennes factorisées
Contraintes liéesà la technologie
Liste des portes etréseau de cellules(chemin critique etsurface 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éseauPMOS
RéseauNMOS
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’)
SP
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’
c’d’
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)
SF1a b c d f
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)
SF1d 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)
73
Décomposition - Exemple (7)
(2,1)
(2,3)
d f
+
SF2 SF3
Vss
F
Vdd
Vdd
d’ f’
Vdd
SF2’ SF3’
SF2’
SF3’
d’
f’
F = SF2 + SF3 + d .fF’ = SF2’.SF3’.(d’ + f’)F’* = SF2’ + SF3’ + d’ .f’
74
Exemple (8)
+
+ +
(3,1)(2,2)
(1,2) (1,2)
a b c
a’ b’ c’ f’
(3,3)
SF2
SF2 = abc + (a'+b') (c'+f)SF2' voulu
Vss
SF2'
a a’
b
c
a c
b’
b
b’
c’ f
a’
f
c’
Vdd
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
Circuits Logiques Programmables : PLD
PAL : Programmable Array LogicGAL : Generic Array LogicEPLD : Erasable Programmable Logic DeviceFPGA : Forecasting programmable Logic Array
PLD : Programmable Logic Device
PLD
PAL GAL EPLD FPGA
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 : l’utilisateur 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
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 qu’une 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 I1 et I2 et une sortie O.
Huit fusibles (F1 à F8) 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
PAL : Programmable Array Logic
PAL 4 entrées 4 sorties
80
Implantation sur FPGA
Blocklogique
Blocklogique
Blocklogique
Blocklogique
Blocklogique
Blocklogique
Blocklogique
Blocklogique
Blocklogique
Switch Matrix:Interrupteurs
programmables
81
Architecture des blocks logiques : Actel
1
1
a
b
1
c d
1
f
f = a + b + c + d
Pas de programmation du block logique
1
0
1
0
0
1
82
Architecture des blocks logiques : Quicklogic
Pas de programmation du block logique
C
D
R
S
Q
83
Architecture des blocks logiques : Xilinx 3000
C
D
R
S
Q
C
D
R
S
Q
Look-upTable(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