Développement d une bibliothèque de cellules logiques standard pour une technologie CMOS 0.5 µm



Documents pareils
Les portes logiques. Voici les symboles des trois fonctions de base. Portes AND. Portes OR. Porte NOT

Conception Systèmes numériques VHDL et synthèse automatique des circuits

Conception Systèmes numériques VHDL et synthèse automatique des circuits

1 Démarrer L écran Isis La boite à outils Mode principal Mode gadget Mode graphique...

Mini_guide_Isis.pdf le 23/09/2001 Page 1/14

Le langage VHDL. Eduardo Sanchez EPFL

TABLE DES MATIÈRES 1. DÉMARRER ISIS 2 2. SAISIE D UN SCHÉMA 3 & ' " ( ) '*+ ", ##) # " -. /0 " 1 2 " 3. SIMULATION 7 " - 4.

SIN-FPGA DESCRIPTION PAR SCHEMA

Modélisation physique des cellules logiques... Modèles pour le placement routage, le format "LEF"

Mini_guide_Isis_v6.doc le 10/02/2005 Page 1/15

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

ERETES-SERIES. Support de formation. Formation ERETES ERETES-SERIE 1/58

EXCEL TUTORIEL 2012/2013

Outils de CAO. Ecole de microélectronique IN2P octobre 2009, La Londe Les Maures. C. Colledani

Notice ARES Version 5.20 Française

Tutorial Cadence Virtuoso

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Transmission d informations sur le réseau électrique

Utilisation de Sarbacane 3 Sarbacane Software

VIII- Circuits séquentiels. Mémoires

IFT1215 Introduction aux systèmes informatiques

Optimiser pour les appareils mobiles

Atelier Le gestionnaire de fichier

Manipulations du laboratoire

Introduction à MATLAB R

Utiliser un tableau de données

Manuel d utilisation du site web de l ONRN

Excel 2007 Niveau 3 Page 1

Service On Line : Gestion des Incidents

Installation de SQL Server Reporting Services avec l intégration dans un site Windows SharePoint Services V3

Importation de fichiers Eagle

Microsoft Excel : tables de données

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Fiche technique CPU 314SC/DPM (314-6CG13)

ESPACE COLLABORATIF SHAREPOINT

données en connaissance et en actions?

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Utilisation de KoXo Computers V2.1

MAC-TC: programmation d un plate forme DSP-FPGA

Introduction à Eclipse

NiceLabel pour Services Microsoft Windows Terminal Serveur et Citrix MetaFrame

Initiation à LabView : Les exemples d applications :

Système binaire. Algèbre booléenne

Ce document décrit la démarche à suivre pour installer les outils de développement et compiler le projet TANAGRA.

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Organisation des Ordinateurs

Introduction à la présentation graphique avec xmgrace

Comment insérer une image de fond?

MPI Activité.10 : Logique binaire Portes logiques

ndv access point : Utilisation

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

Programme d Accès Communautaire / Atelier 4 Initiation à Microsoft Excel PLAN DE COURS 3 MICROSOFT EXCEL 4 LANCER EXCEL 4

Mes premiers diaporamas avec Open Office Impress?

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

Le langage SQL Rappels

L ÉDITEUR DE COMPOSANTS A PROPOS DE LA TRADUCTION.

Calc 2 Avancé. OpenOffice.org. Guide de formation avec exercices et cas pratiques. Philippe Moreau

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

I. Programmation I. 1 Ecrire un programme en Scilab traduisant l organigramme montré ci-après (on pourra utiliser les annexes):

Créer un tableau avec LibreOffice / Calc

ADÉQUATION ALGORITHME-ARCHITECTURE APPLIQUÉE AUX CIRCUITS RECONFIGURABLES

Traitement des données avec Microsoft EXCEL 2010

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

Enregistreur sans papier. Interface LON. B Description des interfaces 10.99/

Systèmes de transmission

Tutoriel. Votre site web en 30 minutes

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

Création de mises en plan

GUIDE Excel (version débutante) Version 2013

TD de supervision. J.P. Chemla. Polytech Tours Département productique 2ème année

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

26 Centre de Sécurité et de

SOMMAIRE. Présentation assistée sur ordinateur. Collège F.Rabelais 1/10

IV- Comment fonctionne un ordinateur?

Aide à l Utilisation du site «Mon Monitoring»

Guide de démarrage Janvier 2012

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

GUIDE D UTILISATION DE L ISU SEPTEMBRE 2013 GUIDE D UTILISATION DU NAVIGATEUR UIS.STAT (VERSION BÊTA)

Utiliser Dev-C++ .1Installation de Dev-C++ Table des matières

BIRT (Business Intelligence and Reporting Tools)

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Études et Réalisation Génie Électrique

Série D65/D75/D72 Afficheurs digitaux modulaires

Administration du site (Back Office)

MANUEL D UTILISATION DE LA SALLE DES MARCHES APPEL D OFFRES OUVERT ACCES ENTREPRISES. Version 8.2

Your Detecting Connection. Manuel de l utilisateur. support@xchange2.net

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Les calques : techniques avancées

Formation. Module WEB 4.1. Support de cours

AssetCenter Notes de version

TP1 Initiation à la conception de circuits intégrés analogiques.

Sélection du contrôleur

Création et utilisation de formulaire pdf

QUESTION 1 {2 points}

Prise en main rapide

Transcription:

PROJET DE SEMESTRE, HIVER 2002-2003 Développement d une bibliothèque de cellules logiques standard pour une technologie CMOS 0.5 µm Marc Kristol, Electricité sem.7 Superviseur : Alain Vachoux (LSM) EPFL MICROELECTRONIC SYSTEMS LABORATORY (LSM) ELD - ECUBLENS CH-1015 LAUSANNE PHONE : +41 21 693 6955 TELEFAX : +41 21 693 6959

2 PROJET DE SEMESTRE Marc Kristol

PROJET DE SEMESTRE - Marc Kristol 3 TABLES DES MATIÈRES : 1. INTRODUCTION 1.1 Principe de base 1.2 Intervention dans le flot de conception 2. OBJECTIFS DU PROJET 2.1 Contenu d une bibliothèque 2.2 Flot de développement 2.3 Bibliothèque valide 3. CONTENU D UNE BIBLIOTHÈQUE 3.1 Vues Layout 3.2 Netlists 3.3 Librairie Synopsys de symboles 3.4 Librairie Synopsys 3.5 Modèles VHDL 3.6 Modèles verilog 3.7 Stubs verilog 3.8 Vues Cadence placement et routage 3.9 Timing Cadence placement et routage 4. FLOT DE DÉVELOPPEMENT 4.1 Condition de caractérisation 4.2 Caractérisation 4.3 Génération des modèles VHDL 4.4 Validation de la librairie Synopsys 4.5 Génération des stubs verilog 4.6 Vues et timing placement et routage 5. CARACTÉRISATION AVEC APTIVIA/DCM 5.1 Procédure d utilisation du logiciel 5.2 Choix des paramètres de caractérisation 5.3 Génération de la librairie Synopsys 6. LIBRARY COMPILER 6.1 Compilation de la librairie Synopsys 6.2 Génération des modèles VHDL

4 PROJET DE SEMESTRE Marc Kristol 7. VALIDATIONS 7.1 Validation de la caractérisation 7.2 Validation des cellules par testbenchs 7.3 Validation par synthèse 8. TRAVAILS FUTURS 9. RÉFÉRENCES 10. ANNEXES A. Datasheets B. Script de correction de la librairie Synopsys C. Librairie Synopsys D. Stubs E. Modèles VHDL des circuits de synthèse F. Scripts de synthèse pour Design Vision

