Chap1 et Chap2

Download Report

Transcript Chap1 et Chap2

Outils de conception des
systèmes embarqués
UVHC – Master 2
Rabie Ben Atitallah
[email protected]
http://www.lifl.fr/~benatita/pages/Teaching
1
Plan
1.
Introduction aux systèmes embarqués (SE)
2.
Flots de conception
3.
Outils pour la simulation, la modélisation et
l’évaluation des performances
4.
Langage VHDL
5.
Langage SystemC
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
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
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
5
Systèmes avioniques
6
Systèmes de détections
7
Multimedia
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é
9
Les défis
Complexité algorithmique
 Loi de Shannon
MIPS
4000
Complexité (log)
3500
3G
2.5G
3000
GAP
Performances
des
Processeurs
 Loi de Moore
2G
1G
2500
2000
1500
1000
Capacité des Batteries
500
1982
9.6 kbps
Voix, Texte
1990
1998
2006
115/384 kbps
WAP, GPS
0
GSM
GPRS EDGE UMTS
2 Mbps
Multimédia
Traitement de signal
intensif
10
ARM PrimeXsys
Wireless platform: Standard SoC Kernel based on ARM926EJ-S
Source: ©ARM
11
Triscend A7 CSoC
●
ARM7TDMI + FPGA
Source: ©Triscend
12
ASIP: reconfigurable µprocessor
Tensilica
Xtensa
Source: ©Tensilica
13
Les compromis
Structured
Custom
Low
Low
RTL
Flow
High
High
FPGA
FPGA &
GPP
ASIP
DSP
GPP
High Lower
Time
to Develop/Iterate
Develop/Iterate New
New Application
Application
Programmability
High
Lower
Cost
to
MOPS/mW
14
Plateformes cibles
Cipher
RISC
EDF
Priority
DSP
WFQ
TDMA
proportional
share
dynamic
fixed priority
LookUp
FCFS
static
Which architecture is better suited
for our application? Architecture # 2
TDMA
Cipher
DSP
DSP
RISC
mE
LookUp
EDF
FPGA
SDRAM
Architecture # 1
Scheduling/Arbitration
Computation Templates
Communication Templates
WFQ
mE
mE
mE
static
mE
mE
mE
15
Le flot de conception en Y: Co-design
Application
Architecture
Association
Co-simulation
Analyse
Quel niveau?
Paramètres: temps,
énergie…
16
Niveaux d’implementation
SYSTEM
MODULE
Précision
Accélération
+
GATE
CIRCUIT
Vin
Vout
DEVICE
G
S
n+
D
n+
17
Niveaux de simulation
Abstraction Level
Objectives
Algorithmic
Application bihavior
TLM
Transaction
Accuracy
Speed up
Level
Communicants
Process
Syst description.= comm process,
Data exchange between functions.
(CP)
Modeling
(PV)
Defined architecture. Functional
verification. Communication with
channels
Cycle
Accurate
Cycle Accurate*
mArchi, pipeline, …
Précis au bit (CABA)*
Communication protocol.
Programmer View
and/or
Bit accurate
RTL : Register
Transfer Level
Implementation details:
functional units, logic gates
18
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
19
Le transistor
V
dd
Tm
S
E   P(t ) dt
PMOS
D
0
Ve
V
P = Pstatic + Pdynamic
s
G
NMOS
Vdd
Vdd
1
1
0
Ve
0
Icharge
1
Vs
1
0
Idéc harge
Vs
1
Pdynamic = Cch.Vdd2.F
0
0
1
Ve
Ve
Cc h
0
Ve
Cch
Pstatic = Isub. Vdd
(c)
20
Le dessin de masque
powhi
dout
din
powlo
© Mosis (http://www.
mosis.org/Technical/
Designsupport/
polyflowC.html);
Tool: Cadence
21
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
22
Le Niveau transistor
23
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)
24
Niveau portes logiques
source:
http://geda.
seul.org/
screenshots/
screenshotschem2.png
25
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)
26
0
1
Instruction register IR
Memor
y
i2 a2 a1
15:11
15:0
25:0
0
1
1
20:16
a2
25:21
0
31:26
1
sign_
extend
0
4
2
3
AL
U
Speich
Re
ger
a3
B
PCSourc
e
TargetWrit
e
ALUOp
ALUSel
B
ALUSel
A
RegWrit
e
RegDes
t
IRWrite
MemRead
MemWrite
§
i3
a1
P
C
PCWrite
Niveau RTL
Controller
0
0
T
1
2
1
§ * "00“
31: 28
*
27
RTL implementation

