Lab 1
Lab 1
Lab 1
Laboratoire 1
10 Janvier 2003
1 INTRODUCTION
L’évolution de l’industrie des circuits intégrés durant la dernière décennie a été tellement
rapide qu’il est maintenant possible d’intégrer plusieurs systèmes complexes sur une
seule puce. Cette évolution vers des niveaux d’intégration de plus en plus élevés est
motivée par les besoins de systèmes plus performants, légers, compacts et consommant
un minimum de puissance. Dans de telles circonstances, la gestion de la complexité avec
les outils d’aide à la conception traditionnels (les outils de bas niveau : masque,
schématique…) devient une tâche pénible, coûteuse, voire impossible, quand on
considère les contraintes de mise en marché d’un produit.
Dans le but de mieux gérer la complexité des circuits intégrés, tout en gardant les coûts
du développement dans des limites raisonnables, d’autres outils d’aide à la conception,
dits outils de synthèse, ont vu le jour dès le début des années 1990. En effet, le but ultime
de ces outils associés avec un langage de conception et de simulation puissant, tel que le
langage VHDL, est de générer le dessin des masques d’un circuit à partir de sa
description comportementale de haut niveau. Ainsi, le concepteur peut se limiter à la
conception, à la modélisation et à la simulation de son produit, sans tenir compte des
détails de mise en œuvre au niveau schématique ou du dessin des masques.
1.1 OBJECTIFS SPÉCIFIQUES
• Apprendre le sous-ensemble du langage VHDL comportemental synthétisable,
supporté par le compilateur VHDLAN de SYNOPSYS;
• Apprendre à utiliser l’outil de synthèse DESIGN ANALYZER de SYNOPSYS;
• Apprendre à utiliser le simulateur logique VHDLDBX de SYNOSYS.
• Apprendre à coder avec une philosophie de « design reuse ».
1.2 DOCUMENTATION REQUISE
Vous trouverez l'essentiel des informations requises pour le "VHDL comportemental"
compatible avec le compilateur VHDLAN dans le document du laboratoire disponible
par chapitres sur le site du cours. Un document de référence plus complet sur ce sujet est
aussi mis à votre disposition sur le site du cours (VHDL CookBook).
2 TRAVAIL DEMANDÉ
Le présent laboratoire comporte 3 numéros qui vous proposent de réaliser la description
VHDL-RTL (Register Transfer Level) de différents modules ou fonctions matériels.
Généralement pour chaque numéro vous devrez ;
• Écrire la description VHDL du module matériel proposé;
• Faire la synthèse RTL et l’optimisation avec DESIGN ANLYZER (DESIGN
COMPILER) de Synopsys;
• Faire les simulations fonctionnelle et temporelle (pré et post-synthèse) en
prenant soin de mettre en évidence les comportements critiques;
• Extraire les résultats d’analyse (REPORT) sur les délais et la surface (TIMING,
AREA).
Généralement pour chaque numéro vous devez produire et remettre:
1. Les codes sources des descriptions VHDL et bancs d’essais (Testbench)
CLAIREMENT IDENTIFIÉS. (Utilisez l’entête proposée par le guide sur le
design reuse).
2. Les schémas des circuits après synthèse complète. Le terme synthèse complète
désigne le résultat obtenu par la synthèse (ELABORATE) et l’optimisation
(TOOLS->OPTIMISATION). Ne remettez que le schéma final.
3. Les résultats de simulation fonctionnelle et temporelle (avant et après synthèse)
demandées.
4. Résultats d’analyses : délais et surfaces. Imprimez les résultats fournis par
SYNOPSYS.
5. Réponse aux questions posées s’il y a lieu.
6. Vous pouvez ajouter tous commentaires et discussions que vous jugerez
nécessaire.
On vous demande d’organiser le rapport par numéro en respectant pour chacun
l’ordre présenté ci-dessus (pas d’annexes SVP). Le rapport doit également inclure de
brève introduction et conclusion ainsi que tous commentaires que vous jugerez pertinents.
De plus, il est important, tout au cours du laboratoire, de respecter les règles de codage
définies dans le document intitulé « méthodologie sur le design reuse » disponible sur le
site du cours. Les règles précédées d’un astérisque (*) doivent être appliquées au premier
laboratoire. Rien ne vous empêche d’appliquer aussi les règles munies de deux
astérisques (**) qui seront exigées lors du projet final.
Vous trouverez à la section « Documents utiles » de la page « Références » du site Web
du cours le document «Résumé utile pour le premier laboratoire ». Ce dernier vous
indiquera les premières étapes à suivre afin de bien débuter votre laboratoire.
• Faites une troisième simulation afin de mettre en relief les délais engendrés par
la synthèse (il faut faire la simulation en PS).
Banc d’essaie
Compteur A
“0011” B ADDER C
N bits
CIN <= ‘1’ if
Compteur(3) = ‘1’ CIN COUT
2.2 Contrôleur d’un monte-charge basé sur une machine à états finis (8
pts)
Écrire le modèle VHDL d'une machine à états d’un contrôleur d’un monte-charge
assurant le transport de diverses marchandises entre 3 étages. Les entrées de la machine à
états sont les boutons d’appels du monte-charge aux étages et les boutons permettant la
sélection de l’étage à l’intérieur du monte-charge. La sortie de la machine à états
permettra de connaître l’étage courant du monte-charge. Le Tableau 1 décrit les entrées
du contrôleur et les noms de signaux que vous devez respecter.
Dans le but de simplifier le problème, vous devez considérer qu’aucun bouton n’est
appuyé en même temps. Le Tableau 2 présente la sortie du contrôleur et l’encodage que
vous devez respecter.
if decodeur_p = actif_haut
for (i = 0 ; i= 3; i++)
{
if (vecteur_reqs_in(i) = '1')
if (table(i) > priorité)
{
priority = table(i);
port_tmp = port_entrés(i);
}
}
• Notez que si la table contient deux valeurs identiques ( TABLE(00) = 3 et
TABLE(01) = 3), la plus basse adresse aura alors priorité.
• Bien que généralement on essaie d’éliminer les variables des codes VHDL-
RTL, il existe des cas comme celui-ci où elles sont utiles (indice : Priorité).
IDLE
entrees_p =1
reqs_in = ‘1’
SET = ‘1’
SORTiES
ATTENTE
sorties_p = 1
Vecteur_reqs_in 4 N
S_t S
A
N a_t N Decodeur ACK_A
N
B
N Processus b_t N priorités Processus
S ACK_B
C
N entrées c_t N TABLE sorties ACK_C
D
N d_t N 4 x 2 bits 4
V_acks_ou
ACK_D
t
entrees_p decodeur_p
REQ_A
REQ_B sorties_p
reqs_in
REQ_C FSM
REQ_D
ACK_S ACK_S
SET table_p
Processus
modification
table
2 2
L
TABLE_VA
TABLE_ADD
SET
Remarque:
Nous souhaitons avoir vos commentaires sur les difficultés que vous avez rencontrées
durant la réalisation de ce laboratoire. Nous sommes particulièrement intéressés par les
lacunes pouvant subsister dans la documentation.