0% ont trouvé ce document utile (0 vote)
43 vues35 pages

Chap 3

La synthèse VHDL transforme une description textuelle en une netlist pour les FPGA, en respectant des normes comme l'IEEE 1076.6-2004. Elle nécessite un code HDL non ambigu et une liste de sensibilité complète pour éviter des erreurs comme les latchs transparents. Les types et opérateurs utilisés doivent être appropriés pour garantir la synthétisabilité du circuit décrit.

Transféré par

ahmed.omrani.1088
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
43 vues35 pages

Chap 3

La synthèse VHDL transforme une description textuelle en une netlist pour les FPGA, en respectant des normes comme l'IEEE 1076.6-2004. Elle nécessite un code HDL non ambigu et une liste de sensibilité complète pour éviter des erreurs comme les latchs transparents. Les types et opérateurs utilisés doivent être appropriés pour garantir la synthétisabilité du circuit décrit.

Transféré par

ahmed.omrani.1088
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Synthèse VHDL

La Synthèse ?

´ La synthèse est l’opération qui consiste, à partir du fichier texte, à produire


la netlist contenant le schéma électrique destiné aux outils de placement
routage (fichier au format NGC).
´ Cette étape est particulièrement délicate dans le cas des FPGA à cause
de la complexité élevée (granularité) de la cellule de base du FPGA.
´ La description VHDL n’utilise pas de bibliothèque propriétaire et elle est
assez générale.
´ La portabilité est donc bien meilleure qu’avec la saisie de schéma (les langages
VHDL et Verilog sont normalisés),
´ Le rôle du synthétiseur est ici de comprendre et d’interpréter une
description abstraite du design afin de générer un fichier NGC
compréhensible par les outils d’implémentation, c’est-à-dire une netlist
NGC composée de primitives simples.
La Synthèse ?

´ Le produit du synthétiseur est communément appelé «liste des


interconnexions» (netlist):
• les composantes de base
• et les liens qui les relient.
´ Les synthétiseurs n’infèrent que des modules qui peuvent être décrits sans
ambiguïté:
´ le code HDL doit être non ambigu;
´ le code HDL doit correspondre à une structure disponible sur la technologie
ciblée,

Le synthétiseur respecte un contrat,


p. ex. la norme IEEE 1076.6-2004.
Les étapes de synthèses
HDL

HDL Parsing
Identification des erreurs de
syntaxe

HDL Synthesis
Macro recognition+ SM extraction
Resource sharing

Low Level Optimization


Constraints
Macro implememntaion, timing optimization, LUT
mapping, register replication

NGC LOG
La norme IEEE 1076.6-2004

´ IEEE Standard for VHDL Register Transfer Level (RTL) Synthesis


´ “This document specifies a standard for use of VHDL to model synthesizable
RTL digital logic.
A standard syntax and semantics for VHDL register-transfer level synthesis is
defined.
The subset of the VHDL language, which is synthesizable, is described, and
nonsynthesizable VHDL constructs are identified that should be ignored or
flagged as errors.”
´ http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1342563&isnu
mber=29580
Synthétiseur : XST

´ « The XST User Guide:


´ Describes Xilinx® Synthesis Technology (XST) support for Hardware Description
Language (HDL), Xilinx devices, and design constraints for the Xilinx ISE® Design
Suite software
´ Discusses FPGA and CPLD optimization and coding techniques when creating
designs for use with XST »
´ Le document fournit beaucoup d’exemples sur la façon de coder
différents modules matériels.
Types utilisés pour la synthèse

´ Les types std_logic ou std_logic_vector ne devraient être utilisés que pour


des valeurs logiques.
´ Pour représenter des nombres pour les ports d’une entité, les types préférés sont
tirés du package numeric_std :
´ unsigned pour une interprétation non signée
´ signed pour une interprétation signée en complément à deux.

