1 / 60

La conception de circuit synchrones en Esterel v7

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. Architecture. Micro-architecture. Design logique RTL. Circuits. DFT (testabilité). Placement  Routage. $ 1,000,000. Masks. Chips.

tamah
Download Presentation

La conception de circuit synchrones en Esterel v7

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

  5. Objectifs • 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 • 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 l’exécution • Et donc trouver les bugs très tôt dans le développement G. Berry, Collège de France

  6. Esterel v7 : la genèse • 1990 : Esterel v5  circuits (cf cours 4, 23/04/2013) • ~1995 : Joe Buck de Synopsysintè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 • ~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 d’Esterel v7 avec M. Kishinevsky G. Berry, Collège de France

  7. Esterel v7 : le démarrage • 2000-2001 : Création d’Esterel 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 • 2001-2004 : 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) • 2003: Esterel Technologies rachète SCADE et décide la partition Esterel  circuits / SCADE  logiciels embarqués • 2004-2009 : améliorations techniques, utilisation sur produits complexes en production • 2007 : travail de standardisation IEEE G. Berry, Collège de France

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

  9. Esterel v7 : les nouveautés linguistiques • 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 • 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 • Meilleure modularité • définitions d’ensembles de données • définitions d’interfaces (avec miroirs) et de modules • généricité (dimensions, fonctions, etc.) G. Berry, Collège de France

  10. 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 d’horloges • masquage de cycles (clock gating) • vrai multi-horloge modulaire La sémantique d’Esterel v5 est globalement préservée et facilement étendue au clock-gating / multi-horloge G. Berry, Collège de France

  11. Design Specification Capture Design FunctionalSpec Architecture Verification Requirements Editor Project Structure Debugging & Simulation Editor ArchitectureDiagram DesignVerification ProjectManagement Simulator IDE DesignVerifier Formal Verification ModelReporter Automatic Documentation IDE SequentialEquivalenceChecker Player DUT Sequential Equivalence check  Executable Specification Exporter Code & TestbenchGenerators Optimized for synthesis DFT-ready SystemC & RTL flow integration .sc RTL Synthesis SystemC .vhd G. Berry, Collège de France

  12. Entiers unsigned (2-adiques bien tronqués) • unsigned<N> : entiers positifs i tels que 0  i  N1(Nélts.) • unsigned<[N]>  unsigned<2**N> (2Nélts, N bits binaire) • Pourquoi cette précision ? • pour optimiser l’allocation des bus de données • 4 : unsigned<5> demande 3 fils • 5 : unsigned<6> demande 3 fils • mais 4*5 : unsigned<21> demande 5 fils,pas 6 ! • pour vérifier statiquement l’indexation des tableaux Regarder toutes les opérations dans le blanc des yeux, avec parfois de mauvaises surprises ! G. Berry, Collège de France

  13. Opérations unsigned  : unsigned<M>, unsigned<N>  unsigned<MN1> car valeur max (M1)(N1)  (MN1)1  : unsigned<M>, unsigned<N>  unsigned<M> avec erreur si ji car valeur max (M1)0  M1(erreur pour i  j si ij) *: unsigned<M>, unsigned<N>  unsigned<(M1)(N1)1> car valeur max (M 1)(N 1) /: unsigned<M>, unsigned<N>  unsigned<M> car valeur max (M1)/1(erreur si second argument nul) mod: unsigned<M>, unsigned<N>  unsigned<min(M,N1)> car valeur max M1 si M1 N2etN2sinon (erreur si second argument nul) **: unsigned<M>, unsigned<N>  unsigned<(M1)**(N1)1> car valeur max (M1)N1 G. Berry, Collège de France

  14. Opérations unsigned sat<M>(uexpr) avec uexpr : unsigned<M> : saturation à M1 soit v la valeur de uexpr. Alors sat<M>(uexpr)  min(v,M1) <,<=,> ,>=,=,<>: unsigned<M>, unsigned<N>  bool, classiques binsize(uexpr) : nombre de bits pour écrire uexpr en binaire si la valeur de uexpr est v, le n tel que 2n-1 v  2n assert<M>(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 G. Berry, Collège de France

  15. Entiers relatifs • signed<N> : entiers i tels que N i  N1(2N éléments) • signed<[N]>  signed<2**(N1)> (2Néléments, N bits en binaire)  : signed<M>  signed<M> (unaire) identité • : signed<M>  signed<M1> car valeur max (M) abs: signed<M>  unsigned<M1> car valeur max abs(M)  M G. Berry, Collège de France

  16. Opérations signed  : signed<M>, signed<N>  signed<MN> car valeur min MN • : signed<M>, signed<N>  signed<MN > car valeur max M1(N)  (MN)1 *: signed<M>, signed<N>  signed<MN1 > car valeur max (M)(N) /: signed<M>, signed<N>  signed<M1> 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 ... G. Berry, Collège de France

  17. Opérations signed sat<M>(sexpr) avec sexpr : signed<M> : saturation dans le sens du signe soit v la valeur de sexpr. Alors sat<M>(sexpr)  v si M vMouMsi vMouM1si vM <,<=,> ,>=,=,<>: signed<M>, signed<N>  bool, classiques assert<M>(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 Conversion automatique de signed en unsigned dans toutes les opérations mixtes  : unsigned<M>  signed<M> (unaire) car valeur max M1  : unsigned<M>  signed<M1> (unaire) car valeur min (M1) G. Berry, Collège de France

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

  19. Bitvecteurs vecteurs de bits type Bytebool[8]; // bitvector 0..7 input Opcode : Byte; type Wordbool[32]; // bitvector 0..31 var Memory :Word[MemSize]in ... end • constantes ’b010011 • é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(B0,B1,..., Bn) et mcat(B0,B1,...,Bn) • extension à k bits : extend(B,k) etsextend(B,k) • resize, reverse, etc. G. Berry, Collège de France

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

  21. Conversion unsigned  bitvecteur expr : unsigned<M> u2bin(expr) : bool[binsize(M1)] // écriture binaire minimale u2bin(expr,N) : bool[N] // avec N binsize(M1) u2gray(expr) : bool[binsize(M1)] // écriture en code Gray u2gray(expr,N) : bool[N] // avec N binsize(M1) u2onehot(expr) : bool[M] // écriture un seul bit à 1 u2onehot(expr, N) : bool[N] // avec N  M bin2u(6)  ’b110 u2gray(6)  ’b101 u2onehot(6)  ’b0000001 // 7 bits car 6 : unsigned<7> u2onehot(6, 10) ’b0000001000 // 10 bits, bit 6 à 1 u2code : possibilité pour l’utilisateur de définir son propre code G. Berry, Collège de France

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

  23. Conversions signed  bitvecteur expr : signed<M> 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<[M]> bin2s(expr,N) : signed<N> // avec N 2M-1 G. Berry, Collège de France

  24. Signaux purs et valués S : <statut, valeur>uniques dans l’instant (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 initexp, // statut, valeur de type T mémorisée, S3 : // initialisée à la valeur de exp S5 : T combine F initexp, G. Berry, Collège de France

  25. Valeurs simples, signaux temporaires 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 S8 :tempT, // statut, valeur non mémorisée, S3 : // un émetteur max. S9 : temp value T combine F initexp, // pas de statut, valeur combinée non mémorisée, // réinitialisation à chaque instant à la valeur de exp G. Berry, Collège de France

  26. Signaux retardés R10 : reg,// statut retardé R11 :regT,// statut retardé, valeur de type T R12 : reg value T combine Finitexp, ... ?R10 :valeur émise à l’instant précédent pre (?R10) non autorisé G. Berry, Collège de France

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

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

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

  30. Exemple : un mini-filtre d’images TV Etant donné un flot de pixels d’entrée xi, calculer un flot de pixels de sortie yi tels que yi(xi-24xi-16xi4xi+1xi+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 G. Berry, Collège de France

  31. InWordFeederInPixelBasicFilterOutPixel Feeder BasicFilter InPixel : temp unsigned<[8]> InEndOfLine *1 *4 *6 *4 *1 p3 p2 p1 p0 + / 16 OutPixel : unsigned<[8]> InWord : bool[32] OutEndOfLine G. Berry, Collège de France

  32. InWordFeederInPixelBasicFilterOutPixel Feeder BasicFilter InPixel : temp unsigned<[8]> 0 0 0 0 0 InEndOfLine *1 *4 *6 *4 *1 p3 p2 p1 p0 + / 16 OutPixel : unsigned<[8]> InWord : bool[32] OutEndOfLine Initialisation à 0 G. Berry, Collège de France

  33. InWordFeederInPixelBasicFilterOutPixel Feeder BasicFilter InPixel : temp unsigned<[8]> 0 0 0 0 InEndOfLine *1 *4 *6 *4 *1 p3 p2 p1 p0 + / 16 OutPixel : unsigned<[8]> InWord : bool[32] OutEndOfLine Entrée d’un mot, délai initial 2 cycles G. Berry, Collège de France

  34. InWordFeederInPixelBasicFilterOutPixel Feeder BasicFilter InPixel : temp unsigned<[8]> 0 0 0 InEndOfLine *1 *4 *6 *4 *1 p3 p2 p1 p0 + / 16 OutPixel : unsigned<[8]> InWord : bool[32] OutEndOfLine Délai initial 2 cycles G. Berry, Collège de France

  35. InWordFeederInPixelBasicFilterOutPixel Feeder BasicFilter InPixel : temp unsigned<[8]> 0 0 InEndOfLine *1 *4 *6 *4 *1 p3 p2 p1 p0 + / 16 OutPixel : unsigned<[8]> InWord : bool[32] OutEndOfLine Sortie du premier OutPixel G. Berry, Collège de France

  36. InWordFeederInPixelBasicFilterOutPixel Feeder BasicFilter InPixel : temp unsigned<[8]> 0 InEndOfLine *1 *4 *6 *4 *1 p3 p2 p1 p0 + / 16 OutPixel : unsigned<[8]> InWord : bool[32] OutEndOfLine Sortie d’un OutPixel G. Berry, Collège de France

  37. InWordFeederInPixelBasicFilterOutPixel Feeder BasicFilter InPixel : temp unsigned<[8]> InEndOfLine *1 *4 *6 *4 *1 p3 p2 p1 p0 + / 16 OutPixel : unsigned<[8]> InWord : bool[32] OutEndOfLine Entrée d’un mot, sortie d’un OutPixel G. Berry, Collège de France

  38. InWordFeederInPixelBasicFilterOutPixel Feeder BasicFilter InPixel : temp unsigned<[8]> InEndOfLine *1 *4 *6 *4 *1 p3 p2 p1 p0 + / 16 OutPixel : unsigned<[8]> InWord : bool[32] OutEndOfLine Sortie d’un OutPixel G. Berry, Collège de France

  39. InWordFeederInPixelBasicFilterOutPixel Feeder BasicFilter InPixel : temp unsigned<[8]> InEndOfLine *1 *4 *6 *4 *1 p3 p2 p1 p0 + / 16 OutPixel : unsigned<[8]> InWord : bool[32] OutEndOfLine Sortie d’un OutPixel G. Berry, Collège de France

  40. InWordFeederInPixelBasicFilterOutPixel Feeder BasicFilter InPixel : temp unsigned<[8]> InEndOfLine *1 *4 *6 *4 *1 p3 p2 p1 p0 + / 16 OutPixel : unsigned<[8]> InWord : bool[32] OutEndOfLine Fin de ligne d’entrée, sortie d’un OutPixel G. Berry, Collège de France

  41. InWordFeederInPixelBasicFilterOutPixel Feeder BasicFilter InPixel : temp unsigned<[8]> 0 InEndOfLine *1 *4 *6 *4 *1 p3 p2 p1 p0 + / 16 OutPixel : unsigned<[8]> InWord : bool[32] OutEndOfLine Entrée de 0, sortie d’un OutPixel G. Berry, Collège de France

  42. InWordFeederInPixelBasicFilterOutPixel Feeder BasicFilter InPixel : temp unsigned<[8]> 0 0 InEndOfLine *1 *4 *6 *4 *1 p3 p2 p1 p0 + / 16 OutPixel : unsigned<[8]> InWord : bool[32] OutEndOfLine Entrée de 0, sortie OutPixel, fin de ligne de sortie G. Berry, Collège de France

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

  44. 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 G. Berry, Collège de France

  45. data InputLineData: extendsImageData; extendsWordData; extendsPixelData; constant PIXELS_PER_WORD : unsigned<> = WORD_WIDTH / PIXEL_WIDTH ; constant WORDS_PER_LINE : unsigned<> = LINE_LENGTH / PIXELS_PER_WORD; end data G. Berry, Collège de France

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

  47. interface WordIntf: extendsWordData; output Ready; input InWord: Word ; end interface interface InPixelIntf: extendsPixelData; input InPixel: tempPixel ; input InEndOfLine; end interface interface OutPixelIntf: extendsPixelData; output OutPixel: tempPixel ; output OutEndOfLine; end interface G. Berry, Collège de France

  48. //========== // Main module //========== module Filter: extendsWordIntf; extendsOutPixelIntf; signal extendsInPixelIntfin // déclare tous les signaux de // InPixelIntf comme locaux runFeeder || runPixelFilter end signal end module G. Berry, Collège de France

  49. module Feeder: // Interface declarations extendsInputLineData; extendsFilterData; extendsWordIntf; extendsmirrorInPixelIntf; G. Berry, Collège de France

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

More Related