lm02.txt
cr par Yann Guidon, mer nov 21 23:48:28 GMT 2001
version dim nov 25 03:38:13 GMT 2001


titre :
Dvelopper en VHDL sous Linux

chapeau :
Il n'existe pas encore d'quivalent  GCC pour la conception des circuits
numriques en VHDL'93. Bien que les outils professionels soient actuellement
ports sous GNU/Linux, leur prix et les contraintes des licences
propritaires ne permettent pas leur utilisation dans un projet
d'"Electronique Libre". Nous allons prsenter les alternatives actuellement
disponibles sur notre linuxette prfree (Vanilla VHDL et Simili)
et illustrer leur utilisation par une unit d'excution du F-CPU.


0 Introduction

Aprs plusieurs annes de pression des "utilisateurs professionels",
l'ensemble de dveloppement intgr GNU/Linux a eu raison de la politique
"Windows NT partout" pour les stations de travail et les serveurs ddis
 la CAO lectronique. Mais le Logiciel Libre n'a pas gagn pour autant :
Windows reste souvent la plateforme privilgie pour les petits projets
(puisqu'il est prinstall sur tous les PC) alors que les plateformes
propritaires de SUN et HP sont indtronables ds que les PC ont atteint
leurs limites. Quant aux logiciels d'EDA ("Electronic Design Automation",
terme amricain dsignant les outils de CAO lectronique), en dehors de
quelques logiciels issus du monde universitaire, rares sont ceux
distribus sous GPL.

Malgr les efforts de nombreux volontaires, ds le dbut des annes 80
(mergence de cette industrie), il n'existe pas encore de "Linux"
de l'EDA. Nous allons voir comment concevoir tout de mme des
circuits numriques  l'aide de logiciels gratuits disponibles sous GNU/Linux.
Cependant, le manque de logiciels libres ou mme gratuits est encore
plus flagrant dans le domaine de la vrification, de la synthse
ou de l'extraction temporelle (tapes ncessaires  la
conception d'un circuit intgr) : la mthodologie de conception
doit donc tre encore plus rigoureuse que dans l'industrie,
de nombreuses tapes devant tre effectues le plus en amont possible.


1 VHDL et le projet F-CPU

Parmi les projets ayant besoin d'outils d'EDA libres, le F-CPU est
un des plus actifs et des plus dpendants des Logiciels Libres.
Un des objectifs principaux de ce projet est de permettre  quiconque
de participer  son dveloppement, sans dpendance technique ou envers
un constructeur. Les contributeurs doivent pouvoir dvelopper
en libert afin que le projet puisse rester libre. Les deux premiers
lments indispensables sont Internet et la plateforme GNU/Linux
(disposer d'un ordinateur et savoir s'en servir restant bien sr indispensable).
Trouver les outils a t le plus difficile pour les raisons voques
en introduction. Aprs une campagne d'essais de nombreux outils, nous disposons
aujourd'hui d'un cadre de dveloppement sans problme de licence, suffisant
pour que les sources soient portables sur tous les environnements respectant
le standard VHDL. 

 a)  propos du F-CPU

Le F-CPU est un coeur de microprocesseur RISC 64 bits SIMD "superpipelin",
dvelopp en langage VHDL'93 par une commaut de passionns en majorit
europens. Ce projet a commenc en aot 1998 et se distinguait au dpart par
ses objectifs compltement utopiques. Aujourd'hui, avec l'abandon
de la famille ALPHA (dont F-CPU hrite certains concepts), il
ne reste plus que les processeurs IA64, POWER ou SPARC pour les
applications 64 bits industrielles. F-CPU apparat comme la
seule alternative libre actuelle. Cependant F-CPU est encore loin de
pouvoir fonctionner, en particulier  cause du manque de temps des
contributeurs (tudiants, professionels, amateurs)
et d'outils adequat. A dfaut de dboucher sur un vritable
"processeur libre commercial", les efforts des contributeurs ont toutefois
permis de crer une nouvelle famille de processeurs, de nouvelles
mthodes de travail et de constituer une communaut d'enthousiastes.

 b)  propos de VHDL

