Factorisation des fonctions logiques

Slides:



Advertisements
Présentations similaires
Mais vous comprenez qu’il s’agit d’une « tromperie ».
Advertisements

Le Nom L’adjectif Le verbe Objectif: Orthogram
ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
LES NOMBRES PREMIERS ET COMPOSÉS
Fabrice Lauri, François Charpillet, Daniel Szer
Licence pro MPCQ : Cours
Additions soustractions
Distance inter-locuteur
1 Plus loin dans lutilisation de Windows Vista ©Yves Roger Cornil - 2 août
Les numéros 70 –
Les numéros
ACTIVITES Les fractions (10).
Les identités remarquables
Introduction à la logique
Algorithme et structure de données
LES TRIANGLES 1. Définitions 2. Constructions 3. Propriétés.
Technologies et pédagogie actives en FGA. Plan de latelier 1.Introduction 2.Les technologies en éducation 3.iPads 4.TNI 5.Ordinateurs portables 6.Téléphones.
La législation formation, les aides des pouvoirs publics
1 7 Langues niveaux débutant à avancé. 2 Allemand.
Cours Systèmes logiques
La méthodologie………………………………………………………….. p3 Les résultats
1 Cours numéro 3 Graphes et informatique Définitions Exemple de modélisation Utilisation de ce document strictement réservée aux étudiants de l IFSIC.
Jack Jedwab Association détudes canadiennes Le 27 septembre 2008 Sondage post-Olympique.
Le soccer & les turbans Sondage mené par lAssociation détudes canadiennes 14 juin 2013.
Les structures de données arborescentes
Présentation générale
L’indicateur de développement humain
GRAM 1 CE2 Je sais transformer une phrase affirmative en phrase négative.
Le drapeau canadien comme symbole de fierté nationale : une question de valeurs partagées Jack Jedwab Association détudes canadiennes 28 novembre 2012.
Détection de co-évolution de gènes Master 2 : Informatique à Finalité Professionnelle et Recherche Unifiée (IFPRU) Parcours Ingénierie de lIntelligence.
Titre : Implémentation des éléments finis sous Matlab
Les nombres.
Mai 2001FRANCOROIII - Challenge Recherche Locale Guidée Par Le Coût Des Contraintes Gavranovic Haris Univerzitet U Sarajevu IMAG, Grenoble.
LES NOMBRES PREMIERS ET COMPOSÉS
Matériel dont vous aller avoir besoin pour cette séance
Logiciel gratuit à télécharger à cette adresse :
Les chiffres & les nombres
1.Un rang de données multicolores 2. Deux permutations des n premiers entiers 3. b permutations des k premiers entiers 4. Choix de n points dans [0,1]
Calculs et écritures fractionnaires
RACINES CARREES Définition Développer avec la distributivité Produit 1
Représentation des systèmes dynamiques dans l’espace d’état
Systèmes mécaniques et électriques
Représentation des systèmes dynamiques dans l’espace d’état
Représentation des systèmes dynamiques dans l’espace d’état
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
La statistique descriptive
Les expressions algébriques
1 Licence dinformatique Algorithmique des graphes Problèmes dordonnancement. Utilisation de ce document strictement réservée aux étudiants de l IFSIC dans.
Année universitaire Réalisé par: Dr. Aymen Ayari Cours Réseaux étendus LATRI 3 1.
Recherche Opérationnelle
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
1 INETOP
Résoudre une équation du 1er degré à une inconnue
Programmation dynamique
Aire d’une figure par encadrement
Écart moyen et écart type
Atelier de formation : MAT optimisation II (les graphes).
Programmation linéaire en nombres entiers : les méthodes de troncature
P.A. MARQUES S.A.S Z.I. de la Moussière F DROUE Tél.: + 33 (0) Fax + 33 (0)
Les fondements constitutionnels
ASI 3 Méthodes numériques pour l’ingénieur
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
Equation différentielle de 2ème ordre
Certains droits réservés pour plus d’infos, cliquer sur l’icône.
LES PILES ET FILES.
Annexe Résultats provinciaux comparés à la moyenne canadienne
Chapitre 3 :Algèbre de Boole
La formation des maîtres et la manifestation de la compétence professionnelle à intégrer les technologies de l'information et des communications (TIC)
Transcription de la présentation:

Factorisation des fonctions logiques 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

