Kamel SMIRI
Plan
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
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
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
K. SMIRI 15
Plan
K. SMIRI 16
Ch2: Flots de conception des SE
Le flot de conception en Y: Co-design
Application Architecture
Association
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
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
K. SMIRI 23
Le Niveau transistor
K. SMIRI 24
Niveau portes logiques
K. SMIRI 25
Niveau portes logiques
source:
http://geda.
seul.org/
screenshots/
screenshot-
schem2.png
K. SMIRI 26
Niveau RTL
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
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 :
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
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
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.
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.
K. SMIRI 45
LE VHDL PAR L’EXEMPLE
La description vhdl du comparateur est donnée ci-dessous :
K. SMIRI 46
L’entité
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
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:
Exemples:
K. SMIRI 52
Les objets
K. SMIRI 53
Les variables
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
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é;
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
K. SMIRI 60
Architecture : description
comportementale
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
K. SMIRI 63
Parallèle / Séquentiel
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
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
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;
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
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
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)
K. SMIRI 7575
Instruction de boucle (1/3)
Instruction FOR
Syntaxe :
[etiquette :] for identifiant in discrete_range loop
{instruction_sequentielle}
end loop [etiquette];
Exemple :
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];
K. SMIRI 78
Synchronisation par une horloge
Les 2 descriptions suivantes sont équivalentes :
K. SMIRI 79
Déclaration du reset
K. SMIRI 80
Remarque : la mémorisation implicite
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;
K. SMIRI 81
Description de machines d’état
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)
K. SMIRI 84
Plan
K. SMIRI 85
Ch5: Langage SystemC
Introduction
K. SMIRI 87
Introduction
K. SMIRI 88
Introduction
C/C++ have no :
notion of time
No event sequencing
Concurrency
But H/W is inherently concurrent
K. SMIRI 89
Introduction
K. SMIRI 90
K. SMIRI 91
Introduction
K. SMIRI 92
Application development
K. SMIRI 93
Objectives
Hardware Architecture
Interface of SoC (System-on-Chip)
System-level designs
Executable Specification
K. SMIRI 94
Objectives
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
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
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
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.
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.
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.
•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
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
...}
K. SMIRI 117
What is it for?
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
Number of 4 8 12 16
processors
Simulation 2h 2h 3h 5h
time 37min 57min 52min
Formulation on simulation speed
∑ { T × ( st + sync )} + tran
∀i
i num × sttran
(eq. 1)
[Soonhoi Ha]
K. SMIRI 121
Transaction level modeling
[systemc.org]
K. SMIRI 122
Reasons of using TLM
Accelerate product release
[systemc.org]
K. SMIRI 123
Typical Use Cases for TLM
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