VHDL est un langage de description "de haut niveau" du matriel,
trs puissant et parfois droutant car il permet de nombreux styles
de description simultans : hirarchique (par l'instanciation
et la connexion de composants), comportemental (en utilisant
des oprateurs et un codage similaire un HLL traditionnel) ou
RTL ("Register Transfer Level", avec la description explicite
des oprations boolennes et des registres). Il est utilis
pour le F-CPU car il est le plus utilis en Europe.
Nous utilisons dans une certaine mesure la rvision "93" du langage,
qui allge certaines parties du code source et dissipe certaines
ambiguits par rapport  la norme de 1987.

L'apprentissage du langage VHDL est peu ais car il est directement driv
du langage ADA, un langage fortement typ.
Les notions de procdures, de parties concurrentes ou squentielles, ou la
syntaxe peuvent rebuter les dbutants. Toutefois, en pratique,
cette complexit sera rduite pour les raisons suivantes :

 - Les "synthtiseurs" (outils qui transforment le VHDL en
"netlist" optimises) ne "comprennent" qu'un ensemble spcifique
du langage, ce qui rduit la complexit (syntaxique et smantique)
des sources du coeur. Ce dernier est cod principalement en style
"RTL" alors que les bancs de test de chaque unit (qui ne sont pas
implants dans le circuit) utilisent le style "haut niveau" pour
simplifier le codage des vecteurs de test. De plus, les sources
devant tre utilisables dans n'importe quelle chaine d'outils,
les extensions propritaires ne sont donc pas supportes.

 - VHDL permet de couvrir
les tapes de spcification, de synthse et de vrification/test
avec un seul langage, donc en rutilisant la plupart des fichiers
pour toutes les tapes de la conception. Il n'y a besoin que
d'un seul langage pour tous les fichiers,  l'exception
des scripts en langage shell qui permettent d'automatiser
la compilation.

 - Une bonne mthodologie de conception spare les diffrentes
difficults afin de ne traiter qu'un problme  la fois.
F-CPU est conu de manire trs modulaire et sur plusieurs
niveaux, il permet  chacun de s'exercer et de participer
selon ses comptences.

Toutefois, la puissance de VHDL peut tourner la tte des
dbutants qui dcouvrent de nouvelles fonctionalits ou des
concepts sduisants au dtour d'une page d'un manuel
ouvert pour rsoudre un problme. Dans d'autres cas, il est
ncessaire de recourir  certaines formes complexes pour rsoudre
des problmes lis aux limites du langage. Ces circonstances
sont toujours expliques dans les commentaires du code source.

VHDL tant driv d'ADA, lui-mme driv de PASCAL, les sources
sont assez lisibles et peu condenss, contrairement  des programmes
en C ou en shell. Le plus gros effort sera donc fourni dans la
"smantique" du source, plus particulirement lors du choix
d'une forme de codage (ou d'une autre) en fonction de ce que
le programmeur dsire et de la fonction du code (selon que le
source est destin  la synthse ou la simulation comportementale
par exemple).

Le but de cet article n'est pas de donner des leons de VHDL
(de nombreux livres et sites web existent pour cela) mais 
de permettre aux dbutants de lever les premires difficults pratiques
du VHDL sous Linux et de dcouvrir les tapes initiales de la conception
d'un circuit intgr. Nous esprons que cela peut susciter l'intrt
de futurs dbutants et les motivera lors de l'apprentissage de VHDL.


2 Mthodologie de dveloppement en VHDL

 a) Prsentation de l'exemple

<illustration : rop2.eps>

Pour illustrer l'utilisation des outils suivants, nous allons
implmenter une partie de l'unit logique du F-CPU, appele "ROP2".
Elle permet d'effectuer toutes les oprations boolennes  2 entres,
leur combinaison sur 8 bits par AND ou OR, ou la slection d'un bit parmi
deux en fonction d'un troisime. C'est certainement la partie la plus
simple et rgulire du F-CPU.
Nous allons nous concentrer sur la partie oprative de l'unit, car
elle ncessite aussi un tage de pipeline pour amplifier et dcoder
certains signaux de contrle (voir la moiti infrieure du schma).

