La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

La conception de circuit synchrones en Esterel v7 Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 5, 14 mai 2013.

Présentations similaires


Présentation au sujet: "La conception de circuit synchrones en Esterel v7 Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 5, 14 mai 2013."— Transcription de la présentation:

1 La conception de circuit synchrones en Esterel v7 Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 5, 14 mai 2013

2 14/05/20132G. Berry, Collège de France Micro-architecture Architecture Circuits Design logique RTL DFT (testabilité) Placement Routage Masks$ 1,000,000 Chips Design Synthèse Fab Vérification

3 14/05/20133G. Berry, Collège de France Micro-architecture Architecture Circuits Design logique RTL DFT (testabilité) Placement Routage Masks$ 1,000,000 Chips $$

4 14/05/20134G. Berry, Collège de France Micro-architecture Architecture Circuits Design logique RTL DFT (testabilité) Placement Routage Masks$ 1,000,000 Chips ESTEREL V7

5 Définir un langage de naut niveau – pour écrire des circuits de façon comportementale (?) – en traitant chemins de données + chemins de contrôle 14/05/20135 G. Berry, Collège de France Objectifs Ecrire des compilateurs / simulateurs efficaces – pour que les architectes fassent tourner les designs – très tôt dans le cycle de développement – avec des outils perfectionnés de visualisation et débogage – pour générer des circuits aussi bon quà la main – en garantissant une parfaite identité exécution / simulation Se connecter aux meilleurs moteurs de vérification – Pour vérifier le maximum de propriétés avant lexécution – Et donc trouver les bugs très tôt dans le développement

6 1990 : Esterel v5 circuits (cf cours 4, 23/04/2013) ~1995 : Joe Buck de Synopsys intègre Esterel v5 dans Cocentric System Studio, pour le design haut niveau de systèmes électroniques ~1996 : Luciano Lavagno et Ellen Sentovich de Cadence intègrent Esterel dans Polis, HW/SW Codesign, puis développent ECL = Esterel C Language 14/05/ G. Berry, Collège de France Esterel v7 : la genèse ~1998 : Michael Kisninevsky (Intel Strategic CAD Lab, Portland, Oregon) expérimente Esterel pour le design de circuits de contrôle ~1998 : Yves Leduc / Gaël Clavé expérimentent Esterel v5 chez Texas Instruments ~2000 : design préliminaire dEsterel v7 avec M. Kishinevsky

7 : Création dEsterel Technologies –Objectif : développer Esterel v7 / Esterel Studio pour les applications logicielles et matérielles –Clients Dassault Aviation, Thomson, Texas Instruments, etc. –Intel Capital + Caisse des dépôts + VCs 14/05/ G. Berry, Collège de France Esterel v7 : le démarrage 2003: Esterel Technologies rachète SCADE et décide la partition Esterel circuits / SCADE logiciels embarqués : améliorations techniques, utilisation sur produits complexes en production 2007 : travail de standardisation IEEE : développement du langage, du compilateur et du vérifieur, intégrés dans Esterel Studio; expérimentations clients (TI, ST Micro, Xilinx, Philips NXP, Intel)

8 2007 : filiale séparée Esterel EDA Technologies Coopération avec Synfora (Pico), Coware (SystemC) 14/05/ G. Berry, Collège de France Esterel v7 : la maturité 2008 : développement de SCADE 6 chez E. T : crise financière, TI licencie massivement 2009 : Esterel EDA ferme Esterel v7 Synfora 2011 : Synopsys rachète Synfora 2009 : Esterel v7 Synopsys 2012 : Ansys rachète Esterel Technologies 2009 : SCADE 6 en pleine forme ! ?

9 Définitions de données – en v5, données purement abstraites (APIs) – en v7, données paramétriques, précises et optimisées – pour la synthèse et la vérification, tableaux, bitvecteurs 14/05/ G. Berry, Collège de France Esterel v7 : les nouveautés linguistiques Meilleure modularité – définitions densembles de données – définitions dinterfaces (avec miroirs) et de modules – généricité (dimensions, fonctions, etc.) Enrichissement des signaux – mémorisés ou temporaires, avec ou sans valeurs initiales – immédiats ou retardés (registres) – tableaux de signaux et signaux à valeurs tableaux

