Vous êtes sur la page 1sur 125

Chapitre N°1

Les Systèmes Embarqués


Conception et technologie

Kamel SMIRI
Plan

1. Ch1: Introduction aux Systèmes Embarqués (SE)


2. Ch2: Flots de conception des SE
3. Ch3: Outils pour la simulation, la modélisation et
l’évaluation des performances
4. Ch4: Langage VHDL
5. Ch5: Langage SystemC
6. Ch6: Les concepts temps réels dans les SE
K. SMIRI 2
Ch1: Introduction aux systèmes embarqués et à
la conception conjointe logiciel-matériel

Motivation: Pourquoi les systèmes


embarqués ?
Conception d'un système embarqué :
Importance de la prise en charge de
l’application
Conception conjointe logiciel/matériel (Co-
design)
Phases de conception
Conclusion K. SMIRI 3
Définitions (wikipedia):

Un système embarqué peut être défini comme un


système électronique et informatique autonome, qui est
dédié à une tâche bien précise. Ses ressources
disponibles sont généralement limitées. Cette limitation
est généralement d'ordre spatial (taille limitée) et
énergétique (consommation restreinte).

SoC « System-on-Chip » : Système sur Silicium ou


système monopuce ou système sur puce ou système
embarqué sur silicium (System on a Chip, Embedded
system) = HW + SW

K. SMIRI 4
Exemples
Différents secteurs industriels
Télécoms
Aéronautique
Automobile
Construction électrique
Transport ferroviaire
Cartes à puce ( et RFID)
Explosion des besoins : doublement du nombre
d'objets intelligents et de la complexité embarquée
tous les 2/3 ans
Chaque industrie est confrontée à des contraintes
spécifiques

K. SMIRI 5
Systèmes avioniques

K. SMIRI 6
Systèmes de détections

K. SMIRI 7
Multimedia

K. SMIRI 8
Motivations
Réduire le temps de prototypage --> time-to-market

Réduire le coût de production

Faible consommation de puissance

Taille réduite du système

Fiabilité

K. SMIRI 9
Les défis Complexité algorithmique MIPS
∼ Loi de Shannon 4000

3500

3000
Complexité (log)

3G
2.5G
GAP 2500

Performances 2000
2G des
Processeurs 1500
1G ∼ Loi de Moore
1000
Capacité des Batteries
500

0
1982 1990 1998 2006 GSM GPRS EDGE UMTS

9.6 kbps 115/384 kbps 2 Mbps


Voix, Texte WAP, GPS Multimédia

Traitement de signal
intensif

K. SMIRI 10
ARM PrimeXsys
Wireless platform: Standard SoC Kernel based on ARM926EJ-S

Source: ©ARM

K. SMIRI 11
Triscend A7 CSoC
● ARM7TDMI + FPGA

Source: ©Triscend
K. SMIRI 12
ASIP: reconfigurable µprocessor

Tensilica
Xtensa

Source: ©Tensilica
K. SMIRI 13
Les compromis

Structured RTL FPGA FPGA & ASIP DSP GPP


Custom Flow GPP
Low MOPS/mW High

Low Programmability High

High Time to Develop/Iterate New Application Lower

High Cost to Develop/Iterate New Application Lower


K. SMIRI 14
Plateformes cibles
Communication Templates Computation Templates Scheduling/Arbitration
TDMA
EDF
Cipher FPGA proportional
WFQ share FCFS
DSP
DSP
RISC
SDRAM dynamic static
fixed priority
LookUp
µE

Chercher la meilleure architecture qui


Architecture #1
s’adapte en performance à votreArchitecture #2 ?
application
LookUp RISC
EDF
µE µE µE
TDMA
static
Priority
µE µE µE
WFQ
Cipher DSP

K. SMIRI 15
Plan

1. Ch1: Introduction aux Systèmes Embarqués (SE)


2. Ch2: Flots de conception des SE
3. Ch3: Outils pour la simulation, la modélisation et
l’évaluation des performances
4. Ch4: Langage VHDL
5. Ch5: Langage SystemC
6. Ch6: Les concepts temps réels dans les SE

K. SMIRI 16
Ch2: Flots de conception des SE
Le flot de conception en Y: Co-design

Application Architecture

Association

Co-simulation Quel niveau?

Paramètres: temps,
Analyse énergie…

K. SMIRI 17
Niveaux d’implémentation

SYSTEM

MODULE
+
Précision
Accélération

GATE

CIRCUIT
Vin Vout

DEVICE
G
S D
n+ n+

K. SMIRI 18
Niveaux de simulation
Abstraction Level Objectives
Algorithmic Application bihavior
TLM Communicants Syst description.= comm process,
Process Data exchange between functions.
Transaction
(CP)
Level Programmer View Defined architecture. Functional
Précision
Accélération

Modeling verification. Communication with


(PV) channels

Cycle Cycle Accurate* µArchi, pipeline, …


Accurate
Précis au bit (CABA)* Communication protocol.