´ Pour représenter des signaux internes d’un module, on a avantage à utiliser les
types plus abstraits comme integer, character ou string, même s’il est plus
difficile de retrouver ces signaux pour débogage dans les produits de la
synthèse ou de l’implémentation.
´ Pour les constantes et les paramètres d’un module, on peut en général utiliser
tous les types abstraits supportés par VHDL, comme real, integer, ou string.
Opérateurs synthétisables
´ La plupart des synthétiseurs peuvent synthétiser des circuits matériels qui
réalisent les opérateurs suivants:
´ logique: and, or, nand, nor, xor, xnor, not
´ relation: =, /=, <, <=, >, >=
´ concaténation: &
´ arithmétique et décalage:
´ +, - ,*, abs
´ /, rem et mod, si l’opérande de droite est une constante égale à une puissance de 2
´ sll, srl, sla, sra, rol, ror

´ Les opérateurs ne sont pas définis pour tous les types, il faut utiliser les
librairies correspondantes.
Le niveau RTL

´ Est-ce tout code VHDL est synthétisable ?


´ Pour qu’un code soit synthétisable, il faut qu’il soit écrit au niveau RTL.
C’est-à-dire processus cloqué et processus combinatoire
´ RTL: Logique combinatoire alimentant des registres en sortie

´ Avec cette définition, un processus cloqué résulte après synthèse en :


´ une logique combinatoire
´ et des registres à la sortie.
Synthèse niveau RTL

• Règle 1 : dans un processus ´ Règle 2 : dans un processus


combinatoire il faut que la liste de cloqué la logique combinatoire
sensibilité soit complète doit être après le test du front de
l’horloge
synthèse niveau RTL

´ Après synthèse, chaque


affectation dans un registre
cloqué entraine un registre
(ou bascule D).
Niveau RTL

´ En RTL les registres sont utilisés entre les différents étages


Exercice :

´ Quelle allure de circuit est synthétisé par le code VHDL suivant ?

A-B X Z
+

CLK +
CLK
C-D Y
+
CLK
Contrôle des latchs transparent

implicitement:
else
Q<=Q;

Le processus que nous avons vu


génère des LATCH transparents pour
que Q retienne sa valeur (lorsque
EN=‘0’)
Contrôle des latchs transparents

´ Une description générale de ce


que nous avons vu est lorsqu’un
signal est affecté dans une
branche de code mais pas dans
les autres, alors un LATCH
transparent est généré.
´ Les affectations incomplètes
génèrent des LATCH
TRANSPARENTS
´ Pour éviter des latch , il faut
vérifier que tous les signaux sont
affectés dans chaque branche
du code.
Contrôle des latchs transparents

´ Règle: pour tout processus


combinatoire, il faut faire des
affectations par défaut au début
pour que le code soit
correctement synthétisé.
Synthèse de logique combinatoire
Liste de sensibilité complète

´ Règle : Dans la synthèse des logiques combinatoire, tous les signaux


d’entrées doivent figurer dans la liste de sensibilité!!!!

´ Signaux d’entrées signifie les signaux qui sont lus par le processus.
Liste de sensibilité complète

SEL is missing

• Le processus s’exécute sur des évènements sur A ou B. Un évènement sur


SEL n’entraine aucune activation du processus, donc Z ne changera pas.
• Cette erreur est difficile à déboguer surtout que Z pourrait avoir la bonne
valeur dans certains cas.
Liste de sensibilité complète

process(A, B)
begin
T1 <= A and B;
T2 <= not(T1);
end process;

process (A, B, T1)


begin
T1 <= A and B;
T2 <= not(T1);
end process;
1. Synthèse de LC : Exemple 1
Synthèse de LC : Exemple 2 if / case

´ L’énoncé if, est plus général avec les clauses elsif ainsi qu’une clause else.
Il est possible de l’utiliser pour donner priorité à certaines conditions par rapport
à d’autres. Cela peut résulter en un circuit plus complexe que nécessaire,
parce que le comportement décrit peut être plus restrictif que ce que le
concepteur a en tête.
Synthèse de LC : Exemple 3 if / case

´ L’énoncé case a l’avantage de représenter des choix qui sont mutuellement exclusifs
et qui ont la même priorité. Il correspond assez exactement à l’action d’un
multiplexeur.

Case est un meilleur choix quand


on n’a pas besoin de priorité!
Synthèse de LC : Exemple 4 boucle for

´ Synthèse d’une Boucle for (n fois) duplication du circuit synthétisé n fois : la


valeur n doit être statique au moment de la synthèse.

´ Boucle while non synthétisable ( nombre d’itération non définit à l’avance)


