Changes between Version 9 and Version 10 of ToolsCourseTp8


Ignore:
Timestamp:
Oct 7, 2007, 10:55:33 PM (17 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ToolsCourseTp8

    v9 v10  
    99= 1 Objectif  =
    1010
    11 Vous allez utiliser les outils de placement / routage automatique du flot Coriolis/Alliance,
     11Le but de ce TP est d'utiliser les outils de placement / routage automatique du flot Coriolis/Alliance,
    1212ainsi que tous les outils de vérification vus dans les TPs précédents, pour générer le
    1313dessin des masques du circuit AM2901.
     
    1616du circuit AM2901.
    1717
    18 On va maintenant utiliser le langage '''STRATUS''' pour définir des directives de placement.
     18On va maintenant utiliser le langage '''STRATUS''' pour introduire des directives de placement
     19dans les différents fichiers ''.py'' décrivant  la ''net-list''.
     20
    1921Il est par exemple possible d'exploiter la régularité des opérateurs du chemin de données
    2022pour imposer un placement en colonnes : tous les bits d'un même opérateur sont placés
     
    3436et les macro-cellules génériques de la bibliothèque '''DP_SXLIB'''.
    3537
    36 = 2 Environnement technologique =
     38= 2 Variables d'environnement =
     39
    3740Vous devez positionner les variables d'environnement suivantes :
    3841
     
    5861utile de les vérifier.
    5962
    60 D'une manière générale, les fichiers décrivant une netlist logique doivent porter le
     63D'une manière générale, les fichiers décrivant une ''net-list'' logique doivent porter le
    6164même nom que le fichier correspondant décrivant la vue physique.
    6265
    6366C'est à dire que le fichier am2901_dpt.vst (vue logique) doit correspondre au fichier am2901_dpt.ap
    64 (vue physique). Il en va de même pour le fichier am2901_core.
    65 
    66 = 2 Fonctions de placement fournies par STRATUS =
     67(vue physique). Il en va de même pour am2901_core.
     68
     69= 3 Fonctions de placement fournies par STRATUS =
    6770
    6871Pour définir les directives de placement
     
    7376 *  !DefAb(), !ResizeAb()
    7477
    75 Toutes ces fonctions doivent être utilisées dans la méthode Layout associée au bloc.
    76 Reprenons l'exemple du TP précédent, on donne le code suivant pour le fichier circuit.py :
     78Toutes ces fonctions doivent être utilisées dans la méthode ''Layout'' associée au bloc considéré.
     79A titre d'exemple, on donne le code suivant pour le fichier circuit.py :
    7780{{{
    7881#!/usr/bin/env python
    7982from stratus import *
    80 # definition de la cellule
     83# definition du bloc de nom "circuit"
    8184class circuit ( Model ):
    8285...
     86# on suppose que les instances i1, i2, i3 ont été créées
    8387  def Layout ( self ):
    84     Place ( self.instance_nand2_4bits, NOSYM, XY ( 0, 0 ) )
    85     PlaceRight ( self.instance_or2_4bits, NOSYM )
    86     PlaceRight ( self.instance_add2_4bits, NOSYM )
    87 }}}
    88 Ensuite pour le fichier test_circuit.py, il faut rajouter l'appel à la méthode Layout :
     88    Place ( self.i1, NOSYM, XY ( 0, 0 ) )
     89    PlaceRight ( self.i2, NOSYM )
     90    PlaceRight ( self.i3, NOSYM )
     91}}}
     92Ensuite pour générer le fichier circuit.ap, il faut rajouter l'appel à la méthode Layout
     93dans le fichier ''test_circuit.py'' :
    8994{{{
    9095#!/usr/bin/env python
    9196from stratus import *
    9297from circuit import circuit
    93 my_circuit = circuit ( "mon_circuit" ) # creation du circuit
     98
     99# creation du circuit
     100my_circuit = circuit ( "mon_circuit" )
     101
     102# creation de l’interface
    94103my_circuit.Interface() # creation de l’interface
    95 my_circuit.Netlist() # creation de la netlist
    96 my_circuit.Layout() # creation du layout
    97 my_circuit.View() # pour afficher le layout
    98 my_circuit.Save ( PHYSICAL ) # sauver les fichiers mon_circuit.vst et mon_circuit.ap
    99 }}}
    100 
    101 = 3 Placement explicite des opérateurs du chemin de données du circuit AM2901 =
     104
     105# creation de la vue structurelle (netlist)
     106my_circuit.Netlist()
     107
     108# creation de la vue physique (placement)
     109my_circuit.Layout()
     110
     111# pour afficher le layout
     112my_circuit.View()
     113
     114# sauver les fichiers mon_circuit.vst et mon_circuit.ap
     115my_circuit.Save ( PHYSICAL )
     116
     117}}}
     118
     119= 4 Placement explicite des opérateurs du chemin de données du circuit AM2901 =
    102120
    103121Reprenez le fichier amd2901_dpt.py du TP4. Pour l'instant, ce fichier ne comporte qu'une