high-level synthesis...

26
Synthèse darchitecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués Olivier Sentieys, ENSSAT-IRISA 1 PLAN 1. Optimisations algorithmiques 2. Synthèse architecturale 2.1. Introduction 1. Avantages de la synthèse architecturale 2. Synthèse architecturale vs. synthèse logique/RTL 2.2. Techniques de synthèse 2.3. Outils de synthèse comportementale 3.4. Exemples de synthèse EII3/M2R - 2 ENTITY fir IS PORT (xn:IN INTEGER; yn:OUT INTEGER); END fir; ARCHITECTURE behavioral OF fir IS BEGIN PROCESS VARIABLE H,x: vecteur; VARIABLE tmp: INTEGER; BEGIN tmp := xn * H(0); FOR i IN 1 TO N-1 LOOP tmp := tmp + x(i) * H(i); END LOOP; yn <= tmp; FOR i IN N-1 DOWNTO 2 LOOP x(i) := x(i-1); END LOOP; x(1) := xn; WAIT FOR cadence; END PROCESS; END behavioral; High-Level Synthesis (VHDL->VHDL) 2 1 4 3 5 EII3/M2R - 3 #define N 16 int main(int xn) { int tmp; int H[N] = {98,-39,-327,439,950,-2097, -1674,9883, 9883,-1674,-2097, 950,439,-327,-39,98}; int X[N]; control i; tmp = xn * H[N-1]; for (i=1; i<N; i++) { tmp += X[i] * H[N-i-1]; } for (i=0; i<N-2; i++) { X[N-1-i] = X[N-2-i]; } x[1] = xn; return tmp; } High-Level Synthesis (C->VHDL) 2 1 4 3 5 EII3/M2R - 4 RTL Code SC code RTL to layout System Analysis Algorithm GDS2 C/C++ SystemC Code Design model Target Asic High Level Synthesis Technology files (Standard Cells + RAM cuts) Formal proof (sequential equivalence checking) High Level Synthesis flow [T. Michel, STMicroelectronics]

Upload: dinhtruc

Post on 12-Sep-2018

280 views

Category:

Documents


1 download

TRANSCRIPT

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 1

PLAN

1.  Optimisations algorithmiques 2.  Synthèse architecturale

2.1. Introduction 1. Avantages de la synthèse architecturale 2. Synthèse architecturale vs. synthèse logique/RTL

2.2. Techniques de synthèse 2.3. Outils de synthèse comportementale

3.4. Exemples de synthèse

EII3/M2R - 2

ENTITY fir ISPORT (xn:IN INTEGER; yn:OUT INTEGER);

END fir;

ARCHITECTURE behavioral OF fir ISBEGIN

PROCESSVARIABLE H,x: vecteur;VARIABLE tmp: INTEGER;

BEGINtmp := xn * H(0);FOR i IN 1 TO N-1 LOOP

tmp := tmp + x(i) * H(i);END LOOP;yn <= tmp;FOR i IN N-1 DOWNTO 2 LOOP

x(i) := x(i-1);END LOOP;x(1) := xn;

WAIT FOR cadence;END PROCESS;

END behavioral;

High-Level Synthesis (VHDL->VHDL)

2 1

4 3

5

EII3/M2R - 3

#define N 16 int main(int xn) {

int tmp;int H[N] = {98,-39,-327,439,950,-2097,

-1674,9883, 9883,-1674,-2097, 950,439,-327,-39,98};

int X[N];control i;

tmp = xn * H[N-1];for (i=1; i<N; i++) {

tmp += X[i] * H[N-i-1];}for (i=0; i<N-2; i++) {

X[N-1-i] = X[N-2-i];}x[1] = xn;

return tmp;}

High-Level Synthesis (C->VHDL)

2 1

4 3

5 EII3/M2R - 4

RTL Code SC code

RTL to layout

System Analysis

Algorithm

GDS2 C/C++

SystemC Code

Design model

Target

Asic High Level Synthesis

Technology files (Standard Cells + RAM cuts)

Formal proof

(sequential equivalence checking)

High Level Synthesis flow

[T. Michel, STMicroelectronics]

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 2

EII3/M2R - 5

Algorithm

RT-Blocks

Gate-Netlist

Layout

• Module Selection • Scheduling • Allocation • Binding • Register Sharing • Memory Inference • Pipelining / Retiming

High Level Synthesis

Logic Synthesis

RTL Synthesis

Logic

• Resource Sharing • Arithmetic Optimiization • Pipelining • Datapath Compilation

• FSM optimization • Redundancy Removal • Logic Structuring • Logic Minimization • Technology Mapping

Simulation

Formal Verification

or

BEHAVIORAL

ARCHITECTURAL

LOGIC

GATE

Niveaux de conception Techniques

EII3/M2R - 6

Module Selection Scheduling Allocation Binding Register Sharing Memory Inference Pipelining / Retiming

Instructions Operations

Variables / Signals Arrays

Constraints

Functional Units Registers Memory Multiplexers Interconnections

Définition §  Synthèse de haut niveau (ou comportementale ou

architecturale) signifie passer d’une spécification algorithmique du comportement à une description de la structure qui l’implémente.

EII3/M2R - 7

Avantages §  Réduction du temps de conception §  Exploration de l'espace de recherche §  Réduction de la taille des spécifications

•  10x par rapport au RTL, moins d'erreurs •  Codage plus naturel •  Simulation plus facile et plus rapide (20x)

§  Silicium par les concepteurs systèmes §  Indépendant de la technologie

•  Circuit portable

§  Prise en compte de contraintes à un plus haut niveau •  Placement/routage, consommation, test

EII3/M2R - 8

WiFi/WiMax 64/2K,1K, 512 (13bits) 20 Ms/s 65 nm

2K, 1K, 512 128, 64 points

FFT/iFFT (various bit precision)

C++ Generic Model Digital ODU 2K points (12bits) 2 Gs/s 65n, 45 nm

Better Reusability of High Level Models

UWB 128 points (11bits) 528 Ms/s 90nm

Example: FFT at STMicroelectronics

[T. Michel, STMicroelectronics]

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 3

EII3/M2R - 9

for ( int i=0 ; i<N ; i++) accum + = data [i] * coef [i]