Effet de la factorisation 1 ab cd 00 01 10 11 F = a.c + a.d + b.c + b.d Factorisation => F = (a + b) . (c + d) 24 Transistors 12 Transistors

Produit algébrique Soit F et G deux expressions algébriques de deux fonctions booléennes F = S mi pour i=1,...,n G = S mj pour j=1,...,m Le produit algébrique F.G est défini par: F.G = S 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

Division algébrique 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 Le quotient Q (noté aussi F/G) et le reste R de cette division sont uniques F = a.b + a.d + c.b + d.c + e G = a + c G est un diviseur de F. Q = b + d R = e Si F = G.Q (càd R = 0) avec les mêmes conditions, G est un facteur algébrique de F

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

Expression libre 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

Noyau 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 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) 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 Les noyaux d’une expression algébrique représentent toutes les factorisations maximales possibles (en nombre de variables)

Gain associé à un noyau 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

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

Factorisation d’une fonction simple - Algorithme 1 Attention : une fois une factorisation effectuée, il est possible que certaines des factorisations suivantes soient impossibles 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

Factorisation d’une fonction simple - Algorithme 2 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. 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)

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 f1 f2 f1 f2

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

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)

Gain associé à un noyau commun ou partie commune 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é à H = c.d + d.e: G = [1*(2 - 1) + 1*(2 - 1)] + [(4 - 1) * 2] - [4] G = 4 H = c.d + d.e F1 = a.H + a.i F2 = b.H + b.h F3 = e.c.d + e.i 17 littéraux 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

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

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 = F3.d + d.e + h F2 = F3.e + d.e + h F3 = abc F1 = a.b.c.d + d.e + h F2 = a.b.c.e + d.e + h 14 Littéraux 13 Littéraux Sous-fonction commune F3 = a.b.c G = [(3 - 1) * 2] - [3] = 1

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

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

Exemple F1 = a'.b'.c'.d' + a'.d.G1 + a.b'.c'.d F2 = a'.b'.c'.d + a.d'.G1 G1 = b + c 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

Exemple 1 - Noyaux de chaque fonction Noyau de F1: 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

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

Décomposition technologique (Technology Mapping) d+e a+bc t5’ t1t2 + fg F ab+c t4h + t2t3 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

Equations Optimisées F t4’ F t5’ t3 t1t3 + fgh at2 +c t4h + t2t3 t1 t2 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’; F t4’ F t5’ t3 t1t3 + fgh at2 +c t4h + t2t3 t1 t2 t1t2 + fg d+e b+h d+e ab+d a+bc

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

Approche algorithmique Approche algorithmique [DAGON, MISII] 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. 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

Graphe sujet représenté en opérateurs NAND2 et NOT F F t1 = d + e; t2 = b + h; t3 = at2 + c; t4 = t1t3 + fgh; F = t4’; F F t4’ f t1t3 + fgh t3 c at2 +c d’ e’ t1 t2 g h a d+e b+h b’ h’

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

Approche algorithmique Une couverture est une collection de graphes formes telle que chaque noeud du graphe sujet est contenu dans un (ou plusieurs) graphes formes 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.

Graphe Sujet f g d F e h b a c t1 = d + e; t2 = b + h; t3 = at2 + c; t4 = t1t3 + fgh; F = t4’; d F e h b a c

Couverture du graphe sujet nand2(2) inv(1) f g t1 = d + e; t2 = b + h; t3 = at2 + c; t4 = t1t3 + fgh; F = t4’; d F e h b a Coût total = 23 c

Une autre couverture (meilleure) and2(3) f g aoi22(4) t1 = d + e; t2 = b + h; t3 = at2 + c; t4 = t1t3 + fgh; F = t4’; d or2(3) F e h or2(3) b nand2(2) a nand2(2) Coût total = 19 c inv(1)

Une autre couverture (encore meilleure) f nand3(3) g and2(3) t1 = d + e; t2 = b + h; t3 = at2 + c; t4 = t1t3 + fgh; F = t4’; oai21(3) d F e h b oai21 (3) a nand2(2) Coût total = 15 c inv(1)

Technology mapping par couverture Entrée Réseau logique optimisé, indépendamment de la technologie 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

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.

Cas général => problème de satisfiabilité 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 : 1 o1 3 m1 :porte NAND2 5 2 m2 :porte OR2 a b 4 6 c 7 8 o2 d 9