PROJET DE SEMESTRE - Marc Kristol 5 LISTES DES FIGURES : Fig 1.1 : Exemple de circuit composé d alignements de cellules standards Fig 1.2 : Flot de conception basé sur VHDL Fig 3.1 : Exemple de symbole de cellule logique (NAND à 2 entrées) Fig 4.1 : Flot de développement de la bibliothèque BadBoy05 Fig 5.1 : Environnement de travail du logiciel Aptivia/DCM Fig 5.2 : Création d un nouveau projet Fig 5.3 : Génération du setup Fig 5.4 : Onglet Design du setup Fig 5.5 : Includes du setup Fig 5.6 : Onglet Function du setup Fig 5.7 : Onglet verilog-ams du setup Fig 5.8 : Onglet Synopsys du setup Fig 5.9 : Onglet Sweeps du setup Fig 5.10 : Onglet options du setup Fig 5.11 : Contenu du projet après génération des fichiers Fig 5.12 : Délai de la NAND2 en fonction de la pente d entrée pour une capacité de 0fF Fig 5.13 : Délai de la NAND2 avec six points de mesure Fig 5.14 : Problème de résolution numérique Fig 5.15 : Génération d une librairie unique Tableau 7.1 : Validation de la cellule NAND2_1 Tableau 7.2 : Validation de la cellule DFF_BASIC Fig 7.3 : Contrainte de surface minimum Fig 7.4 : sélection des pins de sortie Fig 7.5 : Contrainte sur les délais Fig 7.6 : Attribution d un signal d horloge Fig 7.7 : Fenêtre d optimisation Fig 7.8 : Optimisation de l ALU en surface avec le chemin critique Tableau 7.9 : Comparaisons des résultats de synthèse Tableau 7.10 : Résultats complets de la synthèse

6 PROJET DE SEMESTRE Marc Kristol 1. INTRODUCTION Les bibliothèques de cellules standards font parties des nombreuses techniques de conception de circuits intégrés au même titre que des méthodes telles que FPGA, Gate Array ou encore Full Custom. 1.1 Principe de base Le principe de base d une telle bibliothèque est de disposer d une série de petits circuits effectuant chacun une fonction logique basique. Chacun de ces circuits est dimensionné de façon à avoir des caractéristiques géométriques communes avec les autres circuits de la bibliothèque. En général ces caractéristiques communes sont la largeur et la position des lignes d alimentation. Cela permet de les assembler telle un lego en de longues lignes de cellules ayant la même ligne d alimentation lors de la conception d un système intégré. Fig 1.1 Exemple de circuit composé d alignements de cellules standards 1.2 Intervention dans le flot de conception Les bibliothèques de cellules standards interviennent à différents niveaux de conception d un circuit intégré. Par exemple dans un flot de conception basé sur VHDL, le premier niveau est lors de la synthèse VHDL où le modèle du circuit fait directement appelle à l architecture comportementale des cellules (fig 1.2). La bibliothèque est aussi utilisée lors de la simulation pour les mêmes raisons. Le dernier niveau d intervention est le niveau layout. Etant donné que les layouts des cellules sont disponibles dans la bibliothèque, ils sont alors utilisés pour faire le layout du circuit en les assemblant par lignes et ensuite en réalisant les interconnections entre cellules.

PROJET DE SEMESTRE - Marc Kristol 7 Fig 1.2 Flot de conception basé sur VHDL

8 PROJET DE SEMESTRE Marc Kristol 2. OBJECTIFS DU PROJET Ce projet ne démarre pas en partant de nulle part. Il s inscrit dans la continuité d un projet précédent effectué au Worcester Polytechnic Institute [1] dont l objectif était justement la création d une bibliothèque de cellules standard nommée BadBoy05. Il avait été développé en particulier les vues layout, les descriptions schématiques, les caractérisations des cellules ainsi que la librairie Synopsys (voir chapitre 3). L idée est d utiliser ces éléments pour continuer le développement. 2.1 Contenu d une bibliothèque Le premier objectif du projet est de comprendre les éléments constituant une bibliothèque de cellules logiques standard, en particulier de savoir quels sont les éléments essentiels et quelle est l utilité de chacun de ces éléments. 2.2 Flot de développement L objectif suivant est d expérimenter le flot de développement d une bibliothèque. C est-àdire étudier quelles sont les façons de générer les différents éléments constitutifs, quels sont les outils nécessaires à cela et quels sont les moyens de valider les résultats obtenus. 2.3 Bibliothèque valide Finalement le dernier objectif est évidemment d obtenir une bibliothèque qui puisse être utilisable pour le développement de projet de conception de systèmes logiques. C est dans ce but que sont repris les éléments du projet précédent. La première partie constituera à recaractériser les cellules de façon plus complète et de regénérer la librairie Synopsys à l aide d un logiciel adapté. Dans un second temps, il faudra alors valider la librairie obtenue en comparant les résultats obtenus avec les résultats précédents ainsi que d effectuer des cas tests de synthèse VHDL. La dernière partie sera de reprendre les layout des cellules afin de générer les vues pour le placement et routage et en extraire les délais. Puis valider ces vues avec des cas tests VHDL. [1] «Standard Cell Library Blocks Design and Evaluation» A Major Thesis of the Worcester Polytechnic Institute by Samuel R. Girgis and Carl F. Nielsen Jr. (April 2000)

PROJET DE SEMESTRE - Marc Kristol 9 3. CONTENU D UNE BIBLIOTHÈQUE Une bibliothèque comporte différents éléments qui interviennent à différents niveaux de la conception des circuits. L énumération de ces éléments se fait ci-dessous avec l explication de leur utilité. 3.1 Vues Layout Les vues layout proviennent de l ancien projet. Elles correspondent à la vue physique du circuit intégré des cellules et elles sont directement utilisées pour le développement des différents masques de fabrication. Ces vues sont utilisées dans la conception de la libraire pour générer les vues de placement et routage (Chapitre 3.8). Elles sont reconnaissables par l extension de fichier «.gds». 3.2 Netlists Les fichiers netlists proviennent également du projet précédent. Les netlists comportent la description du comportement des cellules. Elles peuvent être de deux types différents : schématique ou extraite. La netlist schématique est tirée de la vue schématique des transistors du circuit. Elle tient compte donc que des caractéristiques intrinsèques du transistor (délai, capacité des pins). La netlist extraite est tirée de la vue layout. Elle tient compte alors, en plus des caractéristiques du circuit, des effets parasites comme les capacités parasites. Elle est de ce fait plus proche de la réalité du circuit physique. L extension informatique des netlists est «.sp». 3.3 Librairie Synopsys de symboles La librairie des symboles contient la description graphique des symboles logiques des cellules de la bibliothèque. Elle est utilisée lors de la synthèse de circuit pour générer une vue schématique du circuit en portes logiques. La librairie utilisée pour ce projet a été construite à partir des symboles de la bibliothèque AVx. Son extension est «.slib», et «.sdb» pour la version binaire. Fig 3.1 Exemple de symbole de cellule logique (NAND à 2 entrées)

10 PROJET DE SEMESTRE Marc Kristol 3.4 Librairie Synopsys La librairie Synopsys contient toutes les informations issues de la caractérisation de chaque cellule. Elle est particulièrement importante dans le flot de développement car c est à partir d elle que quasiment tout le reste de la bibliothèque peut être généré. La librairie Synopsys possède l extension «.lib» ou «.db» dans sa version binaire. 3.5 Modèles VHDL Les fichiers VHDL contiennent les modèles comportementaux des cellules en langage VHDL. Ils sont générés à partir des informations contenues dans la librairie Synopsys. L extension VHDL est «.vhd». Pour ce projet, les modèles VHDL ont été générés avec l architecture VITAL. Cette architecture utilise trois fichiers : Le fichier VITAL.vhd contient les architectures comportementales des cellules, le fichier COMPONENTS.vhd contient la définition des composants, c est-à-dire des cellules ( définition des entrées, des sorties ) et le fichiers TABLES.vhd contient des tables avec les contraintes sur les délais des cellules. 3.6 Modèles verilog Les fichiers verilog contiennent la description comportementale des cellules dans le langage verilog. On les reconnaît par l extension «.v». 3.7 Stubs verilog Les stubs sont les définitions des entrées et sorties des cellules en langage verilog. On les trouve également dans les modèles verilog. L extension est la même que celles des modèles verilog. 3.8 Vues Cadence placement et routage Les vues pour le placement et routage sont en fait des vues layout abstraites. C est-à-dire que seule la position des pins de connexion (entrées, sorties, alimentation) sont visibles. De plus il peut être indiqué les zones de la cellule qui n acceptent pas le passage de lignes d interconnexion. Ces vues sont reconnaissables par l extension «.lef». 3.9 Timing Cadence placement et routage Les vues timing contiennent les temps de propagation des layout Elles se distinguent par l extension «.tlf» ou «.ctlf» pour les versions compilées.