10 14/05/ G. Berry, Collège de France Esterel v7 : les nouveautés linguistiques Nouvelles instructions – équations simplifiant et standardisant le codage – boucles statiques de manipulation de tableaux – meilleur branchements des signaux meilleurs modules Manipulation dhorloges – masquage de cycles (clock gating) – vrai multi-horloge modulaire La sémantique dEsterel v5 est globalement préservée et facilement étendue au clock-gating / multi-horloge

11 14/05/201311G. Berry, Collège de France Project Structure Automatic Documentation Project Management Executable Specification Exporter Debugging & Simulation Formal Verification Design Verification Sequential Equivalence check DUT Optimized for synthesis DFT-ready SystemC & RTL flow integration SystemC RTL Synthesis.sc.vhd Architecture Design Specification Capture Design Functional Spec Verification Requirements Architecture Diagram Editor Simulator Design Verifier Model Reporter Code & Testbench Generators Editor Sequential Equivalence Checker IDE Player IDE

12 unsigned : entiers positifs i tels que 0 i N 1 (N élts.) unsigned unsigned (2 N élts, N bits binaire) 14/05/ G. Berry, Collège de France Entiers unsigned (2-adiques bien tronqués) Pourquoi cette précision ? – pour optimiser lallocation des bus de données – 4 : unsigned demande 3 fils – 5 : unsigned demande 3 fils – mais 4 * 5 : unsigned demande 5 fils, pas 6 ! –pour vérifier statiquement lindexation des tableaux Regarder toutes les opérations dans le blanc des yeux, avec parfois de mauvaises surprises !

13 14/05/ G. Berry, Collège de France Opérations unsigned : unsigned, unsigned unsigned car valeur max (M 1) (N 1) (M N 1) 1 : unsigned, unsigned unsigned avec erreur si j i car valeur max (M 1) 0 M 1 ( erreur pour i j si i j) * : unsigned, unsigned unsigned car valeur max (M 1) (N 1) / : unsigned, unsigned unsigned car valeur max (M 1) /1 (erreur si second argument nul) mod : unsigned, unsigned unsigned car valeur max M 1 si M 1 N 2 et N 2 sinon (erreur si second argument nul) ** : unsigned, unsigned unsigned car valeur max (M 1) N 1

14 14/05/ G. Berry, Collège de France Opérations unsigned assert (uexpr) : avec uexpr unsigned, déclare que la valeur v de uexpr vérifiera v M 1 vérifié à la compilation, à la simulation ou formellement, >=, =, <> : unsigned, unsigned bool, classiques sat (uexpr) avec uexpr : unsigned : saturation à M 1 soit v la valeur de uexpr. Alors sat (uexpr) min(v,M 1) binsize (uexpr) : nombre de bits pour écrire uexpr en binaire si la valeur de uexpr est v, le n tel que 2 n-1 v 2 n

15 signed : entiers i tels que N i N 1 (2 N éléments) signed signed (2 N éléments, N bits en binaire) 14/05/ G. Berry, Collège de France Entiers relatifs : signed signed car valeur max ( M) abs : signed unsigned car valeur max abs( M) M : signed signed (unaire) identité

16 14/05/ G. Berry, Collège de France Opérations signed : signed, signed signed car valeur min M N : signed, signed signed car valeur max M 1 ( N) (M N) 1 * : signed, signed signed car valeur max ( M) ( N) / : signed, signed signed car valeur max M / 1 si (erreur si second argument nul) ** : non introduit mod : pas clair ! Pas de meilleure définition mathématique, on trouve toutes les définitions possibles selon les restes et signes...

17 14/05/ G. Berry, Collège de France Opérations signed assert (sexpr) : avec sexpr signed, déclare que la valeur v de sexpr vérifiera M v M vérifié à la compilation, à la simulation ou formellement sat (sexpr) avec sexpr : signed : saturation dans le sens du signe soit v la valeur de sexpr. Alors sat (sexpr) v si M v M ou M si v M ou M 1 si v M Conversion automatique de signed en unsigned dans toutes les opérations mixtes, >=, =, <> : signed, signed bool, classiques : unsigned signed (unaire) car valeur max M 1 : unsigned signed (unaire) car valeur min (M 1)