Cas général => problème de satisfiabilité 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

problème de satisfiabilité 1 o1 3 5 Porte nand3 (3) 2 a b 4 6 c 7 8 o2 d 9 m11 m10 Sortie Couvre m11 n7 n4,n6,n7 m10 n9 n7,n8,n9 ….. …. Pour n7 : (m10 + m11 + …..)

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 o1 3 5 2 a b 4 6 c 7 8 o2 d 9

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 3 2

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

Exemple 1 o1 3 5 2 a b 4 6 c 7 8 o2 d 9

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)

Exemple m1 m3 m2 On rajoute la clause : (m3  {m1,m2}) 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 m3 1 o1 On rajoute la clause : (m3  {m1,m2}) i.e. (m'3 + m1) (m'3 + m2) 3 5 m2 2 a b 4 6 c 7 8 o2 d 9

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

Exemple m'3 m'5 m'6 m'7 m'8 m'9 m'10 m12 m13 m'14 1 NB le noeud n4 est couvert par les 2 matchs càd sa fonction est dédoublée. o1 3 5 2 a b 4 6 c 7 8 o2 d 9

Complexité de la couverture de DAG 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

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’ Partitionnement : Fonctions mono-sortie (arbres) g2 g3 f1 g1 f2

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

Mapping optimisé Bibliothèque Fonction inv:2 nand2:3 and2:4 aoi21:6 nor2:2,5 u t y z x a d 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 b c

Mapping optimisé b c d a Coût = 9

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

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)

Inversion Possibilité d'inverser les entrées et/ou la fonction Possibilité d ’insérer des paires d'inverseur (de coût nul) 13 F = a’d ’+ a’bc 12 u 10 11 t 8 9 y z 7 x d 5 6 a 4 b c 3 1 Insertion systématique - un inverseur sur les entrées - une paire d ’inverseur sur les arcs internes 2

Inversion exemple : inv = 2, nand2 =3 , and2 =4 , aoi12 = 6 , nor2 = 2,5 13 o a d' b' c' Coût = 7,5 u 12 t 10 11 y z 8 9 7 x d a 5 6 b c d a 4 b c Coût = 9 3 1 2

Partitionnement 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 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 Sortie Sortie

Décomposition technologique - niveau transistors Décomposition sur portes complexes CMOS But: s’affranchir des limitations dues aux bibliothèques Nb MOS max en série (k) Nb MOS max en // (k’) Contraintes liées à la technologie Liste des portes et réseau de cellules (chemin critique et surface optimisés) Ensemble d’équations booléennes factorisées 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

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

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

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

Décomposition 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 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)

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

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

Expansion d’un nœud de coupure k=k’=3 (4,2) (2,1) (1,1) SF Noeud de coupure (4,2) (3,2) (3,2) (1,1) (1,1) + (2,2) (1,1) (1,1) + (2,2) + (2,2) (1,1) (1,1) (2,1) (1,1) (2,1) (2,1) (1,1) (1,1) (1,1) (1,1) (1,1) (1,1) (1,1) (1,1)

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

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

Décomposition - Exemple (2) (4,8) + (3,1) (2,1) (2,2) (4,2) SF1 (2,2) (3,2) (1,2) (1,2) + + + (1,2) a b c d f d’ g’ + (2,2) c’ a’ b’ c’ f’ (2,1) i’ k’ i j k

Décomposition - Exemple (3) (3,7) + (2,1) (2,2) (3,1) (2,1) (2,2) (1,2) (1,2) + + + (1,2) a b c d f d’ SF1 g’ a’ b’ c’ f’ i’ k’

Décomposition - Exemple (4) (3,7) + SF2 + (3,3) (2,1) (2,1) (2,2) (2,2) (3,1) + (1,2) d f d’ SF1 g’ (1,2) (1,2) + + a b c i’ k’ a’ b’ c’ f’

Décomposition - Exemple (5) (2,5) + SF2 (2,1) (2,1) (2,2) + (1,2) d f d’ SF1 g’ i’ k’

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

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

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

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

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

Circuits Logiques Programmables : PLD CPLD (Complex Programmable Logic Device) : Désigne des PLD ayant un haut niveau d'intégration. 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.

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.

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

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

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

Architecture des blocks logiques : Quicklogic Pas de programmation du block logique

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