Nous allons aussi nous limiter  la partie "combinatoire" du circuit,
les registres de pipeline sont implments plus haut dans la hirarchie
des fichiers afin d'uniformiser la stratgie de conception des registres
(chaque contributeur pouvant dcrire les registres de manire diffrente,
le code pourrait ensuite devenir plus difficile  maintenir). De plus, lors
du test de l'unit, il n'est pas ncessaire de prendre en compte
le dlai d'un cycle induit par les registres.

Il nous reste dans le fichier source une description des oprations
boolennes effectues par l'tage de pipeline. Les rgles de conception
du F-CPU prcisent que le chemin le plus long entre deux registres ne
doit pas traverser plus de 6 portes logiques : l'unit ROP2 est la plus
simple et respecte ce critre permettant de rduire la complexit
des tages. Grce  cette rgle, on vite les mauvaises
surprises lors de l'extraction des caractristiques du circuit pour
dterminer sa frquence de fonctionnement. Pour donner un ordre de
grandeur, la "granularit" de tous les tages du coeur F-CPU est
proche de celle du pipeline entier du Pentium 4 dans la partie
cadence localement  frquence double. Un coeur F-CPU peut donc
atteindre des performances "honnorables" en utilisant des technologies
lentes (FPGA ou CMOS "conomique").

<source : rop2_unit.vhdl>


 b) workflow et fichiers sources

