High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat...
Transcript of High-Level Synthesis (VHDL->VHDL) - Service central … · - VHDL, C or SystemC ... Reg Etat...
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]
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]
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
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
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
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
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
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
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
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 = _____
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
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
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)
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
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
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)
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