x x x x

+

+ + x +

S1 S2 S3 S4 S5 S6 S7 S8 S9 Latency time

Area total

Are

a

220.0

98675.2 98675

VHL & Verilog RTL Output

SystemC TLM Output

AUTOMATIC VERIFICATION

Raising the abstraction level we obtain:

Gain Productivity in design time (4x-5x the first time, >10X afterwards)

Explore different architecture (trading off area / throughput / performances)

From Algorithm to Silicon

Ai . Xi i=0

N-1

[T. Michel, STMicroelectronics] EII3/M2R - 10

-- X et Y sont supposés être des tableaux d'entiers de dimension N -- S est un signal entier compatible avec la définition de la variable Z P_calcul : process

variable Z : integer16; begin wait until H_cycle = '1'; -- conditions d'horloge Z := 0; -- initialisation for i in X'range loop -- N itérations Z := Z+ X(i) * Y(i); -- multiplications accumulations end loop; S <= Z; -- sortie du résultat synchrone de l'horloge H_cycle end process P_calcul;

Synthèse Logique Synthèse Architecturale

X X X

+

••• X

+

Z-1

Contrôle

Logique/RT vs Architecturale

2.2 Techniques de synthèse de haut niveau

2.1 Compilation 2.2 Modèle d’architecture 2.3 Sélection - Allocation 2.4 Ordonnancement 2.5 Allocation

EII3/M2R - 12

Compilation 1 Transformations 2

Scheduling 4 Allocation (Binding, Selection) 5

Architecture Model 3

Optimisations 6

Control Generation 7 Data-Path Generation 8

Techniques de Synthèse

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 4

EII3/M2R - 13

CDFG

Compilation Transformations

Mémoire

Ordonnancement

Assignation Optimisation

Sélection

Traitement Contrôle Mémoire

Interface

Spécification

Allocation

Modèle architectural

Anatomie d’un outil HLS

Bibliothèque

EII3/M2R - 14

2.2 Modèles architecturaux §  Modèle générique : architecture mono-processeur type DSP,

ou multiprocesseur type réseau systolique §  Modèle opérateur : tout opérateur ne sait accomplir qu'une ou

plusieurs fonctions §  Modèle d'interconnexion : bus, ou chemins de transfert point

à point §  Modèle de mémorisation : système externe à la partie

opérative, registres en nombre suffisant, mémoires hiérarchisées ou non, un ou plusieurs bancs

§  Modèle du contrôle : FSM, ROM, RISC,... §  Modèle de communication : interface avec l’extérieur du

système, à des cadences différentes

EII3/M2R - 15

Tâches de synthèse •  Compilation et transformation

o  Compiler la description initiale en une représentation interne (CDFG), puis la transformer afin d'améliorer la synthèse.

•  Sélection o  Sélectionner à partir d'une bibliothèque complète d'opérateurs, les

composants dont les caractéristiques répondent à l'application.

•  Allocation o  Déclarer la quantité exacte d'opérateurs que l'on désire utiliser, ainsi

que les intervalles de temps où ils sont utilisables.

•  Ordonnancement o  Affecter une date d'exécution à chaque opération de l'application.

•  Assignation o  Affecter une opération à un opérateur. Cette étape doit minimiser les

problèmes de connectique interne à l'unité de traitement, posés par la circulation des données.

EII3/M2R - 16

2.1 Compilation

§  Transformation d’une spécification dans le langage d’entrée vers une représentation interne

Behavioral description of the algorithm

Entity Architecture Process()

(C)DFG

loop unrolling variable propagation

conditional assignment resolution • • •

- VHDL, C or SystemC - Mono Process - Procedures & Functions

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 5

EII3/M2R - 17

§  Composants de base de l’unité de traitement

•  Opérateurs arithmétiques

•  Registres ou files de registres

•  Multiplexeurs

•  Portes trois-états

•  Bus (i.e. fils)

§  Paramétrés par la taille des données traitées

2.2 Modèles d’architecture

FU

EII3/M2R - 18

Mémoire

Reg Etat

Logique Contrôle

Logique Evolution

Registre Contrôle

Registre Status

Status Bits

FU

RF

R1 R2

DR Mémoires

Modèle de l’architecture §  Exemple orienté DSP

EII3/M2R - 19

•  Modèle de l’unité de traitement •  Modèle de l’unité de contrôle -  Contrôle mono ou multi cycles des opérateurs -  Une ou plusieurs machine d’états -  Optimisation du codage des états

•  Modèle de l’unité mémoire

-  Registres, banc de registres -  Structure en banc de mémoire -  Mémoire interne / externe -  Génération de la séquence d’adresse

Chemin de données

Multi-bus parallèle

Registres Généraux

Cell 1 Cell N • • •

clock

bus 1 bus 2

UT UC

Modèle de l’architecture

EII3/M2R - 20

Component Library Package Component Generic

latency, area, function(s) pipe stages, size, test, ...

Port external view

2.3 Sélection et allocation

§  Sélection : extraire de la bibliothèque de composants un jeu de composants et minimiser le coût global

§  Allocation : déterminer le nombre d’opérateurs de chaque type minimum à utiliser dans le circuit

§  Bibliothèque d'opérateurs •  Opérateurs classiques

o  +, -, x

•  Opérateurs multifonctions o  +-, MAC, MAD, UAL

•  Opérateurs pipelines •  Opérateurs multidélais

o  Additionneurs : Ripple Carry, CSA, Carry Look Ahead

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 6

EII3/M2R - 21