and/or
Bit accurate
RTL : Register Implementation details:
Transfer Level K. SMIRI
functional units, logic gates 19
La technologie des transistors
CMOS (complementary Metal oxyde silicon)
High integration density
Low power
Bipolar
High frequency than CMOS
High output current
More power consumption
BiCMOS: Combining CMOS and Bipolar technologies
SOI (Silicon On Insulator)
High integration density
Very fast circuits
Very low power
Very expensive

K. SMIRI 20
Le transistor
V dd Tm
S D
PMOS E= ∫ P(t ) dt
0

Ve

V s
P = Pstatic + Pdynamic

G
NMOS I
m
I I
m m
I
m
p p p p
o o o o I I I I I
s s s s m m m m m
p p p p p
o o o o o
s s s s s

Vdd Vdd

1
1
Ve Ve
0 Icharge
0
Idécharge 1
Pdynamic = Cch.Vdd2.F
1 Vs
Vs 0 0
1 1
Ve Cch Pstatic = Isub. Vdd
Ve Cc h 0
0
(c)

K. SMIRI 21
Le dessin de masque

powhi

dout
din

powlo

© Mosis (http://www.
mosis.org/Technical/
Designsupport/
polyflowC.html);
Tool: Cadence
K. SMIRI 22
Le Niveau transistor

using analog simulator


SPICE (University of Berkeley ), ELDO (Mentor)
Input: Models (transistor, gates, macro)
Textual netlist (schematic, extracted layout, behavioral)
Output: Circuit response (waveforms, patterns)
Time domain
Frequency domain
Power analysis

K. SMIRI 23
Le Niveau transistor

K. SMIRI 24
Niveau portes logiques

Models contain gates as the basic components.


Provide accurate information about signal transition
probabilities and can therefore also be used for power
estimations.
Delay calculations can be more precise than for the RTL.
Typically no information about the length of wires (still
estimates).
Term sometimes also employed to denote Boolean
functions (No physical gates; only considering the
behavior of the gates).
Such models should be called “Boolean function
models”.
Tools: PowerGate (Synopsys), Diesel (Philips)

K. SMIRI 25
Niveau portes logiques

source:
http://geda.
seul.org/
screenshots/
screenshot-
schem2.png

K. SMIRI 26
Niveau RTL

At this level, we model all the components at the


register-transfer level, including
arithmetic/logic units (ALUs),
registers,
memories,
muxes and decoders.
Models at this level are always cycle-true.
Automatic synthesis from such models is not a major
challenge.
Tools: PETROL (Philips)

K. SMIRI 27
PCWrite
P B
C

1
0
MemWrite
i2 a2 a1
Memor MemRead
y
Niveau RTL

*
Instruction register IR IRWrite

25:0
20:16
25:21
31:26

15:0
15:11
RegDes

1
1
0
t

K. SMIRI
0
Controller

sign_ i3 a3 a2 RegWrit
extend a1 Speich e
Re
ger
ALUSel
4

B
ALUSel
3
2
1
0
1
0

AL ALUOp
U
TargetWrit
T

e
31: 28

PCSourc
28
1
2
0

e
§ * "00“
RTL implementation

Hardware description language


VHDL
Verilog

Target platforms
ALTERA : Apex, Stratix…
StratixII EP2S60
Quartus II
• 48.352 LC
Model sim
• 493 Pins
XILINX : Spartron, Virtex…
• 288 DSP block
• 2.5 Mb Memory
K. SMIRI 29
Exemple de simulation RTL

K. SMIRI 30
Le prototypage traditionnel

K. SMIRI 31
Le prototypage traditionnel

K. SMIRI 32
FPGA: Field Programmable Gate
Array
Avantages :
=> technologie « facile » à maîtriser
=> temps de développement réduit
=> reprogrammable pour certains ( idéal pour le prototypage )
=> coût peu élevé

Inconvénients :
=> performances non optimisées
=> architecture interne entièrement figée
=> système numérique seul ( avec quelques exceptions )

K. SMIRI 33
Technologie des FPGA

Plusieurs types :

=> programmés par RAM ( XILINX et ALTERA )

=> programmés par EEPROM ou FLASH ( LATTICE et ACTEL)

=> programmés par antifusible ( ACTEL )

Les premiers se prêtent particulièrement bien au prototypage des


Systèmes sur puce programmable (SOPC)

K. SMIRI 34
Les FPGA de type SRAM
Caractéristiques d’un circuit récent :

K. SMIRI 35
Architecture interne d’un FPGA

K. SMIRI 36
Stratix d’ALTERA
Cellule logique de base

Stratix d’ALTERA
K. SMIRI 37
Cellule logique de base

Virtex de XILINX

K. SMIRI 38
Les FPGA pour les SOPC
•Grand nombre de cellules logiques
•Quantité de mémoire configurable importante
•Entrées sorties compatibles avec de multiples normes
•Blocs spécialisés ( multiplieurs, PLLs )
•Reprogrammable

Pour réussir à implanter un système dans un FPGA de


manière efficace, il est indispensable de bien connaître
sa structure interne et ses limites du point de vue des
Performances.

K. SMIRI 39
Différence entre le langauge C et VHDL