PROJET DE SEMESTRE - Marc Kristol 11 4. FLOT DE DÉVELOPPEMENT La première partie de la conception d une bibliothèque est de déterminer un flot de développement des différents éléments constituants. Celui-ci s impose relativement naturellement par le fait que certains éléments sont générés à partir d autres. Fig 4.1 Flot de développement de la bibliothèque BadBoy05 4.1 Conditions de caractérisation Comme cette bibliothèque a déjà été générée en partie lors du projet précédent, certaines conditions du flot sont déjà imposées. La bibliothèque est constituée de 39 cellules logiques : - And à 2,3 et 4 entrées (AND2_1, AND3_1, AND4_1) - Nand à 2,3 et 4 entrées (NAND2_1, NAND3_1, NAND4_1) - Or à 2,3 et 4 entrées (OR2_1, OR3_1, OR4_1) - Nor à 2,3 et 4 entrées (NOR2_1, NOR3_1, NOR4_1) - Xor à 2 entrées (XOR2_1) - Xnor à 2 entrées (XNOR2_1) - Inverseur (INV_1) - Inverseur avec un demi drive (INV_HALF)

12 PROJET DE SEMESTRE Marc Kristol - Buffer (BUF_1) - And-Or à 3 et 4 entrées (AO21, AO22) - And-Or-Inv à 3 et 4 entrées (AOI21, AOI22) - Or-And à 3 et 4 entrées (OA21, OA22) - Or-And-Inv à 3 et 4 entrées (OAI21, OAI22) - Multiplexeur à 2 et 4 entrées (MUX2_1, MUX4_1) - Flip-Flop D (DFF_BASIC) - Flip-Flop D avec reset (DFF_CLR) - Flip-Flop D avec set (DFF_PRE) - Flip-Flop D avec set et reset (DFF_CLR_PRE) - Latch D (DLATCH_BASIC) - Latch D avec reset (DLATCH_CLR) - Latch D avec set (DLATCH_PRE) - Latch D avec set et reset (DLATCH_CLR_PRE) - Buffer tri-state niveau haut (TRIBUF_1_H) - Buffer tri-state niveau bas (TRIBUF_1_L) - Inverseur tri-state niveau haut (TRINV_1_H) - Inverseur tri-state niveau bas (TRINV_1_L) La technologie transistor utilisée est celle du fabricant HP AMOS14TB en 0,5 µm avec une alimentation de 3,3 V. La caractérisation n avait été faite que dans un cas de conditions typiques (TYPICAL CASE : température 27 C, alimentation 3,3V). Elle a donc été aussi faite pour des conditions optimales (BEST CASE : température 0 C, alimentation 3,63 V) et des conditions mauvaises (WORST CASE : température 100 C, alimentation 2,97 V) en plus des conditions typiques. La caractérisation se fait à partir de deux autres paramètres importants en plus de la température et de la tension d alimentation: la pente du signal d entrée et la charge en sortie. Des valeurs entre 0,1 ns et 1 ns ont été prises pour la pente d entrée et des valeurs entre 0 et 500fF pour la charge en sortie ce qui devrait suffire pour pouvoir mettre un maximum de cinq portes sur une sortie. 4.2 Caractérisation La caractérisation des cellules est faite avec le logiciel Aptivia/DCM de Antrim Design System. Il utilise le modèle du transistor, les netlists ainsi que les conditions qui ont été choisies pour générer la librairie Synopsys et les modèles verilog. L utilisation du logiciel est décrite dans le chapitre 5. Les netlists utilisées ici sont de type schématique. La caractérisation consiste par simulation à déterminer la capacité de chacun des pins d entrées des cellules, le délai de propagation entre chaque pin d entrée et de sortie, le temps de transition du signal en sortie pour chaque trajet de propagation, la consommation lors des transitions et la consommation de la cellule au repos (dû aux courants de fuite) en fonction des paramètres cités ci-dessus.

PROJET DE SEMESTRE - Marc Kristol 13 4.3 Génération des modèles VHDL Les modèles VHDL des cellules sont générés à partir de la librairie Synopsys et de la librairie de symboles par le logiciel Library Compiler de Synopsys. Ce logiciel permet aussi d obtenir les versions compilées de la librairie Synopsys et de la librairie de symboles ainsi que des testbenchs pour chaque cellule. La procédure d utilisation se trouve dans le chapitre 6. 4.4 Validation de la librairie Synopsys La première validation est de comparer les résultats de la caractérisation avec les anciens résultats, c est-à-dire de voir si les délais de propagation et les capacités d entrée des pins ont le même ordre de grandeur. Dans un second temps, après avoir compilé la librairie Synopsys, on effectue des testes de synthèse VHDL utilisant la bibliothèque. Ces testes sont effectués sur un additionneur un bit (ONEBIT), sur un additionneur 8 bits (ADDER8), sur une ALU et sur un circuit nommé ISP. Dans le but de pouvoir de nouveau comparer les résultats avec ceux du précédent projet, on utilise les codes VHDL de ces circuits réalisés lors dudit projet. Cette synthèse est réalisée à l aide du logiciel Design Vision de Synopsys. Finalement, à l aide des testbenchs des cellules générés par Library Compiler, une validation du comportement des cellules est également effectuée. Le détail de toute la validation se trouve dans le chapitre 7. 4.5 Génération des stubs verilog Les modules stubs sont obtenus à partir des modèles verilog. Les modèles verilog sont composés de deux parties. La première correspond à la liste des pins de la cellule, la seconde à l architecture comportementale. Les stubs correspondent à la première partie du modèle. Il suffit donc de prendre les stubs de toutes les cellules et de les mettre dans un seul fichier. Il est possible de faire un script qui extrait les modules et crée le fichier stubs. Cependant le fichier stubs a été créé ici manuellement par copier-coller. 4.6 Vues et timing placement et routage Les vues placement et routage sont générées à partir du layout des cellules à l aide du logiciel Autoabgen de Cadence. Les vues timing placement et routage sont générées avec le logiciel Tlfgen de Cadence à partir de la librairie Synopsys. Malheureusement, le manque de temps et des problèmes de lecture des layout par Autoabgen n auront pas permis d effectuer cette partie du projet jusqu au bout. Evidemment, les méthodes de validation des vues et timing placement et routage n ont également pas pu être explorées.

14 PROJET DE SEMESTRE Marc Kristol 5. CARACTÉRISATION AVEC APTIVIA/DCM La procédure de caractérisation est presque la même pour toutes les cellules. C est pourquoi le déroulement est expliqué ici par un exemple, en l occurrence celui de la cellule NAND à 2 entrées. 5.1 Procédure d utilisation du logiciel La première chose à faire est de créer un nouvel espace de travail (workspace). Le logiciel ouvre automatiquement une fenêtre où il faut choisir entre un workspace récent ou en créer un nouveau. Fig 5.1 Environnement de travail du logiciel Aptivia/DCM Ensuite, il faut créer un projet. Chaque projet correspond à une cellule. Le plus directe pour créer un nouveau projet est de faire un clique-droit sur le workspace et de sélectionner «create new project». Une boite de dialogue s ouvre. Elle propose de baser le projet sur un projet existant ou un exemple ce qu il faut refuser. Puis il faut entrer la position du répertoire de travail du projet ainsi que le nom que l on donne au projet (en l occurrence le nom de la cellule). On peut également donner une description, mais cela n est pas forcément nécessaire.

