31 | | = A) Modélisation comportementale du circuit addaccu = |
| 31 | = A) Modélisation zero-delay du circuit addaccu = |
| 32 | |
| 33 | Une description comportementale "data-flow" est une description qui ne contient que |
| 34 | des assignations concurrentes. Ces descriptions peuvent contenir des informations temporelles : |
| 35 | {{{ |
| 36 | c <= a AND b AFTER 300ps; |
| 37 | }}} |
| 38 | Puisque la sémantique du langage VHDL repose sur les ''événements'', l'assignation ci-dessus signifie qu'un événement (c'est à dire un changement de valeur à une date t) sur le signal a ou sur le signal b peut |
| 39 | entraîner un événement sur le signal c à la date t + 300 ps. La construction AFTER peut être omise, ce qui |
| 40 | correspond à un temps de propagation nul. |
| 41 | Les deux écritures ci-desous sont donc équivalentes : |
| 42 | {{{ |
| 43 | x <= NOT y; |
| 44 | x <= NOT y AFTER 0 ps; |
| 45 | }}} |
| 46 | |
| 47 | Une description comportementale qui ne contient pas de constructions AFTER est une description dite |
| 48 | "ZERO-DELAY": on considère que tous les temps de propation sont négligeables par rapport au temps |
| 49 | de cycle. C'est donc une description où on cherche à valider la fonctionnalité logique, mais où |
| 50 | on ne cherche pas à simuler les performances temporelles. |
| 51 | |
| 52 | Ecrire une description comportementale "zéro-delay" pour le composant ''addaccu''. |
| 53 | Le fichier comportera l'extension ".vbe" qui est l'extension usuelle pour |
| 54 | indiquer un fichier VHDL comportemental de type data-flow (.vbe pour Vhdl BEhaviour). |
| 55 | |
| 56 | Vous pourrez vérifier que votre fichier ''addaccu.vbe'' est syntaxiquement correct |
| 57 | en utilisant l'outil '''asimut''' pour compiler ce fichier sans lancer la simulation. |
| 58 | {{{ |
| 59 | >asimut - b -c addaccu |
| 60 | }}} |
| 61 | |
| 62 | * l'option -b indique qu'il s'agit d'une description purement comportementale (extension .vbe), car '''asimut ''' accepte également en entrée des descriptions structurelle (dans ce ca le fichier possède l'extension .vst). |
| 63 | * l'option -c permet de compiler sans simuler. |
| 64 | |
| 65 | Comme tous les outils de la chaîne ALLIANCE'', '''asimut''' utilise des variables d'environnement UNIX. |
| 66 | La signification des 8 variables d'environnement utilisées par '''asimut''' est à découvrir dans la page man de l'outil '''asimut'''. |
| 67 | Si l'on ne désire pas utiliser les valeurs par défaut, ces variables d'environnement peuvent être modifiées |
| 68 | en utilisant les commandes suivantes: |
| 69 | {{{ |
| 70 | >export VH_MAXERR=10 |
| 71 | >export VH_BEHSFX=vbe |
| 72 | >export VH_PATSFX=pat |
| 73 | >export VH_DLYSFX=dly |
| 74 | >export MBK_WORK_LIB=. |
| 75 | >export MBK_CATA_LIB=. |
| 76 | >export MBK_CATA_NAME=CATAL |
| 77 | >export MBK_IN_LO=vst |
| 78 | }}} |
| 82 | Lorsque la description comportementale du composant ''addaccu'' compile sans erreurs, il faut écrire |
| 83 | le fichier décrivant les stimuli qui vont être appliqués sur les entrées du circuit. |
| 84 | Ce fichier doit également contenir les valeurs attendues sur les sorties du circuit. |
| 85 | |
| 86 | Le format du fichier de stimuli accepté par ''asimut'' est défini dans la page man du format .pat : |
| 87 | {{{ |
| 88 | >man pat |
| 89 | }}} |
| 90 | |
| 91 | Ce fichier ''stimuli.pat'' doit en particulier décrire le signal d'horloge. On choisira un signal périodique |
| 92 | de période 10 ns, et de rapport cyclique 50% (cela signifie que l'état bas et l'état haut ont des durées égales). |
| 93 | |
| 94 | Les valeurs de tous les signaux d'entrée doivent être définies depuis le temps initial t = 0ns. |
| 95 | Les valeurs attendues sur les signaux de sortie doivent également décrites dans le fichier. |
| 96 | On commencera par un scénario simple comportant une dizaine de cycles. |
| 97 | |
| 98 | '''Attention''' : Comme les registres internes au composant ''addaccu'' sont des bascules à échantillonnage |
| 99 | sur front montant, les signaux d'entrée ne doivent pas changer de valeur lorsque le signal d'horloge passe |
| 100 | de 0 à 1. |
| 101 | |
| 102 | Vous pouvez vérifier le chronogramme défini par votre fichier ''stimuli.pat'', en utilisant l'outil de |
| 103 | visualisation graphique '''xpat''': |
| 104 | {{{ |
| 105 | >xpat -l stimuli |
| 106 | }}} |
| 107 | |