VHDL C/C++/pascal

Equation compilation

Synthése assembleur

1. mov al,a
2. Mov bl,b
3. Xor al,bl
4. Not al

K. SMIRI 40
Flot de conception

K. SMIRI 41
Plan

1. Ch1: Introduction aux Systèmes Embarqués (SE)


2. Ch2: Flots de conception des SE
3. Ch3: Outils pour la simulation, la modélisation et
l’évaluation des performances
4. Ch4: Langage VHDL
5. Ch5: Langage SystemC
6. Ch6: Les concepts temps réels dans les SE

K. SMIRI 42
Ch4: Langage VHDL
Qu’est-ce qu’un langage de description ?
Ce n’est pas un langage informatique classique :
il sert à décrire un matériel et à créer un circuit.
blocs d’instructions exécutés simultanément
prise en compte de la réalité : possibilité de spécifier
des retards, de préciser ce qui se passe en cas de
conflits de bus, …
l’information est associée à des signaux qui
modélisent des équipotentielles; elle peut être datée et
permettre de construire des chronogrammes

K. SMIRI 43
LE VHDL PAR L’EXEMPLE
OPERATIONS COMBINATOIRES.
Etude d’un comparateur de deux fois 4 bits.
Etudions un comparateur chargé de comparer deux nombres de
quatre éléments binaires.

Nous pouvons y distinguer les différentes parties le constituant, à savoir


:
Les entrées A et B de quatre bits chacunes, la sortie A = B.
Le corps du design délimite la frontière entre la structure interne du
comparateur et le monde extérieur.

K. SMIRI 44
LE VHDL PAR L’EXEMPLE
Organisation simple d’une description vhdl.
Une description vhdl est composée de deux parties: une entité et
une architecture.

L’entité décrit l’interface entre le design et le monde extérieur.


L’architecture décrit la structure interne du composant. Il y a
plusieurs façons de décrire ce fonctionnement.

K. SMIRI 45
LE VHDL PAR L’EXEMPLE
La description vhdl du comparateur est donnée ci-dessous :

L’entité est décrite par l’intermédiaire de l’instruction


PORT.Celle-ci liste les différentes entrées et sorties du design.
Pour chaque donnée transférée à travers un PORT on définit son
mode et son type.

K. SMIRI 46
L’entité

Les signaux d’entrée/sortie de l’entité sont des PORTS


un PORT est défini par :
rst
un nom q[7:0]
d[7:0] BOITE_NOIRE
un mode (sens) co
clk
un type

le MODE correspond au sens de transfert


IN entrée (monodirectionnelle)
OUT sortie (monodirectionnelle)
INOUT entrée/sortie (bidirectionnelle)
BUFFER sortie rebouclée

K. SMIRI 47
LE VHDL PAR L’EXEMPLE
Le type peut être un type bit, bit_vector, std_logic, std_logic_vector, un
entier ou encore un type défini par l’utilisateur. Certains type nécessitent, pour
être employés, l’utilisation de bibliothèque particulière.
Utilisons un autre type en regroupant nos entrées en deux vecteurs de quatre
bits chacun :

K. SMIRI 48
Les types
Tout objet VHDL doit être associé à un type
(objet = signal, constante ou variable)

Un type définit:
L’ensemble des valeurs possibles
L’ensemble des opérateurs disponibles

Organisation des types en VHDL:


Types prédéfinis (integer, bit, bit_vector, boolean,etc…)
Types complémentaires
IEEE1164 (std_logic, td_logic_vector)
Types spécifiques définis par les outils des fournisseurs
Types utilisateur (type énuméré, sous-type)

49
Types et opérateurs prédéfinis
TYPE CLASSE
boolean → type énuméré
bit → type énuméré
character → type énuméré
integer → type numérique Tout type appartient à
natural → sous-type numérique une classe.
positive → sous-type numérique
string → chaîne de caractères
bit_vector → array of bit
time → physique

OPERATEURS
Booléens (logiques) not, and, or, nand, nor, xor, xnor
De comparaison =, /=, <, <=, >, >=
De décalage sll, srl, sla, sra, rol, ror
Arithmétiques sign +, sign -, abs, +, -, *
De concaténation &

K. SMIRI 50
Le type std_logic (IEEE1164)