Hardware description language



VHDL
Verilog
Target platforms

ALTERA : Apex, Stratix…



Quartus II
Model sim
XILINX : Spartron, Virtex…
StratixII EP2S60
• 48.352 LC
• 493 Pins
• 288 DSP block
• 2.5 Mb Memory
28
Exemple de simulation RTL
29
Le prototypage traditionnel
30
Le prototypage traditionnel
31
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 )
32
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)
33
Les FPGA de type SRAM
Caractéristiques d’un circuit récent :
34
Architecture interne d’un FPGA
Stratix d’ALTERA
35
Cellule logique de base
Stratix d’ALTERA
36
Cellule logique de base
Virtex de XILINX
37
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.
38
Différence entre le langauge C et VHDL
VHDL
C/C++/pascal
Equation
compilation
Synthése
assembleur
1.
2.
3.
4.
mov al,a
Mov bl,b
Xor al,bl
Not al
39
Flot de conception
40
Plan
1.
Introduction aux systèmes embarqués (SE)
2.
Flots de conception
3.
Outils pour la simulation, la modélisation et
l’évaluation des performances
4.
Langage VHDL
5.
Langage SystemC
41
Objectifs et caractéristiques du VHDL

Langage unique pour





la spécification, la documentation
la vérification (preuve formelle), la simulation
la synthèse : le langage sert d'entrée à des outils intelligents qui
permettent la réalisation de circuits intégrés (customs, ASICs) ou
programmables (PALs, PLDs, CPLDs, FPGAs)
 conception, simulation, synthèse de circuits numériques
(du + simple au plus compliqué)
Interprétable par l'homme et la machine
Indépendent des process et des technologies, indépendent des
systèmes-hôtes
42
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
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.
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.
45
LE VHDL PAR L’EXEMPLE
La description vhdl du comparateur est donnée ci-dessous :
-- comparateur de deux fois quatre bits
ENTITY eqcomp4 IS
PORT (
a0,a1,a2,a3 : IN BIT;
b0,b1,b2,b3 : IN BIT;
aeqb : OUT BIT);
END eqcomp4;
ARCHITECTURE logique OF eqcomp4 IS
BEGIN
aeqb <= '1‘
WHEN (
(a0=b0) and
(a1=b1) and
(a2=b2) and
(a3=b3)
)
ELSE '0';
END logique;
L’entité est décrite par l’intermédiaire de l’instruction PORT.Celleci 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.
46
L’entité
 Les signaux d’entrée/sortie de l’entité sont des PORTS
 un PORT est défini par :



un nom
un mode (sens)
un type
rst
d[7:0]
clk
q[7:0]
BOITE_NOIRE
co
 le MODE correspond au sens de transfert




IN entrée (monodirectionnelle)
OUT sortie (monodirectionnelle)
INOUT entrée/sortie (bidirectionnelle)
BUFFER sortie rebouclée
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 :
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
boolean
bit
character
integer
natural
positive
string
bit_vector
time









CLASSE
type énuméré
type énuméré
type énuméré
type numérique
sous-type numérique
sous-type numérique
chaîne de caractères
array of bit
physique
OPERATEURS
Booléens (logiques)
De comparaison
De décalage
Arithmétiques
De concaténation
Tout type appartient à
une classe.
not, and, or, nand, nor, xor, xnor
=, /=, <, <=, >, >=
sll, srl, sla, sra, rol, ror
sign +, sign -, abs, +, -, *
&
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 (hauteimpé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;
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;
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’;
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
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.
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;
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.

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 full_adder is
port( X,Y,Cin: in bit;
Cout, Sum: out bit);
end full_adder;
entity comparateur is
port(
signal a : in bit_vector(7 downto 0);
signal b : in bit_vector(7 downto 0);
signal egal : out bit);
end comparateur ;
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 simple of comparateur is
-- zone de déclaration vide
begin
egal <= ‘1’ when a = b else ‘0’;
end simple ;
architecture dataflow of full_adder is
signal A, B: bit;
begin
A<=X xor Y;
B<=A xor Cin;
Cout<=B xor (X and Y);
Sum<=A xor Cin;
end architecture dataflow;
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
60
Architecture : description
comportementale
A
C
B
architecture ARCH1 of COMPARATEUR is
begin
C <= '1' when (A=B) else '0';
end ARCH1;
Comparateur
architecture ARCH2 of COMPARATEUR is
begin
C <= not(A xor B);
end ARCH2;
61
Architecture : description structurelle
A
B
U0
xor2
S
U1
C
inv
Les signaux internes sont
déclarés en tête de l'architecture
(même déclaration que les
signaux d'entité, sans 'mode')
use work.gatespkg.all;
architecture ARCH3 of COMPARATEUR is
signal S : bit;
begin
U0 : xor2 port map (A,B,S);
U1 : inv port map (S,C);
end ARCH3;
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é
63
Parallèle / Séquentiel

VHDL permet de décrire des fonctionnements
(combinatoires) et séquentiels (synchrones)

Tout repose sur le PROCESS
parallèles

à 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)
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)
65
Assignation simple de signal
Syntaxe:



