Changes between Version 17 and Version 18 of ToolsCourseTp4


Ignore:
Timestamp:
May 10, 2007, 1:00:17 PM (17 years ago)
Author:
nipo
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ToolsCourseTp4

    v17 v18  
    66
    77
    8    Le chemin de données est formé de la logique régulière du circuit.
    9 
    10    Afin de profiter de cette régularité, on génère la liste de signaux sous forme d'opérateurs vectoriels (ou colonnes) via les macro-fonctions de l'outil Stratus.
    11 
    12    Cela permet d'économiser de la place en utilisant plusieurs fois le même matériel. Par exemple, le NOT d'un mux de n bits est instancié une seule fois pour ces n bits... 
     8Le chemin de données est formé de la logique régulière du circuit.
     9
     10Afin de profiter de cette régularité, on génère la liste de signaux sous forme d'opérateurs vectoriels (ou colonnes) via les macro-fonctions de l'outil Stratus.
     11
     12Cela permet d'économiser de la place en utilisant plusieurs fois le même matériel. Par exemple, le NOT d'un mux de n bits est instancié une seule fois pour ces n bits... 
    1313
    1414
     
    1919
    2020
    21   Considérons le circuit suivant :
     21Considérons le circuit suivant :
    2222
    2323Voici la structure du chemin de données correspondante :
     
    134134configuré pour Stratus.
    135135
    136  Consultez la doc au format html
     136Consultez la doc au format html
    137137"file :///asim/coriolis/share/doc/en/html/stratus/index.html" afin de vous renseigner sur les
    138138variables d'environnement à positionner.
     
    179179= 3 Rapport =
    180180
    181    Il s'agit simplement de décrire votre travail fait en TP.
    182 
    183  
    184 
    185 
    186 
    187     Quelles sont les deux manières de concevoir une netlist ? Quels avantages y a-t-il à
     181Il s'agit simplement de décrire votre travail fait en TP.
     182
     183Quelles sont les deux manières de concevoir une netlist ? Quels avantages y a-t-il à
    188184faire des colonnes d'opérateurs pour le data-path ?...
    189185
    190 
    191     Inutile de faire un roman. Soyez clairs et concis !
    192     Les répertoires, fichiers et logins devront être mentionnés dans le rapport ainsi que vos
     186Inutile de faire un roman. Soyez clairs et concis !
     187
     188Les répertoires, fichiers et logins devront être mentionnés dans le rapport ainsi que vos
    193189noms de binômes. N'oubliez pas de mettre les droits en lecture !
    194190
     
    196192= 4 Annexe Le Makefile =
    197193
    198 =  Comment gérer les dépendances de tâches =
    199 
    200 
    201   La synthèse sous Alliance se décompose en plusieurs outils s'exécutant chronologiquement
    202   sur un flux de données. Chaque outil possède ses propres options donnant
    203   des résultats plus ou moins adaptés suivant l'utilisation que l'on veut faire du circuit.
    204   Les dépendances de données dans le flux sont matérialisées dans la réalité par une
    205   pendance de fichier. Le fichier Makefile exécuté à l'aide de la commande make permet
    206   gérer ces dépendances. Différents exemples de fichiers seront fournis durant le TP.
    207  Ce TP n'étant pas un cours sur le Makefile, nous nous limiterons à expliquer l'usage qui
     194==  Comment gérer les dépendances de tâches ==
     195
     196
     197La synthèse sous Alliance se décompose en plusieurs outils s'exécutant chronologiquement
     198sur un flux de données. Chaque outil possède ses propres options donnant
     199des résultats plus ou moins adaptés suivant l'utilisation que l'on veut faire du circuit.
     200
     201Les dépendances de données dans le flux sont matérialisées dans la réalité par une
     202pendance de fichier. Le fichier Makefile exécuté à l'aide de la commande make permet
     203gérer ces dépendances. Différents exemples de fichiers seront fournis durant le TP.
     204
     205Ce TP n'étant pas un cours sur le Makefile, nous nous limiterons à expliquer l'usage qui
    208206est fait dans les exemples fournis.
    209207
    210 = 4.1 Principe de base : Les Règles =
    211   Un Makefile est un fichier contenant une ou plusieurs règles traduisant les dépendances
    212   entre les actions et les fichiers.
    213   Voici une règle type Makefile :
    214   cible1 : dépendance1 dépendance2 ....
    215 
    216   #Rq: chaque commande doit être précédée d’une tabulation
    217 
    218   commande_X
    219 
    220   commande_Y
    221 
    222 .
    223 .
    224 .
    225   Les dépendances et cibles représentent, en général, des fichiers.
    226   Seule la première régle  du Makefile est examinée. Les
    227   règles suivantes sont ignorées si elles ne sont pas impliquées par la première.
    228   Si certaines dépendances d'une règle X sont elles-mêmes des règles dans le Makefile
    229   alors ces dernières seront examinées avant la règle X appelante.
    230   Pour chaque règle X examinée, si au moins une de ses dépendances est plus récente que
    231   sa cible alors les commandes de la règle X seront exécutées. Remarque : les commandes
    232   servent généralement à produire la cible (i.e un nouveau fichier).
    233   Une cible peut ne pas représenter un fichier. Dans ce cas, les commandes de cette règle
    234   seront toujours exécutées.
    235 = 4.2 Règles de modèles =
    236   Ces règles sont plus polyvalentes car vous pouvez spécifier des règles de dépendance
    237   plus complexes. Une règle de modèle ressemble à une règle normale, sauf qu'un
    238   symbole (%) apparaît dans le nom de la cible. Les dépendances emploient également
    239   (%) pour indiquer la relation entre les noms de dépendance et le nom de la cible. La r
    240   ègle de modèle suivante spécifie comment tous les fichiers vst sont formés à partir des
    241   vbe.
    242 
     208== 4.1 Principe de base : Les Règles ==
     209
     210Un Makefile est un fichier contenant une ou plusieurs règles traduisant les dépendances
     211entre les actions et les fichiers.
     212
     213Voici une règle type Makefile :
     214{{{
     215#Rq: chaque commande doit être précédée d’une tabulation
     216cible1 : dépendance1 dépendance2 ....
     217    commande_X
     218    commande_Y
     219}}}
     220
     221Les dépendances et cibles représentent, en général, des fichiers.
     222Seule la première régle  du Makefile est examinée. Les
     223règles suivantes sont ignorées si elles ne sont pas impliquées par la première.
     224Si certaines dépendances d'une règle X sont elles-mêmes des règles dans le Makefile
     225alors ces dernières seront examinées avant la règle X appelante.
     226Pour chaque règle X examinée, si au moins une de ses dépendances est plus récente que
     227sa cible alors les commandes de la règle X seront exécutées. Remarque : les commandes
     228servent généralement à produire la cible (i.e un nouveau fichier).
     229Une cible peut ne pas représenter un fichier. Dans ce cas, les commandes de cette règle
     230seront toujours exécutées.
     231
     232== 4.2 Règles de modèles ==
     233
     234Ces règles sont plus polyvalentes car vous pouvez spécifier des règles de dépendance
     235plus complexes. Une règle de modèle ressemble à une règle normale, sauf qu'un
     236symbole (%) apparaît dans le nom de la cible. Les dépendances emploient également
     237(%) pour indiquer la relation entre les noms de dépendance et le nom de la cible. La
     238règle de modèle suivante spécifie comment tous les fichiers vst sont formés à partir des
     239vbe.
     240
     241{{{
    243242#exemple de règle pour la synthèse
    244 
    245243%.vst : %.vbe
    246 
    247 boog $*
    248 
    249 = 4.3 Définitions de variables =
    250   On peut définir des variables en n'importe quel endroit du fichier Makefile, mais
    251   une écriture lisible nous amène à les définir en début de fichier.
    252 
    253   #définitions de variables
    254 
    255   MY_COPY = cp -r
    256 
    257   MY_NUM = 42
    258 
    259   MY_STRING = "hello"
    260 
    261   Elles sont utilisables à n'importe quel endroit du Makefile. Elles doivent être précé-
    262   dées du caractère '''$'''
    263 
    264   #utilisation d’une variable dans une règle
    265 
    266   copie:
    267 
    268   ${MY_COPY} digicode.vbe tmp/
    269 
    270 = 4.4 Variables prédéfinies =
    271   * $@ Nom complet de la cible.
    272   * $* Nom du fichier cible sans l'extension.
    273   * $< Nom du premier fichier dépendant.
    274   * $+ Noms de tous les fichiers dépendants avec des dépendances doubles répertori
    275     ées dans leur ordre d'apparition.
    276   * $^ Noms de tous les fichiers dépendants. Les doubles sont retirés.
    277   * $ ? Noms de tous les fichiers dépendants plus récents que la cible.
    278   * $% Nom de membre pour des cibles qui sont des archives (langage C). Si, par
    279  = exemple =
    280  la cible est libDisp.a(image.o), $% est image.o et $@ est libDisp.a.
     244    boog $*
     245}}}
     246
     247== 4.3 Définitions de variables ==
     248
     249On peut définir des variables en n'importe quel endroit du fichier Makefile, mais
     250une écriture lisible nous amène à les définir en début de fichier.
     251
     252{{{
     253#définitions de variables
     254
     255MY_COPY = cp -r
     256MY_NUM = 42
     257MY_STRING = "hello"
     258
     259Elles sont utilisables à n'importe quel endroit du Makefile. Elles doivent être précé-
     260dées du caractère '''$'''
     261
     262#utilisation d’une variable dans une règle
     263
     264copie:
     265    ${MY_COPY} digicode.vbe tmp/
     266}}}
     267
     268
     269== 4.4 Variables prédéfinies ==
     270
     271 * $@ Nom complet de la cible.
     272 * $* Nom du fichier cible sans l'extension.
     273 * $< Nom du premier fichier dépendant.
     274 * $+ Noms de tous les fichiers dépendants avec des dépendances doubles répertoriées
     275   dans leur ordre d'apparition.
     276 * $^ Noms de tous les fichiers dépendants. Les doubles sont retirés.
     277 * $ ? Noms de tous les fichiers dépendants plus récents que la cible.
     278 * $% Nom de membre pour des cibles qui sont des archives (langage C). Si, par
     279
     280=== exemple ===
     281
     282La cible est libDisp.a(image.o), $% est image.o et $@ est libDisp.a.