Prérequis

L'utilisation d'Alliance nécessite quelques base de l'utilisation d'Unix sur lesquelles nous devons nous attarder un peu. On suppose quand même que le lecteur a une certaine connaissance de ce système.

Ce document ce découpe ainsi :

Les différents shells

Sous Linux, le shell le plus répandu (et le mieux à notre avis) est bash (Bourne-Again SHell de GNU), dérivé du sh standard (Bourne SHell). Un autre shell répandu est tcsh, dérivé de csh (C SHell). Il faut savoir au minimum que ces deux shells permettent de compléter un nom de fichier ou de variable d'environnement (voir plus loin) à l'aide de la touche tabulation, et qu'en cas d'ambiguité, on peut en avoir la liste avec une deuxième pression sur cette touche pour bash, ou de control+d pour tcsh.

Les exemples donnés par Paris VI dans les pages de manuel sont plutôt en csh, mais parfois en sh (tutorial du amd2301 par exemple).

Pour l'utilisation courante, c'est surtout la façon de gérer les variables d'environnement qui diffère. Nous essaierons de préciser les commandes des deux manières (bash et tcsh).

Les pages de manuel

Alliance comporte beaucoup de documentation avec les pages de manuel. Il faut savoir que les références à ces pages sont souvent suivi de nombre entre parenthèse qui indiquent la section de la page de manuel. Alliance contient des pages dans les section 1 (appel de programmes comme asimut, bop, genlib...), 3 (bibliothèques de fontions/macros C), et 5 (format de fichiers). Nous allons voir qu'il faut parfois préciser la section.

L'exemple suivant suppose qu'Alliance est déjà installé (voir notre documentation à ce sujet). Par exemple "pat(5)" qui est un format de fichier Alliance. On pourrait croire qu'après man pat, c'est cette page qui viens, mais c'est "pat(3)" qui fait aussi partie d'Alliance. Ce n'est pas le seul exemple, et dans un tel cas, il faut utiliser la commande "man 5 pat" (sous Linux) ou "man -s 5 pat" (avec le programme man de Sun). Cependant, ce cas de figure relève de l'exception, et habituellement, il ne faut pas préciser la section.

Nous en parlons plus loin, mais nous conseillons de regarder les pages de manuel vhdl(5) et vbe(5) .

Les fichiers PostScript

Les tutoriels et autres documentations d'Alliance sont fournies en PostScript. Sous Linux, on utilise le programme "gv" (version améliorée de ghostview) qui est un "front-end" de ghostscript qui permet de visualiser ce type de fichiers. La seule chose à dire c'est qu'il faut regarder les options : dans les documents constitués majoritairement de texte, l'antialiasing donne un confort visuel. Dans notre installation, nous mettons aussi des version pdf, mais elle sont bien moins bien, car c'est une conversion "bitmap".

Les variables d'environnement

Quand on travaille avec Alliance, c'est avec un système de variables d'environnement que l'on précise à chaque composante ce qu'elle doit faire. Alliance fournit un jeu de variables par défaut, qu'il faut changer pour certaines étapes de la conception. À partir des shells, on peut utiliser des variables d'environnement interne ou bien exportées. C'est les variables exportées qui nous intéressent. La manipulation est différente en sh et en csh, et il existe aussi une extension utile avec bash. Dans les exemples suivants, VARIABLE1 et VARIABLE2 sont des noms de variables d'environnement ; contenu1 et contenu2 sont des chaînes de caractères qui doivent être entre guillemet si elles contiennent des caractères spéciaux (comme des espaces par exemple) ; programme est un nom de programme qui pourra lire ces variables d'environnement.