Le type bit de VHDL peut prendre les valeurs '0' et '1'. Ce type est
insuffisant pour décrire des signaux logiques réels (haute-
impédance, forçage, etc.)
Le standard IEEE1164 définit des signaux multi-valeurs répondant
aux besoins de systèmes réels, et facilitant la simulation
Le type std_logic (et std_logic_vector) possède 9 valeurs :
'0', '1', 'X', 'L', 'H', 'W', 'Z', 'U', '-'
L'emploi du type std_logic est possible via la library IEEE1164
(cf. déclaration d'une Library) :
library ieee;
use ieee.std_logic_1164.all;

K. SMIRI 51
Les types utilisateurs (exemples)
Syntaxe d’une déclaration de type:

type nom_type_entier is range start to end;


type nom_type_énuméré is (liste des valeurs);
type nom_type_tableau is array (start to end) of element_type;

Exemples:

type memory_size is range 1 to 1024; -- intervalle montant


type etat is (reset, stop, wait, go);
type my_word is array (0 to 31) of bit;
type table_vérité is array (bit, bit) of bit;

K. SMIRI 52
Les objets

Objet = élément nommé ayant des valeurs d’un type donné


4 classes d’objets : - contantes
- variables
- signaux
- fichiers
La constante possède une valeur fixe pendant la simulation.
Déclaration d’une constante :
constant nom_constant : type [:= expression] ;
exemple : constant PERIODE : time :=20 ns;
constant BUS : std_logic :=‘1’;

K. SMIRI 53
Les variables

C’est un simple “conteneur” dont la valeur peut changer en cours de


simulation.
Déclaration d’une variable
variable nom_variable : type [:= expression]

La variable a une valeur initiale explicite (si elle est précisée dans la
déclaration) ou implicite. Dans ce cas elle dépend du type.
Exple : ‘0’ pour le type std_logic
false pour le type boolean
de manière générale, la valeur initiale est la valeur la plus à
gauche des valeurs prises par le type

K. SMIRI 54
Les signaux

Les signaux représentent des formes d’ondes logiques sous forme de


paires temps/valeur. Ils permettent de modéliser les caractéristiques
temporelles des signaux réels et de prendre en compte les différents
délais.
Ils sont essentiels pour la modélisation de comportements concurrents.
Un signal peut être de n’importe quel type.
Déclaration d’un signal
signal nom_signal: type [:= expression] ;

valeur initiale : même chose que pour les variables.

K. SMIRI 55
LE VHDL PAR L’EXEMPLE
-- comparateur de deux fois quatre bits
--
-- utilisation de la bibliothèque nécéssaire au type
std_logic
library ieee;
use ieee.std_logic_1164.all;
ENTITY eqcomp4 IS
PORT ( a : IN STD_LOGIC_VECTOR(3 downto 0);
b : IN STD_LOGIC_VECTOR(3 downto 0);
aeqb : OUT STD_LOGIC);
END eqcomp4;
ARCHITECTURE logique OF eqcomp4 IS
BEGIN
aeqb <= '1' WHEN ( a = b ) ELSE '0';
END logique;

K. SMIRI 56
Exercices
Exercice 1 : Définir
l’entité décrivant un
additionneur de deux
fois un bit.

Exercice 2 : Définir
l’entité décrivant un
additionneur de deux
mots de quatre bits.

K. SMIRI 57
Déclaration d’entité
Syntaxe d’une déclaration d’entité:
entity nom_entité is
[generic(liste_generique)]
[port(liste_port)]
end [entity] nom_entité;

EXEMPLES entity comparateur is


port(
entity full_adder is signal a : in bit_vector(7 downto 0);
port( X,Y,Cin: in bit; signal b : in bit_vector(7 downto 0);
Cout, Sum: out bit);
signal egal : out bit);
end full_adder; end comparateur ;

K. SMIRI 58
Déclaration d’un corps d’architecture
Syntaxe d’une architecture:
architecture nom_architecture of nom_entité is
{signal_declaration} | {constant_declaration}
{type_declaration} | {component_declaration}
begin
{ instruction_concurrente}
end [architecture] nom_architecture;

EXEMPLES :
architecture dataflow of full_adder is
signal A, B: bit;
architecture simple of comparateur is begin
-- zone de déclaration vide
A<=X xor Y;
begin
B<=A xor Cin;
egal <= ‘1’ when a = b else ‘0’; Cout<=B xor (X and Y);
Sum<=A xor Cin;
end simple ; end architecture dataflow;

K. SMIRI 59
L’architecture

L'ARCHITECTURE décrit le fonctionnement de la boîte noire


déclarée dans l'ENTITY
VHDL permet différents niveaux de description :
Haut niveau (comportemental) : description de la fonctionnalité, sans
référence au 'hardware' sous-jacent
Bas niveau (structurel) : description par utilisation et interconnexion de
'components' (par ex. portes logiques), comme pour un schéma
D'une manière générale les descriptions de haut niveau favorisent la
portabilité, les descriptions de bas niveau l'efficacité
A tout moment (y compris à l'intérieur d'une même architecture),
c'est le concepteur qui choisit le niveau de description adéquat

K. SMIRI 60
Architecture : description
comportementale

architecture ARCH1 of COMPARATEUR is


begin
C <= '1' when (A=B) else '0';
A
C end ARCH1;
Comparateur
B

architecture ARCH2 of COMPARATEUR is


begin
C <= not(A xor B);
end ARCH2;

K. SMIRI 61
Architecture : description structurelle

A U0 U1
S C use work.gatespkg.all;
xor2 inv
B architecture ARCH3 of COMPARATEUR is
signal S : bit;
begin
U0 : xor2 port map (A,B,S);
U1 : inv port map (S,C);
end ARCH3;
Les signaux internes sont
déclarés en tête de l'architecture
(même déclaration que les
signaux d'entité, sans 'mode')

K. SMIRI 62
Architecture : choix de la description

Les descriptions comportementales sont recommandées.


en comportemental :
aeqb <= '1' WHEN a = b ELSE '0';

en structurel bas niveau :


u0: xnor2 PORT MAP (a(0), b(0), xnr(0));
u1: xnor2 PORT MAP (a(1), b(1), xnr(1));
u2: xnor2 PORT MAP (a(2), b(2), xnr(2));
u3: xnor2 PORT MAP (a(3), b(3), xnr(3));
u4: and4 PORT MAP (xnr(0), xnr(1), xnr(2),
xnr(3), aeqb);

⇒ meilleure compacité ⇒ meilleure lisibilité


⇒ meilleure portabilité

K. SMIRI 63
Parallèle / Séquentiel

VHDL permet de décrire des fonctionnements parallèles


(combinatoires) et séquentiels (synchrones)
Tout repose sur le PROCESS
à l'extérieur d'un PROCESS les opérations s'exécutent simultanément,
et en permanence
à l'intérieur d'un PROCESS les instructions s'exécutent séquentiellement
un PROCESS s'exécute à chaque changement d'état des signaux auxquels il
est sensible ('sensitivity list')
Les signaux modifiés par le process sont mis à jour à la fin de celui-ci
les variables déclarées conservent leur valeur d’une activation à une autre
(ce qui n’est pas le cas des sous-programmes)

K. SMIRI 64
Les instructions concourantes

Rappels :
elles se trouvent entre les mots réservés begin et end architecture
elles sont évaluées indépendamment de leur ordre d’écriture
elles sont à l’extérieur du PROCESS

Liste d’instructions :
Assignation (<= )
assignation conditionnelle (WHEN)
assignation sélective (WITH)

K. SMIRI 65
Assignation simple de signal

Syntaxe: [label:] signal<= expression;

« signal » ne peut pas être une entrée (mode in).


« expression » ne peut pas utiliser de signaux de sortie
(mode out)
« signal » et « expression » doivent être de même type.

Exemples C <= not(A xor B);

2007-2008 C. Soyer
K. SMIRI
- M. Vernet 66
Assignation conditionnelle
Syntaxe: [label:] signal <= {expression when condition else}
expression [when
condition];
Une condition a forcément une valeur booléenne (true,
false).
Le résultat d’un test d’égalité ou d’une comparaison en
général est de type booléen library ieee;
use ieee.std_logic_1164.all;
Exemple: entity MUX4 is
Multiplexeur 4-->1 port( a,b,c,d : in std_logic_vector(3 downto 0);
e : out std_logic_vector(3 downto 0);
4 s1,s0 : in std_logic );
a end MUX4;
b 4
4 architecture ARCHMUX4 of MUX4 is
4 e begin
c
4 e <= a when (s1 & s0) = "00" else
d b when (s1 & s0) = "01" else
c when (s1 & s0) = "10" else
d;
s1 s0 end ARCHMUX4;

K. SMIRI 67
Assignation sélective

Comme l’assignation conditionnelle, l’assignation sélective de signal


permet de sélectionner une expression à affecter à un signal, sur la
base d’une condition

Différences:
Une seule condition
La condition porte sur les valeurs possibles d’une expression ou d’un
signal (appelé sélecteur)
⇒ valeurs testées pas forcément booléennes (plus de deux
valeurs possibles)

K. SMIRI 68
Assignation sélective
Syntaxe: [label:] with expression select
signal <= {expression when valeur,}
expression when
valeur;

Les conditions sont mutuellement exclusives (une


condition ne peut être un sous-cas d’une autre
condition)

Exemple:
with sel select
s <= E0 when “00”,
E1 when “01”,
E2 when “10”,
E3 when “11”;

K. SMIRI 69
Le Processus
Syntaxe: [label :] process [liste_de_sensibilité)] [is]
type_declaration | subtype_declaration |
constant_declaration | variable_declaration |
function_declaration | procedure_declaration
begin
{instruction_séquentielle}
end process [label];

Instructions séquentielles:
sont évaluées dans l’ordre dans lequel elles sont écrites
analogues avec les instructions des langage de programmation
conventionnels

K. SMIRI 70
Le Processus
Liste de sensibilité
Liste des signaux (séparés par des virgules) dont un événement
(changement de valeur) entraîne l’exécution du processus
A chaque exécution, l’ensemble des instructions du processus sont
évaluées, puis le processus s’arrête en attendant un nouvel
événement
Cette liste est optionnelle. Dans le cas où elle est omise (et
seulement dans ce cas), on doit trouver une instruction wait dans
la zone des instructions séquentielles.

Zone de déclaration
Les objets déclarés dans cette zone sont locaux au processus.

K. SMIRI 71
L’instruction WAIT

Instruction séquentielle, plusieurs instructions possibles dans un même


process.
Exemples :

K. SMIRI 72
Le Processus

Instructions séquentielles
assignation simple (de signal ou de variable)
if
case
for

K. SMIRI 73
Instruction IF
C ’est l ’équivalent séquentiel de l ’assignation conditionnelle
Syntaxe : [label :] if condition then
{instruction_sequentielle}
{elsif condition then
{instruction_sequentielle} }
[else {instruction_sequentielle} ]
end if [label];
Exemples

process (a,b) process (a,b,sel1,sel2)


begin begin
if a=b then if sel1=‘1’ then z<=a;
equal <=‘1’;
else elsif sel2=‘1’ then z<=b;
equal<=‘0’; else z<=c;
end if; end if;
end process; end process;

K. SMIRI 74
Instruction CASE
C ’est l ’équivalent séquentiel de l’assignation sélective de signal.
(Permet l ’execution d ’une opération en fonction de la valeur prise par une
expression)

Syntaxe : [label :] case expression is


when valeur => {instruction_sequentielle}
{when valeur => {instruction_sequentielle}}
end case [label];
Exemple : Attention : valeur et
process(light)
begin expression doivent
case light is être du même type
when red => next_light <= green;
when amber => next_light <= red;
when green => next_light <= amber;
end case;
end process;

K. SMIRI 7575
Instruction de boucle (1/3)
Instruction FOR
Syntaxe :
[etiquette :] for identifiant in discrete_range loop
{instruction_sequentielle}
end loop [etiquette];

Exemple :

-- a, b et s sont des signaux de type


-- std_logic_vector(7 downto 0)

process(a,b)
begin
for i in 7 downto 0 loop
s(i) <= not(a(i) xor b(i));
end loop;
end process;

K. SMIRI 76
Instruction de boucle (2/3)

Instruction WHILE
Syntaxe :
[etiquette :] while condition loop
{instruction_sequentielle}
end loop [etiquette];

Exemple :

process(a,b)
begin
while i < 10 loop
i<=i+1;
end loop;
end process;

K. SMIRI 77
Instruction de boucle (3/3)
Boucle générale
Syntaxe :
[etiquette :] loop
{instruction_sequentielle}
end loop [etiquette];

Exemples : L’instruction exit stoppe


l’itération et sort de la boucle.
L’instruction next stoppe
l’itération courante et execute
la suivante.
Boucle infinie Boucle avec sortie
loop L:loop
wait until clk = ‘ 1 ’; exit L when value = 0;
q<=d after 5 ns; valeur := valeur /2;
end loop; end loop;

K. SMIRI 78
Synchronisation par une horloge
Les 2 descriptions suivantes sont équivalentes :

PROCESS PROCESS (clock)


BEGIN BEGIN
WAIT UNTIL clock='1'; IF (clock'EVENT and clock='1');
IF enable='1' THEN
enable
q_out IF enable='1' THEN
q_out <= d_in; D Q
d_in q_out <= d_in;
ELSE ELSE
q_out <= '0'; clock q_out <= '0';
END IF; END IF;
END PROCESS; END IF;
END PROCESS;

Rmq : L’instruction WAIT UNTIL peut se substituer à la liste de sensitivité d’un


PROCESS. Elle s’utilise essentiellement lorsque le process n’est activé que
par un seul signal.

K. SMIRI 79
Déclaration du reset

Reset synchrone Reset asynchrone

PROCESS (clk) PROCESS (clk, rst)


BEGIN BEGIN
IF clk’EVENT AND clk= '1' THEN IF rst = '1' THEN count <= x"0";
IF reset = '1' THEN count <= ELSIF (clk’EVENT AND clk = '1') THEN
"0000";
ELSE count <= count + 1; count <= count + 1;
END IF; END IF;
END IF; END PROCESS;
END PROCESS;

Le process n’est sensible Le process est sensible aux signaux


qu’au signal clk CLK et RST. Le reset est prioritaire.

K. SMIRI 80
Remarque : la mémorisation implicite

En VHDL, les signaux ont une valeur courante, et une valeur


suivante.
Si la valeur suivante d'un signal n'est pas spécifiée, elle est
supposée identique à la valeur courante.

Avantage : la description d’éléments mémoire est simplifiée

if (clk'event and clk='1') then Q<= D; if (clk'event and clk='1') then Q<= D;
end if; else Q <= Q;
end if;

Inconvénient : la logique générée peut devenir beaucoup plus


compliquée

K. SMIRI 81
Description de machines d’état

Machine de Moore et de Mealy


description de circuits séquentiels, où on raisonne en
état présent état futur
avec des conditions de transitions

entrées État
Circuit futur Circuit
registre sorties
combinatoire combinatoire

État présent

K. SMIRI 82
Machine d’état
Exemple (1/2 )

initialisation
Etat 1

Condition 2

Condition 1
Condition 4
Etat 2
Condition 3

Etat 3

K. SMIRI 83
Machine d’état
Exemple (2/2)

Architecture machine_arch of machine is


signal etat : integer range 1 to 3;
begin
process (clk)
begin Remarque :on peut définir un type état
if clk’event and clk=‘1’ then
architecture ……is
if initialisation = ‘1’ then etat <= 1;
else type etat_type is (etat1, etat2, etat3);
case etat is
signal etat : etat_type;
when 1=> if condition 1 then etat <=3;
elsif condition 2 then etat <=2; begin
end if;
……..
when 2 => if condition 3 then etat <= 3; end if;
when 3 => if condition 4 then etat <=1; end if; Le type état est un type énuméré, le nom
end case; des état peut être quelconque (début, fin,
end if; vitesse, marche, arrêt,…..
end process;
end machine-arch;

K. SMIRI 84
Plan

1. Ch1: Introduction aux Systèmes Embarqués (SE)


2. Ch2: Flots de conception des SE
3. Ch3: Outils pour la simulation, la modélisation et
l’évaluation des performances
4. Ch4: Langage VHDL
5. Ch5: Langage SystemC
6. Ch6: Les concepts temps réels dans les SE

K. SMIRI 85
Ch5: Langage SystemC
Introduction

K. SMIRI 87
Introduction

K. SMIRI 88
Introduction

Why not leverage experience of C/C++ developers for


H/W & System Level Design?

C/C++ have no :

notion of time
No event sequencing

Concurrency
But H/W is inherently concurrent

H/W Data Types


No ‘Z’ value for tri-state buses

K. SMIRI 89
Introduction

K. SMIRI 90
K. SMIRI 91
Introduction

K. SMIRI 92
Application development

SystemC is a library of C++ classes, global functions, data types


and a simulation kernel that can be used for creating cycle-
accurate simulators of hardware architecture.

K. SMIRI 93
Objectives

C++ Class Library (SystemC) use for :

Hardware Architecture
Interface of SoC (System-on-Chip)
System-level designs
Executable Specification

K. SMIRI 94
Objectives

An executable specification is essentially a C++


program that exhibits the same behavior as the
system when executed.

The SystemC library is Open Source and can


be downloaded from the following address:

www.systemc.org

K. SMIRI 95
SystemC language Architecture

K. SMIRI 96
Décembre 2005
PISCATAWAY, N.J., USA, 12 December 2005 The IEEE has approved a
new electronic design standard for the SystemC 2.1 language. The standard,
IEEE 1666(TM), “Standard SystemC Language Reference Manual,”
addresses the increasing complexity of system-on-chip (SoC) design at the
systems level, where the most substantial performance and productivity Norme IEEE 1666
gains in semiconductors can be made.

Octobre 2004

Spécification
de l’ensemble du système Version 2.1

Février 2002
Conception de l’architecture
Exploration de l’espace
Version 2
architecturale
Avril 2000

Synthèse logique
Simulation matérielle Version 1

Le langage SystemC K.97/39


SMIRI 97
Development
SystemC1.0
Provide VHDL like capabilities
Simulation kernel
Fixed point arithmetic data types
Signals (communication channels)
Modules
Break down designs into smaller parts

SystemC2.0
Complete library rewrite to upgrade into true SLDL
Events as primitive behavior triggers
Channels, Interfaces and Ports

Future SystemC3.0
Modeling of OSs
Support of embedded S/W models

K. SMIRI 98
SystemC 2.0

Objectives of SystemC 2.0

Primary goal: Enable System-Level Modeling


Systems include hardware and software

Challenge:
Wide range of design models of computation
Wide range of design abstraction levels
Wide range of design methodologies

K. SMIRI 99
Simulation levels
Abstraction Level Objectives
Algorithmic Application bihavior
TLM Communicants Syst description.= comm process,
Process Data exchange between functions.
Transaction
(CP)
Level Programmer View Defined architecture. Functional
Modeling verification. Communication with
(PV) channels
Accuracy

µArchi, pipeline, …
Speed up

Cycle Cycle Accurate*


Accurate
Précis au bit (CABA)* Communication protocol.

and/or
Bit accurate
RTL : Register Implementation details:
Transfer Level K. SMIRI
functional units, logic gates 100
Data Types

K. SMIRI 101
Data Types

K. SMIRI 102
Starting Point

Every C/C++ program has a main() function. When the SystemC library is
used the main() function is not used. Instead the function sc_main() is the
entry point of the application.

This is because the main() function is defined into the library so that when
the program starts initialization of the simulation kernel and the structures this
requires to be performed, before execution of the application code.

In the sc_main() function the structural elements of the system are created
and connected throughout the system hierarchy.

Access to all SystemC classes and functions is provided in a single header


file named “systemc.h”.

A SystemC system consists of a set of one or more modules.

K. SMIRI 103
Modules

K. SMIRI 104
Modules

K. SMIRI 105
Modules

K. SMIRI 106
Modules - Basic Modeling Structure

K. SMIRI 107
Modules - Basic Modeling Structure

K. SMIRI 108
The module’s constructor
• The SC_CTOR statement is also a macro used for the
constructor of the class.

• The code which starts with the statement SC_CTOR is the


code of the constructor of the module.

K. SMIRI 109
The module’s constructor
• an example:

SC_MODULE(RAM) {
sc_in<bool> doOp;
.
.
void execute() {
.
.
.
}
SC_CTOR(RAM) {
SC_METHOD(execute);
sensitive(doOp);
dont_initialize();
for(int i=0;i<MEM_SIZE;i++) memData[i]=0;
}
}; // End of module RAM.

K. SMIRI 110
The module’s constructor
• Processes have a list of events of which they are sensitive.

• sensitive(rwb) creates that list for the process registered by the


previous SC_METHOD statement.

• It specifies that this process will execute when an event is triggered


by the rwb port.

•Ports trigger events owned by the channel they are connected to.

•when the value of the port itself changes or the value of another port
also connected to the same channel changes.

K. SMIRI 111
The module’s constructor

• In simple terms when the rwb port


changes the func1 member function will
run.

SC_CTOR(RAM) {
SC_METHOD(func1);
sensitive(rwb);
}

K. SMIRI 112
Introduction

Standard SystemC
Module: SC_MODULE
Process: SC_METHOD, SC_THREAD
Signal
Port
Interface
Channel
Data type
sc_bit, sc_logic, sc_int<n>, etc.
Excellent tutorial
http://comelec.enst.fr/hdl/sc_intro.html

K. SMIRI 113
SC_METHOD

SC_METHOD
Sensitivity lists
Can not be suspended during the execution

SC_MODULE(my_module) {
// Port and signals declaration
sc_in<bool> enable;
sc_event ev1;
sc_port<sc_signal_in_if<bool> > reset;
// Process declaration
void my_sc_method();
// constructor
SC_CTOR(my_module) {
// SC_METHOD process
SC_METHOD(my_sc_method);
// sensitivity lists
sensitive(ev1); sensitive <<
K. enable;
SMIRI }...} 114
SC_THREAD

SC_THREAD
Can be suspended during the execution
Standby with wait() statement

SC_MODULE(my_module) {
// Port and signals declaration
sc_event ev1;
// Process declaration
Void my_sc_thread {
void my_sc_thread();

// constructor
wait (ev1)
SC_CTOR(my_module) {

// SC_METHOD process
}
SC_THREAD(my_sc_method);
// sensitivity lists
sensitive(ev1); sensitive << enable;
}...}
K. SMIRI 115
Terminology
Transaction : exchange of a data or an event between two
components of a modeled and simulated system
Channel: implements one or more interfaces and serves as a
container for communication functionality
Port: object through which a module can access a channel’s
interface
Process calls an interface method of a channel
The collection of a fixed set of communication methods is called
an Interface (virtual object without data)
Modules can be connected via their Ports to those Channels

K. SMIRI 116
Example
Signal eq.
channel

M1 M2
Module

Ports
SC_MODULE(module1) { SC_MODULE(module2) {
sc_in<bool> data1; sc_in<bool> data2;
...
data1 = 0; // data1.write(0); bool x;
...
... X = data2 ; // data2.read();
} method1
...}

Interface = method1 + method2 + … method2

K. SMIRI 117
What is it for?

SoC components description


Processor
Memory
Interconnexion network
I/O peripheral
Several abstraction levels
RTL: Register Transfer Level
CABA: Cycle Accurate Bit Accurate

K. SMIRI 118
PCWrite
P B
C

1
0
MemWrite
i2 a2 a1
Memor MemRead
Example

*
Instruction register IR IRWrite

25:0
20:16
25:21
31:26

15:0
15:11
RegDes

1
1
0
t

K. SMIRI
0
Controller

sign_ i3 a3 a2 RegWrit
extend a1 Speich e
Re
ger
ALUSel
4

B
ALUSel
3
2
1
0
1
0

AL ALUOp
U
TargetWrit
T

e
31: 28

PCSourc
119
1
2
0

e
§ * "00“
CABA simulation time

• H.263 example with SoCLib (LIP6)

Number of 4 8 12 16
processors
Simulation 2h 2h 3h 5h
time 37min 57min 52min
Formulation on simulation speed

T : Total simulated cycles


sti : Simulation time to advance one cycle of simulator i
sync : Synchronization overhead
trannum : The total number of communication transactions

sttran : Simulation time to process a transaction

∑ { T × ( st + sync )} + tran
∀i
i num × sttran
(eq. 1)

[Soonhoi Ha]

K. SMIRI 121
Transaction level modeling

Simulate every events 100-10.000 faster simulation

[systemc.org]
K. SMIRI 122
Reasons of using TLM
Accelerate product release

TLM = Golden Model

[systemc.org]
K. SMIRI 123
Typical Use Cases for TLM

Represents key architectural components of


hardware platform
Architectural exploration, performance modelling
Software execution on virtual model of hardware
platform
Golden model for hardware functional verification
Available before RTL
Simulates much faster than RTL

K. SMIRI 124
Références
[1] : R. Ben Atitallah, cours mastère, "Outils de conception des systèmes
embarqués", http://www.lifl.fr/~benatita/pages/Teaching, 2013.
[2] : K. SMIRI, Thèse de doctorat en informatique à la Faculté des
Sciences de Tunis, "Migration logiciel-matériel dans le flot de
conception des MPSoC dédiés : Méthodologie et estimation des
performances", 2012.

K. SMIRI 125

Vous aimerez peut-être aussi