Le premier point crucial concernant l'architecture des fichiers sources
du F-CPU est que le coeur du processeur est configurable par l'utilisateur
(pour tous les paramtres qui peuvent l'tre). En plus des fichiers sources
du coeur, un grand nombre de fichiers est destin  permettre la reconfiguration
des paramtres par l'utilisateur. Les sources VHDL font tous rfrence  au moins
un "package VHDL" (sorte de librairie
dfinie par l'utilisateur, un peu comme un fichier .h pour le C) pour dfinir
les constantes. Ce sont les choses qui changent les plus souvent et cela vite
de coder "en dur" les opcodes ou les flags d'instructions par exemple, mais
avec une spcificit supplmentaire par rapport  un langage traditionnel :
on peut tre tent d'optimiser les constantes par des quations boolennes
et il ne faut pas effectuer cela en amont de la synthse.

Les "packages" communs sont gnrs par des scripts qui utilisent le
macroprocesseur "m4" pour mettre  jour les fichiers communs .vhdl, .h ou
Verilog, si une version est crite dans ces langages. De cette manire,
les diffrentes versions du coeur restent dpendantes d'un seul fichier
texte contenant les paramtres choisis par l'utilisateur
(units  implmenter, tailles des bus, ...). Pour notre exemple,
nous utiliserons une version modifie  la main du package principal.

Le deuxime point crucial dans la conception d'un circuit numrique
en VHDL est que chaque entit, unit, ou partie active doit tre accompagne
d'un autre fichier VHDL pour en effectuer le test. Une fois que toutes
les units sont assembles, il est trop tard pour comprendre d'o vient
le "bug" qui ne manque jamais de se produire. Cela n'est pas une habitude
courante dans le monde logiciel, mais c'est justifi car une erreur
de conception peut coter trs cher en lectronique. Dans l'industrie,
la vrification des circuits peut prendre 70% des ressources d'un
projet. L'utilisation anticipe et systmatique d'un "banc de test"
("testbench" en anglais) permet de circonscrire les erreurs et d'illustrer
l'utilisation de l'unit si elle est rutilise dans un autre projet.
Voil une bonne habitude  utiliser aussi en C !

Ensuite, la procdure de compilation et de simulation varie peu
selon les outils, en ligne de commande ou non. Comme pour un autre
langage de programmation, il faut d'abord compiler
les packages de base et remonter la hierarchie des dpendances jusqu'au(x)
fichier(s). Le dernier fichier est le banc de test qui instancie
l'unit  tester. La simulation va donc vrifier que l'unit
fonctionne comme prvu, d'abord en instanciant toutes les units
ncessaires et en revrifiant que toutes les rgles smantiques
sont respectes (lors de la phase d'"laboration"), puis en simulant
le comportement de chaque porte.


<illustration : testbench.eps>


J'allais oublier le point le plus crucial : la documentation !
Les commentaires sont parfois plus longs que le code dans les
fichiers sources afin de capturer chaque intention du codeur.
Le projet F-CPU a eu la chance de commencer par l'criture
de la documentation (contrairement  de nombreux projets o
les codeurs ne songent  documenter qu'une fois le code
crit). A tel point qu' un moment, F-CPU n'existait plus
que par la documentation, mais la situation s'inverse actuellement.


3 Outils libres

La ressource la plus prcieuse dans le monde des "lectroniciens
libres" est le site de Graham Seaman : "OpenCollector",
hberg par le serveur seul.org au MIT.
Ce mot anglais dsigne la polarisation en "collecteur ouvert"
d'un transistor mais joue aussi sur le sens d'un "collectionneur"
de "ressources ouvertes". Ce site indpendant est principalement
une base de donnes listant les outils et les projets lis
 l'lectronique numrique. Il contient aussi un forum de
nouvelles et nourrit des discussions sur la problmatique
(toujours irrsolue) des licences : il n'existe pas d'quivalent
possible  la GPL pour les circuits numriques.

Parmi les outils utilisables ou suffisamment avancs (un grand
nombre de projets est encore au stade de l'ide ou inutilisable
seul), nous avons valu les suivants (dont la description et l'URL
se trouve  http://www.opencollector.org) :

 * Electric Editor : cet outil fait maintenant partie du projet GNU
   et propose une interface "tout en un" intressante pour dvelopper
   de petits circuits CMOS avec les rgles de dessin MOSIS.
   Cependant il ne permet pas d'utiliser des fichiers VHDL qu'il
   n'a pas gnr lui-mme et sa compilation a t trs difficile
   lorsque j'ai essay de l'installer  partir des sources.

 * PICA est un petit outil universitaire en ligne de commande mais
   ses sources ne compilent plus avec les outils GNU actuels. Dommage.

 * FreeHDL a eu un dbut prometteur mais est actuellement arrt,
   dommage encore une fois. La compilation des sources m'aura au moins appris
    crer un fichier de swap car les fichiers temporaires rclaments
   environ 256MO de RAM. Si le front-end VHDL semble fonctionner,
   le gnrateur de code est encore inutilisable. Il faut aussi noter
   que FreeHDL transforme du VHDL en code excutable en passant par une
   forme intermdiaire interne (FIRE/AIRE) et n'utilise donc pas un
   logiciel de simulation spar. Les fichiers gnrs dclenchant des SIGSEGV
   suivis de cores giganstesques.

 * Alliance est une chaine d'outils presque complte pour la
   cration de masques de circuits intgrs. Dans la srie "dommage",
   il n'est pas compatible (interchangeable) directement avec d'autres
   outils (encore moins que Electric Editor) et il
   ncessite de nombreux fichiers aux formats exotiques et internes.
   J'tudie actuellement dans le dpartement ASIME de l'Universit Paris 6,
   o ces outils sont conus depuis dix ans.

Dans la srie des outils d'EDA sous GPL, j'en oublie certainement plusieurs,
en particulier j'attends que Savant 2 se stabilise. Avec beaucoup d'efforts,
il serait peut-tre possible d'utiliser les meilleures parties de chacun de
ces projets mais cela reprsente un effort tel qu'il sort du cadre du projet
F-CPU.

D'autres outils sont disponibles "gratuitement" (avec une licence plus
ou moins restrictive). D'abord, les "versions d'valuation" d'outils
commerciaux, aux possibilits limites soit dans le temps ou en capacit.
Il n'est pas question de les utiliser pour le F-CPU car ils impliquent
 la fois une dpendance envers la "technologie" du fournisseur
et une limitation des sources.

Certains vendeurs de FPGA proposent aussi gratuitement des outils
professionnels qui ont t modifis pour un usage particulier.
Bien que leur utilisation soit possible, elle est dconseille
pour les mmes raisons. De plus les rsultats pourraient varier d'un
vendeur  l'autre, par exemple pour l'valuation de la frquence
ou de la consommation.

Nous allons voir maintenant deux outils "gratuits" sous Linux, disponibles
uniquement sous forme binaire. Leur licence est compatible avec
les contraintes du dveloppement de sources sous GPL et leur utilisation
est suffisamment aise pour que les dbutants ne soient pas trop effrays
lors des premiers contacts.

L'utilisation de ces outils n'est pas exclusive, au contraire : leur
utilisation simultane garantit que les sources compatibles avec les
deux outils sont suffisamment portables. Les subtilits du
langage VHDL peuvent tre interprtes lgrement diffremment d'un
outil  l'autre et les sources doivent tre compils et simuls avec
tous les logiciels disponibles, pour vrifier que nous n'crivons pas
de code "ambigu".


4 Vanilla VHDL

Ce petit outil a t dvelopp pour des besoins ducatifs puis commercialis
par Vanilla CAD Tools Inc. avant de devenir un quasi-freeware sous Linux
en 1998. Ce logiciel peut tre charg 
http://www.freehdl.seul.org/vvhdlt_1.tgz (environ 300KO).
L'archive de distribution contient les excutables pour Linux/x86 et
les "librairies" IEEE de base. Les fonctionalits sont un peu limites,
peu d'extensions VHDL'93 sont supportes, mais elles sont suffisantes pour
concevoir le coeur du F-CPU.

Les excutables existent en 2 versions : vv87 (une sorte de shell) est compil avec
la libc5 en statique, les autres excutables ncessitent la librairie libc5
en dynamique. Cela peut poser des petits problmes sur Debian par exemple,
o il faudra penser  installer le package de compatibilit. C'est la seule
contrainte d'installation connue et si elle n'est pas rsolue, vv87 permet
encore d'accder  toutes les fonctions disponibles.

L'installation comporte les tapes suivantes :

1) charger le fichier de distribution  l'adresse indique plus haut
2) crer un rpertoire pour y dcomprimer le contenu de l'archive, par exemple dans ~/vanilla .
3) mettre  jour le .bashrc avec "export PATH=$PATH:~/vanilla"
4) vrifier que les fichiers suivants s'excutent correctement : mkvlib, va87, vs87 et vv87
   (on peut renommer vanman.ps en Vanman.ps si l'autocompltion de "va" vous gne)
5) (optionnel) installer la librairie de compatibilit libc5 si le message suivant apparat :
    "can't load library 'libc.so.5'"