PROJET DE SEMESTRE - Marc Kristol 15 Fig 5.2 Création d un nouveau projet Une fois cela de fait, le logiciel crée une série de répertoires vides visibles dans l environnement de travail. - Documents : contient les informations liées au projet - Tests : contient les procédures de tests de timing et de capacité - Sweeps/corners : contient les procédures pour les sweeps - Spec sheets : contient les éléments pour la vérification verilog (pas utilisé ici) - Model calibrations : contient les éléments de calibration pour verilog-ams (pas utilisé ici) - Model generators : contient le setup de génération du projet - Optimizations : contient les éléments d optimisation (pas utilisé ici) - Plans : contient les scripts permettant de lancer la caractérisation Il faut donc maintenant générer tous les fichiers liés à une cellule et entrer les conditions de caractérisation. Toute la procédure se fait avec un setup. Pour cela il faut faire un cliquedroit sur le dossier «Model generators» et sélectionner «New model setup». Dans le générateur de setup qui apparaît, il faut entrer un nom et indiquer que les tests sont basés sur la netlist. Fig 5.3 Génération du setup

16 PROJET DE SEMESTRE Marc Kristol Après avoir fait «OK», le setup s ouvre. Dans celui-ci, il faut compléter tous les onglets présents. Dans premier onglet «Design» (Fig 5.3), on doit indiquer le lien vers la netlist de la cellule. Normalement une fois celui-ci entrée, le logiciel détecte automatiquement le nom et les pins de la cellule. Fig 5.4 Onglet Design du setup En cliquant sur «Create base test», une nouvelle fenêtre s ouvre qui contient quatre zones de saisi et en particulier une zone «SPICE includes» où il faut saisir le lien vers le modèle du transistor. Il est même possible en allant dans «Templates» de faire la même chose en créant un «Base Test» qui sera alors repris par tous les autres projets créés par la suite.

PROJET DE SEMESTRE - Marc Kristol 17 Fig 5.5 Includes du setup L onglet suivant «Function» permet de définir la fonction logique de la cellule ainsi que la définition des pins. Normalement le logiciel a déjà trouvé les correspondances, mais il est bon de vérifier. Pour le pin d alimentation, il faut indiquer la tension d alimentation. Fig 5.6 Onglet Function du setup

18 PROJET DE SEMESTRE Marc Kristol Dans l onglet «Create», il faut sélectionner les modèles à générer. Il y a quatre choix : - Characterization - Verilog-AMS model - Verilog-D model - Synopsys model Pour ce projet, les quatre ont été sélectionnés. L onglet «Verilog-AMS» permet de définir des tableaux de résultats pour la caractérisation des délais (timing) et de la capacité d entrée (Input capacitance). Dans les deux cas des tables en trois dimensions ont été choisi, avec des résultats en fonction de la pente d entrée (Input slope) et de la capacité en sortie (Load capacitance). Les deux options possibles à savoir «Calibrate» et «Verify» ont aussi été sélectionné. (la Fig 5.7 ne correspond pas à ce qui a été fait) Fig 5.7 Onglet verilog-ams du setup Dans verilogd, rien n est à modifier. Il faut vérifier que l option «Calibrate» est bien activée. L onglet «Synopsys» permet de sélectionner toutes les caractérisations voulues, tant au niveau timing qu au niveau capacité ou encore, pour certaines cellules comme les flip-flop, au niveau contraintes. Si on veut aussi avoir les caractérisations de consommation, il faut sélectionner l option «Timing and power». Un champ d écriture permet d inscrire la surface de la cellule pour y être inséré dans le fichier librairie Synopsys.

PROJET DE SEMESTRE - Marc Kristol 19 Fig 5.8 Onglet Synopsys du setup L onglet «Defaults» correspond au valeur typique de caractérisation. En particulier on peut préciser la température à 27 C, la pente d entrée à 0,1 ns ou encore la capacité en sortie à 200fF. Mais comme la caractérisation permet de connaître la réponse de la cellule pour n importe quelles valeurs, l importance de cet onglet est très relative. L onglet «Sweeps» est très important. Une des principales questions à se poser avant de faire une caractérisation est quel niveau de caractérisation on veut atteindre. Les sweeps servent à caractériser une cellule en faisant varier un paramètre. Par exemple, on peut déterminer le délai de propagation en fonction d une température allant de 0 à 100 C par pas de 10 C, mais on peut aussi choisir un pas de 20 C. Le choix de la valeur des paramètres est décrite dans le chapitre 5.2. L option «sweep run» qui se trouve en bas permet de choisir de faire la caractérisation entière (avec toutes les valeurs choisies) ou avec seulement les valeurs minimum, typique et maximum. La seconde caractérisation qui est très rapide permet juste de vérifier que tout se passe bien dans un premier temps avant d effectuer la caractérisation complète.

20 PROJET DE SEMESTRE Marc Kristol Fig 5.9 Onglet Sweeps du setup Le dernier onglet contient les préférences de simulation. Il est important de sélectionner l option «Keep RAW files» pour conserver les données de simulation. Dans le cas d une grande cellule comme les cellules à quatre entrées et si plusieurs ordinateurs sont disponibles, il est possible de sélectionner l option «Distribute plan simulation» afin d augmenter la rapidité. Fig 5.10 Onglet options du setup Une fois que tous cela est fait, on clique sur «Generate» ou sur «Generate and run». La différence est que la première solution ne fait que générer tous les fichiers alors que la seconde génère les fichiers et lance immédiatement la caractérisation de la cellule.

PROJET DE SEMESTRE - Marc Kristol 21 Fig 5.11 Contenu du projet après génération des fichiers Les résultats de la caractérisation peuvent être visualisé en ouvrant le fichier sweep. Dans l onglet «results» et en faisant «plot», on obtient une liste des graphes de mesures. 5.2 Choix des paramètres de caractérisation Le choix des paramètres des sweeps dépend du niveau de précision que l on veut. Si les courbes de caractérisation sont peu linéaire, il faut alors prendre plus de point afin d être le plus précis possibles. Le problème est que si on prend trop de point, on obtient alors des matrices de caractérisation dans la librairie Synopsys qui sont gigantesques. On s est alors limité à un maximum de six points par paramètre pour la pente d entrée et la capacité de charge en sortie. Pour les paramètres de température et de tenson d alimentation, rien n a été touché car ils correspondaient bien à ce qui était voulu. La température varie de 0 à 100 C par pas de 10 C et la tension d alimentation varie entre 90% et 110% de sa valeur nominale par pas de 0,1 V. Pour la pente d entrée et la capacité de charge, il a d abord été effectué une caractérisation très précise avec beaucoup de points dans le but de vérifier la linéarité des courbes. On a fait varier la pente d entrée de 0,1 ns à 1 ns par pas de 0,05 ns et la capacité de charge de 0

22 PROJET DE SEMESTRE Marc Kristol à 500fF par pas de 20fF. Cette caractérisation a été faite pour deux cellules dites de référence à savoir la NAND à 2 entrées et la Flip-flop basique, qui permette d extrapoler les comportements des autres cellules. Fig 5.12 Délai de la NAND2 en fonction de la pente d entrée pour une capacité de 0fF Si la courbe de délai en fonction de la capacité de charge s est révélé bien linéaire, il en a été autrement pour celle en fonction de la pente d entrée (Fig 5.12). Même si cela n est pas catastrophique, il vaut mieux dans ce cas prendre un pas irrégulier. Après avoir relevé six valeurs par courbe et cela pour chaque courbe correspondant à une valeur de capacité de charge donnée de la cellule NAND2_1 et de la cellule DFF_BASIC, les six valeurs apparaissant le plus souvent ont été choisies comme paramètre de la pente d entrée. Ces valeurs sont : 0,1 ns, 0,2 ns, 0,3 ns, 0,5 ns, 0,8 ns et 1ns. Afin d avoir le même nombre de valeurs pour la capacité de charge, les valeurs 0, 100fF, 200fF, 300fF, 400fF et 500fF ont été choisi pour cette dernière.