Synthèse de LC : Exemple 4 boucle for
entity boucledynamique is
port (
x0, xmax : in integer range 0 to 255;
´ Ce code est il synthétisable ?? somme : out integer range 0 to 65535
);
end boucledynamique;

architecture arch of boucledynamique is

begin

process(x0, xmax)
variable sommet : integer;
begin
sommet := 0;
for k in x0 to xmax loop
sommet := sommet + k;
end loop;
somme <= sommet;
end process;
Boucle à bornes indéfinies.
end arch;
Synthèse flot de donnéesà LC
Architecture A1 of E is
Begin Évaluation de
S <= W+X+Y+Z; gauche à droite
End architecture

Architecture A2of E is
Begin Effet de la
S <= (W+X)+(Y+Z); parenthès
End architecture e

Z X Y
Architecture A3 of E is
Begin
S1 <=W+Z; S1
S2 <=S1+X;
S <=S2+Y; S2
End architecture
Synthèse de logique séquentielle
2. Synthèse de logique avec registre: Règle

process(CLK, A) process(CLK)
begin begin
if rising_edge(CLK) then if rising_edge(CLK) then
Z <= A; Z <= A;
end if; end if;
end process; end process;
process(CLK, reset)
begin
if (reset = ‘1’) then
Z <= ‘0’;
elsif rising_edge(CLK)then
Z <= A;
end if;
end process;
2. Synthèse de logique avec registre: Règle

´ Ce code est il synthétisable ?? library ieee;


use ieee.std_logic_1164.all;

entity registremanque1 is
port (
clk, D : in std_logic;
Q : out std_logic
);
end registremanque1;
àUn seul front et une seule architecture arch of registremanque1 is
horloge begin
process(clk)
begin
if (rising_edge(CLK) or falling_edge(CLK))
then
Q <= D;
end if;
end process;
end arch;
2. Synthèse de logique avec registre: Règle

´ Ce code est il synthétisable ??


library ieee;
use ieee.std_logic_1164.all;

entity registremanque is
port (
clk, reset, enable, D : in std_logic;
Q : out std_logic • Pas de
);
end registremanque;
combinatoire
avec l’horloge
architecture arch of registremanque is
begin
process(clk, reset)
begin
if (rising_edge(CLK) and reset = '0' and enable = '1') then
Q <= D;
end if;
end process;
end arch;
-- 4-bit Unsigned Up Accumulator with Asynchronous Reset
--
library ieee;
use ieee.std_logic_1164.all; use
ieee.std_logic_unsigned.all;

entity accumulators_1 is
port(C, CLR : in std_logic;
D : in std_logic_vector(3 downto 0);
Q : out std_logic_vector(3 downto 0));
end accumulators_1;

architecture archi of accumulators_1 is


signal tmp: std_logic_vector(3 downto 0);
begin
process (C, CLR)
begin
if (CLR=’1’) then
tmp <= "0000";
elsif (C’event and C=’1’) then
tmp <= tmp + D;
end if;
end process;
Q <= tmp;
end archi;
2. Synthèse de logique avec registre:
Règle

Avec cette définition, un


processus cloqué résulte
après synthèse en une logique
combinatoire et des registres
à la
sortie.
Exemple 1

´ Écrire le code synthétisable


de ce circuit
Exemple 2
Les astuces de synthèse
´ Pour les processus décrivant des bascules: placer seulement clk et reset dans
la liste de sensibilité
´ Pour les processus décrivant de la logique combinatoire: placer tous les
signaux faisant partie d’expressions dans la liste de sensitivité
´ Transport et after non synthétisable : délais ignorés par le synthétiseur
´ Pour les process combinatoire : Liste de sensibilité préférable au « wait on »
´ Wait until : Supporté en première ligne d'un PROCESS synchrone :
´ wait until clock = value;
´ wait until clock'event and clock = value;
´ wait until not clock'stable and clock = value;
´ Pour représenter des nombres, les types préférés sont unsigned pour une
interprétation non signée et signed pour une interprétation signée en
complément à deux. Ces types sont définis dans le package numeric_std.
´ Uniquement les attribut event et stable sont synthétisable.
´ …

Vous aimerez peut-être aussi