Si les excutables lis dynamiquement ne peuvent pas fonctionner, il est possible
d'excuter la fonction correspondante en passant par vv87 et en dtournant stdin :
    $> vv87 < echo "ma commande"
Les commandes peuvent tre groupes dans un fichier et envoyes de la mme manire :
    $> vv87 < commandes.script
Les autres excutables sont des sortes de "wrappers" de vv87 que l'on peut appeler
directement de la ligne de commande ou par un script. vv87 est un "shell interactif" 
qui est plus destin au dveloppement.

Comme d'autres distributions, Vanilla propose un exemple d'utilisation, dcrit
dans le manuel au format Postscript (vanman.ps) et accompagn du source de l'exemple
dans le fichier mux.v. Un autre exemple simple en anglais peut tre trouv en ligne 
 http://www.dickinson.edu/~braught/courses/cs251f01/classes/class08.html
(liens vers 4 pages html avec des exemples et des fichiers VHDL d'accompagnement).
Nous allons nous intresser au F-CPU.

Pour compiler les sources VHDL, les oprations suivantes doivent tre excutes :
 1) Se placer dans le rpertoire contenant les sources  compiler. $PATH doit
    avoir t mis  jour (sinon : modifier le chemin d'accs aux fichiers)
 2) Crer un "rpertoire de travail" pour Vanilla, qui va contenir les fichiers
    compils, avec la commande
     $> mkvlib work
 3) Compiler les sources :
     $> va87 -x f-cpu_config.vhdl rop2_unit.vhdl
    L'option -x active les quelques extensions VHDL'93 disponible.
    Si mkvlib n'a pas t appel, va87 se plaindra d'une librairie introuvable.
 4) Simuler le circuit :
     $> vs87 work.eu_rop2
    Le programme entre en mode interactif. La commande "run" lance la simulation
    et "quit" termine le programme. Pour vrifier si le programme est correct, lancer
     $> echo run | vs87 work.eu_rop2

