Ce document ce découpe ainsi :
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.
VARIABLE1=contenu1 VARIABLE2=contenu2 export VARIABLE1 VARIABLE2 programmeIci, 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 programmeIci, 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
setenv VARIABLE1 contenu1 setenv VARIABLE2 contenu2 programmeCette 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.