+/-/* +

100% 0% Adder

Substracter Multiplier

efficiency + +

- *

Adder Adder

100% 0%

Adder + +

Adder Multifunction

efficiency

cost cost

Example: Cost(Adder) < Cost(Adder-Substracter) < Cost(Adder) + Cost(Substracter) or Cost(Substracter)

∑<<i

ixi CCostCCostCCost )()()(

Bibliothèque de composants §  Plus la bibliothèque est riche, plus la synthèse sera

efficace

EII3/M2R - 22

Modélisation du DFG O = (O1, O2,...,ONO) vecteur de types opérations F = (F1, F2,...,FNO) vecteur de nombre d'opérations par type

Modélisation de la bibliothèque C = (C1, C2,...,CNC)

M = (M1, M2, …, MNo)

Cost = (Cost1, Cost2, …, CostNC) [D]

La sélection revient à calculer le vecteur S contenant le nombre d'opérateurs sélectionnées par type

[γ] Matrice de booléens, γ i,j = 1 si Ci peut exécuter Oj

vecteur de type opérateurs

Mi : nb d'opérateurs pouvant traiter Oi

vecteur de coût de opérateurs Matrice des temps de traitement Di,j de Oi par Cj

Si nombre d'opérateurs Ci sélectionnés S = (S1, S2,...,SNC)

Sélection de composants §  Modélisation du problème

Tr contrainte de temps

Minimiser une fonction de coût : ∑=

=Nc

iii CostSSCost

1.)(

EII3/M2R - 23

Sélection de composants §  Cas d'opérateurs mono-fonctions (+, -, x, ...)

•  DFG contenant 38 nœuds opérations, Tr = 200 ns o  No = 3; O = (+, -, x); F = (17, 16, 5)

•  Bibliothèque d’opérateurs Nc = 3 C = (Add, Sub, Mult) Cost = (212, 220, 2030) D = (20ns, 20ns, 60ns)

§  Cas général…

!!

"##

$=TrFDS ii

i.

Calculer S = ?

c

N

jii

i NiTr

FDS ≤≤≤

∑= 1

.0

1

Sij=1

NC

∑ γ i, jTrDi, jj=1

N0

∑ ≥ M j .Fjj=1

N0

∑EII3/M2R - 24

Exemple de sélection §  DFG contenant 38 nœuds opérations, Tr = 200 ns

•  No = 3; O = (+, -, x); F = (17, 16, 5) §  Bibliothèque d’opérateurs Nc = 8 C = (FastAdder, SlowAdder, FastSub, SlowSub, FastAddSub, SlowAddSub, Multiplier, MultiplierAdder) Cost = (212, 157, 220, 160, 252, 203, 2030, 2100)

+ - x

Fadd 15 0 0

Sadd 20 0 0

Fsub 0 15 0

Ssub 0 20 0

Fas 15 15 0

Sas 20 20 0

Mult 0 0 60

Mad 20 0 60

D =

- Combien d'opérateurs de chaque type ? - Sélection optimale

S = (0, 1, 0, 1, 0, 1, 1, 1) 1 SlowAdder 100% 1 SlowSub 100% 1 SlowAddSub 80% 1 Multiplier 100% 1 MultAdder 100% (50% de +)

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 7

EII3/M2R - 25

2.4 Ordonnancement §  Affectation d’une date d’exécution à chaque

opération §  Deux types

•  Temps contraint ou Ressource contrainte •  ILP, Force Directed Listes, … •  Précède l'allocation Suit l'allocation

§  Techniques •  Constructives (transformations, glouton, left edge) •  Polynomiales ou Linéaires (listes, orientés par les forces,

ASAP, ALAP) •  Exponentielles (Branch&Bound, ILP) •  Stochastiques (Monte-Carlo, recuit simulé) •  Auto-organisation avec réseaux de neurones

EII3/M2R - 26

Ordonnancement au plus tôt (ASAP)

Allocation : additionneur(s) multiplieur(s)

+ x + + +

x

x

x

x

Temps

Sur

face

ASAP=0 ASAP=1 ASAP=2 ASAP=3 ASAP=4

Tcc = MAX(ASAPi) = 4

EII3/M2R - 27

Ordonnancement au plus tard (ALAP)

+ x + + +

x

x

x

x

Temps

Sur

face

ALAP=0 ALAP=1 ALAP=2 ALAP=3 ALAP=4

Tcc = MAX(ALAPi) = 4

Allocation : additionneur(s) multiplieur(s) EII3/M2R - 28

Ordonnancement par liste

+ x + + +

x

x

x

x Mobilité(i) = ALAP(i) - ASAP(i) Urgence(i) = Tcc - ALAP(i)

M=0 U=4

M=0 U=4

M=1 U=3

M=2 U=2

M=3 U=1

M=0 U=3

M=0 U=2

M=0 U=1

M=0 U=0

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 8

EII3/M2R - 29

Ordonnancement par liste §  Ordonnancement à ressources contraintes

•  e.g. 1 additionneur; 1 multiplieur;

§  Pour chaque cycle faire •  Une opération est ordonnancable si tous ses

prédécesseurs sont ordonnancés •  Pour tous les opérateurs libres

o  Ordonnancer l’opération qui a la plus grande priorité o  e.g. Mobilité la plus faible ou urgence la plus forte o  Si plusieurs opérateurs sont de même priorité le choix peut être

fonction d’autres contraintes (ou aléatoire, ou trié)

§  Voir algorithme en annexe

EII3/M2R - 30

Ordonnancement par liste

+ x + + +

x

x

x

x

M=0 U=4

M=0 U=4

M=1 U=3

M=2 U=2

M=3 U=1

M=0 U=3

M=0 U=2

M=0 U=1

M=0 U=0

Allocation avant ordonnancement : 1 additionneur; 1 multiplieur.

EII3/M2R - 31

x(n) x(n-15) x(n-1) x(n-14) x(n-2) x(n-13) x(n-3) x(n-12) x(n-4) x(n-11) x(n-5) x(n-10) x(n-6) x(n-9) x(n-7) x(n-8)

a0 a1 a2 a3 a4 a5 a6 a7

y(n)

+ + + + + + + +

* * * * * * * *

+

+

+

+

+

+

+

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

9

a

b

c

d

e

f

+1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f *1 *2 *3 *4 *5 *6 *7 *8 Mobilité : Urgence :

Filtre RIF symétrique sur 16 points

EII3/M2R - 32

Filtre RIF symétrique sur 16 points x(n) x(n-15) x(n-1) x(n-14) x(n-2) x(n-13) x(n-3) x(n-12) x(n-4) x(n-11) x(n-5) x(n-10) x(n-6) x(n-9) x(n-7) x(n-8)

a0 a1 a2 a3 a4 a5 a6 a7

y(n)

+ + + + + + + +

* * * * * * * *

+

+

+

+

+

+

+

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

9

a

b

c

d

e

f

+1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f *1 *2 *3 *4 *5 *6 *7 *8 0 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 8 8 7 6 5 4 3 2 6 5 4 3 2 1 0 7 7 6 5 4 3 2 1

Mobilité : Urgence :

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 9

EII3/M2R - 33

Filtre RIF symétrique sur 16 points §  Ordonnancement sur 1 additionneur et un multiplieur §  Priorité sur l'urgence

§  Priorité sur la mobilité

Add

Mult

Add

Mult

EII3/M2R - 34

Filtre RIF symétrique sur 16 points

Add

Mult

1 2 3 9 a 4 5 b c 6 7 d e 8 f

1 2 3 4 5 6 7 8

Add

Mult

1 2 3 4 9 5 a 6 b 7 c 8 d e f

1 2 3 4 5 6 7 8

§  Ordonnancement sur 1 additionneur et un multiplieur §  Priorité sur l'urgence

§  Priorité sur la mobilité

EII3/M2R - 35

Exercice (cf. TD) §  Tcc = 4 cycles §  Tbc = 3 cycles

§  Ordonnancement sur 4 cycles ? §  Ordonnancement sur 3 cycles ?

x5 +2

x6

x(n)

x7 +4

x8

+3 y(n)

D

D

+1

EII3/M2R - 36

§  Tcc = 3 cycles §  Tbc = 3 cycles

§  Ordonnancement sur 3 cycles ? §  Ordonnancement sur 4 cycles ?

Exercice suite (cf. TD)

x5 +2

x6

x(n)

x7 +4

x8

+3 y(n)

D

+1

D

D D

D

p(n)

q(n)

w(n)

r(n)

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 10

EII3/M2R - 37

§  Tcc = 3 cycles §  Tbc = 3 cycles

§  Ordonnancement sur 3 cycles ? §  Ordonnancement sur 4 cycles ?

Exercice suite (cf. TD)

x5 +2

x6

x(n)

x7 +4

x8

+3 y(n)

D D

+1

D D

D D

EII3/M2R - 38

2.5 Allocation (ou binding) §  Affectation des opérations aux opérateurs

•  Quel opérateur alloué (+, ±, MAC) pour l’opération i de type addition ordonnancée à la date ti.

§  Affectation des variables sur les registres / files de registres / mémoires internes et externes •  Diminuer le nombre de registres •  Augmente le nombre de composants d’interconnexions

§  Affectation des transferts aux bus •  Bus généraux, locaux ou fractionnés •  Multiplexage temporel ou spatial des bus

§  Optimisations des composants d’interconnexion

EII3/M2R - 39

1 2

3 4

a b c d

S1

S2 e f

g h

R1 R2

R4 R3

UAL

a, g b, e c, f d, h

1, 2, 3, 4

R1 R2 R3 R4

a, g b, e c, f d, h

1, 4 UAL UAL 2,3

R1 R2

a, g b, e

1,3 UAL 2,4

R1 R2

c, f d, h

UAL

Allocation des opérateurs

EII3/M2R - 40

•  Détermination du nombre minimum de registres

•  Cliques (compatibilité), Coloriage (incompatibilité)

1

2

5

3

4

6

1

2

5

3

4

6

6 5 4 3 2 1

Allocation des registres

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 11

EII3/M2R - 41

c := a + b; a, b, d viennent de mémoire e := c + b; Tadd = 20 ns f := d * c * e; Tmult = 20 ns h <= f * a; Tclk = 20 ns

a

b

+1 c

d

+2

x3

e

• x4 f x5 h

Exemple 1

EII3/M2R - 42

0 1 2 3 4 5 6 7

OP x + +1 +2

x3 x4 x5

UTIL

a

Connexions

Entrée Sortie

mem + in1 et x in1 R1

Exemple 1 §  Liste des Opérateurs et des Utilisations : OP et UTIL

Tadd = 20 ns Tmult = 20 ns Tclk = 20 ns

EII3/M2R - 43

Exemple 1 §  Affectation des {util} de UTIL sur des registres §  Nb Minimum de registres = _______ §  Nb Minimum de mémoire = ______ §  Nb connexions point à point = ____ §  Nb de registres

•  Sans Multiplexage = _____ •  Avec Multiplexage = _____

EII3/M2R - 44

0 1 2 3 4 5 6 7

OP x + +1 +2

x3 x4 x5

UTIL

b

c

e

a

f

h

d

Connexions

Entrée Sortie

mem mem

+ mem

+ x x x

+ in1 et x in1 + in2

+ in1 et x in1 x in2 x in1 x in2 x in2 mem

Exemple 1 §  Liste des Opérateurs et des Utilisations : OP et UTIL

Tadd = 20 ns Tmult = 20 ns Tclk = 20 ns

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 12

EII3/M2R - 45

R1

R2 R3

R4

R4

R3

0 1 2 3 4 5 6 7

OP x + +1 +2

x3 x4 x5

UTIL

b

c

e

a

f

h

d

Connexions

Entrée Sortie

mem mem

+ mem

+ x x x

+ in1 et x in1 + in2

+ in1 et x in1 x in2 x in1 x in2 x in2 mem

Exemple 1 §  Liste des Opérateurs et des Utilisations : OP et UTIL

Tadd = 20 ns Tmult = 20 ns Tclk = 20 ns

EII3/M2R - 46

+ a

b c

d *

0

1

e

. f h

d

b

a +

+

*

* *

c

e

.

f h [10-20]

[0-10]

[10-30]

[30-50] [50-70]

Exemple 1

EII3/M2R - 47

0 1 2 3 4 5 6 7

OP x + +1 +2

x3 x4 x5

UTIL

a

Connexions

Entrée Sortie

mem

+ in1 et x in1

R1

Exemple 2 §  Liste des Opérateurs et des Utilisations : OP et UTIL

Tadd = 10 ns Tmult = 20 ns Tclk = 10 ns

EII3/M2R - 48

0 1 2 3 4 5 6 7

OP x + +1 +2

x3 x4 x5

UTIL

b

c

e

a

f

h

d

Connexions

Entrée Sortie

mem mem

+ mem

+ x x x

+ in1 et x in1 + in2

+ in1 et x in1 x in2 x in1 x in2 x in2 mem

R1

R2

R3

R4

R5

R6

Exemple 2 §  Liste des Opérateurs et des Utilisations : OP et UTIL

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 13

EII3/M2R - 49

Exemple 2

EII3/M2R - 50

Exemple 2

EII3/M2R - 51

Exemple 2 PLAN

1.  Optimisations algorithmiques 2.  Synthèse architecturale

2.1. Introduction 1. Avantages de la synthèse architecturale 2. Synthèse architecturale vs. synthèse logique/RTL

2.2. Techniques de synthèse 2.3. Outils de synthèse comportementale

3.4. Exemples de synthèse

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 14

EII3/M2R - 53

BSS : http://cairn.enssat.fr/bss HYPER : http://infopad.eecs.berkeley.edu/~hyper SPARK : http://mesl.ucsd.edu/spark/

Outils de synthèse HLS §  Outils de recherche et techniques sont mûres

•  BSS, Gaut, Hyper, Spark, ...

§  Outils commerciaux disponibles •  Catapult Synthesis (Mentor-Graphics) •  Behavioral Compiler (Synopsys) •  Visual Architect (Cadence) •  Cynthesizer (Forte Design System)

EII3/M2R - 54

http://cairn.enssat.fr/bss

Breizh Synthesis System

EII3/M2R - 55

Environnement BSS

EII3/M2R - 56

Behavioral Compiler (Synopsys)

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 15

EII3/M2R - 57

CatapultC (Mentor Graphics)

EII3/M2R - 58

CatapultC

EII3/M2R - 59

Ordonnancement

EII3/M2R - 60

Architecture RTL

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 16

Différence entre synthèse RTL et synthèse comportementale

Exemple de la multiplication complexe

EII3/M2R - 62

Spécification §  Spécification de la multiplication complexe

•  Produit de (a + j.b) par (c + j.d) •  Les données d’entrée sont disponibles séquentiellement

o  a => b => c => d

•  Les données d’entrée sont sur 5 bits •  RE = (a * c) - (b * d) •  IM = (a * d) + (b * c) •  RE et IM sont fournis sur des ports de sorties séparés au

même instant d’horloge

§  But : trouver le meilleur design (surface, temps)

EII3/M2R - 63

a

b

c

d

? ? ?

a.c

b.d

a.d

b.c

? ? ?

a.c + b.d

a.d + b.c

Conception RTL §  Combien d’opérateurs +, -, *, registre pour :

•  Circuit le plus rapide ? •  Circuit le moins coûteux ?

§  Quelle est la latence de chaque circuit ?

EII3/M2R - 64

a

b

c

d

a.c

b.d

a.d

b.c

x

x

x

x

-

+

UC 6 états

a.c + b.d

a.d + b.c

Circuit le plus rapide •  4 multiplieurs, 1 additionneur, 1 soustracteur •  4 registres 5 bits, 6 registres 10 bits •  Latence : 6 cycles de 40ns = 240ns, Surface = 2438 •  Spécification RTL : 68 lignes de code

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 17

EII3/M2R - 65

a

b

c

d

a.c

b.d

a.d

b.c

x

UC 10 états

+/-

a.c + b.d

a.d + b.c

Circuit le moins coûteux •  1 multiplieur, 1 additionneur/soustracteur •  4 registres 5 bits, 6 registres 10 bits •  Latence : 10 cycles de 40ns = 400ns, Surface = 1482 •  Spécification RTL : 117 lignes de code

EII3/M2R - 66

Comportementale

multx:process begin

main: loop a := port_entree; wait until clk'event and clk ='1'; b := port_entree; wait until clk'event and clk ='1'; c := port_entree; wait until clk'event and clk ='1'; d := port_entree; wait until clk'event and clk ='1';

re:=(a * b) - (c * d); im:=(a * d) + (b * c); wait until clk'event and clk ='1'; end loop main; end process;

§  Spécification comportementale : 16 lignes de code

Synthèse de haut niveau

EII3/M2R - 67

Optimisation en surface

400ns

EII3/M2R - 68

Optimisation en surface

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 18

EII3/M2R - 69

Optimisation en temps

EII3/M2R - 70

Optimisation en temps

EII3/M2R - 71

Conclusions §  Pas de technique unique mais plutôt une boite à outils à

appliquer sur le CDFG §  Gain en productivité

•  > 25 par exploration §  Niveau d'abstraction plus élevé

•  Modélisation du système complet •  Travail sur l'architecture favorisé •  Rapprochement avec les équipes systèmes •  Très grande réactivité en cas d'une évolution du cahier des

charges en dernière minute… •  Fiabilité, sûreté de la production •  Migration technologique facilitée

EII3/M2R - 72

Problèmes ouverts §  Plusieurs types d’architectures et de compilateurs

doivent coexister •  Architectures orientées calcul/données •  Architectures orientées contrôle •  Cœurs de DSP ou ASIP •  Architectures type “array” (systolique)

§  Faible consommation §  Ré-utilisation, bibliothèques d'éléments génériques

(IP) §  Liens forts avec la synthèse RTL §  Liens forts avec le floorplanning : DSM §  Techniques de test

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 19

EII3/M2R - 73

Bibliographie [Airiau93] Circuit Synthesis with VHDL R. Airiau, J.M. Berge et V. Olive, Kluwer, 1993 [Airiau90] VHDL : du langage à la modélisation R. Airiau, J.M. Berge, V. Olive et J. Rouillard, Presses polyt. et Univ. Romandes, 1990 [Bayoumi94] VLSI Design Methodologies for Digital Signal Processing Architectures ed. by M. Bayoumi, Kluwer, 1994 [Chand95] Low Power Digital CMOS Design A. Chandrakasan and R. Brodersen, Kluwer, 1995 [DeMicheli87] Design Systems for VLSI Circuits ed. by G. DeMicheli, NATO ASI Series, 1987 [DeMicheli96] Hardware Software Codesign ed. by G. DeMicheli, Kluwer, 1996 [Gajski88] Silicon Compilation ed. by D. Gajski, Addison Wesley, 1988 [Michel93] The Synthesis Approach to Digital System Design P. Michel et al, Kluwer, 1993 [Gajski93] High Level Synthesis of Digital Systems D. Gajski et al, Kluwer, 1993 [Gajski94] Specification and Design of Embedded Systems D. Gajski et al, Prentice Hall, 1994 [Kurup97] Logic Synthesis using Synopsys P. Kurup, T. Abbasi, Kluwer, 1997 [Lavagno93] Algorithms for synthesis and testing of asynchronous circuits L. Lavagno and A. Sangiovanni, Kluwer, 1993 [Madisetti95] VLSI Digital Signal Processors : an Introduction to Rapid Prototyping and Design Synthesis V. Madisetti, IEEE Press, 1995 [Rabaey96] Low Power Design Methodologies J. Rabaey and M. Pedram, Kluwer, 1996 [Rabaey96] Digital Integrated Circuits: a Design Perspective J. Rabaey, Prentice Hall, 1996 [Sasao93] Logic Synthesis and Optimizations ed. by T. Sasao, Kluwer, 1993 [VanHoof93] High Level Synthesis for Real-Time Digital Signal Processing J. Vanhoof et al, Kluwer, 1993

EII3/M2R - 74

Algorithme ASAP For each node ni in N do If Pred(ni) = Empty then Ei = TimeOf(ni) /* ASAP Time Label */ N = N - {ni} else Ei = 0 end if end for While N not Empty do For each node ni in N do If AllNodesScheduled(Pred(ni), E) then Ei = MAX(Pred(ni), E) + TimeOf(ni) N = N - {ni} end if end for end while

