high-level synthesis (vhdl->vhdl) - service central … · - vhdl, c or systemc ... reg etat...

17
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 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 Algorithm GDS2 C/C++ SystemC Code Design model Asic High Level Synthesis Technology files (Standard Cells + RAM cuts) Formal proof (sequential equivalence checking) High Level Synthesis flow [T. Michel, STMicroelectronics]

Upload: buiphuc

Post on 12-Sep-2018

304 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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 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

Algorithm

GDS2 C/C++

SystemC Code

Design model

Asic

High Level Synthesis

Technology files (Standard Cells + RAM cuts)

Formal proof

(sequential equivalence checking)

High Level Synthesis flow

[T. Michel, STMicroelectronics]

Page 2: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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

Olivier Sentieys, ENSSAT-IRISA 2

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] 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]

Page 3: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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

Olivier Sentieys, ENSSAT-IRISA 3

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

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

Page 4: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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

Olivier Sentieys, ENSSAT-IRISA 4

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

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

Page 5: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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

Olivier Sentieys, ENSSAT-IRISA 5

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

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

Page 6: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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

Olivier Sentieys, ENSSAT-IRISA 6

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 +)

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

Page 7: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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

Olivier Sentieys, ENSSAT-IRISA 7

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

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

Page 8: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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

Olivier Sentieys, ENSSAT-IRISA 8

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 - 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 - 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

Page 9: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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

Olivier Sentieys, ENSSAT-IRISA 9

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

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

Page 10: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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

Olivier Sentieys, ENSSAT-IRISA 10

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

EII3/M2R - 41

c := a + b; a, b, d viennent de mémoire e := b + c; 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 = _____

Page 11: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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

Olivier Sentieys, ENSSAT-IRISA 11

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

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 - 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

Page 12: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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

Olivier Sentieys, ENSSAT-IRISA 12

EII3/M2R - 55

Environnement BSS

EII3/M2R - 56

Behavioral Compiler (Synopsys)

EII3/M2R - 57

CatapultC (Mentor Graphics)

EII3/M2R - 58

CatapultC

Page 13: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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

Olivier Sentieys, ENSSAT-IRISA 13

EII3/M2R - 59

Ordonnancement

EII3/M2R - 60

Architecture RTL

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)

Page 14: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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

Olivier Sentieys, ENSSAT-IRISA 14

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

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

Page 15: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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

Olivier Sentieys, ENSSAT-IRISA 15

EII3/M2R - 67

Optimisation en surface

400ns

EII3/M2R - 68

Optimisation en surface

EII3/M2R - 69

Optimisation en temps

EII3/M2R - 70

Optimisation en temps

Page 16: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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

Olivier Sentieys, ENSSAT-IRISA 16

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)

Page 17: High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat Logique Contrôle Logique Evolution Registre Contrôle ... - Une ou plusieurs machine

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

Olivier Sentieys, ENSSAT-IRISA 17

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