18 14/05/ G. Berry, Collège de France Tableaux type Byte bool [8] ; // bitvector 0..7 input Opcode : Byte ; indexation partielle : X [ i, j ] : Pixel [5] extraction de sous-tableaux : X [1, 3..7] [2..5] : Pixel [5, 4] type Pixel unsigned ; // ou unsigned, nombre constant Size 100 : unsigned<> ; // implicit unsigned output ImageStack : Pixel [Size,Size] [5] ; Y : X [i, j] [ k 1] assert [ i ] & assert [ j ] & assert [ k 1] vérifié à la compilation, à la simulation ou formellement dimension évaluable statiquement, assertion de taille implicite

19 14/05/ G. Berry, Collège de France Bitvecteurs vecteurs de bits égalité, différence <> B << k : shift gauche non signé B >> k : shift droit non signé B <<< k: shift gauche signé B >>> k : shift droit signé concaténation : lcat(B 0, B 1,..., B n ) et mcat(B 0, B 1,..., B n ) extension à k bits : extend(B, k) et sextend(B, k) resize, reverse, etc. type Byte bool [8] ; // bitvector 0..7 input Opcode : Byte ; type Word bool [32] ; // bitvector var Memory : Word [MemSize] in... end constantes b010011

20 14/05/ G. Berry, Collège de France Cartes (maps) de bitvecteurs Objectif : donner des synonymes intuitifs aux champs map Word { // map non nommée LowByte [0..7], LowHalf [0..15], HighHalf [16..31] }; // définition séquentielle map Instruction : Word seq { Opcode [8], Immediate, // bool Register [7], Address [16] }; nom utile au débogage map Instruction : Word { Opcode [0..7], Immediate [8], // bool RegisterNum [9..15], Address [16..31] };

21 14/05/ G. Berry, Collège de France Conversion unsigned bitvecteur expr : unsigned u2bin (expr) : bool [binsize(M 1)] // écriture binaire minimale u2bin (expr, N) : bool [N] // avec N binsize(M 1) bin2u (6) b110 u2gray (6) b101 u2onehot (6) b // 7 bits car 6 : unsigned u2onehot (6, 10) b // 10 bits, bit 6 à 1 u2code : possibilité pour lutilisateur de définir son propre code u2onehot (expr) : bool [M] // écriture un seul bit à 1 u2onehot (expr, N) : bool [N] // avec N M u2gray (expr) : bool [binsize(M 1)] // écriture en code Gray u2gray (expr, N) : bool [N] // avec N binsize(M 1)

22 14/05/ G. Berry, Collège de France Conversion bitvecteur unsigned expr : bool [M] bin2u (expr) : unsigned // décodage binaire bin2u (expr, N) : unsigned // avec N 2 M gray2u (expr) : unsigned // décodage Gray gray2u (expr, N) : unsigned // avec N 2 M onehot2u (expr) : unsigned // décodage onehot onehot2u (expr, N) : unsigned // avec N M

23 14/05/ G. Berry, Collège de France Conversions signed bitvecteur expr : signed s2bin (expr) : bool [binsize(M 1) 1] // écriture binaire minimale s2bin (expr, N) : bool [N] // avec N binsize(M 1) 1 s2bin (6) b0101 s2bin ( 6) b1011 expr : bool [M] bin2s (expr) : signed bin2s (expr, N) : signed // avec N 2 M-1

24 14/05/ G. Berry, Collège de France Signaux purs et valués S : uniques dans linstant (idem Esterel v5) Nouveau : reg (de Moore), temp (non mémorisé), initialisation signal S1, // signal pur : statut mais pas de valeur S2 : T, // signal valué : statut, valeur de type T mémorisée, S3 : // un émetteur au maximum à chaque instant S3 : T combine F, // statut, valeur de type T mémorisée // émissions simultanées combinées par F S4 : T init exp, // statut, valeur de type T mémorisée, S3 : // initialisée à la valeur de exp S5 : T combine F init exp,

25 14/05/ G. Berry, Collège de France Valeurs simples, signaux temporaires S8 : temp T, // statut, valeur non mémorisée, S3 : // un émetteur max. S6 : value T, // pas de statut, valeur mémorisée, S3 : // un émetteur maximum à chaque instant S7 : value T combine F, // pas de statut, valeur mémorisée // émetteurs multiples combinés par F S9 : temp value T combine F init exp, // pas de statut, valeur combinée non mémorisée, // réinitialisation à chaque instant à la valeur de exp

26 14/05/ G. Berry, Collège de France Signaux retardés R10 : reg, // statut retardé R11 : reg T, // statut retardé, valeur de type T R12 : reg value T combine F init exp,... ?R10 : valeur émise à linstant précédent pre (?R10) non autorisé

27 14/05/ G. Berry, Collège de France Nouvelle instruction emit emit { S1, ?S2 <= 2, ?S3 0, next R10 if S4 and ?S4 > 0, next ?R11 <= pre(?S4)+?S5+2 if S6 } every LR do emit StartStopCommand || every UR do emit LapCommand sustain { StartStopCommand <= LR, LapCommand <= UR }

28 14/05/ G. Berry, Collège de France Boucles sur tableaux emit { O [0] <= I [0], for i < M 1 do O [ i+1] <= O [ i ] or I [ i+1] end for } OK pour la génération de circuits I [0] I [1] I [2] O [0] O [1] O [2]

29 14/05/ G. Berry, Collège de France Boucles sur tableaux emit seq { O [0] <= I [0], for i < M -1 doup O [ i+1] <= O [ i ] or I [ i+1] end } Alternative : tableaux fonctionnels de SCADE 6 I [0] I [1] I [2] O [0] O [1] O [2] Mieux pour la simulation logicielle

30 14/05/ G. Berry, Collège de France Exemple : un mini-filtre dimages TV Etant donné un flot de pixels dentrée x i, calculer un flot de pixels de sortie y i tels que y i ( x i-2 4 x i-1 6 x i 4 x i+1 x i+2 ) / 16 les pixels sont contenus dans des mots 32 bits il faut laisser passer 2 pixels au démarrage et les récupérer à la fin en complétant avec des 0

31 14/05/ G. Berry, Collège de France p0p1p2p3 *1*4*6*4*1 + / 16 InWord : bool[32] InPixel : temp unsigned OutPixel : unsigned FeederBasicFilter InWord Feeder InPixel BasicFilter OutPixel OutEndOfLine InEndOfLine

32 14/05/ G. Berry, Collège de France p0p1p2p3 *1*4*6*4*1 + / 16 InWord : bool[32] OutPixel : unsigned FeederBasicFilter InWord Feeder InPixel BasicFilter OutPixel OutEndOfLine InEndOfLine Initialisation à InPixel : temp unsigned

33 14/05/ G. Berry, Collège de France p0p1p2p3 *1*4*6*4*1 + / 16 InWord : bool[32] OutPixel : unsigned FeederBasicFilter InWord Feeder InPixel BasicFilter OutPixel OutEndOfLine InEndOfLine 0000 Entrée dun mot, délai initial 2 cycles InPixel : temp unsigned

34 14/05/ G. Berry, Collège de France p0p1p2p3 *1*4*6*4*1 + / 16 InWord : bool[32] OutPixel : unsigned FeederBasicFilter InWord Feeder InPixel BasicFilter OutPixel OutEndOfLine InEndOfLine 000 Délai initial 2 cycles InPixel : temp unsigned

35 14/05/ G. Berry, Collège de France p0p1p2p3 *1*4*6*4*1 + / 16 InWord : bool[32] OutPixel : unsigned FeederBasicFilter InWord Feeder InPixel BasicFilter OutPixel OutEndOfLine InEndOfLine 00 Sortie du premier OutPixel InPixel : temp unsigned

36 14/05/ G. Berry, Collège de France p0p1p2p3 *1*4*6*4*1 + / 16 InWord : bool[32] OutPixel : unsigned FeederBasicFilter InWord Feeder InPixel BasicFilter OutPixel OutEndOfLine InEndOfLine Sortie dun OutPixel 0 InPixel : temp unsigned

37 14/05/ G. Berry, Collège de France p0p1p2p3 *1*4*6*4*1 + / 16 InWord : bool[32] OutPixel : unsigned FeederBasicFilter InWord Feeder InPixel BasicFilter OutPixel OutEndOfLine InEndOfLine Entrée dun mot, sortie dun OutPixel InPixel : temp unsigned

38 14/05/ G. Berry, Collège de France p0p1p2p3 *1*4*6*4*1 + / 16 InWord : bool[32] OutPixel : unsigned FeederBasicFilter InWord Feeder InPixel BasicFilter OutPixel OutEndOfLine InEndOfLine Sortie dun OutPixel InPixel : temp unsigned

39 14/05/ G. Berry, Collège de France p0p1p2p3 *1*4*6*4*1 + / 16 InWord : bool[32] OutPixel : unsigned FeederBasicFilter InWord Feeder InPixel BasicFilter OutPixel OutEndOfLine InEndOfLine Sortie dun OutPixel InPixel : temp unsigned

40 14/05/ G. Berry, Collège de France p0p1p2p3 *1*4*6*4*1 + / 16 InWord : bool[32] OutPixel : unsigned FeederBasicFilter InWord Feeder InPixel BasicFilter OutPixel OutEndOfLine InEndOfLine Fin de ligne dentrée, sortie dun OutPixel InPixel : temp unsigned

41 14/05/ G. Berry, Collège de France p0p1p2p3 *1*4*6*4*1 + / 16 InWord : bool[32] OutPixel : unsigned FeederBasicFilter InWord Feeder InPixel BasicFilter OutPixel OutEndOfLine InEndOfLine Entrée de 0, sortie dun OutPixel 0 InPixel : temp unsigned

42 14/05/ G. Berry, Collège de France p0p1p2p3 *1*4*6*4*1 + / 16 InWord : bool[32] OutPixel : unsigned FeederBasicFilter InWord Feeder InPixel BasicFilter OutPixel OutEndOfLine InEndOfLine Entrée de 0, sortie OutPixel, fin de ligne de sortie 00 InPixel : temp unsigned

43 14/05/ G. Berry, Collège de France Groupes de données data PixelData : constant PIXEL_WIDTH : unsigned<> = 8 ; // unsigned type Pixel = unsigned ; // un nombre! end data data ImageData : constant LINE_LENGTH : unsigned<> = 8 ; constant NUMBER_OF_LINES : unsigned <> = 2 ; end data

44 14/05/201344G. Berry, Collège de France data WordData : constant WORD_WIDTH : unsigned<> = 32 ; type Word = bool [WORD_WIDTH] ; // un mot se décompose en 4 octets map Word { b0 [0..7], // bitvecteurs, pas nombres b1 [8..15], b2 [16..23], b3 [24..31] }; end data

45 14/05/201345G. Berry, Collège de France data InputLineData : extends ImageData ; extends WordData ; extends PixelData ; constant PIXELS_PER_WORD : unsigned<> = WORD_WIDTH / PIXEL_WIDTH ; constant WORDS_PER_LINE : unsigned<> = LINE_LENGTH / PIXELS_PER_WORD ; end data

46 14/05/201346G. Berry, Collège de France data FilterData : constant Coef : unsigned<> [5]= {1, 4, 6, 4, 1} ; // unsigned constant CoefSum : unsigned<> = 16 ; constant INIT_DELAY : unsigned<> = 3 ; end data

47 14/05/201347G. Berry, Collège de France interface OutPixelIntf : extends PixelData ; output OutPixel : temp Pixel ; output OutEndOfLine ; end interface interface WordIntf : extends WordData ; output Ready ; input InWord : Word ; end interface interface InPixelIntf : extends PixelData ; input InPixel : temp Pixel ; input InEndOfLine ; end interface

48 14/05/201348G. Berry, Collège de France //========== // Main module //========== module Filter : extends WordIntf ; extends OutPixelIntf ; signal extends InPixelIntf in // déclare tous les signaux de // InPixelIntf comme locaux run Feeder || run PixelFilter end signal end module

49 14/05/201349G. Berry, Collège de France module Feeder : // Interface declarations extends InputLineData ; extends FilterData ; extends WordIntf ; extends mirror InPixelIntf ;

50 14/05/201350G. Berry, Collège de France InWord / InPixel (?InWord.p0) InPixel (?InWord.p2) / InPixel (?InWord.p3) / EndOfWord / Ready … / InPixel(0) WORDS_PER_LINE EndOfWord 2 InPixel / InEndOfLine signal EndOfWord

51 14/05/201351G. Berry, Collège de France module PixelFilter : // Interface declarations extends FilterData ; extends InputLineData ; extends InPixelIntf ; extends OutPixelIntf ;

52 signal Product : unsigned [5] in // Compute Product array loop weak abort signal DelayLine : Pixel [5] init 0 in sustain { if InPixel then // décalage ?DelayLine [1..4] <= pre (?DelayLine [0..3]), ?DelayLine [0] <= ?InPixel end if } || await INIT_DELAY InPixel ; sustain ?Product <= Coef [*] ?DelayLine // * sur tableaux end signal when InEndOfLine ; pause end loop 14/05/201352G. Berry, Collège de France

53 signal Product : unsigned [5] in // Compute Product array loop weak abort signal DelayLine : Pixel [5] init 0 in sustain { if InPixel then // décalage ?DelayLine [1..4] <= pre(?DelayLine [0..3]), ?DelayLine [0] <= ?InPixel end if } || await INIT_DELAY InPixel ; sustain ?Product <= Coef [*] ?DelayLine // * sur tableaux end signal when InEndOfLine ; pause end loop 14/05/201353G. Berry, Collège de France

54 14/05/201354G. Berry, Collège de France || // Calcul des OutPixel sustain { ?OutPixel ((?Product [0] + ?Product [1] + ?Product [2] + ?Product [3] + ?Product [4]) / CoefSum) if Product, OutEndOfLine <= InEndOfLine } end signal end module

55 14/05/ G. Berry, Collège de France Registration des sorties module PixelFilter : // Interface declarations extends FilterData ; extends InputLineData ; extends InPixelIntf ; extends OutPixelIntf ; Pas dempilement des chemins critiques meilleure composition électrique refine OutPixel : reg ; refine OutEndOfLine : reg ;

56 14/05/201356G. Berry, Collège de France || // Calcul des OutPixel sustain { next ?OutPixel ((?Product [0] + ?Product [1] + ?Product [2] + ?Product [3] + ?Product [4]) / CoefSum) if Product, next OutEndOfLine <= InEndOfLine } end signal end module

57 14/05/ G. Berry, Collège de France Accélération par pipeline signal Product : reg unsigned [5] in // Compute Product array loop weak abort signal DelayLine : Pixel [5] init 0 in... || await INIT_DELAY InPixel ; sustain next ?Product <= Coef [*] ?DelayLine end signal when InEndOfLine ; pause end loop Pour couper le chemin critique, insérer des registres entre produits et somme

58 14/05/ G. Berry, Collège de France Généricité data PixelData : generic constant PIXEL_WIDTH : unsigned ; type Pixel = unsigned ; // un nombre! end data interface Intf : extends PixelData [ 16 / PIXEL_WIDTH ] input InPixel : Pixel // Pixel = unsigned ;... end interface

59 Un langage riche et souple pour la conception de circuits synchrones (multi-horloges) complexes Qui rend triviales des opérations manuellement difficiles : séquence / parallèle / préemption, registration, pipelining, etc. Très amélioré et simplifié par la proposition de standardisation IEEE (merci aux participants) Mais maintenant apparemment en coma profond /05/ G. Berry, Collège de France Conclusion Voir cours 6 pour limplémentation et cours pour le multi-horloges

60 14/05/ G. Berry, Collège de France Références The Esterel v7 Reference Manual Version v7.60 for Esterel Studio 6.1 Esterel EDA Technologies, Nov IEEE P1778/D1 Draft Standard for Esterel v7 Language Reference Manual


Télécharger ppt "La conception de circuit synchrones en Esterel v7 Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 5, 14 mai 2013."

Présentations similaires


Annonces Google