PROJET DE SEMESTRE - Marc Kristol 23 Fig 5.13 Délai de la NAND2 avec six points de mesure La caractérisation précise a également permis de détecter un problème dans le degré de résolution des simulations. Les courbes de délai de la Flip-flop basique étaient très perturbé et de ce fait n était pas caractérisable avec seulement six points. Mais en augmentant le degré de résolution, le phénomène a disparu. Cela est peut-être dû à des erreurs d arrondies de numérisation. Fig 5.14 Problème de résolution numérique Le niveau de résolution peut être modifié en ouvrant le fichier de test timing (Fig 5.11). Une option avec un curseur pouvant varier entre 4 et +4 définie le niveau de résolution. Il est par défaut sur 0, pour corriger le problème il a été mis sur 3 ce qui semblait suffisant. Plus le degré de résolution est élevé, plus la simulation prend de temps.

24 PROJET DE SEMESTRE Marc Kristol 5.3 Génération de la librairie Synopsys Lors de la caractérisation, le logiciel génère un fichier librairie pour chaque cellule. Il existe cependant une commande permettant de rassembler tout ces fichier en un seul. Cette commande se trouve dans le menu «tools» du setup de chaque cellule. Il reste alors à entrer le nom du fichier unique et le nom de la librairie. Fig 5.15 Génération d une librairie unique

PROJET DE SEMESTRE - Marc Kristol 25 6. LIBRARY COMPILER Le logiciel Library Compiler existe dans une version graphique. Cependant c est via un terminal qu il a été utilisé. Il se lance avec la commande suivante au niveau du répertoire du travail. >lc_shell 6.1 Compilation de la librairie Synopsys Pour compiler la libraire dans sa version binaire «.db» il faut d abord la faire lire par le logiciel : >read_lib BadBoy05.lib Il se peut qu un certain nombre de messages tels des warnings ou des errors soient alors affichés. Dans le cas d errors, la librairie ne peut pas être compilée. Pour la Librairie BadBoy05.lib généré par Aptivia/DCM se fut le cas. Il a alors fallu la corriger avec un script (annexe B). La librairie Synopsys contient au début une série de templates. Dans le cas de la librairie BadBOy05, certain de ces templates étaient présents en double. Le script permet alors de supprimer les templates en trop. Un autre problème était que pour les cellules NAND 2_1, NAND3_1, NAND4_1, XOR 2_1 et XNOR2_1 le nom de la librairie était devenu nbadboy05 ou xbadboy05. Cela est également corrigé par le script. Le dernier problème survenu est dû au fonctionnement des cellules tri-state. Lors d une transition du signal sur le pin de sélection (SEL) qui provoque un état de haute-impédance en sortie, il n y a pas eu de caractérisation effectuée car la sortie ne varie pas entre 0 et 1 ou vice-versa. Pourtant le logiciel s attend trouver des matrices de délais et de temps de transition. Il a été rajouté manuellement les éléments suivant pour remplacer ces matrices : rise_transition (scalar) { Values( 0.0 ) ; } fall_transition (scalar) { Values( 0.0 ) ; } Une fois ces problèmes corrigés, la compilation s effectue avec la commande suivante : >write_lib BadBoy05 o bb05.db D autres commandes peuvent être utiles. >report_lib BadBoy05 Cette commande permet d avoir un rapport sur la lecture. En particulier elle permet de voir si toutes les cellules ont été repérés.

26 PROJET DE SEMESTRE Marc Kristol Si des problèmes de conflit entre librairies apparaissent il est possibles de commencer la procédure par la commande suivante avant d effectuer la lecture : >remove_lib La librairie de symboles se compile selon le même processus. 6.2 Génération des modèles VHDL La génération des modèles VHDL s effectue avec la procédure suivante : >read_lib BadBoy05.lib >vhdllib_architecture = VITAL >write_lib f vhdl BadBoy05 La première ligne fait une lecture de la librairie. La seconde permet de choisir le style d architecture. Une des architectures les plus courantes est VITAL. La troisième ligne génère les trois fichiers VHDL : - BadBoy05_VITAL.vhd - BadBoy05_Vcomponents.vhd - BadBoy05_Vtables.vhd Il est également possible de générer des testbenchs de validation des cellules. La procédure est la suivante : >read_lib BadBoy05.lib >vhdllib_architecture = VITAL >vhdllib_tb_x_eq_dontcare = false >vhdllib_tb_compare = 5 >write_lib f vhdl BadBoy05 Il est à noter que les modèles VHDL sont également généré avec cette procédure. La commande de la troisième ligne sert à définir si on désire que l état x corresponde à un état «Don t care». La commande de la quatrième ligne permet de choisir le niveau de vérification, 0 étant le niveau sans vérification et 5 le plus élevé. L utilisation des testbenchs est commentée dans le chapitre 7.

PROJET DE SEMESTRE - Marc Kristol 27 7. VALIDATIONS La validation des résultats est une partie importante du flot de développement. Sans validation, on ne peut jamais être certain que les résultats obtenus sont corrects. Une première vérification est faite en voyant si les fichiers générés sont acceptés par les logiciels qui les utilisent ensuite. C est une vérification syntaxique, mais qui ne permet pas de dire si le contenu est juste. Avec la validation par des tests, on peut très vite dire si les résultats obtenus ne sont pas aberrants. De plus, comme on dispose des résultats du projet précédent, on peut également faire une validation par comparaison. 7.1 Validation de la caractérisation La caractérisation est justement validée par comparaison. Dans l ensemble, les valeurs de délais et pente de sortie sont du même ordre. On compare en particulier les délais de propagation et les temps de transition pour des capacité de charges de 200 ff et 400 ff. On compare également les capacités des pins d entrées. Les petites différences sont dues au faites que la caractérisation n a pas été faite avec les mêmes outils et de la même manière. De plus, les anciens résultats ne comprennent que les valeurs des cas les plus mauvais possible, alors qu ici on a les valeurs de toutes les combinaisons possibles de trajets entre les entrées et sorties. delay-rise delay-fall output slope-rise output slope-fall 200fF 400fF 200fF 400fF 200fF 400fF 200fF 400fF BadBoy05 403 ps 637 ps 415 ps 681 ps 686 ps 1,2 ns 715 ps 1,3 ns Version 2003 Ain->Qout 337,5 ps 575,2 ps 376,5 ps 646,6 ps 711,1 ps 1315,2 ps 776,7 ps 1421,3 ps Bin->Qout 361,0 ps 597,0 ps 383,5 ps 654,2 ps 757,8 ps 1348,9 ps 776,9 ps 1422,4 ps Capacité Ain Bin BadBoy05 31,88 ff 31,90 ff Version 2003 28,29 ff 28,33 ff Tableau 7.1 Validation de la cellule NAND2_1 delay-rise delay-fall output slope-rise output slope-fall CLK->Qout 200fF 400fF 200fF 400fF 200fF 400fF 200fF 400fF BadBoy05 918 ps 1,0 ns 1,0 ns 1,2 ns 342 ps 580 ps 338 ps 573 ps Version 2003 885,8 ps 1002,2 ps 1249,9 ps 1376,8 ps 407,7 ps 661,1 ps 404,9 ps 663,5 ps CLK->Q'out BadBoy05 869 ps 998 ps 805 ps 998 ps 410 ps 641 ps 368 ps 607 ps Version 2003 953,8 ps 1086,9 ps 675,9 ps 819,4 ps 474,8 ps 732,4 ps 436,5 ps 702,1 ps Capacité Din CLK BadBoy05 47,57 ff 53,39 ff Version 2003 51,46 ff 53,55 ff Tableau 7.2 Validation de la cellule DFF_BASIC