TimeOf(ni) est le temps de l’opération ni

Pred(ni) est l’ensemble de tous les prédécesseurs de ni

AllNodesScheduled(Pred(ni), E) retourne vrai si tous les Pred(ni) sont ordonnancés

MAX(Pred(ni), E) retourne la date max de E de tous les Pred(ni)

EII3/M2R - 75

ASAP Récursif Algorithm ASAP(ni : Operation) return Integer

If ni = Empty then return 0 /* Pour le noeud source on retourne la date 0 */

else if Scheduled(ni) /* Cette opération est déjà ordonnancée */ return DateASAPOf(ni) + TimeOf(ni)

else For each node pi in Pred(ni) do Ei = ASAP(pi) DateASAPOf(ni) = MAX(Ei, DateASAPOf(ni)) end for Scheduled(ni) = TRUE return DateASAPOf(ni) + TimeOf(ni)

end if

On appelle cet algorithme avec le noeud puit du graphe

EII3/M2R - 76

Algorithme ALAP For each node ni in N do If Succ(ni) = Empty then Li = T /* ALAP Time Label */ N = N - {ni} else Li = 0 end if end for While N not Empty do For each node ni in N do If AllNodesScheduled(Succ(ni), L) then Li = MIN(Succ(ni), E) - TimeOf(ni) N = N - {ni} end if end for end while