Vanilla est utilis autant que Simili pour le projet F-CPU. Son minimalisme
restreint certains choix de codage mais il ncessite peu de ressources et
s'installe assez facilement. La difficult vient principalement du fait
que deux modes d'utilisation existent, selon la configuration de l'installation.
Une configuration standard  base de RedHat 7.1 contient les librairies
ncessaires mais dans le doute, les scripts de compilation du F-CPU savent
reconnaitre si l'outil fonctionne statiquement pour lui envoyer les bonnes commandes.

La syntaxe supporte par Vanilla VHDL est un peu limite, ce qui signifie aussi
que les sources dvelopps avec Vanilla seront compris par la majorit des
outils VHDL. La petite documentation fournie dans la distribution liste
les fonctionalits disponibles. Certaines sont implmentes de manire
simpliste alors que d'autres sont absentes. Les limites embarassantes
identifies sont (liste non exhaustive) :

 - Les fonctions de type "impure" ne sont pas supportes (il faut donc
   pouvoir viter les cas o cela est ncessaire).

 - Il n'est pas possible d'initialiser un signal avec une fonction
   ayant comme argument ce mme signal. Par exemple, Simili comprend :
        signal a : std_ulogic_vector(7 downto 0) := init(a);
   o init() est une fonction qui prend en entre un std_ulogic_vector.
   Ce paramtre est ncessaire pour dterminer la taille du vecteur
    renvoyer, afin de rendre init() indpendant de la taille du vecteur.
   Par exemple, la fonction rand() fonctionne de cette manire afin
   d'initialiser le coeur dans un tat alatoire pour vrifier sa stabilit.
   La solution est d'utiliser une variable ou un sous-type intermdiaire.

 - Les "shared variable" ne sont pas autorises  l'intrieur d'un
   package. Vanilla ne peut donc pas partager des variables globales
   entre des fonctions ou procdures,  l'exception des fichiers (FILE).
   Les variables doivent tre dclares  l'intrieur des procdures
   mais elles ne peuvent pas communiquer. Simili le permet.

Pour conclure, Vanilla VHDL est un outil assez facile d'accs, minimaliste
mais qui permet de faire un minimum de choses, en particulier de concevoir
le coeur du F-CPU en VHDL "RTL". En lisant la documentation fournie, la prise
en main est rapide. J'ai eu surtout du mal lorsque j'ai install l'outil
sous Debian 2.2 (principalement pour comprendre comment fonctionnent les
librairies avec cette distribution) mais la RedHat 7.1 n'a pos aucun souci.
Au bout de quelques jours, il est possible de concevoir des circuits plus
compliqus et d'tudier VHDL plus en profondeur.


5 Simili

Simili est aussi un couple compilateur/simulateur utilisable  la manire
de Vanilla VHDL (sans la fonction de shell). Il est un peu plus gros,
plus puissant et pointilleux sur le respect des spcification VHDL.
C'est aussi un commercial gratuit mais indpendant des constructeurs.
Son concepteur, Mohammed Haneef, est dynamique et comptent.
En fait, il n'a plus qu'un seul dfaut : ses sources ne sont pas
disponibles et il n'est pas distribu sous GPL. En effet, la bonne nouvelle
est que le rcent Simili 2 fonctionne dornavant "nativement" sous Linux !

Quelques autres caractristiques de base :
 - simple  utiliser (2 commandes  retenir)
 - les outils en ligne de commande sont en "freeware"
 - rapide et conome en RAM
 - complet (du moins, plus que ncessaire pour le F-CPU)