28 PROJET DE SEMESTRE Marc Kristol Dans les deux cas test ci-dessus (tableau 7.1 et 7.2), les différences de temps entre les deux caractérisations sont presque toutes inférieures à 100 ps. Pour les capacités d entrées, les différences sont de l ordre de 5fF au maximum. Les résultats complets de validation de la caractérisation se trouvent en annexe (annexe A). 7.2 Validation des cellules par testbench Les fichiers générés par Library Compiler comprennent un fichier testbench VHDL, un fichier de signaux général pour la simulation, un script qui génère les fichiers de signaux pour chaque cellule et un script qui permet de faire la validation. Malheureusement la validation effectuée par ce script donne des résultats négatifs. La tentative pour comprendre si les testbench étaient bons avec un debugger a révélé qu apparemment les signaux qui sortent des cellules sont bons, mais la vérification avec des signaux théoriques ne passait pas. Par manque de temps il n a pas été possible de vérifier plus loin et de corriger les problèmes. Mais, il semble malgré tout que les cellules de la bibliothèque fonctionnent correctement. 7.3 Validation par synthèse La validation par synthèse est faite à l aide de quatre circuits provenant du projet initial. Il s agit un additionneur un bit (ONEBIT), d un additionneur huit bits (ADDER8), d une unité arithmétique et logique (ALU) et d un ISP. La synthèse de ces circuits est faite avec deux optimisations différentes : l optimisation en surface et celle en délai. Dans le but de correspondre à la dernière version du langage VHDL, les codes ont été un peu modifiés. Les packages std_logic_arith et std_logic_unsigned ont été remplacés par le package numérique_std. Cela implique de changer tous les signaux ou variables de type std_logic_vecteur par le type unsigned (annexe E). Après avoir au préalable définit dans le fichier de setup du logiciel Design Vision qu il doit utiliser la librairie Synopsys et la librairie des symboles (les versions compilées), la première étape est le lui faire analyser le modèle VHDL. Cela se fait en allant sur «Analyze file» dans le menu «File». Une fois là, il suffit d entrer le lien vers le modèle voulu. L étape suivante est de faire une première élaboration du circuit. On trouve cela également dans le menu «File» sous «Elaborate Design». Une première visualisation du circuit apparaît, mais sans aucune optimisation. Pour appliquer une contrainte de surface minimum, il faut aller dans le menu «Attributes» dans «Optimization Constraints, puis dans «Design contraints». Dans la fenêtre qui s ouvre (Fig 7.3), il suffit seulement de mettre dans le champ «Max area» la valeur 0.

PROJET DE SEMESTRE - Marc Kristol 29 Fig 7.3 Contrainte de surface minimum Pour imposer une contrainte de délai minimum il faut au préalable sélectionner tous les pins de sortie du circuit. Une fois cela fait, le chemin est le même : «Attributes» -> «Optimization contraints» -> «Timing contraints». Fig 7.4 sélection des pins de sortie Dans ce projet, la contrainte mise sur les délais a été mise à 0. Mais il est possible que pour des circuits plus complexes, le simulateur n arrive pas résoudre le problème et finissent par tourner indéfiniment.

30 PROJET DE SEMESTRE Marc Kristol Fig 7.5 Contrainte sur les délais Pour le circuit ISP qui possède un signal d horloge, la contrainte sur le délai est un peu différente. Il faut sélectionner le pin d horloge. Puis, en allant dans le menu «attributes» dans «Clocks» et «Specify», on peut alors spécifier la durée d une période d horloge. L optimisation se fait alors par essai successif en diminuant à chaque fois la période jusqu à trouver la période minimal pour laquelle les délais internes du circuit sont respectés. Fig 7.6 Attribution d un signal d horloge Les deux contraintes ne sont jamais imposées en même temps. Soit on fait une optimisation en surface ou soit on la fait en délai. Après avoir imposé la contrainte voulue une version du

PROJET DE SEMESTRE - Marc Kristol 31 circuit est sauvegardée afin de pouvoir refaire une optimisation si cela est nécessaire comme dans le cas de l ISP. Pour effectuer l optimisation, il faut aller dans le menu «Tools» dans «Design optimization». Là il faut préciser le niveau d effort d optimisation à «high» et sélectionner l options «Ungroup All», cela dans le but d avoir une optimisation qui ne soit pas bloqué par des composants interne du circuit comme c est le cas pour l ISP qui possède les composants Shifter et Logic. Pour que le logiciel puisse trouver ces composants, il ne faut pas oublier de lui faire analyser les codes VHDl de ceux-ci. Fig 7.7 Fenêtre d optimisation Une fois l optimisation exécutée, il est possible d aller voir les rapports d optimisation dans le menu «Reports». Une version du circuit optimiser a également été sauvegardée. Pour optimiser l exécution de toutes ces optimisations, des scripts qui font tout le processus ont été fait. Il suffit alors de taper dans la ligne de commande : > include nom_du_script.dcs Des scripts ont été faits pour chaque circuit avec optimisation en surface et en délai pour les conditions typical, best et worst. Ces scripts se trouvent en annexe (annexe F).

32 PROJET DE SEMESTRE Marc Kristol Fig 7.8 Optimisation de l ALU en surface avec le chemin critique Les résultats de la synthèse sont bons et, comparativement, sont très proches de ceux du projet précédent. Le fait d avoir choisir un effort maximal fait que les nouveaux résultats sont un petit peu meilleur, tant en surface qu en timing (tableau 7.9). Le tableau 7.10 contient en plus les résultats pour les conditions best et worst.

PROJET DE SEMESTRE - Marc Kristol 33 Onebit AREA OPTIMIZATION SPEED OPTIMIZATION Area [um^2] Delay [ns] Nbr Cells % Lib Used Area [um^2] Delay [ns] Nbr Cells % Lib Used BadBoy05 1958 0,79 3 5,1 2448 0,63 5 7,7 BB05 v.2003 1958 0,78 3 5,1 4161 0,55 10 15,4 Adder8 AREA OPTIMIZATION SPEED OPTIMIZATION Area [um^2] Delay [ns] Nbr Cells % Lib Used Area [um^2] Delay [ns] Nbr Cells % Lib Used BadBoy05 29008 7,72 59 28,2 64259 2,69 145 38,5 BB05 v.2003 29498 8,11 59 23,1 73929 2,44 187 35,9 ALU AREA OPTIMIZATION SPEED OPTIMIZATION Area [um^2] Delay [ns] Nbr Cells % Lib Used Area [um^2] Delay [ns] Nbr Cells % Lib Used BadBoy05 79927 9,41 167 48,7 122644 3,28 282 48,7 BB05 v.2003 79315 10,04 163 46,2 131457 3,12 331 41,0 ISP AREA OPTIMIZATION SPEED OPTIMIZATION Area [um^2] Delay [ns] Nbr Cells % Lib Used Area [um^2] Delay [ns] Nbr Cells % Lib Used BadBoy05 537825-708 56,4 - - - - BB05 v.2003 491925 9,37 630 64,1 595843 4,46 996 56,4 Tableau 7.9 Comparaisons des résultats de synthèse Onebit AREA OPTIMIZATION SPEED OPTIMIZATION Area [um^2] Delay [ns] Nbr Cells % Lib Used Area [um^2] Delay [ns] Nbr Cells % Lib Used Best 1958 0,71 3 5,1 3304 0,50 7 12,8 Typical 1958 0,78 3 5,1 4161 0,55 10 15,4 Worst 1958 0,91 3 5,1 4528 0,62 11 15,4 Adder8 AREA OPTIMIZATION SPEED OPTIMIZATION Area [um^2] Delay [ns] Nbr Cells % Lib Used Area [um^2] Delay [ns] Nbr Cells % Lib Used Best 29253 7,29 58 25,6 88617 2,08 234 41,0 Typical 29498 8,11 59 23,1 73929 2,44 187 35,9 Worst 29498 9,87 59 23,1 75276 2,51 197 38,5 ALU AREA OPTIMIZATION SPEED OPTIMIZATION Area [um^2] Delay [ns] Nbr Cells % Lib Used Area [um^2] Delay [ns] Nbr Cells % Lib Used Best 79437 8,75 165 41,0 147614 2,86 378 43,6 Typical 79315 10,04 163 46,2 131457 3,12 331 41,0 Worst 79427 11,95 165 46,2 127051 3,63 331 41,0 ISP AREA OPTIMIZATION SPEED OPTIMIZATION Area [um^2] Delay [ns] Nbr Cells % Lib Used Area [um^2] Delay [ns] Nbr Cells % Lib Used Best 491803 8,41 629 64,1 610164 4,01 1046 56,4 Typical 491925 9,37 630 64,1 595843 4,46 996 56,4 Worst 493884 11,69 633 64,1 626810 5,09 1113 59,0 Tableau 7.10 Résultats complets de la synthèse

