Une remarque évidente nous vient à l'esprit quand on se penche sur le tutorial "addaccu": la procédure permettant d'arriver à la génération de l'ASIC est lourde et compliquée. C'est vrai, mais il faut pouvoir maîtriser chacune de ces étapes si on veut être à même de résoudre les problèmes.
Nous vous présentons maintenant un produit de notre cru qui est un module d'automatisation de tout ce qui peut l'être dans les étapes de la synthèse d'un ASIC à partir d'un seul fichier VHDL. Il fonctionne avec les fichiers de technologie 1.0µm. Pour les impatients, voilà ce qu'il faut pour être à même de procéder à la synthèse:Voyez impérativement les règles de programmation à respecter pour que tout fonctionne.
- Le module d'automatisation lui-même disponible ici : auto_mod.tgz
- Un fichier de description VHDL au format vbe. De l'aide est disponible par:
Donnez-lui le nom que vous voulez. Par exemple, pour addaccu, c'est : addaccu.vbe
- Notre exemple pour le diviseur de fréquences
- Le tutorial addaccu
- La commande : "man vbe" décrit le language intégralement
- Un fichier de description au format rin. L'aide est disponible de la même manière que précédemment. D'après le nom qu'on a donné au fichier VHDL, ce nom doit être : addaccu.rin
- Un fichier C de simulation poussée de la description. Idem qu'au dessus. La page de manuel de genpat décrit la syntaxe du fichier C. D'après le nom qu'on a donné au fichier VHDL, le nom du fichier c doit être : test_addaccu.c
Ensuite, procédez à la décompression du fichier "auto_mod.tgz" avec la commande suivante:gzip -cd auto_mod.tgz | tar xvf -Cela crée un fichier "Makefile" et un répertoire "perl" contenant 3 scripts Perl, tout ça dans le répertoire courant. Sur linux, il y a une manière de faire les choses plus simplement par:tar xvzf auto_mod.tgzIl y a une ligne se trouvant au début du Makefile qu'il vous faudra changer.Il s'agit de la variable CIBLE qui vous indiquera au reste du Makefile sur quels fichiers il doit travailler. On indiquera, par exemple : CIBLE=addaccu .NB:
Pour les intéressés, gzip est un programme qui compresse ou décompresse un fichier vers un autre. L'option d demande une décompression et l'option c demande que le résultat ne se fasse pas vers un fichier mais vers la sortie standard. Le pipe (|) redirige cette sortie standard vers l'entrée standard du programme qui suit. Ce programme(tar) permet de rassembler tous les fichiers qu'on lui indique en un seul qui les contient tous(sa taille est donc à peu près la somme de la taille de tous ces fichiers) et permet aussi l'opération inverse. Pour lui indiquer des options, on n'a pas besoin du caractère "-" comme pour gzip. L'option f demande que l'opération de tar ait comme flux d'entrée le fichier dont le nom suit. On remarque que ce nom est "-", ce qui signifie par convention que tar prend comme flux d'entrée son entrée standard (c'est-à-dire celui que lui a assigné le pipe: la sortie de gzip). L'option x demande à tar, à partir de cet unique flux, de retrouver et d'écrire dans le répertoire courant tous les fichiers contenus dans ce flux. L'option v permet d'afficher le nom de ces fichiers en question.
Sur linux, l'option z de tar permet d'appeler automatiquement gzip pendant l'extraction des fichiers.
Pour créer vous-même une archive, et cela peut être utile, entrez la ligne suivante:tar cf - liste_de_fichiers |gzip -9 > archive.tgzL'option c de tar permet de créer l'archive à partie de la liste de fichiers qu'on lui donne(avec des caractères jokers éventuels). La sortie de tar est traitée par gzip qui compresse cette sortie avec le niveau de compression maximum(avec l'option 9). Le tout est redirigé vers le fichier "archive.tgz". ET VOILA.
Un conseil, archivez ainsi la plupart du temps un seul répertoire(qui contiendra par exemple tout votre travail et peut contenir lui-même tous les fichiers et sous-répertoires que vous voulez). Ainsi, si vous vous trompez dans la décompression et que vous faites la décompression dans un mauvais répertoire, ce n'est pas 100 fichiers que vous aurez à rechercher manuellement dans tout ce repertoire, mais un seul repertoire à retrouver et supprimer. De plus, c'est une bonne habitude pour l'ordre.
Maintenant, il faut respecter le cycle suivant:
- Entrez : make testinitial . Cela lancera la procédure de test initial qui simulera votre fichier VHDL avec les directives que vous avez inscrites dans le fichier C de test.
- Si tout se passe bien et que vous êtes satisfait du résultat que vous présente "waview", lancez : make . Le fichier résultat sera par exemple "addaccu.cif" pour le tutorial addaccu.
- Nous aimerions vous dire que tout est terminé, mais il est fort probable que des erreurs puissent être survenues. Néanmoins, faîtes le test avec notre projet: Le diviseur de fréquences et le tutorial addaccu que nous avons modifé(faîtes attention à ces modifications et comparez avec les fichiers d'origines) .Vous décompresserez ces deux fichiers dans le répertoire de votre choix avec la méthode vue au-dessus. Cela créera un repertoire nommé diviseur ou addaccu selon le fichier que vous aurez téléchargé. Tout devrait se passer sans problèmes.
- Sachez aussique vous pouvez spécifiez à make de ne pas procéder à quelque test que ce soit en entrant : make TEST=non . Sachez aussi que cette possibilité à été implémentée dans le but unique de compiler rapidement un ASIC déjà compilé et testé avec succès. Sinon, c'est une très mauvaise idée.
- Il peut arriver que vous ayez l'impression(et même ça arrivera réellement) que des messages d'erreurs arrivent et repartent trop rapidement pour être lus. Le shell (sh et dérivés(bash) ou csh et dérivés(tcsh)), proposent tous les deux la solution suivante qui est la redirection de la sortie standard et de la sortie d'erreur(normalement tous les deux sont à l'écran) : make > fichier 2>&1 pour sh et make >& fichier pour csh. Vous avez les sorties dans le fichier qui est éditable. D'après la structure du Makefile, un test même s'étant mal déroulé, n'est pas refait quand on retape make. Il faut repartir à 0(ou cliquez sur la flèche en bas pour les détails) par: make clean . cette commande permet de supprimer tous les fichiers résultant du Makefile et ne laissera que les fichiers originaux.
- Si vous avez eu l'heureuse idée de placer votre projet dans un répertoire du même nom, tapez : make tgz et cela créera une archive compressée de votre répertoire qui aura pour nom le nom de votre projet suivi de ".tgz". Sinon, il vous faudra le faire à la main en suivant nos directives vues au-dessus.
Il est évident que vous ne pourrez pas régler tous les problèmes si vous ne maîtrisez pas les étapes de la génération d'un ASIC. Voyez notre tutorial sur addaccu à partir du SOMMAIRE. Lisez aussi les problèmes que l'on a rencontrés et comment on les a réglés.
Maintenant, si vous voulez savoir comment fonctionne le module d'automatisation, et vous en aurez peut-être besoin, cliquez ici --> .