Infotronique 4ème année Module ITA3: Composants des systèmes temps réel

Preview:

DESCRIPTION

Infotronique 4ème année Module ITA3: Composants des systèmes temps réel. Méthodologie de conception Outils de conception La simulation et la vérification. Objectif. Développement de système basé sur des composants de type FPGA Comment décrire le système ? - PowerPoint PPT Presentation

Citation preview

1Cours module ITA3 J.Dubois

Infotronique 4ème annéeInfotronique 4ème annéeModule ITA3:Module ITA3:

Composants des systèmes temps réelComposants des systèmes temps réel

1) Méthodologie de conception

2) Outils de conception

3) La simulation et la vérification

2Cours module ITA3 J.Dubois

ObjectifObjectif

Développement de système basé sur des composants de

type FPGA Comment décrire le système ? Mettre en place les différentes étapes de conception Maîtriser les différents outils de la chaîne de développement Maîtriser la simulation, la vérification fonctionnelle et

temporelle du système

3Cours module ITA3 J.Dubois

PartitionnementPartitionnement

4Cours module ITA3 J.Dubois

FPGA?FPGA?

1) Avantages/Inconvénients par rapport aux DSP

et ASIC

2) Les différentes technologies existantes (Cf.

cours J.Miteran)

3) Les différentes possibilités de description

5Cours module ITA3 J.Dubois

Démarche

1) Top-Down

Décomposé le système a développé en tâches de moins

en moins complexes

2) Down-Top

Codés les composants

Associés les composants

6Cours module ITA3 J.Dubois

Max => O1

Min => O2

7Cours module ITA3 J.Dubois

8Cours module ITA3 J.Dubois

Validation

Simulation

Validation

Simulation

Différentes méthodes de description &

association des composants

9Cours module ITA3 J.Dubois

Les possibilités de description

1) Schématique

2) Littérale

VHDL (variante altera AHDL)

Verilog

Abel

10Cours module ITA3 J.Dubois

Description schématique

La réalisation de circuits se fait à base de cellules standards (portes logiques précaractérisées). On décrit la structure d'un circuit à l'aide de connexions sur des cellules de base à partir d'une librairie.

11Cours module ITA3 J.Dubois

Description schématiqueIl existe deux types de cellules dans la librairie Xilinx accessibles par le core-generator:

les soft-macros qui sont implantées en fonction des flips-flops et des générateurs de fonctions disponibles ,

les hard-macros qui sont préroutées et utilisent complètement les CLB qu'elles occupent ou utilisent des blocs spécifiques (multiplieurs, bloc mémoires).

12Cours module ITA3 J.Dubois

Description schématique

La saisie de schéma à partir de cellules de base permet un développement " bas niveau " qui rend difficile la réalisation de circuits complexes où chaque changement ou amélioration remet en cause toute la description.

spécifications de " haut niveau " tel que le VHDL (VHSIC Hardware Description Language avec VHSIC : Very High Speed Integrated Circuits)

soit en français langage de description de matériel traitant des circuits intégrés à très grande vitesse.

13Cours module ITA3 J.Dubois

Description littérale type VHDL

A partir de la démarche Down-Top blocs de base proche ressources matérielles blocs " haut niveau " associés en ensemble.

Le langage VHDL autorise deux niveaux de description (Cf cours M.Paindavoine):

le niveau structurel décrit le câblage des composants élémentaires ou RTL (Register To Logic),

le niveau comportemental décrit le fonctionnement par des blocs programmes appelés Processus qui échangent des données au moyen de signaux comprenant des instructions séquentielles.

14Cours module ITA3 J.Dubois

Etapes du flot de conceptionEtapes du flot de conception

Compilation du code VHDL ou Verilog (ou vérifcation schématique)

Synthèse

Placement Routage (P & R)

Configuration

15Cours module ITA3 J.Dubois

Etapes du flot de conceptionEtapes du flot de conception

Synthèse si code fonctionnel !!!!!

= > Pas instructions comme wait!

16Cours module ITA3 J.Dubois

Etapes du flot de conceptionEtapes du flot de conception

Etapes 1 & 2 : Synthèse & Simulation

17Cours module ITA3 J.Dubois

Edition/Synthèse

1) Création des modèles VHDL (éditeur de texte). Il s’agit de créer des modèles

VHDL synthétisables au niveau RTL (Register To Logic). Les fonctions

complexes sont décrites de manière comportementale. La synthèse permet à

partir d'une spécification VHDL, la génération d'une architecture au niveau

transfert de registre RTL (register transfert level) qui permet l'ordonnancement

et l'allocation de ressources sans une représentation physique, compilable par un

outil de synthèse logique. Cette étape est réalisable à condition de se limiter à

un sous ensemble du langage VHDL qui soit strictement synthétisable.

équations logiques

18Cours module ITA3 J.Dubois

Résultats de la synthèselibrary ieee;

use ieee.std_logic_1164.all;

