05.11.2014 Views

TP 1 SystemC - Portes logiques - Uuu.enseirb.fr

TP 1 SystemC - Portes logiques - Uuu.enseirb.fr

TP 1 SystemC - Portes logiques - Uuu.enseirb.fr

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>TP</strong>‐1
de
<strong>SystemC</strong>
:
«
<strong>Portes</strong>
<strong>logiques</strong>
»
<br />


<br />

Bertrand
LE
GAL
<br />

bertrand.legal@ims‐bordeaux.<strong>fr</strong>
<br />

http://uuu.<strong>enseirb</strong>.<strong>fr</strong>/~legal/
<br />


<br />


<br />


<br />

Filière
Electronique
<br />

3ème
année
‐
Option
CSI
<br />

2008
/
2009
<br />

Laboratoire
IMS
–
UMR‐CNRS
5218
 
 
 
 ENSEIRB
‐
Université
de
Bordeaux
1
<br />

351,
cours
de
la
Libération
 
 
 
 
 33405
Talence
‐
France



2/6


1. INTRODUCTION<br />

L’objectif de ce premier <strong>TP</strong> est de vous permettre de prendre en main le langage <strong>SystemC</strong><br />

ainsi que le flot des outils nécessaires. Les exemples que nous allons manipulé lors de cette<br />

première séance sont volontairement simplistes mais vous permettront d’observer les<br />

phénomènes dont la compréhension est nécessaire par la suite.<br />

2. ECRITURES DES PORTES LOGIQUES ELEMENTAIRES<br />

Dans un premier temps afin de vous faire la main, vous allez commencer par modéliser<br />

l’ensemble des portes <strong>logiques</strong> suivantes : ET, OU, NON.<br />

⇒ Ecrivez les modèles <strong>SystemC</strong> correspondants.<br />

A<br />

B<br />

Porte_ET<br />

S<br />

A<br />

B<br />

Porte_OU<br />

S<br />

A<br />

A<br />

B<br />

Porte_NON Porte_OU Porte_ET<br />

S<br />

Figure : Schéma des portes <strong>logiques</strong> que vous devez modéliser.<br />

REMARQUE : Pour une plus grande simplicité d’écriture, ces portes seront décrites à l’aide de<br />

processus de type SC_METHOD.<br />

3. SIMULATION DES MODELES DE PORTE LOGIQUES<br />

Dans un second temps nous allons utiliser le moteur de simulation inclus dans les<br />

bibliothèques <strong>SystemC</strong> afin de vérifier le comportement de vos modèles.<br />

Afin de tester vos composants de manière pseudo-automatique, développez (à l’aide des<br />

exemples fournis dans le fascicule de cours) les composants générateurs et affichage<br />

permettant de générer des stimulus aléatoires et afficher les résultats obtenus comme cela est<br />

présenté ci-dessous.<br />

Générateur<br />

Générateur<br />

S<br />

S<br />

A<br />

B<br />

Composant<br />

S<br />

E<br />

Affichage<br />

Figure : Schéma des portes <strong>logiques</strong> que vous devez modéliser.<br />

⇒ Ecrivez les modèles « Générateur » et « Affichage ».<br />

⇒ Créez un fichier contenant les modèles à simuler ainsi que les liens les unissant.<br />

3/6


Remarque : les générateurs de données devront fournir dans votre modèle une nouvelle donnée<br />

toutes les 10ns secondes.<br />

⇒ Compilez le fichier à l’aide de g++ et exécutez le. Les résultats que vous observez sont ils<br />

cohérents ?<br />

Remarque : afin de générer des valeurs booléennes aléatoires uniformément réparties, vous pouvez<br />

utiliser : “(bool)(rand()%2)” et non “(bool)rand()” qui produirait environ une seule valeur “0” tous les<br />

2^32 tirages...<br />

4. OBSERVATION DES SIGNAUX<br />

Comme nous l’avons vu en cours, <strong>SystemC</strong> of<strong>fr</strong>e des possibilités afin de visualiser des signaux<br />

manipulés dans le modèle sous forme de chronogrammes. Dans le cadre de l’exemple<br />

présent, utiliser un tel affichage rendrait la vérification de vos composants plus facile…<br />

⇒ Recherchez dans le cours comment faire pour stocker les données sous forme de<br />

chronogrammes (dans un fichier). Modifiez vos fichiers en conséquence.<br />

⇒ Recompilez vos fichiers source et lancez une simulation de la porte logique XOR par<br />

exemple. Ouvrez le fichier VCD généré à l’aide de l’outil nommé GtkWave. et observer les<br />

signaux produits, sont ils corrects ?<br />

