Changes between Initial Version and Version 1 of ToolsCourseTp4


Ignore:
Timestamp:
May 4, 2007, 11:55:04 AM (17 years ago)
Author:
anne
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ToolsCourseTp4

    v1 v1  
     1{{{
     2#!html
     3<h1> TP1 : Modélisation Comportementale VHDL Data-Flow </h1>
     4}}}
     5[[PageOutline]]
     6
     7
     8
     9
     10 = Réalisation du chemin de données =
     11
     12
     13Le chemin de données est formé de la logique régulière du circuit. Afin de profiter
     14de cette régularité, on génère la liste de signaux sous forme d'opérateurs vectoriels (ou
     15colonnes) via les macro-fonctions de l'outil Stratus.
     16
     17Cela permet d'économiser de la
     18place en utilisant plusieurs fois le même matériel. Par exemple, le NOT d'un mux de n
     19bits est instancié une seule fois pour ces n bits...
     20
     21= 1 Exemple de description avec Stratus =
     22Considérons le circuit suivant :
     23a
     24Voici la structure du chemin de données correspondante :
     25a[3]
     26
     27Chacune des portes occupe une colonne, une colonne permettant de traiter un ensemble
     28de bits pour un même opérateur. La première ligne représente le bit 3, la derni
     29ère le bit 0.
     30
     31
     32Le fichier Stratus correspondant est le suivant :
     33
     34{{{
     35
     36
     37#!/usr/bin/env python
     38from stratus import *
     39# definition de la cellule
     40class circuit ( Model ):
     41# declaration des connecteurs
     42def Interface ( self ):
     43self.a = SignalIn ( "a" , 4 )
     44self.b = SignalIn ( "b" , 4 )
     45self.c = SignalIn ( "c" , 4 )
     46self.v = SignalIn ( "v" , 1 )
     47self.cout = SignalOut ( "cout", 1 )
     48self.s = SignalOut ( "s" , 4 )
     49self.cmd = SignalIn ( "cmd" , 1 )
     50self.vdd = VddIn ( "vdd" )
     51self.vss = VssIn ( "vss" )
     52# instanciation des operateurs
     53def Netlist ( self ):
     54# declaration des signaux internes
     55d_aux = Signal ( "d_aux", 4 )
     56e_aux = Signal ( "e_aux", 4 )
     57ovr = Signal ( "ovr" , 1 )
     58# generation
     59Generate ( "DpgenNand2", "instance_nand2_4bits"
     60, param = { ’nbit’ : 4 }
     61)
     62# instanciation
     63self.instance_nand2_4bits = Inst ( "instance_nand2_4bits"
     64, map = { ’i0’ : Cat ( self.v
     65, self.v
     66, self.v
     67, self.v )
     68, ’i1’ : self.a
     69, ’nq’ : d_aux
     70, ’vdd’ : self.vdd
     71, ’vss’ : self.vss
     72}
     73)
     74Generate ( "DpgenOr2", "instance_or2_4bits"
     75, param = { ’nbit’ : 4 }
     76)
     77self.instance_or2_4bits = Inst ( "instance_or2_4bits"
     78, map = { ’i0’ : d_aux
     79, ’i1’ : self.b
     80, ’q’ : e_aux
     81, ’vdd’ : self.vdd
     82, ’vss’ : self.vss
     83}
     84)
     85Generate ( "DpgenAdsb2f", "instance_add2_4bits"
     86, param = { ’nbit’ : 4 }
     87)
     88self.instance_add2_4bits = Inst ( "instance_add2_4bits"
     89, map = { ’i0’ : e_aux
     90, ’i1’ : self.c
     91, ’q’ : self.s
     92, ’add_sub’ : self.cmd
     93, ’c31’ : self.cout
     94, ’c30’ : ovr
     95, ’vdd’ : self.vdd
     96, ’vss’ : self.vss
     97}
     98)
     99
     100}}}
     101
     102
     103Ce premier fichier définit votre circuit, enregistrez-le sous le nom "circuit.py". Il faut
     104maintenant créer un autre fichier pour instancier votre circuit :
     105{{{
     106#!/usr/bin/env python
     107from stratus import *
     108from circuit import circuit
     109# creation du circuit
     110mon_circuit = circuit ( "mon_circuit" )
     111# creation de l’interface
     112mon_circuit.Interface ()
     113# creation de la netlist
     114mon_circuit.Netlist ()
     115# sauver les fichiers mon_circuit.vst
     116mon_circuit.Save ()
     117
     118}}}
     119
     120Enregistrez-le sous le nom "test.py". Changez les droits du fichier afin de le rerendre
     121executable :
     122
     123{{{
     124> chmod +x test.py
     125}}}
     126
     127Puis executez le fichier :
     128{{{
     129>./test.py
     130}}}
     131
     132Si tout se passe bien, vous obtenez le fichier "mon_circuit.vst", dans le cas contraire,
     133et mises à part des erreurs de syntaxe, il se peut que votre environnement soit mal
     134configuré pour Stratus.
     135
     136 Consultez la doc au format html
     137"file :///asim/coriolis/share/doc/en/html/stratus/index.html" afin de vous renseigner sur les
     138variables d'environnement à positionner.
     139
     140
     141Lorsque vous avez obtenu le fichier, passez à la section "Description de la partie
     142chemin de données".
     143
     144
     145Note : Stratus étant issu du langage Python, il faut apporter une grande importance
     146
     147
     148à l'indentation. Un bon conseil, n'utilisez pas de tabulations (ou alors configurez
     149vos éditeurs pour qu'ils transforment automatiquement les tabulations en espaces).
     150
     151
     152= 2 Description du chemin de données =
     153
     154
     155Les schémas correspondant à la liste de signaux à réaliser vous sont fournis en annexes.
     156
     157
     158Compléter le fichier "amd2901_dpt.py"
     159
     160puis créer le fichier "test_amd2901_dpt.py"
     161
     162correspondant, pour l'exécuter en utilisant le modus operandi ci-dessous.
     163
     164NOTE : la ram est déjà construite.
     165
     166
     167Générer la liste de signaux .vst à partir du fichier .py en lancant le fichier :
     168
     169{{{
     170> ./test_amd2901_dpt.py
     171}}}
     172
     173Valider la liste de signaux de la même manière que pour la partie contrôle.
     174
     175 Supprimer
     176le fichier CATAL et simuler le circuit avec asimut.
     177{{{
     178> asimut -zerodelay amd2901_chip pattern resultat
     179}}}
     180
     181= 8 Rapport =
     182
     183Il s'agit simplement de décrire votre travail fait en TP.
     184
     185Décrivez les différentes étapes menant à la netlist fifinale pour le digicode et l'Amd2901
     186(le compteur 5 bits vous est épargné).
     187
     188Quelles sont les deux manières de concevoir une netlist ? Quels avantages y a-t-il à
     189faire des colonnes d'opérateurs pour le data-path ?...
     190
     191
     192Inutile de faire un roman. Soyez clairs et concis !
     193Les répertoires, fichiers et logins devront être mentionnés dans le rapport ainsi que vos
     194noms de binômes. N'oubliez pas de mettre les droits en lecture !