T est la contrainte de temps Succ(ni) est l’ensemble de tous

les successeurs de ni AllNodesScheduled(Succ(ni), E)

retourne vrai si tous les Succ(ni) sont ordonnancés

MIN(Pred(ni), L) retourne la date min de L de tous les Succ(ni)

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 20

EII3/M2R - 77

ALAP Récursif Algorithm ALAP(ni : Operation) return Integer

If ni = Empty then return Tcc /* Pour le noeud puit on retourne le temps du chemin critique */

else if Scheduled(ni) /* Cette opération est déjà ordonnancée */ return DateALAPOf(ni)

else For each node si in Succ(ni) do Li = ALAP(si) DateALAPOf(ni) = MIN(Ei, DateALAPOf(ni)) end for DateALAPOf(ni) = DateALAPOf(ni) - TimeOf(ni) Scheduled(ni) = TRUE return DateALAPOf(ni) end if

On appelle cet algorithme avec le nœud source du graphe

EII3/M2R - 78

Algorithme LIST Algorithm LIST()

InsertReadyOp(N, PList1, ... , PListNo) t = 0 While ((PList1 not Empty) or ... or (PListNo not Empty)) do t = t + Tclk For k = 1 to No do For FUnit = 1 to Nk do If Plistk not Empty then ScheduleOp(Scurrent, First(PListk), t) PListk = Delete(PListk, First(PListk)) end if end for end for InsertReadyOp(N, PList1, ... , PListNo) end while

