Changes between Version 7 and Version 8 of ToolsCourseTp4


Ignore:
Timestamp:
May 7, 2007, 3:47:52 PM (17 years ago)
Author:
anne
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ToolsCourseTp4

    v7 v8  
    1111
    1212           Afin de profiter de cette régularité, on génère la liste de signaux sous forme d'opérateurs vectoriels (ou
    13 colonnes) via les macro-fonctions de l'outil Stratus.
     13 colonnes) via les macro-fonctions de l'outil Stratus.
    1414
    1515Cela 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...
     
    194194    Les répertoires, fichiers et logins devront être mentionnés dans le rapport ainsi que vos
    195195noms de binômes. N'oubliez pas de mettre les droits en lecture !
     196
     197
     198= 4 Annexe Le Makefile =
     199
     200=  Comment gérer les dépendances de tâches =
     201
     202
     203  La synthèse sous Alliance se décompose en plusieurs outils s'exécutant chronologiquement
     204sur un flux de données. Chaque outil possède ses propres options donnant
     205des résultats plus ou moins adaptés suivant l'utilisation que l'on veut faire du circuit.
     206Les dépendances de données dans le flux sont matérialisées dans la réalité par une
     207pendance de fichier. Le fichier Makefile exécuté à l'aide de la commande make permet
     208gérer ces dépendances. Différents exemples de fichiers seront fournis durant le TP.
     209TP n'étant pas un cours sur le Makefile, nous nous limiterons à expliquer l'usage qui
     210est fait dans les exemples fournis.
     211= 4.1 Principe de base : Les Règles =
     212Un Makefile est un fichier contenant une ou plusieurs règles traduisant les dépendances
     213entre les actions et les fichiers.
     214Voici une règle type Makefile :
     215cible1 : dépendance1 dépendance2 ....
     216#Rq: chaque commande doit être précédée d’une tabulation
     217commande_X
     218commande_Y
     219.
     220.
     221.
     222Les dépendances et cibles représentent, en général, des fichiers.
     223Seule la première régle (hormis les modèles cf. 9.0.2) du Makefile est examinée. Les
     224règles suivantes sont ignorées si elles ne sont pas impliquées par la première.
     225Si certaines dépendances d'une règle X sont elles-mêmes des règles dans le Makefile
     226alors ces dernières seront examinées avant la règle X appelante.
     227Pour chaque règle X examinée, si au moins une de ses dépendances est plus récente que
     228sa cible alors les commandes de la règle X seront exécutées. Remarque : les commandes
     229servent généralement à produire la cible (i.e un nouveau fichier).
     230Une cible peut ne pas représenter un fichier. Dans ce cas, les commandes de cette règle
     231seront toujours exécutées.
     232= 4.2 Règles de modèles =
     233Ces règles sont plus polyvalentes car vous pouvez spécifier des règles de dépendance
     234plus complexes. Une règle de modèle ressemble à une règle normale, sauf qu'un
     235symbole (%) apparaît dans le nom de la cible. Les dépendances emploient également
     236(%) pour indiquer la relation entre les noms de dépendance et le nom de la cible. La r
     237ègle de modèle suivante spécifie comment tous les fichiers vst sont formés à partir des
     238vbe.
     239
     240#exemple de règle pour la synthèse
     241%.vst : %.vbe
     242boog $*
     243= 4.3 Définitions de variables =
     244On peut définir des variables en n'importe quel endroit du fichier Makefile, mais
     245une écriture lisible nous amène à les définir en début de fichier.
     246#définitions de variables
     247MY_COPY = cp -r
     248MY_NUM = 42
     249MY_STRING = "hello"
     250Elles sont utilisables à n'importe quel endroit du Makefile. Elles doivent être précé-
     251dées du caractère $
     252#utilisation d’une variable dans une règle
     253copie:
     254${MY_COPY} digicode.vbe tmp/
     255= 4.4 Variables prédéfinies =
     256 $@ Nom complet de la cible.
     257$* Nom du fichier cible sans l'extension.
     258   $< Nom du premier fichier dépendant.
     259   $+ Noms de tous les fichiers dépendants avec des dépendances doubles répertori
     260ées dans leur ordre d'apparition.
     261   $^ Noms de tous les fichiers dépendants. Les doubles sont retirés.
     262   $ ? Noms de tous les fichiers dépendants plus récents que la cible.
     263   $% Nom de membre pour des cibles qui sont des archives (langage C). Si, par
     264exemple, la cible est libDisp.a(image.o), $% est image.o et $@ est libDisp.a.