Remarque : Afin de lancer le visualisateur de signaux, il vous suffit de taper XXX dans un terminal.<br />

5. MODELISATION COMPORTEMENTALE (PORTE XOR)<br />

A partir de maintenant nous allons nous intéresser à l’impact du niveau de la description sur<br />

le temps de simulation. Cette partie doit vous permettre de prendre conscience que ces<br />

derniers augmentent de manière trop importante lorsque l’on rajoute des détails… Ce point<br />

important vous permettra de comprendre pourquoi dans les <strong>TP</strong> suivants nous axerons nos<br />

travaux (raffinement matériel) sur un composant et non sur l’ensemble d’un système.<br />

Afin de commencer cette étude, vous allez développer un modèle de porte de type XOR de<br />

manière similaire à celle déjà développées. Simulez ce nouveau modèle de composant à l’aide<br />

d’un « grand nombre » de simulations (100 ms).<br />

A<br />

B<br />

Porte_XOR<br />

S<br />

Figure : Schéma de la porte XOR que vous devez concevoir.<br />

⇒ Ecrivez le modèle de la porte XOR. Compiler votre modèle et simulez là afin de vérifier son<br />

fonctionnement.<br />

Remarque : Supprimer la génération des chronogrammes, cela créerait des fichiers de plusieurs<br />

centaines de Mo sur votre compte…<br />

4/6


⇒ Maintenant afin de mesurer le temps nécessaire à la simulation vous allez supprimer<br />

l’ensemble des sorties à l’écran (cout ou printf). Recompilez votre programme et lancez la<br />

simulation.<br />

Remarque : Pour mesurer le temps d'exécution de votre programme simulant le modèle vous pourrez<br />

utiliser la commande Unix nommée “time”. Cette dernière doit précéder le nom de votre programme<br />

dans un terminal : “time mon_programme”.<br />

6. ETAPE V. DESCRIPTION STRUCTURELLE (XOR)<br />

Vous allez maintenant développer une nouvelle description de la porte XOR (nommée<br />

XOR_Struc) basée non plus sur le comportement de la porte mais sur sa structure interne.<br />

Cette description structurelle sera basera sur les modèles de portes <strong>logiques</strong> que vous avez<br />

mis au point précédemment.<br />

La figure suivante vous rappelle la composition structurelle d’une porte XOR.<br />

NOT<br />

AND<br />

OR<br />

NOT<br />

AND<br />

Figure : Schéma de la porte XOR composée à l’aide des portes <strong>logiques</strong> de base.<br />

⇒ Développez ce nouveau modèle et mesurez son temps de simulation (pour une durée de<br />

simulation identique). Que pouvez vous en conclure ? Pourquoi ?<br />

7. INSERTION DES CONTRAINTES TEMPORELLES<br />

Maintenant nous allons modéliser le temps de traversé des différentes portes <strong>logiques</strong> que<br />

vous avez mis modélisées afin d’observer le comportement plus précis du système.<br />

Pour cela nous allons considérer que le temps de traversé des portes NON, ET et OU est de<br />

1ns alors que la porte XOR “comportementale” possédera un temps de traversé de 3ns.<br />

⇒ Transformez le code source de vos modèles afin d’intégrer ces délais.<br />

délai = 1ns<br />

délai = 1ns<br />

délai = 1ns<br />

A<br />

B<br />

Porte_ET<br />

S<br />

A<br />

B<br />

Porte_OU<br />

S<br />

A<br />

Porte_NON<br />

S<br />

Figure : Schéma des portes <strong>logiques</strong> et du temps de traversé associé.<br />

⇒ Simulez la porte XOR structurelle et vérifiez sont bon fonctionnement sur une trentaine de<br />

5/6


stimuli, corrigez votre modèle au besoin.<br />

⇒ Mesurez le temps nécessaire à la simulation. Comparez les résultats.<br />

⇒ Observer les signaux post-simulation (à l’aide de gtkwave par exemple). Quelles sont les<br />

différences observables ? Expliquez à quoi sont dues ces “différences” ?<br />

8. CONCLUSION<br />

Vous venez de terminer votre premier <strong>TP</strong> autour du langage <strong>SystemC</strong>. Vous devez<br />

maintenant comprendre que le temps de simulation d’un système complexe est « trop<br />

important » et qu’il est donc nécessaire de décrire précisément que certaines parties.<br />

Dans le même temps vous avez pu vous rendre compte dans la dernière question que la<br />

visualisation de signaux « non conformes » ne permet pas simplement d’identifier les causes<br />

d’un problème potentiel.<br />

Dans la prochaine séance nous étudierons les possibilités offertes par le langage afin de<br />

définir l’architecture d’un composant en fonction des contraintes système.<br />

6/6

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!