You are on page 1of 9

ELE4304 – Principe des Circuits Intégrés à Très Grande Échelle

Laboratoire 1

Langage VHDL et synthèse logique

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).

Laboratoire 1 LANGAGE VHDL ET SYNTHÈSE NUMÉRIQUE 1/1


ELE4304 – Principe des Circuits Intégrés à Très Grande Échelle

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.

Laboratoire 1 LANGAGE VHDL ET SYNTHÈSE NUMÉRIQUE 2/2


ELE4304 – Principe des Circuits Intégrés à Très Grande Échelle

2.1 Additionneur N bits(4 pts)


2.1.1 Additionneur 1 bit (2 pts)
Utilisez une description de type flux de données (voir manuel de laboratoire) pour
réaliser l’additionneur de 1 bit illustré à la Figure 1.
• Faites la synthèse complète ainsi que les simulations pré et post synthèse en
prenant soin d’illustrer tous les cas possibles. Utilisez le même banc d’essai
pour les deux simulations.
• 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).
• À l’aide de SYNOPSYS estimez le délai maximal et la surface utilisée par
l’additionneur (analyse de surface/délais, AREA/TIMING).

Figure 1 - Schéma logique d’un additionneur

2.1.2 Additionneur 3 bits (2 pts)


Utilisez la composante réalisée précédemment et une description de type structurelle
(voir cahier de laboratoire) pour réaliser un additionneur de N bits. Pour ce faire vous
devez utiliser les commandes GENERIC et GENERATE qui vous permettront de générer
N additionneurs parallèles que vous brancherez sur des entrées/sorties de N bits.
• Faites la synthèse complète pour N=4 et N=8. Pour chaque synthèse, donnez les
résultats d’analyses de surface/délais (TIMING/AREA) et comparez les
résultats.
• Faites les simulations pré et post synthèse pour N = 4 uniquement toujours en
utilisant un seul banc d’essai. Le banc d’essaie, illustré à la Figure 2, doit
comprendre un compteur de 0 à 15 pour l’assignation du port d’entrée A, la
valeur constante “0011” pour le port B et une procédure (PROCESS)
conditionnelle qui attribue ‘1’ à CIN lorsque le compte est supérieur à 8
(compteur <= “1000”).

Laboratoire 1 LANGAGE VHDL ET SYNTHÈSE NUMÉRIQUE 3/3


ELE4304 – Principe des Circuits Intégrés à Très Grande Échelle

• 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

Figure 2 - Banc d’essaie pour l’additionneur N bits

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.

Tableau 1 - Entrées de la machine à états

Description de l’entrée Nom du Signal


Au premier étage, un bouton pour monter M1
Au deuxième étage, un bouton pour monter M2
Au deuxième étage, un bouton pour descendre D2
Au troisième étage, un bouton pour descendre D3
Un bouton pour aller au premier étage B1
Un bouton pour aller au deuxième étage B2
Un bouton pour aller au troisième étage B3

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.

Laboratoire 1 LANGAGE VHDL ET SYNTHÈSE NUMÉRIQUE 4/4


ELE4304 – Principe des Circuits Intégrés à Très Grande Échelle

Tableau 2 - Sortie de la machine à états

Description de la sortie Encodage


Premier Étage 0b00
Deuxième Étage 0b01
Troisième Étage 0b10

La Figure 3 présente un diagramme d’états du contrôleur pour le monte-charge. D’autre


part, voici quelques informations supplémentaires qui vous seront utiles :
• Initialement, le monte-charge est au premier étage.
• Le monte-charge peut être positionné à un étage ou être en transition en deux
étages.
• Lorsque le monte-charge est à un étage, la sortie indique à quel étage se situe le
monte-charge.
• Lorsque le monte-charge est en transition vers un autre étage, il doit
obligatoirement compléter la transition vers l’autre étage.
• Lorsque le monte-charge est positionné entre 2 étages, la sortie indique l’étage
de départ de la transition.

Figure 3 - Diagramme d’états (Moore)

Laboratoire 1 LANGAGE VHDL ET SYNTHÈSE NUMÉRIQUE 5/5


ELE4304 – Principe des Circuits Intégrés à Très Grande Échelle

Pour le rapport vous devez produire et remettre :


1. Deux implémentations de cette machine à états en VHDL ;
§ Vous implémenterez une version de style Moore avec sorties registrées
et une de style Mealy avec sorties non registrées.
§ Vos deux implémentations doivent être dans le même fichier et doivent
utiliser la même entity.
§ La description VHDL des machines à états doit se faire en utilisant 3 ou 4
processus (PROCESS).
2. Les schémas des deux circuits après synthèses complète.
3. Les résultats de simulations fonctionnelles et temporelles. Le même banc
d’essai sera utilisé pour la vérification des deux versions du circuit, vous devez
donc produire le nombre de configuration nécessaire.
4. Pour chacun des circuits, les résultats d’analyses surface/délais
(AREA/TIMING) fournis par Synopsys.
5. Une discussion à propos de vos deux implémentations en vous basant sur les
résultats de simulation et les résultats de synthèse.
6. N’oubliez pas de remettre codes sources bien identifiés.