Avec sh
En sh, on définit d'abord une(des) variable(s) d'environnement interne(s) que l'on exporte avec les commandes suivantes, sachant qu'il faut respecter l'absence d'espace avant et après le `=' :
 
     VARIABLE1=contenu1
     VARIABLE2=contenu2
     export VARIABLE1 VARIABLE2
     programme
Ici, après l'exécution du programme, les variables resterons. Il existe aussi une méthode "locale" au programme appelé, qui est très pratique (attention, tout est sur la même ligne) :
     VARIABLE1=contenu1 VARIABLE2=contenu2 programme
Ici, programme verra les variables comme il faut, mais elles ne seront pas changés dans les commandes suivantes du shell.

En bash, une variante de la première séquence existe. Elle est parfois plus pratique :

    export VARIABLE1=contenu1
    export VARIABLE2=contenu2
    programme

Avec csh
En csh, on utilise les commandes suivantes :
    setenv VARIABLE1 contenu1
    setenv VARIABLE2 contenu2
    programme
Cette séquence correspond à la première exposé pour sh.

Dans les deux shell, on peut afficher une variable d'environnement avec "echo $VARIABLE1" (où comme avec un nom de fichier, on peut taper le début puis tabulation avec bash et tcsh).

L'éditeur GNU Emacs

Sous Unix, il existe de nombreux éditeurs de texte. Un des plus utilisé est GNU Emacs. Il propose, entre autres un mode d'édition vhdl avec coloration, indentation, insertions automatiques, et bien d'autres choses. En fait, par défaut, il propose un peu trop d'automatismes, et il nécessite un peu de configuration. La configuration d'Emacs passe par un fichier ".emacs" (avec le point), en langage Emacs Lisp. Il se met dans le répertoire de connexion, et il faut redémarrer Emacs à chaque changement de ce fichier. Nous en proposons un : ici. (il fonctionne avec Emacs version 20.3, mais pas avec les versions précédentes : le mode vhdl n'y était pas auparavant). On conseille de vérifier s'il fonctionne bien en l'ouvrant dans emacs, et en vérifiant qu'il y a bien des couleurs. Une fois qu'Alliance sera installé, on conseille aussi d'ouvrir un fichier vhdl en vérifiant la même chose.

Certaines touches sont redéfinies, par exemple : control+l suivi d'un numéro de ligne demande d'aller à celle-ci, ce qui est pratique, par exemple, avec asimut, le simulateur vhdl.

Les habitués des raccourcis clavier et des sélections sous Windows pourront éventuellement rajouter (pc-selection-mode), mais c'est moins bien que les touches standard Emacs...

Vous pouvez lire le tutorial Emacs (menu Help), mais il est un peu vieux. Sinon, la page Info est très complète. On peut y accéder avec Emacs avec control+h suivi de i (ou dans le menu Help). Beaucoup de programme Unix utilisent les pages Info (de GNU) pour leur documentation.

Avec Emacs, il faut savoir que parfois, on vous décrit une fonction, mais elle ne correspond à aucun menu, et aucune touche rapide. Dans ce cas, on peut utiliser "M-x" (Échap suivit de x) suivi du nom de cette fonction que l'on peut compléter comme en shell avec tabulation. Par exemple, la fonction man permet de visualiser des pages de manuel (par défaut, on l'appelle avec "Échap x man". Par ailleurs on peut aussi l'associer à une touche rapide (voir les exemples du ".emacs" à ce sujet).

Les Makefiles

Le processus de fabrication d'un circuit avec Alliance s'effectue avec des transformations successives de fichiers vers d'autres. Pour éviter de taper toutes les commandes, et pour éviter de refaire tout ce qui est déjà fait, on utilise un fichier "Makefile". On crée un Makefile, et ensuite, on tape make éventuellement suivi de la "cible".

Un "Makefile" peut être très évolué, mais nous en donnons ici les bases, et nous en fournissons un "générique" pour la synthèse vhdl avec Alliance (il ne nécessite que de petites modifications pour fonctionner avec d'autres circuits).

Tous d'abord, dans un fichier Makefile, on peut mettre des commentaires avec le caractère #. Les variables sont assignées avec "VARIABLE=contenu", et on peut les utiliser dans la suite du Makefile avec "$(VARIABLE)". Ensuite, on place les "cibles" suivies de ":", puis des dépendances (quels fichiers sont nécessaires à l'obtention de "cible"). Ensuite, on va à la ligne, et on met une tabulation (et pas d'espaces) suivie de la commande qui permet de "valider" cible. Cette commande peut être une suite d'instructions shell séparées par des ";", et en mettant un anti-slash ("\") si l'on veut aller à la ligne. La cible effectuée par défaut est la première que l'on nome générallement "all". On met donc toutes les cibles "finales" après "all:" comme première cible. Une autre convention est que la cible "clean" enlève généralement toutes les étapes intermédiaires (et parfois aussi tout ce qui est produit). Le plus simple est de voir notre exemple pour avoir un modèle.

Sommaire

 



Alliance Web Site © 1997, 2002 ASIM/LIP6/UPMC, page maintained by Czo [Olivier Sirol] , last updated on 26 May 2000.