34 PROJET DE SEMESTRE Marc Kristol 8. TRAVAILS FUTURS ET CONCLUSION Ce projet comporte beaucoup d éléments à réaliser et malheureusement tous n ont pas pu être amenés à terme. La première chose à terminer est de résoudre le problème de validation avec les testbenchs. Cela demande de d abord bien comprendre les fichiers générés par Library Compiler et leur utilité. Ce qui n est pas chose aisée. Dans un second temps, toute la partie placement et routage reste à faire. Il faut comprendre les logiciels utiles pour cette partie et, une fois les fichiers générés, mettre un point une procédure de validation. Une autre chose intéressante à faire est de refaire toute la caractérisation à partir des netlists extraites des layouts. Elles prendraient ainsi en compte les effets parasites et donc permettraient d avoir un comportement plus proche de la réalité. Il est également possible de créer de nouvelles cellules comme un additionneur un bit ou des portes XOR et XNOR à 3 et 4 entrées dans le but d étoffer cette bibliothèque qui reste malgré tout restreinte. Ce qui ressort de ce projet est la grande difficulté à utiliser des outils provenant de différents fournisseurs. Lorsqu on développe un système, il est presque préférable d utiliser toute la gamme d outils provenant du même fournisseur afin d éviter les problèmes d incompatibilité. Malgré cela, il est à souligner que chacun de ces outils pris individuellement reste très performant et apporte un gain de temps considérable dans le développement, même si ces derniers ne sont pas toujours très faciles à apprivoiser à cause de leurs grandes complexités.

PROJET DE SEMESTRE - Marc Kristol 35 9. RÉFÉRENCES «Standard Cell Library Blocks Design and Evaluation» A Major Thesis of the Worcester Polytechnic Institute, April 2000 Samuel R. Girgis and Carl F. Nielsen Jr. «BadBoy05 Standard Cell Library Data Book», April 2000 Samuel R. Girgis and Carl F. Nielsen Jr. «Modélisation de systèmes intégrés numériques - Introduction à VHDL» Notes de cours, 2002 Alain Vachoux «Synospys Design Vision introduction», 2002 Alain Vachoux «Design Characterization and Modelling User s Guide», May 2002 Antrim Design Systems Inc. «Integrated Digital Systems» Lecture notes, 2002 Yusuf Leblebici «Circuits Intégrés Numériques» Notes de cours, 2002 Bertrand Hochet «Analyse et Synthèse des Systèmes Logiques» Traité d Electricité vol. V - PPUR,1995 Daniel Mange

36 PROJET DE SEMESTRE Marc Kristol 10. ANNEXES A. Datasheets B. Script de correction de la librairie Synopsys C. Librairie Synopsys D. Stubs E. Modèles VHDL des circuits de synthèse F. Scripts de synthèse pour Design Vision

PROJET DE SEMESTRE - Marc Kristol 37 A. BadBoy05 datasheets Conditions : Vdd = 3.3 V Temperature : 27 C Input slope = 0.2 ns AND2_1 : Fonction : Qout = Ain * Bin Input Capacitance[fF] Truth Table Ain 18.51 Ain Bin Qout Bin 18.53 0 0 0 0 1 0 Load 1 0 0 Ain 200fF 400fF 1 1 1 Propagation Delay -Rise 415.2 535.6 Propagation Delay -Fall 506.6 671.5 Ouput Slope - Rise 405.0 664.4 Ouput Slope - Fall 479.1 830.1 Bin Propagation Delay -Rise 422.6 543.2 Propagation Delay -Fall 542.8 707.7 Ouput Slope - Rise 404.3 664.5 Ouput Slope - Fall 484.5 833.4 AND3_1 : Fonction : Qout = Ain * Bin * Cin Input Capacitance[fF] Truth Table Ain 38.06 Ain Bin Cin Qout Bin 38.11 0 0 0 0 Cin 38.13 0 0 1 0 0 1 0 0 Load 0 1 1 0 Ain 200fF 400fF 1 0 0 0 Propagation Delay -Rise 487.4 615.2 1 0 1 0 Propagation Delay -Fall 397.0 525.8 1 1 0 0 Ouput Slope - Rise 436.4 695.8 1 1 1 1 Ouput Slope - Fall 373.8 646.7 Bin Propagation Delay -Rise 514.2 642.0 Propagation Delay -Fall 425.9 555.2 Ouput Slope - Rise 436.2 695.6 Ouput Slope - Fall 378.4 651.0 Cin Propagation Delay -Rise 525.7 653.7 Propagation Delay -Fall 449.4 579.9 Ouput Slope - Rise 436.3 695.2 Ouput Slope - Fall 387.5 657.0

38 PROJET DE SEMESTRE Marc Kristol AND4_1 : Fonction : Qout = Ain * Bin * Cin * Din Input Capacitance[fF] Truth Table Ain 38.06 Ain Bin Cin Din Qout Bin 38.11 0 0 0 0 0 Cin 38.13 0 0 0 1 0 Din 38.13 0 0 1 0 0 0 0 1 1 0 Load 0 1 0 0 0 Ain 200fF 400fF 0 1 0 1 0 Propagation Delay -Rise 619.9 767.3 0 1 1 0 0 Propagation Delay -Fall 422.5 557.7 0 1 1 1 0 Ouput Slope - Rise 592.7 851.0 1 0 0 0 0 Ouput Slope - Fall 425.6 703.9 1 0 0 1 0 Bin 1 0 1 0 0 Propagation Delay -Rise 661.1 815.1 1 0 1 1 0 Propagation Delay -Fall 455.3 591.2 1 1 0 0 0 Ouput Slope - Rise 572.7 845.8 1 1 0 1 0 Ouput Slope - Fall 450.3 714.6 1 1 1 0 0 Cin 1 1 1 1 1 Propagation Delay -Rise 697.2 844.6 Propagation Delay -Fall 490.7 620.0 Ouput Slope - Rise 576.6 835.3 Ouput Slope - Fall 496.5 733.5 Din Propagation Delay -Rise 704.7 854.7 Propagation Delay -Fall 503.6 635.9 Ouput Slope - Rise 561.2 853.7 Ouput Slope - Fall 492.7 752.9 AO21 : Fonction : Qout = (Ain * Bin) + Cin Input Capacitance[fF] Truth Table Ain 43.24 Ain Bin Cin Qout Bin 43.31 0 0 0 0 Cin 51.46 0 0 1 1 0 1 0 0 Load 0 1 1 1 Ain 200fF 400fF 1 0 0 0 Propagation Delay -Rise 356.9 472.9 1 0 1 1 Propagation Delay -Fall 520.3 691.1 1 1 0 1 Ouput Slope - Rise 374.1 640.6 1 1 1 1 Ouput Slope - Fall 495.9 846.2 Bin Propagation Delay -Rise 361.2 477.4 Propagation Delay -Fall 572.9 744.5 Ouput Slope - Rise 373.9 640.4 Ouput Slope - Fall 506.2 853.1 Cin Propagation Delay -Rise 444.4 560.8 Propagation Delay -Fall 521.5 690.4