2.3 Décodeur de priorités 4X1 de N bits (8 pts)


Typiquement, un décodeur de priorités permet d’assigner, selon une table de priorités
préalablement conçue, l’un des ports d’entrées au port de sortie. Pour ce numéro, vous
devez réaliser la description VHDL d’un décodeur de priorités 4X1 de N bits. La
réalisation du décodeur doit respecter les consignes et spécifications suivantes :
• L’architecture du décodeur est composée de quatre processus (PROCESS)
séquentiels et d’une machine à états finis (FSM) tel qu’illustré à la Figure 5.
§ Processus d’entrées : Ce processus a pour fonction de registrer les entrées.
Le processus est activé lorsque le signal entrees_p est haut.
§ Processus décodeur : Détermine selon la table de priorités quel port
d’entré sera assigné à la sortie. Signal d’activation : decodeur_p.
§ Processus modification de la table : Permet de modifier la table de
priorités. Signal d’activation : table_p.
§ Processus de sortie : Dirige et mémorise à la sortie les signaux valides en
fonction des signaux sorties_p et ACK_S.
• Les signaux d’activation xxx_p sont générés par une FSM composé de 5 états
dont le comportement est décrit à la Figure 4;
§ Vous devez utiliser une machine à état de type MOORE avec des sorties
non registrées.

Laboratoire 1 LANGAGE VHDL ET SYNTHÈSE NUMÉRIQUE 6/6


ELE4304 – Principe des Circuits Intégrés à Très Grande Échelle

§ La description VHDL de la machine doit absolument se faire en trois


processus (PROCESS).
• Le décodeur doit respecter un protocole de communication de type
Handshaking : Chaque vecteur de donnés propagé sur un des PORT
d’entrés/sortis A, B, C, D ou S est accompagné d’un signal de requête (REQ_X,
X = A, B, C, D ou S). Les signaux sont maintenus jusqu’à ce qu’un signal de
reconnaissance (ACK_X, X = A, B, C, D ou S) soit transmis ou reçu.
• Les PORTS d’entrés/sortis sont de dimensions N.
• Le pseudo-code suivant est un exemple d’algorithme de décodage de priorités :
Port_tmp = port_entrés(0) ;
priorité = 0 ;

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’

DECODEUR ACK_S = ‘1’


TABLE
decodeur_p =1
table_p = 1

SORTiES
ATTENTE
sorties_p = 1

Figure 4 - Diagramme d’état pour la FSM

Laboratoire 1 LANGAGE VHDL ET SYNTHÈSE NUMÉRIQUE 7/7


ELE4304 – Principe des Circuits Intégrés à Très Grande Échelle

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

Figure 5 - Diagramme bloc du décodeur de priorités

Pour le rapport vous devez produire et remettre :


• L’implémentation matérielle en VHDL du décodeur de priorités et le schéma du
circuit après synthèse complète.
• Les simulations fonctionnelles et temporelles. Utilisez les vecteurs décrit au
Tableau 3.
Tableau 3 - Vecteurs pour la vérification du décodeur

ACK_X SET TABLE TABLE


(A, B, C, D) ADDR VALEUR
(1,1,1,1) 0 -- --
(1,1,1,0) 0 -- --
(1,1,1,1) 1 11 10
(1,1,1,1) 1 01 11
(1,1,1,1) 1 11 01
(1,0,0,0) 0 -- --

• Les résultats d’analyses pour la surface/délais (AREA/TIMING) fournis par


SYNOPSYS.
• N’oubliez pas de remettre les codes sources bien identifiés.

Laboratoire 1 LANGAGE VHDL ET SYNTHÈSE NUMÉRIQUE 8/8


ELE4304 – Principe des Circuits Intégrés à Très Grande Échelle

2.4 Autres directives

2 points pourront être retirés dû à la mauvaise présentation du rapport. Par exemple, un


rapport dont les résultats de simulations ne sont pas bien identifiés sera pénalisé.
Le manque de respect des règles de codage « design reuse » peut coûter jusqu’à 2 points.
Vous devez remettre votre rapport le Lundi 12 Février (avant 17h00 PM au D-6236).
Chaque jour ouvrable de retard pour le rapport coûte 2 points, soit 10% du total.

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.

Louis - Pierre Lafrance


Sébastien Regimbal

Laboratoire 1 LANGAGE VHDL ET SYNTHÈSE NUMÉRIQUE 9/9

You might also like