entity ADAP2TO2 is port(

I1:in std_logic_vector (31 downto 0);

I2:in std_logic_vector (31 downto 0);

O1: out std_logic_vector (31 downto 0);

O2: out std_logic_vector (31 downto 0);

CLK: in std_logic;

SEL: in std_logic );

END ADAP2TO2;

architecture arch_ADAP2TO2 of ADAP2TO2 is

begin

process (CLK)

Begin

if (CLK'event and CLK='1') then

if (SEL = '0') then O1 <= I1; O2<= I2;

else O1 <= I2; O2 <= I1;

end if;

end if;

end process;

end arch_ADAP2TO2;

19Cours module ITA3 J.Dubois

if (CLK'event and CLK='1') then

if (SEL = '0') then O1 <= I1; O2<= I2;

else O1 <= I2; O2 <= I1;

end if;

end if;

Ensemble de composants décrits et

associés en VHDL (port map sur

composants de base)

20Cours module ITA3 J.Dubois

Résultats de la synthèseDevice utilization summary:---------------------------

Selected Device : 2s300eft256-6

Number of Slices: 37 out of 3072 1%

Number of Slice Flip Flops: 64 out of 6144 1%

Number of 4 input LUTs: 64 out of 6144 1%

Number of bonded IOBs: 129 out of 182 70%

Number of GCLKs: 1 out of 4 25%

21Cours module ITA3 J.Dubois

Simulation fonctionnelle

2) La simulation fonctionnelle ne tient pas compte des capacités

de liaison dues au routage entre les différentes cellules. Elle

permet donc de vérifier uniquement la validité du circuit par

rapport au cahier des charges d'un point de vue fonctionnel et

non d'un point de vue temporel.

22Cours module ITA3 J.Dubois

Etapes du flot de conceptionEtapes du flot de conception

Etape 3 : Projection

23Cours module ITA3 J.Dubois

CLB des FPGA

Composants

de library

VHDL =>

CLBs

24Cours module ITA3 J.Dubois

Projection

3) La projection

Translate

Mapping

25Cours module ITA3 J.Dubois

Etapes du flot de conceptionEtapes du flot de conception

Etape 4 : Place & routage

26Cours module ITA3 J.Dubois

Placement routage

4) L'étape suivante consiste à attribuer les cellules (CLB) du

circuit à chaque équation délivrée par la projection et à définir

les connexions. L'algorithme de placement place

physiquement les différentes cellules et les chemins

d'interconnexion dessinés entre les cellules afin de faciliter le

routage. Des directives jointes à la netlist permettent une

bonne répartition des cellules

27Cours module ITA3 J.Dubois

28Cours module ITA3 J.Dubois

Placement routage

A partir de la description du système

=> des délais précis (fichier SDF)

peuvent décrire le système réalisé

29Cours module ITA3 J.Dubois

Ajout de contraintes

Placement des entrées/sorties

Placement des macro-blocks (multiplieurs, blocks mémoires…)

Outil : Floorplanner

Description littérale (fichier de type UCF)

30Cours module ITA3 J.Dubois

Example de fichier UCFNET "clk" TNM_NET = "clk_raw";TIMESPEC "TS_clk" = PERIOD "clk" 100 MHz HIGH 50 %;NET "clk" LOC = "AA12"; # 100 MHz oscOFFSET = IN 5 ns BEFORE "clk";OFFSET = OUT 5 ns AFTER "clk";

NET "I1<0>" LOC = "B6";NET "I1<1>" LOC = "A5";NET "I1<2>" LOC = "B5";NET "I1<3>" LOC = "A4";

#Commentaires!!!# Loc the DLL and GBUF is optional in this design#INST "clk_comp_clkdll_1" LOC = DLL0;#INST "clk_comp_clk0_bufg_1" LOC = GCLKBUF1;#INST "clk_comp_clkdv_bufg_1" LOC = GCLKBUF0;#NET "sw_input<*>" pullup;

31Cours module ITA3 J.Dubois

Etapes du flot de conceptionEtapes du flot de conception

Etape 5 : Simulation après placement

routage (back-annoted)

32Cours module ITA3 J.Dubois

Simulation temporelle5) Simulation temporelle après placement et routage (Modelsim) => back

annotated.

Il s’agit ici de simuler un modèle VHDL avec les informations de délais

extraites du modèle obtenu. :

=> les longueurs d'interconnexion et les délais de propagation

au partionnement et au routage.

L’outil Modelsim permet d’utiliser un modèle de test VHDL avec un

composant à tester décrit en langage Verilog

33Cours module ITA3 J.Dubois

Intérêts simulation Back-annoted

Simulation réalise

Association avec des descriptions de

composants extérieurs (SRAM, SDRAM) si

l’on possède les modèles avec description

fonctionnelles (VHDL + SDF)

34Cours module ITA3 J.Dubois

Etapes du flot de conceptionEtapes du flot de conception

Etape 6 : Configuration

35Cours module ITA3 J.Dubois

Configuration