Pour la mthodologie, Simili repose entirement sur des testbenches utilisant
les quelques fonctions d'entre/sortie orientes caractre de VHDL. Il n'y a pas
de commande de pas  pas dans le simulateur, le banc de test doit donc
tre prvu pour tous les cas de figure, ce qui parfois le rend plus complexe.
Toutefois cette mthode est saine car elle est entirement portable et
oblige  travailler srieusement sur les tests. De plus, Simili est maintenant
capable d'crire ou de lire des fichiers en mode binaire comme le fait Vanilla VHDL.

Simili 2 fonctionne avec RedHat 7.1 et Mandrake 8.0. La page de chargement
contient des informations  jour dtaillant les librairies ncessaires
si elles sont absentes. Seules les plateformes Linux/x86 et Windows sont
suppportes. Une page du site web de SymphonyEDA est ddie aux outils
gratuits qui ont t dvelopps par des tierces personnes autour de Simili.

Sonata est une interface graphique en Tcl/tk qui vient d'apparatre dans Simili
mais la vraie bonne nouvelle est qu'il n'est plus ncessaire de configurer wine !
Les versions prcdentes tant des applications Win32 en ligne de commande,
l'excution des programmes tait pnalise par le temps de configuration
de wine, ce qui obligeait, pour perdre un minimum de temps,  mettre un maximum
de noms de fichiers en paramtre du compilateur.

L'auteur de Simili a permis aux contributeurs F-CPU d'essayer la
nouvelle version avant sa sortie officielle. Le portage de ce
logiciel sous GNU/Linux a parat-il t assez difficile
mais le rsultat est  la mesure de l'attente.
L'installation et l'utilisation sont beaucoup plus faciles qu'au temps
o il fallait jongler avec les fichiers de configuration et les limites
imposes par les chemins de fichiers au format DOS. Une grande partie
du HOWTO que j'ai crit  ce sujet est donc caduc. On remarque cependant
l'apparition d'un systme de cls (le systme de la socit GlobeTrotter,
FlexLM, est utilis par la plupart des socits d'EDA) qui ncessite
une carte Ethernet si Sonata est utilis.

Simili supporte presque toutes les spcifications de VHDL'93 et 87,
sauf celles spcifies dans la documentation incluse dans la distribution
(Doc/vhdl93_readme.html). D'un autre ct, toutes les extensions ne sont
pas utiles si Vanilla VHDL ne les accepte pas.

L'installation se rsume aujourd'hui aux tapes suivantes :

1) charger l'archive  partir du site web de Simili :
    http://www.symphonyeda.com/proddownloads.htm
   Elle pse un plus de 7MO, soit 5MO de plus que la
   version Win32 prcdente.
2) extraire les fichiers dans un rpertoire temporaire.
3) excuter le script install.sh et suivre les instructions.
4) install.sh demandera le rpertoire d'installation,
   prvoir un endroit auquel l'utilisateur pourra avoir accs
   (pas besoin de droits root).
5) mettre  jour le .cshrc ou bashrc avec les paramtres
   indiqus  la fin de la courte procdure.
6) Le rpertoire temporaire peut tre effac.

En comparaison, la procdure d'installation tait dix fois plus longue
en utilisant wine et Simili15b17. Les scripts de compilation du F-CPU
doivent tre modifis mais ce n'est que du nettoyage.

Lors de la premire excution de Sonata, un assistant
d'inscription crera une cl temporaire. Cette tape
d'enregistrement n'est pas ncessaire et est plus complexe
car elle requiert  la fois un accs  Internet (pour gnrer la cl
en contactant le site web) et une carte Ethernet (pour verrouiller
la cl au poste). Je n'aborderai pas cette partie du logiciel
puisque les outils en ligne de commande suffisent.

L'utilisation est aussi simple, toujours en deux passes, mais
le rpertoire de travail est cr automatiquement, contrairement
 Vanilla VHDL.

 1) Compilation :
  $> vhdlp f-cpu_config.vhdl rop2_unit.vhdl
  (un rpertoire nomm work.sym sera cr)
 2) Simulation :
  $> vhdle eu_rop2

