blob: a7352cf5f2429bb07a48167c4fc90186d0f6dc06 (
plain) (
tree)
|
|
<TeXmacs|1.0.7.19>
<style|generic>
<\body>
<doc-data|<doc-title|Rapport : simulateur de
circuit>|<doc-author|<author-data|<author-name|Alex
AUVOLAT>>>|<doc-date|2013-11-12 09h00>>
Dans le cadre du cours <em|Syst�me Digital : de l'algorithme au circuit> de
<name|J.Vuillemin>, j'ai �crit un simulateur de circuit capable de faire
fonctionner un circuit pr�alablement compil� dans le langage MiniJazz.
Le simulateur que j'ai �crit est cod� en C (essentiellement pour la
rapidit� d'ex�cution), et n�cessite un pr�-tra�tement des donn�es par un
programme en Caml. Le simulateur en C ne lit pas directement les netlist
produites par MiniJazz, mais un fichier <verbatim|.dumb> qui est produit
par le pr�-processeur.
Contenu de l'archive ci-jointe :
<\verbatim-code>
README
\ Diverses documentations. � lire.
\;
sched/
\ Dans ce r�pertoire se trouve le pr�-processeur, qui effectue les
op�rations suivantes :
\ - lecture d'une netlist
\ - tri topologique
\ - diverses optimisations
\ - �criture d'un fichier .net et d'un fichier .dumb contenant le
r�sultat.
Pour compiler le pr�-processeur :
$ cd sched/
$ ocamlbuild main.byte
\;
csim/
\ Dans ce r�pertoire se trouve le simulateur en C.
Pour le compiler :
$ cd csim/
$ make
Les options du simulateur sont d�crites lors de l'invocation de celui-ci
sans arguments.
\;
tests/
\ Ce r�pertoire contient un certain nombre de fichiers de test au format
minijazz. Le Makefile permet d'effectuer les appels au compilateur, au
pr�-processeur et au simulateur avec la syntaxe suivante :
$ cd tests/
$ make nadder.sim \ \ \ \ # nadder.mj -\<gtr\> nadder.net -\<gtr\>
nadder.dumb -\<gtr\> csim
</verbatim-code>
Les points importants � souligner dans mon travail sont :
<\itemize>
<item>D�finition d'un format de donn�es interm�diaire pour les Netlist,
permettant l'�criture d'un simulateur en C. D�finition conjointe de ce
format et de la structure du simulateur, afin d'�crire un simulateur le
mieux optimis� possible.
<item>�criture d'un optimiseur de Netlist, qui est capable d'effectuer
plusieurs simplifications, dont :
<\itemize>
<item>propagation des constantes ;
<item>d�tection de variables au contenu identique ;
<item>suppression de variables inutiles ;
<item>suppression d'op�rations arithm�tiques inutiles.
</itemize>
L'application de ces passes d'optimisation r�duit g�n�ralement la taille
d'une Netlist d'environ 30%.
</itemize>
Les efforts d'optimisation ont �t� faits dans l'id�e que le simulateur
devra faire fonctionner un processeur MIPS � une fr�quence raisonnable
(id�alement, plusieurs centaines, voire milliers, de cycle par seconde). Le
r�sultat de ce travail se voit sur les programmes <verbatim|clockHMS.mj> et
<verbatim|clock2.mj> qui d�finissent deux horloges qui comptent modulo 60
puis 60 puis 24 (donc qui comptent sur une journ�e, � un cycle par
seconde). Avec mon simulateur optimis�, les deux horloges sont capables de
simuler une journ�e enti�re de comptage, c'est-�-dire 86400 cycles, en 0.4
secondes pour le premier et 0.9 secondes pour le second, sur un ordinateur
moderne.
</body>
<\initial>
<\collection>
<associate|language|french>
</collection>
</initial>
|