Année 2008-2009 Conception Systèmes numériques VHDL et synthèse automatique des circuits Travaux pratiques Pentium4 Présentation du simulateur VHDL sous environnement Cadence Présentation de l outil Synopsys Design Analyzer pour la synthèse de circuits à partir de code VHDL Présentation de l outil de Placement & Routage SoC Encounter sous environnement CADENCE Utilisation du design-kit AMS 3.70 en technologie de 0.35um Daniela Dragomirescu Reyna
Cycle de conception Simulation du code VHDL LDV Cadence Commande nclaunch hdl.var cds.lib Synthèse automatique du circuit correspondant au code VHDL Synopsys Commande design_analyzer.synopsys_dc.setup Counter.vhd - format VHDL Counter.v - format Verilog Counter.db - format DataBase Simulation du fichier après synthèse LDV Cadence Commande nclaunch hdl.var cds.lib Librairie AMS 3.70 0.35 µm Placement & routage du circuit synthétisé Silicon Ensemble Cadence Commande sedsm Simulation du circuit placé et routé Backannotation LDV Cadence Commande nclaunch hdl.var cds.lib 2
Visualisation du layout Cadence Virtuoso Layout Commande icfb cds.lib Vérification des règles technologiques du layout Cadence Virtuoso Layout DRC design rules check Structure de répertoires de travail : Lancez le script install_vhdl_ams qui se trouve dans le répertoire ~daniela : /net/quercy/home/daniela/install_vhdl_ams_2007 Ce script va créer la structure suivante de répertoires et il va configurer votre environnement pour travailler avec CADENCE et SYNOPSYS.. VHDL SIMU_FONCTIONNELLE Répertoire pour simulation VHDL Fichiers de configuration : Cds.lib hdl.var SYNTHESE Répertoire pour la synthèse Fichier de configuration :.synopsys dc.setup PR Répertoire pour le placement routage SIMU_APRES_SYNTHESE Répertoire pour la simulation après synthèse Fichiers de configuration : Cds.lib hdl.var SIMU_APRES_PR Répertoire pour la simulation après placement routage Backannotation Fichiers de configuration : Cds.lib hdl.var Note : L'éditeur de texte se lance avec la commande nedit. 3
Première partie : Réalisation d un compteur programmable 8 bits Il faut écrire le code VHDL décrivant le comportement d un compteur 8 bits. Ce compteur a les signaux suivants : CK RST LOAD SENS EN Din Dout - horloge. - reset signal de remise à zéro du compteur synchrone avec l horloge (actif bas). - signal de commande synchrone de chargement du compteur (actif haut). - à l état bas, le circuit décrément à chaque transition montante de l horloge, - à l état haut, le circuit incrément. - enable permet au compteur de compter s il est à la masse (actif bas) - donnée à charger dans le compteur (sur 8 bits) quand la commande LOAD est active - sortie sur 8 bits CK RST SENS LOAD Din Compteur 8 bits Dout EN Les signaux CK, SENS, RST et LOAD sont du type std_logic. Les signaux Din et Dout sont des std_logic_vector ( 7 downto 0). Ecrire le programme de test de ce compteur. Simuler (simulation fonctionnelle) Faire la synthèse de ce code VHDL et la simulation du compteur 8 bits synthétisé. Comparer avec la simulation du code VHDL du compteur. Effectuez le placement routage. Extraire le fichier contenant les retards de propagation dus aux éléments parasites RC de lignes (fichier.sdf). Backannotation : faire la simulation du compteur placé et routé en utilisant le fichier VHDL du compteur synthétisé et le fichier.sdf extrait auparavant, contenant les retards de propagation sur les lignes du circuit intégré. 4
Simulation VHDL sous environnement Cadence Placez-vous dans le répertoire VHDL/SIMU_FONNCTIONNELLE Lancez l environnement LDV du Cadence 5.0: ldv IUS55) Lancez le simulateur VHDL de Cadence avec la commande : nclaunch & 1. Compilation Compilateur VHDL Menu TOOLS VHDL Compiler selectionner ENABLE VHDL93 features Sélectionnez votre fichier VHDL counter.vhd et lancez la compilation Compile VHDL Sélectionnez ensuite votre fichier de test : test_counter.vhd Compile VHDL 5
2. Elaboration b) Configuration définie à l intérieur de l architecture (appelé bench) de votre entité de test test_counter test_counter bench Elaborate Design Elaborate Design 6
3. Simulation Sélectionnez dans le dossier Snapshot travail.test_counter :bench Ensuite cliquez sur le bouton Simulate Design. Simulate Design Ensuite le simulateur de VHDL, sim Vision va être lancé : 7
Lance la simulation Pour visualiser l évolution des signaux Sélectionnez les signaux : Select Signals ou Shift+click bouton gauche souris Etablir le temps total de la simulation : Simulation Set Breakpoint Time (environ 500 ns) Cliquez ensuite sur l icône représentant les chronogrammes pour visualiser les signaux ou faire Tools Waveforms. Lancez la simulation! Le résultat de la simulation, c est-à-dire le fonctionnement du compteur est visualisé par l évolution des signaux. Si le fonctionnement du compteur n est pas correct il faut modifier le code VHDL et refaire la compilation, élaboration et la simulation ou utiliser Simulation Reinvoke du simulateur NCSIM 8
SYNTHESE DES CIRCUITS NUMERIQUES COMPLEXES Travaux pratiques Présentation de l outil Synopsys Design Analyzer pour la synthèse de circuits à partir de code VHDL Optimisation du chemin critique dans les circuits numériques 9
Présentation de l outil Synopsys Design Analyzer pour la synthèse de circuits à partir de code VHDL On va se placer dans le répertoire VHDL/SYNTHESE. On lance l environnement AMS qui installe le chemin d accès vers le design kit AMS : > ams AMS370+CADENCE50 ) On lance l environnement SYNOPSYS avec la commande : > synopsys synopsys06 Ensuite on lance DESIGN ANALYSER qui est l outil de synthèse automatique des circuits à partir d un modèle VHDL. design_analyzer & On va réaliser l importation du fichier VHDL dont on veut faire la synthèse : File Read On choisit le fichier counter.vhd qui se trouve dans le répertoire VHDL. Si l entité et l architecture se trouve dans 2 fichiers sépares il faut faire : File Analyze pour le fichier de l entité et ensuite pour celui de l architecture en choisissant la librairie du travail WORK et le FILE FORMAT=VHDL. Ensuite il faut faire : File Elaborate En choisissant dans la librairie WORK l entité avec son architecture. 10
Ces 2 commandes ( File Analyze suivi de File Elaborate) sont équivalents à File Read. La commande File Read s utilise quand l entité et l architecture se trouve dans le même fichier. Les commandes File Analyze suivi de File Elaborate s utilise quand l entité et l architecture se trouvent dans 2 fichiers sépares. Donc nous venons de réaliser l importation du fichier VHDL dont on veut réaliser la synthèse. Il est impérative d indiquer à l outil de synthèse quel est l horloge. De cette manière, l outil de synthèse pourra ensuite faire de statistiques correctes en ce qui concerne la propagation des signaux et déterminer le chemin critique et donc la fréquence maximale de fonctionnement. Attributes Clock Specify Cliquez avec la souris sur le pin CK (le pin d horloge), donner une périodes estimative de 10 ns (par exemple). Cette commande n est pas nécessaire pour la synthèse proprement dite du circuits mais pour que l outil de synthèse soit capable de déterminer correctement les temps de propagations et donc la fréquence maximale de fonctionnement. ATTENTION : Si cette commande n est pas faite avant la synthèse le logiciel indiquera de chemins critiques faux. Nous avons la possibilité d optimiser la synthèse du circuit par rapport à sa taille ou au«timming», On peut aussi imposer le fan-out de portes utiliser dans notre circuit. Attributes Optimization Constraints Design Constraints Choisir l optimisation voulue. Pour faire la synthèse proprement dite: Tools Design Optimisation La synthèse automatique du circuit à partir d un modèle VHDL est faite. 11
Pour voir le composant on click sur la flèche, barre des menus à gauche. Pour voir la description au niveau RTL on click sur le symbole de porte, toujours dans le menu à gauche. Nous remarquons que dans ce design nous avons des niveaux hiérarchiques. Pour mettre le circuit «à plat», enlever les niveaux hiérarchiques on va faire : Setup Command Window Ungroup all -flatten 12
Optimisation du chemin critique On spécifie une période d horloge assez faible compte tenu de notre circuit (par exemple 100 MHz pour le compteur) Attributes Specify Clock 10 ns Attributes Design Optimisation Design Constraints Timimg Critical On relance la synthèse a partir du circuit déjà synthétise. Tools Design Optimisation Map Effort High Map Options Incremental Mapping (on part du circuit déjà synthétise et on optimise) Map Options Prioritize Min Path (on demande a l outil de synthèse de donner la priorité a la création de chemins logiques minimales) OK Synopsys Design Analyzer va resynthétiser en essayant d obtenir un chemin critique inferieur à la période d horloge que nous avons spécifié. On peut faire cette opération plusieurs fois afin d obtenir le circuit optimise ayant une fréquence d horloge maximale. Par exemple pour un circuit plus complexe comme un microprocesseur on peut faire plusieurs itérations : T CLK = 50 ns, T CLK = 20 ns, T CLK = 10 ns, T CLK = 5 ns OBS : Le chemin critique ne sera pas forcement le même. Pour T CLK = 50 ns on aura un chemin critique que ensuite sera optimise pour arriver à fonctionner à T CLK = 20 ns, donc c est probable que à T CLK = 20 ns on aura un autre chemin critique. Préparation des fichiers de sortie après synthèse : Pour préparer le format pour la sauvegarde du fichier de sortie (qui va être un fichier VHDL) on écrit aussi dans le Command Window : Report_names rules vhdl Change_names rules vhdl On va sauvegarder le fichier en TROIS formats : VHDL (pour la simulation après synthèse), Verilog (pour rentrer sous Silicon Ensemble) et data base (pour pouvoir relire le fichier synthétisé sous Synopsys, si besoin). File Save as 13
Il faut sauvegarder maintenant les informations de timming : les retards de propagation des signaux dans le circuit dans un fichier de type SDF (Standard Delay Format). Ces retards dépendent de temps de propagation dans les portes logiques et les temps de set-up et hold des bascules. FILE Save Info Design Timming Format SDF (Standard Delay Format) File name : counter.sdf 14
Simulation après synthèse Copier le fichier de test du compteur du répertoire VHDL dans le répertoire SYNTHESE. Ouvrir le fichier counter.vhd du répertoire SYNTHESE qui est le fichier du compteur 8 bit après synthèse et regarder le nom de la nouvelle architecture (SYN_votre_nom_d architecture). Dans le fichier de test du compteur (répertoire SYNTHESE), dans la configuration, changer le nom de l architecture du compteur avec celui de l architecture du compteur après synthèse (SYN_votre_nom_d architecture). Lancer un nouveau shell xterm. Se placer dans le répertoire SIMU_APRES_SYNTHESE. Lancer l environnement IUS5.5 : ldv IUS55 Lancez le simulateur VHDL comme décrit auparavant. nclaunch & Copier dans le repertoire SIMU_APRES_SYNTHESE les fichiers : - counter.vhd - le compteur synthétisé (il se trouve dans le répertoire SYNTHESE ) - tes-counter.vhd votre fichier de test déjà écrit - counter.sdf le fichier de retards de propagation dans les portes ; il se trouve dans le répertoire SYNTHESE Sélectionnez : counter.vhd Compile VHDL test_counter.vhd Compile VHDL counter.sdf Tools SDF Compiler 15
Un fichier counter.sdf.x a été créé dans le répertoire SIMU_APRES_SYNTHESE. Créer le fichier de commande counter.sdf_cmd ( t counter.sdf_cmd ) avec les lignes suivantes COMPILED_SDF_FILE= "counter.sdf.x", SCOPE = : écrivez le label d instanciation du composant ; Représente le point d entrée du SDF pour le composant à tester Revenez sur NCLAUNCH. Sélectionnez la l architecture du fichier de test et lancez l élaboration à travers le menu Tools Elaborator Cliquez sur la rubrique Advanced Options de la fenêtre Elaborate. Dans la nouvelle fenêtre choisissez Annotation Use SDF command file et écrivez l option suivante : counter.sdf_cmd Lancer Elaborate Design. Sélectionnez le fichier dans le snapshot et lancer la simulation Simulate Design Simulation après synthèse. On remarque le retard dû aux portes logiques qui est d environ 1.9 ns pour cette sortie. Simulation du code VHDL écrit par nous. Pas de retard entre l horloge et l affichage des données en sortie. Dans la simulation après synthèse, remarquez vous d états aléatoires (glitch)? Sont-elles gênantes? 16
Placement et Routage Travaux pratiques Présentation de l outil de Placement & Routage SoC Encounter sous environnement CADENCE 17
Placement et routage Se placer dans le répertoire PR (prendre un nouveau shell - xterm ). Installer l environnement nécessaire avec les commandes: > soc52 > ams > ams_encounter tech c35b4 Copier votre fichier counter.v (format Verilog) qui a été créé suite à la synthèse du code VHDL dans le repertoire PR. Le fichier counter.v se trouve dans le répertoire VHDL/SYNTHESE. Dans le cadre de ce TP nous allons utiliser la librairie AMS 3.70. Les composants de cette librairie sont réalisés dans une technologie 0.35 µm. Cette technologie peut avoir jusqu a 4 niveaux de métal. L avantage major de cette librairie est qu elle nous permet d avoir la vue complète de tous les niveaux de layout pour chaque cellule de la librairie(porte AND, NOR, bascule D, etc.). Commençons le Placement et le routage du compteur synthétisé. Lancez le logiciel SoCencounter : > encounter 1. Design Design Import Dans Design Import LOAD le fichier de configuration : c35b4_std.conf Dans Design import File : counter.v et TOP Cellule : counter 2. Initialisation de votre design. Floorplan Specify FloorPlan Donnez des valeur pour «Row Utilisation», «Row Spacing», «IO to Core Distance». Un exemple des valeurs est présenté ci-dessous : Row Utilisation 85% Row Spacing 0 microns IO to Core Distance 20 microns pour left/right et top/bottom Cliquez sur les options (par default): Flip Every Other Row qui permet de retourner les rangés des cellules afin d utiliser la même ligne de masse ou de VDD entre 2 rangés consécutives ; Cliquez ensuite sur OK. Votre «floorplan» a été initialisé. 18
3. Routage des interconnexions de masse et alimentation (VDD) Power Power Planning Add Rings Nous allons placer la masse du circuit et l alimentation en utilisant les paramètres montres dans la figure au-dessus. Nous allons placer l anneau de masse et celui d alimentation VDD, on va utiliser du MET1 pour les lignes horizontales et du MET2 pour les 2 lignes verticales de l anneau. On donne aux lignes de masse et d alimentation une largeur de 4µm et un espacement (spacing) de 4 µm. 4. Connecter l alimentation et la masse : Route Special Route 5. Placer les cellules. Place Standard Cells and Blocks Clickez sur l icône : Physical View ( en haut à droite) OK 19
6. Routage Le pas suivant est le routage des interconnexions entre cellules : Route NanoRoute OK 7. Introduction arbre d horloge (OPTIONEL) Timing Timing analysis Pre-CTS (obs : nous n avons pas introduit de fichier de contrainte temporaire quand nous avons importé le design) Clock Create Clock Tree Spec Clock specify clock tree Clock Synthesize clock tree Timing Timing analysis Pre-CTS Visualisation de l horloge : Lancez Design Browser Nets Clock 20
Votre design est fini et doit ressembler à la figure suivante : 8. Vérification : Verify Verify Geometry Verify Verify Conectivity 9. Save le design placé et routé Sauvegardez le fichier en lui donnant le nom : counter_placed_routed. Design Save Nous allons sauvegarder le compteur placé et routé en format DEF (Design Exchange Format) en utilisant la commande : Design Save As DEF On sauve sur le nom counter.def (par exemple). Ce fichier va nous permettre d importer le design de notre compteur en Virtuoso Layout de Cadence afin de visualiser le circuit dans toute sa complexité (tous les niveaux de layout). 21
Préparation des fichiers pour la backannotation après placement & routage Nous allons préparer les fichiers nous permettant de voir le retard introduit par les interconnexions et les éléments parasites RC. Timing Extract RC Sélectionnez tout OK Timing Calculate Delay Donnez au fichier le nom conter.sdf!!!! Le fichier pour backannotation a été préparé. On quitte SoC Encounter : File Exit Importation du design sous Virtuoso Layout Lancez un nouveau shell (xterm). Créer un répertoire LAYOUT : mkdir LAYOUT cd LAYOUT Nous allons lancez l environnement AMS (installation du chemin d accès vers le design kit AMS360 nécessaire à la visualisation du layout avec la commande : > ams Ensuite on lance l outil de Cadence pour la conception des circuits intégrés ICFB (Integrated Circuit Front-End Back-End) avec la commande : ams_cds mode fb tech c35b4 22
On lance le manager de librairies : Tools Library Manager counterse et on sélection la librairie que nous avons crée avec Silicon Ensemble lors de l importation du fichier Verilog obtenu après synthèse (librairie counterse voir l exemple plus haut). A l intérieur de cette librairie on retrouve bien notre design du compteur avec une vue HDL. Tout d abord nous allons attacher cette librairie à la librairie technologique qui contient les layers physiques de la technologie utilisé et les propriétés de ces layers (par exemple : layer diffusion, implantation N, poly, etc). Dans la fenêtre icfb on choisi le menu : Tools Technology File Manager Attach Technology 23
counterse TECH_C35B4 On choisi pour le Design Library le nom de notre librairie où se trouve notre design counter counterse et on l attache à la technologie TECH_C35B4 qui correspond bien à notre libraire aalib7. On clique sur OK. Design Library counterse Technology Library TECH_C35B4 Ensuite on importe le fichier counter.def en utilisant le menu : File Import DEF en complétant tous les paramètres comme dans la figure ci-après. Ref. Library Names TECH_C35B4 24
CORELIB Dans la rubrique Library Name vous marquez le nom de votre librairie et dans la rubrique Cell Name le nom de votre cellule qui contient le design placé et routé du compteur (vous pouvez voir ce nom avec Library Manager). Vous activez la rubrique Ref. Library Names et vous écrivez CORELIB qui est bien notre librairie de design. Dans la rubrique DEF File Name vous écrivez le nom de votre fichier DEF, par exemple : counter.def. Cliquez sur OK. En ce moment dans le Library Manager vous remarquer que dans votre bibliothèque, à la cellule counter on a rajouté une vue «layout». Vous sélectionnez la vue layout et vous cliquez 2 fois sur (ou vous sélectionnez la vue layout et avec le bouton droit de la souris vous faites Open) : 25
Vous faites Floorplan Replace View et vous remplacer toutes (switch all) les vues «abstract» des cellules (vues utiliser par Silicon Ensemble) avec les vues «layout» (vues complètes de chaque cellule contient tous les niveaux de layout). Dans le menu Tools vous choisissez Layout. Pour voir votre circuit complet vous faites : Options Display et dans la rubrique Display Levels vous complétez : From : 0 To : 10 Ou vous appuyez sur la touche 1 qui est un «BindKey» pour la même opération. 26
Voici votre circuit : 27
et un zoom : Pour vérifier si le circuit obtenu respecte les règles de design on va faire un DRC (Design Rules Check) : Verify DRC Comme vous pouvez observez, il y a des erreurs dans le design. Pour éliminer ces erreurs on va faire tournez le DRC avec un autre fichier des règles : repare.rul (à la place de diva DRC.rul). Puis on refait la vérification du design en utilisant les fichiers de règles de dessin correspondant à notre technologie: diva DRC.rul et on remarque que cette fois ci il n y a plus des erreurs dans notre design. Donc, notre circuit est près à être envoyé en fabrication. 28
Backannotation après placement & routage Il faut prendre un nouveau shell dterm (xterm) On va se placer dans le répertoire VHDL/PR/SIMU_APRES_PR. Créer un lien vers les fichiers counter.vhd obtenu après synthèse, ainsi que pour le fichier test_counter.vhd et un lien vers le fichier counter.sdf obtenu antérieurement. ln s../../synthese/counter.vhd. ln s../../ SYNTHESE/test_counter.vhd... ln s../ counter.sdf. On lance l environnement IUS de Cadence : ldv et ensuite nclaunch & On charge les fichiers counter.vhd et test_counter.vhd et le fichier counter.sdf. Sélectionnez : counter.vhd Compile VHDL test_counter.vhd Compile VHDL counter.sdf Tools SDF Compiler Un fichier counter.sdf.x a été créé dans le répertoire SIMU_APRES_PR. Créer le fichier de commande counter.sdf_cmd ( t counter.sdf_cmd ) avec les lignes suivantes COMPILED_SDF_FILE= "counter.sdf.x", SCOPE = : écrivez le label d instanciation du composant ; Représente le point d entrée du SDF pour le composant à tester 29
Revenez en IUS 5.5 NCLAUNCH. Sélectionnez la l architecture du fichier de test et lancez l élaboration à travers le menu Tools Elaborator Cliquez sur la rubrique Advanced Options de la fenêtre Elaborate. Dans la nouvelle fenêtre choisissez Annotation Use SDF command file et écrivez l option suivante : counter.sdf_cmd Lancer Elaborate Design. Sélectionnez le fichier dans snapshot et lancer la simulation Simulate Design Regardez les courbes obtenues et remarquer le retard introduit par les interconnexions. Retard supplémentaire introduit par les interconnexions d environ 0.5 ns, pour cette sortie 30