Si on chappe au problme des librairies manquantes, peut-on
faire encore plus simple ?

6 Conclusion et remerciements

GNU/Linux, plateforme des "hackers", est aussi adapt  la conception
de circuits lectroniques grce  sa robustesse, sa capacit de
scritpage et sa compatibilit avec les UNIX propritaires plus chers.
La majorit des vendeurs s'appuient sur la distribution RedHat,
actuellement en version 7.1. Un "Linux from scratch" ncessitera
donc des efforts de mise  niveau des librairies. Ces efforts
peuvent varier fortement d'une distribution  l'autre.

Aprs de nombreux efforts, la premire tape de la conception
de circuits numriques est enfin possible sous Linux pour les
dveloppeurs "Open Source". Avec une mthodologie adapte,
les quelques outils disponibles permettent de concevoir des
sources en VHDL portables et de qualit tout en conservant
les habitude du travail "ouvert". Les "freeware" permettent
d'attendre que les Logiciels Libres soient reconnus au niveau industriel,
ce qui est assez lent et pnible  cause du nombre rduit
de contributeurs et du caratre particulier de l'industrie
de la microlectronique.

L'tape prsente ici concerne la partie "purement logicielle"
de la conception : il manque le reste de la chaine de CAO
(synthse, vrification et extraction) qui est encore plus dpendante
des "technologies propritaires". La chane Alliance s'intgre
assez difficilement dans une chaine classique et les outils
alternatifs n'existent pas encore. La fabrication d'un circuit
intgr entirement  partir d'outils libres, portables,
interchangeables, standard, n'est donc pas encore possible.
Les projets comme le F-CPU dpendent donc principalement
de gnrosit des leaders industriels. Les seules opportunits
de fondre un tel circuit sont soit :
 - de participer  un concours de design (le sponsor est souvent
un fondeur qui offrira la fabrication de la puce au vainqueur)
 - ou de s'associer avec un laboratoire universitaire ou une
cole d'ingnieur, ceux-cis mettant en commun la fabrication
de prototypes pour rduire les cots.
L'utilisation de FPGA est aussi envisage mais les circuits
pouvant contenir un coeur F-CPU sont encore beaucoup trop chers
pour des particuliers.

Les lecteurs dsirant mieux connaitre VHDL sont invits  lire
la FAQ situe 
  http://www.vhdl.org/comp.lang.vhdl
et de consulter rgulirement le groupe comp.lang.vhdl qui est
bien frquent. De nombreux livres en franais et en anglais
sont disponibles, ainsi que de nombreuses ressources gratuites
sur Internet (qu'une simple requte sur un moteur de recherche
vous indiquera).

Je remercie tous les membres du projet F-CPU pour leur aide et
leurs conseils, lors de l'installation et l'utilisation des outils
prsents ici (ou non). Je remercie aussi Mohammed Haneef
qui nous a fournis une version prliminaire de Simili 2 et soutient
indirectement les projets "Open Source" par la diffusion gratuite
de ses outils VHDL en ligne de commande. Enfin, Martyn Pollard de la
socit Cadence soutient aussi le projet F-CPU par la mise  disposition
des outils ncvhdl/ncsim.


Rfrences :

  http://www.f-cpu.org :
Site officiel du projet F-CPU. A consulter pour s'abonner aux mailing
lists, malgr le manque d'entretien du site (webmasters bienvenus).

  http://www.opencollector.org :
base de ressources en ligne sur les projets "libres" en lectronique numrique.

  http://www.symphonyeda.com :
site web de Mohammed Haneef et de son logiciel : Simili.

  http://linuxfr.org/bouffe/mensuelle/
Rendez-vous tous les mois  Paris au "First Jeudi" : des contributeurs du F-CPU
y discutent entre eux et avec d'autres organisations lies au Logiciel Libre.

  http://tech-www.informatik.uni-hamburg.de/vhdl :
Ressources en lignes sur le langage VHDL (outils, sources, liens,
tutoriaux, manuels...)

L'auteur : Yann Guidon est un artiste aprilien musicomane et chocolatomane,
accessoirement contributeur du projet F-CPU.