6) Configuration du FPGA. Il s’agit placer le FPGA dans la

configuration souhaitée. Cette configuration est effectuée soit

par transfert d’un fichier binaire (Bitstream) directement au

FPGA (via ex câble JTAG), soit par l’intermédiaire d’une

PROM à la mise sous tension du système.

36Cours module ITA3 J.Dubois

RappelRappel

Compilation du code VHDL ou Verilog (ou vérification schématique)

Synthèse

Placement Routage (P&R)

Configuration

37Cours module ITA3 J.Dubois

Outils de développement

1) Edition

vi, nedit, Emacs, (voir ModelSim, ISE…)

2) Synthèse

ISE (5.1 -> 6.3), outil pour composants Xilinx

Leonardo, outil pour composants Altera

Synopsys DC

Symplify

38Cours module ITA3 J.Dubois

Outils de développement

3) P & R

ISE (5.1 -> 6.3) , outil pour composants Xilinx

Quatrus II, outil pour composants Altera

Cadence

4) Simulation

ModelSim (5.8)

39Cours module ITA3 J.Dubois

Flot de conceptionFlot de conception sur example simple sur example simplelibrary ieee;

use ieee.std_logic_1164.all;

entity MUXD is port( IN0:in std_logic; IN1:in std_logic; CLK: in std_logic; SEL: in std_logic; Z: out std_logic );

END MUXD;

architecture arch_MUXD of MUXD isbegin process (CLK) begin if (CLK'event and CLK='1') then if (SEL = '0') then Z <= IN0; else Z <= IN1; end if; end if; end process;end arch_MUXD;

IN0

IN1

CLK

SEL

ZMUX2TO2

40Cours module ITA3 J.Dubois

Edition/Compilation/SimulationEdition/Compilation/Simulation

1) Démo de emacs avec package VHDL

2) Description de l’outil ModelSim

3) Compilation/Synthèse sous ModelSim

4) Simulation sous ModelSim

5) Support

41Cours module ITA3 J.Dubois

Démo ISE : Placement Démo ISE : Placement routage/Configurationroutage/Configuration

1) Rapports

2) Floorplanner

3) Contraintes

4) Configuration

42Cours module ITA3 J.Dubois

Techniques de simulation et de Techniques de simulation et de vérificationvérification

1) Scripts (tcl)

2) Testbenches

Composant sans entrées/sorties chargés de

donner les vecteurs de test

43Cours module ITA3 J.Dubois

Réalisation de scriptsRéalisation de scripts

Utilisation du language Tcl

Forcer un signal : force

Lancer simulation : run

44Cours module ITA3 J.Dubois

Réalisation de testbenchesRéalisation de testbenches

1) Définir les signaux pour connecter les composants internes (et externes…)

2) Définir un temps de simulation

3) Définir des variables pour utiliser des fichiers de données

4) Ouverture et fermeture de fichiers de données

5) Vérification des résultats

6) Mise en place de testbenches plus complexes

Fonction/procédures

Process en parallèle

45Cours module ITA3 J.Dubois

Réalisation de testbenchesRéalisation de testbenches

1) Définir les signaux pour connecter les

composants internes (et externes…)

2) Affectation des entrées/sorties

46Cours module ITA3 J.Dubois

Réalisation de testbenchesRéalisation de testbenches

2) Définir des variables pour utiliser des fichiers de

données

FILE data : text;

variable sample : line;

variable I1_var, I2_var :std_logic_vector (31 downto 0);

variable O1_var,O2_var :std_logic_vector (31 downto 0);

variable SEL_var: std_logic;

47Cours module ITA3 J.Dubois

Réalisation de testbenchesRéalisation de testbenches

3) Définir un temps de simulation constant TCLK_COP : time := 15 ns; constant TCLKL : time := 15 ns;

CLK <= '0'; wait for 10 ns; CLK <= '1'; wait for 10 ns; wait for (2000*TCLK_COP);wait until CLK_COP'event and CLK_COP = '1';

Instructions non synthétisables

=> pour simulation seulement

48Cours module ITA3 J.Dubois

Réalisation de testbenchesRéalisation de testbenches

4) Ouverture et fermeture de fichiers de données file_open (data,"adap2to2.dat", read_mode);

while not endfile(data) loop readline (data,sample); read (sample,I1_var); read (sample,I2_var); read (sample,SEL_var); read (sample,O1_var); read (sample,O2_var); end loop; file_close (data);

49Cours module ITA3 J.Dubois

Réalisation de testbenchesRéalisation de testbenches

5) Vérification des résultats assert O1 = O1_var report "Out1 is incorrect" severity error; assert O2 = O2_var report "Out2 is incorrect" severity error;

50Cours module ITA3 J.Dubois

Présent/FuturPrésent/Futur

51Cours module ITA3 J.Dubois

Présent/FuturPrésent/Futur

1) Vers Co-processing & co-design

Co-processeur associé à processeur basé sur un

DSP ou processeur multi-média

2) Vers le prototypage rapide