PList est une liste de priorité par type d’opération PList = (PList1, ... , PListNo)

InsertReadyOp scrute N, détermine quelles opérations sont prêtes (i.e. tous ses pred. sont ordonnancés), les retire de N, et les ajoute dans PList

ScheduleOps retourne la date après ordonnancement de l’opération Oi au temps t

Delete(PListk, First(PListk)) retire de PListk la tête de liste

Nk est le nombre d’unités fonctionnelles qui réalisent Ok

EII3/M2R - 79

Algorithme d’allocation OP = Empty /* Liste des Opérateurs */ t = 0 UTIL = Empty /* Liste des Utilisation des variables, inclus les connexions */ While t < Tmax do

Nready = NodesScheduled(N, t) /* Retourne les Opérations ordonnancées à t */ For each n in Nready do op = OperatorFree(OP, t, n) /* Retourne un opérateur libre à t qui réalise n */ If op = Empty then CreateNewOP(n) end if /* Création d’un nouvel opérateur réalisant n, ajout dans OP */ Alloc(n, op) /* op devient occupé de t à t+TimeOf(n) */ For all v = VarPred(n) do /* Pour toutes les variables en entrée de n */ UTIL = UTIL + {t, MaxSuccVar(n) /* Rajoute à la liste des utilisations celle correspondant à la variable en entrée de l’opérateur. La date de fin d’utilisation correspond à la date de son successeur le plus éloigné */ end for end for

end while

EII3/M2R - 80

2° Ordre

x +

x + x(n)

x +

x

+ y(n)

z-1

z-1

x +

x +

x +

x

+ D

D

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 21

EII3/M2R - 81

FIR de longueur 5

x

+

x

+

x

+

x

+

x

x(n)

y(n)

h(0) h(1) h(2) h(3) h(4)

D D D D

x

+

x

+

x

+

x

+

x

x(n)

y(n)

h(0) h(1) h(2) h(3) h(4)

D D D D

EII3/M2R - 82

EII3/M2R - 83

Ordonnancement

Fil Rouge modifié: Filtre RIF symétrique sur 16 points x(n) x(n-15) x(n-1) x(n-14) x(n-2) x(n-13) x(n-3) x(n-12) x(n-4) x(n-11) x(n-5) x(n-10) x(n-6) x(n-9) x(n-7) x(n-8)

+ + + + + + + +

* * * * * * * *

a0 a1 a2 a3 a4 a5 a6 a7

+ + + + + + + y(n)

§  Fil rouge

EII3/M2R - 84

ASAP Ordonnancement au plus tôt (ASAP)

Allocation

8 additionneurs; 8 multiplieurs.

PAS 1 PAS 2 PAS 3 PAS 4 PAS 5 PAS 6 PAS 7

PAS 8 PAS 9

+ + + + + + + +

* * * * * * * *

+

+

+

+

+

+

+

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 22

EII3/M2R - 85

ALAP Ordonnancement au plus tard (ALAP)

Allocation

2 additionneurs; 2 multiplieurs.

PAS 1 PAS 2 PAS 3 PAS 4 PAS 5 PAS 6 PAS 7

PAS 8 PAS 9

+ +

* * +

+

+

+

+

+

+

*

+

*

+

*

+

*

+

*

+

*

+

EII3/M2R - 86

List Scheduling + + + + + + + +

* * * * * * * *

+

+

+

+

+

+

+

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

9

a

b

c

d

e

f

priorité sur l'urgence: priorité sur la mobilité:

+1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f *1 *2 *3 *4 *5 *6 *7 *8 8 8 7 6 5 4 3 2 6 5 4 3 2 1 0 7 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6

(sur l'urgence: priorité la plus forte, sur la mobilité priorité la plus faible)

Allocation avant ordonnancement d'un additionneur et de un multiplieur

temps de calcul: XXX pas

temps de calcul: XXXX pas priorité sur l'urgence:

priorité sur la mobilité:

Mobilité(i) = ALAP(i) - ASAP(i) Urgence(i) = Tcc - ALAP(i)

EII3/M2R - 87

List Scheduling + + + + + + + +

* * * * * * * *

+

+

+

+

+

+

+

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

9

a

b

c

d

e

f

priorité sur l'urgence: priorité sur la mobilité:

+1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f *1 *2 *3 *4 *5 *6 *7 *8 8 8 7 6 5 4 3 2 6 5 4 3 2 1 0 7 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6

(sur l'urgence: priorité la plus forte, sur la mobilité priorité la plus faible)

+1 +2 +3 +4 +9 +5 +a +6 +b +7 +c +8 +d +e +f *1 *2 *3 *4 *5 *6 *7 *8

+1 +2 +3 +9 +a +4 +5 +b +c +6 +7 +d +e +8 +f *1 *2 *3 *4 *5 *6 *7 *8 temps de calcul: 16 pas

temps de calcul: 15 pas priorité sur l'urgence:

priorité sur la mobilité:

Mobilité(i) = ALAP(i) - ASAP(i) Urgence(i) = Tcc - ALAP(i)

Allocation avant ordonnancement d'un additionneur et de un multiplieur

EII3/M2R - 88

Force Directed Scheduling

+ + + + + + + +

* * * * * * * *

+

y(n)

+

+

+

+

+

+

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

9

a

b

c

d e

f

chemin critique

•  Calcul du poids d'un couple (opération, pas)

•  Etablir la mobilité de chaque opération: entre les pas "b" et "h";

•  Etablir le graphe de distribution: pour tout pas "i" entre "b" et "h" DG(i) = Σ opé { 1/[h(opé)-b(opé)+1)] }

•  Calculer le couple (opé,pas) : poids(opé,pas) = compression(opé) au pas "i" - détente(opé) aux autres pas + poids(opérations dépendantes ayant perdu leur mobilité)

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 23

EII3/M2R - 89

• • •    Force Directed   • • • +1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f *1 *2 *3 *4 *5 *6 *7 *8 0 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 mobilité:

+ + + + + + + +

* * * * * * * * +

+

+

+

+

+

+

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

9

a

b

c

d

e

f

Graphe de distribution additions

1+1+1/2+1/3+1/4+1/5+1/6+1/7= 3,59

1/2+1/3+1/4+1/5+1/6+1/7 = 1,59

1+1/3+1/4+1/5+1/6+1/7= 2,09

1+1/4+1/5+1/6+1/7 = 1,76

1+1/5+1/6+1/7 = 1,51

1+1/6+1/7 = 1,31

1+1/7 = 1,14

1

1

0

3,59

1,59

1,09

0,76

0,51

0,31

0,14 0

multiplications DG(i)

EII3/M2R - 90

 • • •     Force Directed

Exemple: Calcul du poids d'affectation de *4 au pas 3:

Poids(*4,3) = compression(*4,3) - détente(*4,2) - détente(*4,4) + nouveau poids(+4) - ancien poids (+4)

= [DG*(3) -DG*(2) - DG*(4)] / (mobilité(*4)+1) + [ DG+(1)+DG+(2)]/[nouv-mob(+4)] - [ DG+(1) + DG+(2) + DG+(3) ] / (anc-mob(+4))

= (1,59 - 1,09 - 3,59)/ 3 + (3,59 + 2,59)/2 - (3,59 + 2,59 + 2,09)/3 = - 0,69

Meilleure proposition: Poids(opération,pas) minimum

L'opération devient alors immobile, on recalcule le DG, on recherche les poids.

EII3/M2R - 91

Arbre de Recherche

+ + + + + + + +

* * * * * * * * +

+ +

+ +

+ +

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8 9

a

b c

d e

f

pas1 pas2 pas3 pas4 pas5 pas6 pas7 pas8 pas9

+ 3

+ 4

x 7

x 8

pas 1 pas 2

pas3 pas2 pas1 pas3 pas2 pas1

ordo. des opérations non mobiles

pas3 pas4

°°°

pas3 ... pas8 pas3 ... pas8 °°°

feuilles de l'arbre de recherche des solutions 1

2

Exemple : Etude successive des opérations, recherche des pas où elles peuvent être allouées.

Recherche exhaustive: étudier les coûts des architectures en toutes les feuilles

Branch and Bound : étudier le coût des propositions partielles

Left edge : On ne parcourt que la branche gauche de l'arbre de recherche des solutions

ordo

ordo

ordo

ordo

ou

ou ou ou ou ou

ou

ou •••

EII3/M2R - 92

Branch & Bound + + +

+ + +

+ + * * *

* * *

* * +

y(n)

+

+ +

+

+ +

1 2 3

4 5 6

7 8 1 2 3

4 5 6 7 8 9

a

b

c

d e

f

Proposition 'i' (feuille)

coût = 4 + et 3 x

+ + +

+ + +

+ + * * *

* * * *

+

y(n)

+

+

+ +

+ +

1 2 3

4 5 6

7 8 1 2 3

4 5 6 7

9

a

b c

d e

f

Proposition suivante

(1 niveau au dessus des feuilles)

coût = 4 + et 4 x

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 24

EII3/M2R - 93

Recuit Simulé + * * +

+

*

1 2 3 4

5

6

* +

+

*

2 3

5

6

1 + * 4

état initial allocation

2+,2*

transformation énergie =

T = (coût de la soution - coût espéré)

-K/T P.e

tir aléatoire des transformations

allocation

2+,1*

tir aléatoire pour retenir a nouvelle solution

meilleure Amplitude des transformations proportionnelle à l'énergie

Evolution des transformations coût

Solutions

coût espéré

meilleure solution

Tr1

Tr 2 Tr 3

EII3/M2R - 94

Comparaison des outils Behavioral Compiler BSS-Gaut Money

Langage d’entrée Standard IEEE Sous ensemble VHDL Compatible SynopsysRapidité lent Très rapide RapideCapacité < 150 opérations Importante ImportanteInterface d’entrée script Graphique en

démonstration oucommande

Graphique ou script

Fichier de résultats oui oui ouiInterface de sortiegraphique

Ordonnancement desregistres et opérateurs Machine d’états

Ordonnancement desopérateurs, registre et bus,structure de l’architecture,flot des données

Ordonnancement desopérateurs, machined’état, structure del’architecture

Pipeline oui automatique ouiDéroulage de boucle Déroulage complet ou

non dérouléeDéroulage complet Déroulage complet,

partiel ou nulLibrairie Caractérisée lors de la

synthèsePrécaractérisée Précaractérisée par script

Contrainte principale Nombre de cycle etpériode

Cadence des calculs Nombre de ressources

Résultat de synthèse Base de données enformat propriétaire

VHDL RTL pourSynopsys ou Compass

VHDL RTL pourSynopsys

EII3/M2R - 95

Synthèse UT

Spécification comportementale

Architecture UT

Contraintes

Sim

ulat

ion

/ Vér

ifica

tion

Simulation RTL

Simulation comportementale

Vecteurs de test

GAUT

Simulation logique

Bibliothèque

Comportement UM

Synthèse UM

Générateurs d'adresse

Bancs mémoire

Bibliothèque

Synthèse avec BSS

GAUM

EII3/M2R - 96

Synthèse UT

projet.dfg

Vecteurs de test projet.in

Vecteurs des sorties projet.out

Simulation

gsel

gord

gass

gopt

Synthèse projet.archi

.dfa

.dfs

.archi

Interface RTL gtrad

projet.vhd

Compilation

gunroll gdfg

gcomp

Spécification comportementale VHDL projet.src

Packages VHDL projet.h *.h

Bibliothèque technologique

*.lib

Testbench VHDL projet.test

gsim visigaut

Structural Description

Efficiency of Operators and Registers

R1 R2 R3

Histogram of Datas Lifetime Threshold Capturation

Visualization of DFG

User InterfaceCompilation Selection Scheduling Binding Optimization

gautV3

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 25

EII3/M2R - 97

Synthèse UM : GAUM

GA

UM

Bibliothèque d’opérateurs

Optimisations

&

Distribution

Sélection des mémoires

Placement Génération des adresses

EII3/M2R - 98

R

FU

R

Stor

age

Uni

t

Processing Unit Data Bus

Adress Bus

Address Generator

R

inte

rcon

nect

ions

Com. Unit

External Access

Cell

Control Unit

FU

R

Memory Bank N°1 • • •Memory

Bank N°1

Address Generator

Address Generator

Ext

erna

l M

emor

y E

xter

nal

Mem

ory

External Address Generator

Modèle de l’architecture

EII3/M2R - 99

Interface WWW

Résultats textuels

Navigateur

IHM (Applet)

Graphe DFG

Architecture

Occupation des registres

Vérification cohérence

Site client

CGI (Perl) •  Mise en forme de la requète •  Demande d'exécution d'un module

•  Accusé de terminaison •  Renvoi du fichier résultat

Outils . gcomp . gsel . gord . gsim . gopt . gass . gtrad

Site serveur

(Applets)

[DAC 99] EII3/M2R - 100

Bilan §  50.000 lignes de code C/Java §  Interfaces graphiques Xlib, Xmotif, Java §  Solaris, Linux, Cygwin, …

§  Contrats de Recherche •  CNET Lannion •  CNET Grenoble •  THOMSON CSF •  TNI-Valiosys •  CEA

Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués

Olivier Sentieys, ENSSAT-IRISA 26

EII3/M2R - 101

HYPER (UC Berkeley)

§  Langage SILAGE, repésentation interne en CDFG §  Interface de sortie pour Synopsys, Lager IV

CDFG

Silage Sélection

Allocation Mémoire

Allocation Ordon.

Estimation

Transformations

Mapping

EII3/M2R - 102

Bus d’interconnexion

EXU

Basée sur des Clusters

EXU

HYPER §  Modèle d’architecture

EII3/M2R - 103

Cathedral 2/3 (IMEC)

§  Langage Silage + pragma pour allocation §  Interface avec Cadence §  EXecution Units ou Application Specific Unit

Allocation Silage

Organisation Mémoire

Assignation

Génération Structure

Ordonnancement

Microcode

Cathedral 3

Génération DSFG

Définition ASU

EII3/M2R - 104

Bus d’interconnexion

RA

M

RA

M

MU

LT

ALU

Registre Instructions

Contrôle

Cathedral §  Modèle d’architecture