PROJET DE SEMESTRE - Marc Kristol 39 Ouput Slope - Rise 381.2 643.7 Ouput Slope - Fall 485.6 837.5 AO22 : Fonction : Qout = (Ain * Bin) + (Cin + Din) Input Capacitance[fF] Truth Table Ain 45.79 Ain Bin Cin Din Qout Bin 45.84 0 0 0 0 0 Cin 45.79 0 0 0 1 0 Din 45.84 0 0 1 0 0 0 0 1 1 1 Load 0 1 0 0 0 Ain 200fF 400fF 0 1 0 1 0 Propagation Delay -Rise 593.0 717.3 0 1 1 0 0 Propagation Delay -Fall 529.1 670.9 0 1 1 1 1 Ouput Slope - Rise 434.9 688.0 1 0 0 0 0 Ouput Slope - Fall 421.1 693.8 1 0 0 1 0 Bin 1 0 1 0 0 Propagation Delay -Rise 599.2 723.6 1 0 1 1 1 Propagation Delay -Fall 562.1 704.6 1 1 0 0 1 Ouput Slope - Rise 435.4 689.1 1 1 0 1 1 Ouput Slope - Fall 429.4 698.8 1 1 1 0 1 Cin 1 1 1 1 1 Propagation Delay -Rise 411.3 530.1 Propagation Delay -Fall 423.8 556.8 Ouput Slope - Rise 393.4 655.9 Ouput Slope - Fall 391.0 661.4 Din Propagation Delay -Rise 416.2 535.0 Propagation Delay -Fall 455.1 588.9 Ouput Slope - Rise 393.4 655.0 Ouput Slope - Fall 396.8 667.2 AOI21 : Fonction : Qout = {(Ain * Bin) + Cin} Input Capacitance[fF] Truth Table Ain 30.37 Ain Bin Cin Qout Bin 30.43 0 0 0 1 Cin 49.37 0 0 1 0 0 1 0 1 Load 0 1 1 0 Ain 200fF 400fF 1 0 0 1 Propagation Delay -Rise 567.4 911.5 1 0 1 0 Propagation Delay -Fall 396.8 610.6 1 1 0 0 Ouput Slope - Rise 1168.8 2015.8 1 1 1 0 Ouput Slope - Fall 798.1 1299.1 Bin Propagation Delay -Rise 611.9 953.2 Propagation Delay -Fall 402.9 616.0 Ouput Slope - Rise 1265.2 2106.9 Ouput Slope - Fall 797.9 1298.7 Cin Propagation Delay -Rise 320.0 542.1 Propagation Delay -Fall 351.3 575.8

40 PROJET DE SEMESTRE Marc Kristol Ouput Slope - Rise 735.3 1293.2 Ouput Slope - Fall 628.9 1144.3 AOI22 : Fonction : Qout = {(Ain * Bin) + (Cin + Din)} Input Capacitance[fF] Truth Table Ain 45.79 Ain Bin Cin Din Qout Bin 45.84 0 0 0 0 1 Cin 45.79 0 0 0 1 1 Din 45.84 0 0 1 0 1 0 0 1 1 0 Load 0 1 0 0 1 Ain 200fF 400fF 0 1 0 1 1 Propagation Delay -Rise 405.3 606.7 0 1 1 0 1 Propagation Delay -Fall 496.9 711.1 0 1 1 1 0 Ouput Slope - Rise 794.2 1286.3 1 0 0 0 1 Ouput Slope - Fall 963.6 1466.7 1 0 0 1 1 Bin 1 0 1 0 1 Propagation Delay -Rise 430.8 632.0 1 0 1 1 0 Propagation Delay -Fall 503.2 717.0 1 1 0 0 0 Ouput Slope - Rise 850.0 1343.9 1 1 0 1 0 Ouput Slope - Fall 963.9 1466.1 1 1 1 0 0 Cin 1 1 1 1 0 Propagation Delay -Rise 319.4 515.8 Propagation Delay -Fall 347.8 558.4 Ouput Slope - Rise 695.7 1191.6 Ouput Slope - Fall 684.5 1185.7 Din Propagation Delay -Rise 342.8 540.5 Propagation Delay -Fall 353.7 564.3 Ouput Slope - Rise 749.8 1244.3 Ouput Slope - Fall 684.2 1186.4 BUF_1 : Fonction : Qout = Ain Input Capacitance[fF] Truth Table Ain 37.81 Ain Qout 0 0 Load 1 1 Ain 200fF 400fF Propagation Delay -Rise 355.2 440.9 Propagation Delay -Fall 291.4 365.7 Ouput Slope - Rise 312.8 501.0 Ouput Slope - Fall 238.5 390.5

PROJET DE SEMESTRE - Marc Kristol 41 DFF_BASIC : Input Capacitance[fF] Truth Table Din 51.46 Din CLK Qout (k) Q'out (k) CLK 53.55 x 0 no change no change 0 1 0 1 Load 1 1 1 0 CLK -> Qout 200fF 400fF Propagation Delay -Rise 885.8 1002.2 Propagation Delay -Fall 1249.9 1376.8 Ouput Slope - Rise 407.7 661.1 Ouput Slope - Fall 404.9 663.5 CLK -> Q'out Propagation Delay -Rise 953.8 1086.9 Propagation Delay -Fall 675.9 819.4 Ouput Slope - Rise 474.8 732.4 Ouput Slope - Fall 436.5 702.1 DFF_CLR : Input Capacitance[fF] Truth Table Din 51.46 Din CLK CLR Qout (k) Q'out (k) CLK 53.55 x x 0 0 1 CLR 81.88 0 1 1 0 1 1 1 1 1 0 Load x 0 1 no change no change CLK -> Qout 200fF 400fF Propagation Delay -Rise 1092.7 1225.4 Propagation Delay -Fall 1278.2 1407.5 Ouput Slope - Rise 491.9 746.0 Ouput Slope - Fall 415.6 675.5 CLR -> Qout Propagation Delay -Fall 507.7 642.6 Ouput Slope - Fall 408.8 673.1 CLK -> Q'out Propagation Delay -Rise 957.6 1090.6 Propagation Delay -Fall 680.4 823.7 Ouput Slope - Rise 474.2 731.5 Ouput Slope - Fall 438.3 702.3 CLR -> Q'out Propagation Delay -Rise 960.3 1090.9 Ouput Slope - Rise 474.3 726.6

42 PROJET DE SEMESTRE Marc Kristol DFF_CLR_PRE : Input Capacitance[fF] Truth Table Din 51.46 Din CLK CLR PRE Qout (k) Q'out (k) CLK 53.55 x x 0 1 0 1 CLR 81.88 0 1 1 1 0 1 PRE 81.88 1 1 1 1 1 0 x 0 1 1 no change no change Load x x 1 0 1 0 CLK -> Qout 200fF 400fF x x 0 0 illegal illegal Propagation Delay -Rise 1134.7 1277.3 Propagation Delay -Fall 1308.7 1438.9 Ouput Slope - Rise 549.9 814.7 Ouput Slope - Fall 460.0 736.9 CLR -> Qout Propagation Delay -Fall 514.8 653.4 Ouput Slope - Fall 449.1 709.0 PRE -> Qout Propagation Delay -Rise 1056.8 1201.0 Ouput Slope - Rise 545.0 825.3 CLK -> Q'out Propagation Delay -Rise 971.3 1109.0 Propagation Delay -Fall 700.2 847.2 Ouput Slope - Rise 525.2 762.6 Ouput Slope - Fall 479.0 737.9 CLR -> Q'out Propagation Delay -Rise 983.9 1129.9 Ouput Slope - Rise 538.4 830.7 PRE -> Q'out Propagation Delay -Fall 625.3 772.7 Ouput Slope - Fall 488.5 742.8 DFF_PRE : Input Capacitance[fF] Truth Table Din 51.46 Din CLK PRE Qout (k) Q'out (k) CLK 53.55 x x 0 1 0 PRE 81.82 0 1 1 0 1 1 1 1 1 0 Load x 0 1 no change no change CLK -> Qout 200fF 400fF Propagation Delay -Rise 916.4 1033.9 Propagation Delay -Fall 1270.9 1399.0 Ouput Slope - Rise 411.8 666.1 Ouput Slope - Fall 410.9 670.2 PRE -> Qout Propagation Delay -Rise 850.9 966.8 Ouput Slope - Rise 404.5 660.1 CLK -> Q'out Propagation Delay -Rise 961.2 1094.9 Propagation Delay -Fall 695.7 839.4 Ouput Slope - Rise 477.7 735.1 Ouput Slope - Fall 438.4 704.1 PRE -> Q'out Propagation Delay -Fall 630.4 773.5