« 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
2007-2008
[label:] signal<= expression;
C <= not(A xor B);
C. Soyer - 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;
Exemple:
Multiplexeur 4-->1
a
b
c
d
4
4
4
4
4
s1 s0
e
use ieee.std_logic_1164.all;
entity MUX4 is
port( a,b,c,d : in std_logic_vector(3 downto 0);
e : out std_logic_vector(3 downto 0);
s1,s0 : in std_logic );
end MUX4;
architecture ARCHMUX4 of MUX4 is
begin
e <=
a when (s1 & s0) = "00" else
b when (s1 & s0) = "01" else
c when (s1 & s0) = "10" else
d;
end ARCHMUX4;
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)
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”;
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
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.
71
L’instruction WAIT
Instruction séquentielle, plusieurs instructions possibles dans un même
process.
Exemples :
72
Le Processus

Instructions séquentielles




assignation simple (de signal ou de variable)
if
case
for
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)
begin
if a=b then
equal <=‘1’;
else
equal<=‘0’;
end if;
end process;
process (a,b,sel1,sel2)
begin
if sel1=‘1’ then z<=a;
elsif sel2=‘1’ then z<=b;
else z<=c;
end if;
end process;
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 :
Exemple :
[label :] case expression is
when valeur => {instruction_sequentielle}
{when valeur => {instruction_sequentielle}}
end case [label];
process(light)
begin
case light is
when red =>
when amber =>
when green =>
end case;
end process;
next_light <= green;
next_light <= red;
next_light <= amber;
Attention : valeur et
expression
doivent
être du même type
75
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;
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;
77
Instruction de boucle (3/3)
Boucle générale
Syntaxe :
[etiquette :] loop
{instruction_sequentielle}
end loop [etiquette];
L’instruction exit stoppe
l’itération et sort de la boucle.
Exemples :
L’instruction next stoppe
l’itération courante et execute
la suivante.
Boucle infinie
loop
wait until clk = ‘ 1 ’;
q<=d after 5 ns;
end loop;
Boucle avec sortie
L:loop
exit L when value = 0;
valeur := valeur /2;
end loop;
78
Synchronisation par une horloge
Les 2 descriptions suivantes sont équivalentes :
PROCESS
BEGIN
WAIT UNTIL clock='1';
IF enable='1' THEN
q_out <= d_in;
ELSE
q_out <= '0';
END IF;
END PROCESS;
enable
d_in
clock
D
Q
PROCESS (clock)
BEGIN
IF (clock'EVENT and clock='1');
IF enable='1' THEN
q_out
q_out <= d_in;
ELSE
q_out <= '0';
END IF;
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.
79
Déclaration du reset
Reset synchrone
PROCESS (clk)
BEGIN
IF clk’EVENT AND clk= '1' THEN
IF reset = '1' THEN count <=
"0000";
ELSE count <= count + 1;
END IF;
END IF;
Reset asynchrone
PROCESS (clk, rst)
BEGIN
IF rst = '1' THEN
count <= x"0";
ELSIF (clk’EVENT AND clk = '1') THEN
count <= count + 1;
END IF;
END PROCESS;
END PROCESS;
Le process n’est sensible
qu’au signal clk
Le process est sensible aux signaux
CLK et RST. Le reset est prioritaire.
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;
end if;
if (clk'event and clk='1') then Q<= D;
else Q <= Q;
end if;
Inconvénient : la logique générée peut devenir beaucoup plus
compliquée
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
Circuit
combinatoire
État
futur
registre
Circuit
sorties
combinatoire
État présent
82
Machine d’état
Exemple (1/2 )
initialisation
Etat 1
Condition 2
Condition 4
Condition 1
Etat 2
Condition 3
Etat 3
83
Machine d’état
Exemple (2/2)
Architecture machine_arch of machine is
signal etat : integer range 1 to 3;
begin
process (clk)
begin
if clk’event and clk=‘1’ then
if initialisation = ‘1’ then etat <= 1;
else
case etat is
when 1=> if condition 1 then etat <=3;
elsif condition 2 then etat <=2;
end if;
when 2 => if condition 3 then etat <= 3; end if;
when 3 => if condition 4 then etat <=1; end if;
end case;
end if;
end process;
end machine-arch;
Remarque :on peut définir un type état
architecture ……is
type etat_type is (etat1, etat2, etat3);
signal etat : etat_type;
begin
……..
Le type état est un type énuméré, le nom
des état peut être quelconque (début, fin,
vitesse, marche, arrêt,…..
84
An Introduction to SystemC
Introduction
Introduction
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
Introduction
Introduction
Application development
 SystemC is a library of C++ classes, global functions, data types
and a simulation kernel that can be used for creating cycleaccurate simulators of hardware architecture.
Objectives
 C++ Class Library (SystemC) use for :
 Hardware Architecture
 Interface of SoC (System-on-Chip)
 System-level designs
 Executable Specification
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
SystemC language Architecture
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
gains in semiconductors can be made.
Décembre 2005
Norme IEEE 1666
Octobre 2004
Spécification
de l’ensemble du système
Version 2.1
Février 2002
Conception de l’architecture
Exploration de l’espace
architecturale
Version 2
Avril 2000
Synthèse logique
Simulation matérielle
Le langage SystemC
Version 1
96/39
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
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
Simulation levels
Abstraction Level
Objectives
Algorithmic
Application bihavior
TLM
Transaction
Accuracy
Speed up
Level
Communicants
Process
Syst description.= comm process,
Data exchange between functions.
(CP)
Modeling
(PV)
Defined architecture. Functional
verification. Communication with
channels
Cycle
Accurate
Cycle Accurate*
mArchi, pipeline, …
Précis au bit (CABA)*
Communication protocol.
Programmer View
and/or
Bit accurate
RTL : Register
Transfer Level
Implementation details:
functional units, logic gates
99
Data Types
Data Types
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.
Modules
Modules
Modules
Modules - Basic Modeling Structure
Modules - Basic Modeling Structure
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.
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.
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.
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);
}
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
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 << enable; }...}
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();
// constructor
SC_CTOR(my_module) {
// SC_METHOD process
SC_THREAD(my_sc_method);
// sensitivity lists
sensitive(ev1); sensitive << enable;
}...}
Void my_sc_thread {
…
wait (ev1)
…
}
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
Example
Signal eq.
channel
Module
M1
M2
Ports
SC_MODULE(module2) {
SC_MODULE(module1) {
sc_in<bool> data1;
...
data1 = 0; // data1.write(0);
sc_in<bool> data2;
bool x;
...
X = data2 ; // data2.read();
...
}
method1
Interface = method1 + method2 + …
...}
method2
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
0
1
Instruction register IR
Memor
y
i2 a2 a1
15:11
15:0
25:0
*
0
1
1
20:16
a2
25:21
0
31:26
1
sign_
extend
0
4
2
3
AL
U
Speich
Re
ger
a3
B
PCSourc
e
TargetWrit
e
ALUOp
ALUSel
B
ALUSel
A
RegWrit
e
RegDes
t
IRWrite
MemRead
MemWrite
§
i3
a1
P
C
PCWrite
Example
Controller
0
0
T
1
2
1
§ * "00“
31: 28
CABA simulation time
• H.263 example with SoCLib (LIP6)
Number of
processors
4
8
12
16
Simulation
time
2h
37min
2h
57min
3h
52min
5h
Formulation on simulation speed
T
: Total simulated cycles
sti
: Simulation time to advance one cycle of simulator i
sync
trannum
: Synchronization overhead
sttran
: The total number of communication transactions
: Simulation time to process a transaction
{ T  ( sti  sync )}  trannum  sttran
(eq. 1)
i
[Soonhoi Ha]
Transaction level modeling
Simulate every events
100-10.000 faster simulation
[systemc.org]
Reasons of using TLM
Accelerate product release
TLM = Golden Model
[systemc.org]
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