SlideShare una empresa de Scribd logo
1 de 67
High Level Synthesis
        using Esterel
       High Level Synthesis
     Linguaggi C-like per HLS
         Esterel Language
     Esterel random generator

           sabato 3 settembre 2011
                 Alberto Minetti
1
      Implementazione Linguaggi 2 @ DISI
        Università degli Studi di Genova
Definition: High Level Synthesis

    HLS generates register-transfer level
    design from behavioral specifications,
          in an automatic manner.

    E’ un processo automatico che interpreta
       una descrizione comportamentale di
         algoritmo e crea l’hardware che
        implementa tale comportamento

    Non è l’esecuzione sequenziale da un processore
                 (fetch-decode-execute)
2
HLS
    Input:
    • Specifiche comportamentali
    • Design constraint
         (costo, performance, consumo, pin-count, etc.)
    • Rappresentazione dei componenti RTL disponibili


    Output:
    • Implementazione della struttura RTL


3
Vantaggi con HLS
    Vantaggi del software ad alto livello
    Velocità di sviluppo
    Testing a livello di algoritmo
    Simulazione dei risultati


         Vantaggi dell’hardware sintetizzato
                         Performance di esecuzione
                     Economia rispetto a processore
                                 Dimensione ridotta

4
Bug e testing
    •   Therac 25: lethal irradiations
    •   Dharan's Patriot - Ariane V
    •   Mars explorers
    •   High-end automobile problems
    •   Pentium, SMP cpu networks
    •   VHDL nasce come testing tool

                                                     Partizionamento del
                                                      tempo impiegato
                                                     nelle fasi di sviluppo
                                                      per progetti aerei
                                         Partizionamento del
                                         budget per le fasi di
                                         sviluppo per progetti
5                                                aerei
High Level Synthesis
       Figura del soft-hardware codesigner
       Dove finisce il software e comincia l’hardware?
          Colli di bottiglia sw sviluppati in hw
          Interfaccia verso l’utente sviluppata in sw
       Riduzione della distanza tra sw e hw


    Software                    Hardware
    Programmatore               Hw designer
    Specifica comportamentale   Design strutturale
    Linguaggi ad alto livello   Hardware description language
    Linguaggi C-like            VHDL, Verilog
6
The Altera® Nios® II C2H Compiler
    is a coprocessor generation tool that
     converts performance-critical ANSI
          C functions into hardware
       accelerator modules with direct
               memory access




7
Linguaggi High Level

                      Pos          Language   Ratings
                       1    Java               18%
                       2    C                  16%
                       3    C++                 9%
                       4    C#                7,54%
                       5    PHP               6,51%
                       6    Objective-C       5,01%
                            Python
     Classifica dei    7                       4,58%
                            (Visual) Basic
     linguaggi più
                       8                       4,50%
                       9    Perl               2,23%
     popolari          10   Ruby               1,42%
     (Maggio 2011)     11   JavaScript         1,39%
                       12   Lua                1,10%
                       13   Delphi             1,07%
                       14   Assembly           1,04%
    Classifica dei     15   Lisp               0,95%

    linguaggi più      16   Ada                0,75%

    popolari           17   Pascal             0,71%

    (Maggio 2011)      18   Transact-SQL       0,70%
                       19   Scheme             0,58%
                       20   RPG (OS/400)       0,50%

8
Descrizione hardware con C
                       e derivati
       La semantica del C combacia con il set di
       istruzioni dei processori general-purpose

    Vantaggi: adatto a programmazione high-level,
    facilita i compilatori => Popolarità

    Svantaggi:
    Concorrenza limitata e impegnativa (thread)
    Comunicazione inadeguata (shared memory)
    Tipi lontani dall’hardware (pointer e array)
9
    Completa carenza di temporizzazione
C-like languages (1980-2000)




10
Stroud’s Cones, 1980
     Subset delle istruzioni del C
     Circuiti solo combinatori
     Una singola funzione diventa un circuito
     Loop unrolled
     Array come bitvector



       Esempio Cones: la funzione
        ritorna il numero di 1 nel
       vettore di 5 bit. La funzione
         verrà trasformata in un
           circuito combinatorio
11
HardwareC          Transmogrifier C
                        Genera design sequenziale
                        Xilinx XC4000 FPGA
                        Altera's FPGA Flex 8000
                        gcc su Solaris 2.4 (1995)
                          #pragma intbits 8
                          main() {
                           int lights, count;
                           outputport(lights, 60, 59, 58,
                                   57, 66, 65, 62, 61);
                           count = 0;
                           while(1) {
                            count = count + 1;
                            lights = ~count;
                          }}

            Esempio HardwareC: gli statement tra < e >
               sono eseguiti in parallelo (esplicito); gli
            statement tra { e } sono parallelizzabili se le
12
              dipendenze delle variabili lo permettono
SystemC, 2000
   Dialetto del C++      Simulazione semplice
   Usa meccanismo gerarchico delle classi C++
   Simile a Verilog e VHDL




   Esempio SystemC: decoder produce
    una logica combinatoria; counter
13
     produce una logica sequenziale
C2Verilog          2001         Handel-C
     Pieno supporto ANSI C:      Esteso al parallelismo
     • Pointer                   Nuovi costrutti Occam-like
     • Ricorsione                Astrazione temporale:
     • Allocazione dinamica      Ogni statement durano un ciclo




Esempio Handel-C:
 gli operatori ? e !
servono per ricever
 e trasmettere dai
 canali. Ispirato al
  Celoxica’s CSP




14
C-like languages (1980-2000)




15
Principali problemi con i linguaggi
                    C-like
      Concorrenza/Parallelismo
       Distinzione del parallelismo
       Approcci del compiler alla concorrenza
      Timing
      Types
      Comunicazione
       Problemi con i pointer
       Costo della comunicazione
       Approcci alla comunicazione



16
Concorrenza
     Software:
     Modello di esecuzione sequenziale
     Memory-based derivato dalla Turing Machine

     Software concorrenti:
     Molti processori = costo elevato e overhead
     Standard? Shared memory o message passing

     Riconoscimento automatico delle parti parallele
      da parte del compilatore è limitato
17
Parallelizzazione
     Instruction-level parallelism:
     Gruppi di istruzioni simultanei
     Limitato finché non si aggiunge hardware

     Pipelining:
     Overlap di alcune istruzioni
     Bene per signal-processing, non in generale

     Process-level parallelism:
     Thread multipli controllati dal SO (Posix) o dal ling. (Java)
     Necessario evitare dipendenze
     Automaticamente impossibile da trovare
18
     Grande responsabilità del programmatore
Approcci per la concorrenza
     Utilizzando due meccanismi:
     A. Fornire i costrutti espliciti al programmatore
       1. SystemC fornisce parallelismo process-level
       2. HardwareC e Handel-C invece statement-level
         Il programmatore deve cambiare il modo di pensare
             Thread POSIX   ≠ parallelismo statement-level

     B. Il compilatore cerca la concorrenza implicita
     Compito difficile per un compilatore
     Esempio: Cones appiattisce (flat) un’intera funzione (loop
        compresi) e trasforma tutto in un circuito combinatorio

19
Timing
     C non specifica la durata delle istruzioni:
     Semplifica la scrittura di codice
     Nessun vincolo da rispettare per il compiler

        Performance target dell’hardware essenziali:
             Nel software un processo lento annoia ma
       mancando un vincolo temporale il sistema fallisce
              Soprattutto nel caso di sistemi real-time o event-driven


        Modello best-effort del C è inadeguato

20
Dove mettere i cicli di clock?
     for (i = 0 ; i < 8 ; i++) {
              a[i] = c[i];           C non specifica quanti
              b[i] = d[i] || f[i];   cicli impiega l’esecuzione
     }

     Cones fa tutto in uno: è combinatorio
     Transmogrifier-C ne fa 8: una per iterazione
     Handel-C ne fa 25: una per assegnamento

     Gli altri permettono all’utente di specificarne il
     numero esplicitamente nel linguaggio o attraverso
     un tool di supporto (HardwareC)

21
Transmogrifier C :ogni loop in un ciclo di clock

     Handel-C: ogni assegnamento in un ciclo

     Transmogrifier C e Handel-C sono molto chiari
       ma raggiungere determinati vincoli è difficile




22
Tipi standard
             Hardware bit versus software bytes

     A. C puro e dimensionare attraverso tool
               GUI di C2Verilog, preprocessore di Transmogrifier C


     B. Aggiungere tipi hardware al linguaggio
     Boolean (HardwareC), Integer con dimensioni specificate (Handel-C)



     C. C++ type system
                   default bool e tipi custom grazie alle classi



23
Pointer, shared memory e
                concorrenza
     Indirizzi di memoria calcolati solo a runtime
     Aritmetica dei puntatori: grande flessibilità sw

     Aliasing: valore accesso da multiple sorgenti
     Memorie globali condivise più lente delle locali

     Analisi del comportamento del programma
     Approssimazioni => memory split
     Difficile per il compiler

24
Pointer: approcci
     A. Ignorano il modello di memoria del C

     HardwareC e Transmogrifier C
                    Non supportano array e puntatori
     Cones: tutte le variabili e gli array sono fili

     B. Preservano il modella di memoria del C
     C2Verilog mette tutto in regioni di memoria
     Handel-C e SystemC usano speciali construtti

25
Comunicazione
     Nel software ogni bit comunicato ha un costo

     Hw comunicare il primo bit costa (un filo in più)
      ma poi la comunicazione avviene senza fatica

     Placement & Routing: Difficile trovare
       automaticamente un posizionamento
       efficiente sul circuito



26
Metadata
     Diverse implementazioni hw per un’istruzione C

     Esempio: Adder hardware:
     Ripple carry        Carry look-ahead           Carry save



     Non realistico fare decidere al compilatore
     - Rimpiazzare gli operatori C con gate logici
     - Overloading del C++ (solo basato sui tipi dei parametri)
     - Annotazioni per il compilatore
27   - File ausiliari o inseriti tramite compilatore
“The next great hardware specification language
                 won’t closely resemble C.
     Software languages work well only for software.”
          Stephen A. Edwards, Columbia University, 2006




28
Esterel
      Ideato da G. Berry negli anni ’80
      Compilabile in una macchina a stati finiti


      Reattivo
      Concorrente
      Sincrono
      Deterministico
      Sicuro
      Scalabile


29
Esterel
      Riscoperto nel 2000 per HLS
      Adatto a sistemi di event-driven e real-time


      Columbia Esterel Compiler
                     source C, Verilog, BLIF, .sm file


      Esterel Studio / SCADE Suite
        ANSI C, C++,ADA, SystemC, VHDL, Verilog, SM
                                    Dataflow design
30
          Eseguibile formale con vincoli e asserzioni
Utilizzo di Esterel
     Orologi da polso, eventi: clock e bottoni

     Componenti per processori, cache controller

     Controllers, protocolli di comunicazione

     Areonautica, controllo carburante, carrello…



31
Automatic                Light control    Alarm detection
                       Air Con
             toll

               Radio
                                                     Panel


 Engine control                                                   Sleep
                                                                 detector

                                                                   GPS
     Gearbox
                                                             Airbags


      Clutch
                                                         Radar


       Direction                                   ABS
                       Supension

32
Sincronia di Esterel
     Astrazione di sincronia: Nessun ritardo
                          tout-tin=0
             Una istruzione richiede zero o più istanti

              Reazioni istantanee atomiche
              Macchina infinitamente veloce

     Nella realtà…
                Clock maggiore del tempo necessario

33   Inoltre per i tick del clock possono essere usati segnali
Vantaggi Esterel
      Modello del tempo dà regole precise


      Concorrenza + Atomicità = Determinismo




      Linguaggio a stati finiti
        Esecuzione predicibile
        Facile verifica formale




34
Segnali di Esterel
                       o presente o assente (default)
     Tipi di segnali:
     - Pure: assente o presente (bit info)
     - Full: assente o presente e con valore
     - Value-only: solo valore
                                        Valued Signal: valore
                                     accessibile con operatore ?
     Input, output, in-out, locali

     Broadcast su tutto il programma allo stesso
      tempo logico e sono immediatamente visibili
35
Coerenza dei segnali
 Un segnale è assente o presente in un istante



     present S then nothing else emit S end

     Impossibile
                           Più comportamenti possibili

     present S then emit S else nothing end



36     il compilatore vieta questi programmi
Statement primitivi
     nothing    non fa niente, instantanea
     pause      si ferma un istante
     p;q        sequenza: terminato p si esegue q
                termina al termine di q
     p||q       parallelo: p e q sono in parallelo
                termina quando entrambe terminano
     loop p end loop          ciclo: non termina
     abort p when S do q end
          sospende p quando S ed esegue q

37    p e q sono istruzioni     S è un segnale
Statement primitivi: trap (appr.)
     trap T in p end trap
      dichiara l’eccezione T locale a p

     exit T           solleva T

     trap T in p handle T do q end trap
      cattura un’eccezione o più eccezioni (case)




38    p e q sono istruzioni       T è un segnale
Statement primitivi per segnali
     signal S in p end signal
      dichiara un nuovo segnale S locale in p

     emit S    emette S nell’istante e termina

     present S then p else q end present
          se S è presente esegue p altrimenti q




39    p e q sono istruzioni     S è un segnale
ABRO example
     Specifica: classico esempio di un controller che
     emette O dopo aver ricevuto entrambi A e B.
     Ricomincia da capo alla ricezione di R.
     module ABRO:
     input A, B, R; output O;

     loop
          [await A || await B];
          emit O
     each R



             Box = Stati
        Frecce = Transizioni
           Nomi = Segnali
       Gerarchia = Preemption

40
Esempio State Machine

     loop
                                            /X
      emit X ;

      await A ;
                                                   A/
      emit Y ;
                                  AB/XY
      present B then emit Z end

     end
                                          AB/XYZ



41
Valued signal (appr.)
     output S := expr : TYPE;

     emit S(expr)     emette S con valore di expr

     ?S         valore di S che è sempre presente
     pre(S)     valore di S prima di questo istante

     Si possono emettere più segnali nello stesso istante
     a patto di specificare una funzione di combinazione
     expr è un’espressione        TYPE è un tipo
42
     p e q sono istruzioni        S è un valued-signal
Valued signal (appr.)

 module COUNT:                  module COUNT:
 input I;                       input I;
 output Count: integer;         output Count := 0 : integer;
  var Count := 0 : integer in    every I do
    every I do                    emit Count(pre(?Count)+1);
      Count := Count + 1;        end every
      emit Count(Count);        end module
    end every
  end var
 end module


                                Esempio di utilizzo dei segnali
                                  valued: a destra con pre
43                                      (Esterel v5.92)
Esempio semplice


            emit A ; emit B ; pause ; emit C
                 A        B                C




     IN:


     OUT:



44
                            arranged from: Kishinevsky, Berry, Singh
Esempio loop


      loop emit A ; emit B ; pause ; emit C end loop
                A        B                C




     IN:


     OUT:



45
                           arranged from: Kishinevsky, Berry, Singh
Esempio present
          emit A ; emit B ; pause ;
          loop
              present C then emit D else Q end if;
              present E then emit F end if;
              pause
          end loop

                         C                 C
                                 E         E
                   A     D        Q        D
                   B              F        F
       Il compilatore controlla a
     compiletime la correttezza dei
46
                segnali               arranged from: Kishinevsky, Berry, Singh
Statement derivati
     halt          loop pause end loop
     sustain S     loop emit S; pause end loop
     await S       abort halt when S
     loop p each S end loop ciclo iterativo ad S
     every S do p end every iterazione ad ogni S

     await # S                ripetizione
     abort p when # S         ripetizione
     loop p each # S          ripetizione
                                        # è un intero
47    p e q sono istruzioni        S è un segnale
Esempio parallelo
     [ await A ; emit C   ||       await B ; emit D ] ; emit E


              A                B

              C                D
                               E                    Il blocco parallelo
              B      A                           termina quando i rami
                                                   paralleli terminano
              D      C
                     E
                               A
                               B
                               C
                               D        Le istruzioni parallele iniziano
48                             E              nello stesso istante
                                      arranged from: Kishinevsky, Berry, Singh
Statement derivati (appr.)
     do p upto S     p termina solo quando c’è S

     Quanti istanti durano le istruzioni?
      ZERO per emit, present
      Uno o Più per await, abort, ecc…

     immediate fa durare ZERO o Più




49    p e q sono istruzioni     S è un segnale
Esempio abort
     abort
         pause ; pause ; emit A
     when B ;
     emit C



                     A
                     C
               B
               C

                     B
                     C
50
                   arranged from: Kishinevsky, Berry, Singh
Esempio await immediate
      await A ; emit B       await immediate A ; emit B



      A    A                    A

           B                    B
      A          A                             A

                 B                             B

     Default non immediato
     Meccanismo della macchina a stati con stato iniziale
51
                               arranged from: Kishinevsky, Berry, Singh
Esempio weak abort
     abort                weak abort
        pause; emit A ;      pause; emit A ;
        pause; emit B        pause; emit B
     when C;              when C;
     emit D               emit D

           C                       C
                                   A
           D
                                   D
                 C                          C
                                            B
           A     D                 A
                                            D


52
                          arranged from: Kishinevsky, Berry, Singh
Reazione: quando?
     Quando reagire ad A?

                 abort p when A       weak abort p when A
          next




                 abort p             weak abort p
                 when immediate A    when immediate A
          now
             now                    next      Quando terminare p?



53
                                    arranged from: Kishinevsky, Berry, Singh
Scalabilità
     Moduli
     Riutilizzo
     Definizione di tipi generici


     run GENERIC_SPEED [
        type integer/T;
        constant 0/Initial, 1/Increment;
        function +/Add;
        signal Centimeter/A, Second/B;
      ]




54
Altri statement
      Declarazione di moduli/interfacce
      Variabili e tipi custom
      Chiamate procedure esterne
      Funzioni matematiche




55
Relazioni vincolari
     Esclusione tra due segnali (#)
     Implicazione di due segnali (=>)
     module SPEED:
     input Centimeter, Second;
     relation Centimeter # Second;
     ouput Speed: integer;
     loop
       var Distance := 0 : integer in
         abort
           every Centimeter do
             Distance := Distance + 1;
           end every
         when Second do
           emit Speed(Distance)
         end abort
       end var
     end loop
     end module
56
Comunicazione concorrente
     every RESET do         Riparti ogni RESET
       loop
         await A;       Attendi A
         emit B;
         present C then emit D end;
         pause
       end
     ||        Concorrenza
       loop
         present B then emit C end;
         pause
       end                           Stesso ciclo:
     end                            comunicazione
57
                                    bidirezionale
Seat-belt
     Se il guidatore accende la macchina, e
           non allaccia la cintura in 5 secondi
     Allora l’allarme suona per 5 secondi, o
           finchè non allaccia la cintura, o
           finchè non spegne la macchina
     input KEY_ON   , END_TIMER   , KEY_OFF, BELT_ON      , RESET;
     output START_TIMER    , BEEP;
     loop
       abort
         present KEY_ON then
               emit START_TIMER(5); await END_TIMER;
               emit START_TIMER(5); abort sustain BEEP when END_TIMER;
         end
       when KEY_OFF or BELT_ON
58   each RESET
                                              arranged from: Roberto Passerone
In conclusione: Esterel…
     Vantaggi:
     Modello sincrono => preciso controllo
     Concorrenza => utile per controller
     Determinismo: Test formali e simulazione software
     Potente IDE di sviluppo: Esterel Studio
     100% Synthesizable
      C,C++,SystemC,VHDL,Verilog,StateMach.
     Equazioni Lustre style

     Svantaggi:
     Stati finiti limitano la flessibilità
     A volte difficile avere coerenza nei segnali
59   A volte difficile da compilare
Progetto PRBG (appr.)
     Descrizione del progetto:
      Generatore di bit pseudo-casuali
      Algoritmo deterministico         Pseudo-random
                                         bit sequence
      Sequenza casuale ripetuta




     Schema logico:
      Registro clocked a scorrimento destro
      Feedback di una o più porte logiche XOR che
60     hanno come input alcuni bit del registro
Pseudo Random Bit Generator
     Per ottenere lunghezza massima
     è necessario usare determinati
     bit da mette in ingresso allo
     XOR

     XOR di più bit vista anche come
     somma di bit modulo 2

     Problema:
          seed con tutti i bit a zero

61
                    Progetto di Minetti Alberto, corso ASI @ DISI 2007/2008
Circuito di
     controllo per
      seed a zero


62
Shift register

63   multiplexer
Logica XOR




64
module PseudoRandomBitSequence:
     constant N : unsigned = 8;         type Word : bool[N];
     input GET_RANDOM;                  input SEED : Word;
     output RANDOM : Word;
     var REGISTER : Word, FIRST : bool in
      always                 %loop
          present SEED then
              if ?SEED <> 0b0000_0000 then REGISTER := ?SEED;
              else REGISTER := 0b1000_0000;
              end if
          end
          weak abort
              REGISTER >> 1; %right shift
              FIRST := REGISTER[7] xor REGISTER[5] xor
                             REGISTER[4] xor REGISTER[3];
              REGISTER := mcat(REGISTER[0..6],FIRST);
          when GET_RANDOM do
              emit RANDOM(REGISTER)
          end abort                           Pseudo Random
      end always             %each tick
     end var
                                              Bit Generator in
65
     end module                             linguaggio Esterel
Non solo FPGA
 Reconfigurable computing:
 - Flessibilità
 - High performance
 - Modificare il datapath a runtime


 Elliptic Curve cryptography con chiave di 270 bits
      XC2V6000 FPGA 66MHz:           0.36ms
         sw dual-Xeon 2.6GHz:     196.71ms
     540 volte più veloce con clock 40 volte più lento


66
Bibliografia
     The Challenges of Synthesizing Hardware from C-Like Languages
                                     Stephen A. Edwards, Columbia University
     High-Level Synthesis: Past, Present, and Future
                                                         Grant Martin & Gary Smith
     The Esterel synchronous programming language
     The Constructive Semantics of Pure Esterel
     The Esterel v5 Language Primer                 Gérard Berry
     http://www-sop.inria.fr/marelle/Laurent.Thery/lsp/esterel.html
     Programming the Lego Mindstorms using Lustre and Esterel
                              M. Richard, C. Mauras - 1999, Hyères (France).
     http://www.esterel-technologies.com/products/scade-suite/
     http://www.cs.columbia.edu/~sedwards/cec/
     Esterel v7 Reference Manual Version v7 30 – initial IEEE
     standardization
     http://www-sop.inria.fr/meije/esterel/esterel-eng.html
     http://www-sop.inria.fr/esterel.org/files/Html/News/News.htm
     http://www-sop.inria.fr/meije/esterel/scdata.html
67

Más contenido relacionado

La actualidad más candente

Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ CodeDaniele Mondello
 
Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...LeonardoIurada
 
Design Pattern Strutturali
Design Pattern StrutturaliDesign Pattern Strutturali
Design Pattern StrutturaliRiccardo Cardin
 
Design Pattern Comportamentali
Design Pattern ComportamentaliDesign Pattern Comportamentali
Design Pattern ComportamentaliRiccardo Cardin
 
Introduzione ai Design Pattern
Introduzione ai Design PatternIntroduzione ai Design Pattern
Introduzione ai Design PatternRiccardo Cardin
 
06 - Programmazione: Scope Variabili
06 - Programmazione: Scope Variabili06 - Programmazione: Scope Variabili
06 - Programmazione: Scope VariabiliMajong DevJfu
 
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUMLIntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUMLmatteo_gentile
 
Linguaggio Java
Linguaggio JavaLinguaggio Java
Linguaggio JavaGSamLo
 
Design Pattern Creazionali
Design Pattern CreazionaliDesign Pattern Creazionali
Design Pattern CreazionaliRiccardo Cardin
 
Concorso Informatici C3 INPS 2007 - Banca Dati
Concorso Informatici C3 INPS 2007 - Banca DatiConcorso Informatici C3 INPS 2007 - Banca Dati
Concorso Informatici C3 INPS 2007 - Banca DatiConcorsando.it
 
Introduzione a libavfilter
Introduzione a libavfilterIntroduzione a libavfilter
Introduzione a libavfilterStefano Sabatini
 

La actualidad más candente (20)

Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ Code
 
Guida C++
Guida C++Guida C++
Guida C++
 
Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...
 
Introduzione a UML
Introduzione a UMLIntroduzione a UML
Introduzione a UML
 
T1 introduzione
T1 introduzioneT1 introduzione
T1 introduzione
 
Design Pattern Strutturali
Design Pattern StrutturaliDesign Pattern Strutturali
Design Pattern Strutturali
 
Diagrammi di Sequenza
Diagrammi di SequenzaDiagrammi di Sequenza
Diagrammi di Sequenza
 
Tesi magistrale
Tesi magistraleTesi magistrale
Tesi magistrale
 
Diagrammi delle Classi
Diagrammi delle ClassiDiagrammi delle Classi
Diagrammi delle Classi
 
T6 codice
T6 codiceT6 codice
T6 codice
 
Diagrammi di Attività
Diagrammi di AttivitàDiagrammi di Attività
Diagrammi di Attività
 
Design Pattern Comportamentali
Design Pattern ComportamentaliDesign Pattern Comportamentali
Design Pattern Comportamentali
 
Introduzione ai Design Pattern
Introduzione ai Design PatternIntroduzione ai Design Pattern
Introduzione ai Design Pattern
 
06 - Programmazione: Scope Variabili
06 - Programmazione: Scope Variabili06 - Programmazione: Scope Variabili
06 - Programmazione: Scope Variabili
 
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUMLIntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
 
Linguaggio Java
Linguaggio JavaLinguaggio Java
Linguaggio Java
 
Design Pattern Creazionali
Design Pattern CreazionaliDesign Pattern Creazionali
Design Pattern Creazionali
 
Concorso Informatici C3 INPS 2007 - Banca Dati
Concorso Informatici C3 INPS 2007 - Banca DatiConcorso Informatici C3 INPS 2007 - Banca Dati
Concorso Informatici C3 INPS 2007 - Banca Dati
 
Introduzione a libavfilter
Introduzione a libavfilterIntroduzione a libavfilter
Introduzione a libavfilter
 
T8 supporti
T8 supportiT8 supporti
T8 supporti
 

Destacado (8)

Moodle for teachers
Moodle for teachersMoodle for teachers
Moodle for teachers
 
Inferno Limbo Italian
Inferno Limbo ItalianInferno Limbo Italian
Inferno Limbo Italian
 
Index for meshes 3d
Index for meshes 3dIndex for meshes 3d
Index for meshes 3d
 
Fun n fit
Fun n fitFun n fit
Fun n fit
 
05 agencies
05 agencies05 agencies
05 agencies
 
05 agencies
05 agencies05 agencies
05 agencies
 
Index for meshes 2d
Index for meshes 2dIndex for meshes 2d
Index for meshes 2d
 
Texture
TextureTexture
Texture
 

Similar a High Level Synthesis Using Esterel

.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNetMauro Servienti
 
Webinar porting e ottimizzazione per x86
Webinar   porting e ottimizzazione per x86Webinar   porting e ottimizzazione per x86
Webinar porting e ottimizzazione per x86Massimiliano Torregiani
 
Software libero nei sistemi embedded
Software libero nei sistemi embeddedSoftware libero nei sistemi embedded
Software libero nei sistemi embeddedDaniele Costarella
 
Dynamic Language Programming For The Statically Typed Programmer
Dynamic Language Programming For The Statically Typed ProgrammerDynamic Language Programming For The Statically Typed Programmer
Dynamic Language Programming For The Statically Typed ProgrammerMarco Parenzan
 
Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsIgor Antonacci
 
Il computer dice no!
Il computer dice no!Il computer dice no!
Il computer dice no!Matteo Emili
 
Angelo Impedovo, Linux Day 2016, Programmazione Parallela in openCL
Angelo Impedovo, Linux Day 2016, Programmazione Parallela in openCLAngelo Impedovo, Linux Day 2016, Programmazione Parallela in openCL
Angelo Impedovo, Linux Day 2016, Programmazione Parallela in openCLAngelo Impedovo
 
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacyProgettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacyGiacomo Russo
 
OpenCL - Introduzione al framework OpenCL
OpenCL - Introduzione al framework OpenCLOpenCL - Introduzione al framework OpenCL
OpenCL - Introduzione al framework OpenCLFrancesco Garofalo
 
Capitolo 7 elementi di programmazione c-c++
Capitolo 7   elementi di programmazione  c-c++Capitolo 7   elementi di programmazione  c-c++
Capitolo 7 elementi di programmazione c-c++Giovanni Della Lunga
 
Delphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev OverviewDelphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev Overviewpietrobr
 
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successoWSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successoProfesia Srl, Lynx Group
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPGiorgio Cefaro
 
BeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded FreeBeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded FreeDeveler S.r.l.
 

Similar a High Level Synthesis Using Esterel (20)

.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet
 
Thanatos
ThanatosThanatos
Thanatos
 
Livecode
LivecodeLivecode
Livecode
 
Webinar porting e ottimizzazione per x86
Webinar   porting e ottimizzazione per x86Webinar   porting e ottimizzazione per x86
Webinar porting e ottimizzazione per x86
 
Software libero nei sistemi embedded
Software libero nei sistemi embeddedSoftware libero nei sistemi embedded
Software libero nei sistemi embedded
 
Dynamic Language Programming For The Statically Typed Programmer
Dynamic Language Programming For The Statically Typed ProgrammerDynamic Language Programming For The Statically Typed Programmer
Dynamic Language Programming For The Statically Typed Programmer
 
Dot net framework 2
Dot net framework 2Dot net framework 2
Dot net framework 2
 
Da DotNet a DotNetCore
Da DotNet a DotNetCoreDa DotNet a DotNetCore
Da DotNet a DotNetCore
 
Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devops
 
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
 
Il computer dice no!
Il computer dice no!Il computer dice no!
Il computer dice no!
 
Angelo Impedovo, Linux Day 2016, Programmazione Parallela in openCL
Angelo Impedovo, Linux Day 2016, Programmazione Parallela in openCLAngelo Impedovo, Linux Day 2016, Programmazione Parallela in openCL
Angelo Impedovo, Linux Day 2016, Programmazione Parallela in openCL
 
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacyProgettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
 
OpenCL - Introduzione al framework OpenCL
OpenCL - Introduzione al framework OpenCLOpenCL - Introduzione al framework OpenCL
OpenCL - Introduzione al framework OpenCL
 
Capitolo 7 elementi di programmazione c-c++
Capitolo 7   elementi di programmazione  c-c++Capitolo 7   elementi di programmazione  c-c++
Capitolo 7 elementi di programmazione c-c++
 
Delphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev OverviewDelphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev Overview
 
Cac Es3 2009
Cac Es3 2009Cac Es3 2009
Cac Es3 2009
 
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successoWSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
 
BeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded FreeBeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded Free
 

Más de Alberto Minetti

Gnutella Italian Printable
Gnutella Italian PrintableGnutella Italian Printable
Gnutella Italian PrintableAlberto Minetti
 
Development and analysis of a virtual keyboard optimized (Italian)
Development and analysis of a virtual keyboard optimized (Italian)Development and analysis of a virtual keyboard optimized (Italian)
Development and analysis of a virtual keyboard optimized (Italian)Alberto Minetti
 

Más de Alberto Minetti (6)

R programming language
R programming languageR programming language
R programming language
 
Minetti master thesis
Minetti master thesisMinetti master thesis
Minetti master thesis
 
Gnutella Italian Printable
Gnutella Italian PrintableGnutella Italian Printable
Gnutella Italian Printable
 
Development and analysis of a virtual keyboard optimized (Italian)
Development and analysis of a virtual keyboard optimized (Italian)Development and analysis of a virtual keyboard optimized (Italian)
Development and analysis of a virtual keyboard optimized (Italian)
 
Telegraph Cq Italian
Telegraph Cq ItalianTelegraph Cq Italian
Telegraph Cq Italian
 
Telegraph Cq English
Telegraph Cq EnglishTelegraph Cq English
Telegraph Cq English
 

High Level Synthesis Using Esterel

  • 1. High Level Synthesis using Esterel High Level Synthesis Linguaggi C-like per HLS Esterel Language Esterel random generator sabato 3 settembre 2011 Alberto Minetti 1 Implementazione Linguaggi 2 @ DISI Università degli Studi di Genova
  • 2. Definition: High Level Synthesis HLS generates register-transfer level design from behavioral specifications, in an automatic manner. E’ un processo automatico che interpreta una descrizione comportamentale di algoritmo e crea l’hardware che implementa tale comportamento Non è l’esecuzione sequenziale da un processore (fetch-decode-execute) 2
  • 3. HLS Input: • Specifiche comportamentali • Design constraint (costo, performance, consumo, pin-count, etc.) • Rappresentazione dei componenti RTL disponibili Output: • Implementazione della struttura RTL 3
  • 4. Vantaggi con HLS Vantaggi del software ad alto livello Velocità di sviluppo Testing a livello di algoritmo Simulazione dei risultati Vantaggi dell’hardware sintetizzato Performance di esecuzione Economia rispetto a processore Dimensione ridotta 4
  • 5. Bug e testing • Therac 25: lethal irradiations • Dharan's Patriot - Ariane V • Mars explorers • High-end automobile problems • Pentium, SMP cpu networks • VHDL nasce come testing tool Partizionamento del tempo impiegato nelle fasi di sviluppo per progetti aerei Partizionamento del budget per le fasi di sviluppo per progetti 5 aerei
  • 6. High Level Synthesis Figura del soft-hardware codesigner Dove finisce il software e comincia l’hardware? Colli di bottiglia sw sviluppati in hw Interfaccia verso l’utente sviluppata in sw Riduzione della distanza tra sw e hw Software Hardware Programmatore Hw designer Specifica comportamentale Design strutturale Linguaggi ad alto livello Hardware description language Linguaggi C-like VHDL, Verilog 6
  • 7. The Altera® Nios® II C2H Compiler is a coprocessor generation tool that converts performance-critical ANSI C functions into hardware accelerator modules with direct memory access 7
  • 8. Linguaggi High Level Pos Language Ratings 1 Java 18% 2 C 16% 3 C++ 9% 4 C# 7,54% 5 PHP 6,51% 6 Objective-C 5,01% Python Classifica dei 7 4,58% (Visual) Basic linguaggi più 8 4,50% 9 Perl 2,23% popolari 10 Ruby 1,42% (Maggio 2011) 11 JavaScript 1,39% 12 Lua 1,10% 13 Delphi 1,07% 14 Assembly 1,04% Classifica dei 15 Lisp 0,95% linguaggi più 16 Ada 0,75% popolari 17 Pascal 0,71% (Maggio 2011) 18 Transact-SQL 0,70% 19 Scheme 0,58% 20 RPG (OS/400) 0,50% 8
  • 9. Descrizione hardware con C e derivati La semantica del C combacia con il set di istruzioni dei processori general-purpose Vantaggi: adatto a programmazione high-level, facilita i compilatori => Popolarità Svantaggi: Concorrenza limitata e impegnativa (thread) Comunicazione inadeguata (shared memory) Tipi lontani dall’hardware (pointer e array) 9 Completa carenza di temporizzazione
  • 11. Stroud’s Cones, 1980 Subset delle istruzioni del C Circuiti solo combinatori Una singola funzione diventa un circuito Loop unrolled Array come bitvector Esempio Cones: la funzione ritorna il numero di 1 nel vettore di 5 bit. La funzione verrà trasformata in un circuito combinatorio 11
  • 12. HardwareC Transmogrifier C Genera design sequenziale Xilinx XC4000 FPGA Altera's FPGA Flex 8000 gcc su Solaris 2.4 (1995) #pragma intbits 8 main() { int lights, count; outputport(lights, 60, 59, 58, 57, 66, 65, 62, 61); count = 0; while(1) { count = count + 1; lights = ~count; }} Esempio HardwareC: gli statement tra < e > sono eseguiti in parallelo (esplicito); gli statement tra { e } sono parallelizzabili se le 12 dipendenze delle variabili lo permettono
  • 13. SystemC, 2000 Dialetto del C++ Simulazione semplice Usa meccanismo gerarchico delle classi C++ Simile a Verilog e VHDL Esempio SystemC: decoder produce una logica combinatoria; counter 13 produce una logica sequenziale
  • 14. C2Verilog 2001 Handel-C Pieno supporto ANSI C: Esteso al parallelismo • Pointer Nuovi costrutti Occam-like • Ricorsione Astrazione temporale: • Allocazione dinamica Ogni statement durano un ciclo Esempio Handel-C: gli operatori ? e ! servono per ricever e trasmettere dai canali. Ispirato al Celoxica’s CSP 14
  • 16. Principali problemi con i linguaggi C-like  Concorrenza/Parallelismo  Distinzione del parallelismo  Approcci del compiler alla concorrenza  Timing  Types  Comunicazione  Problemi con i pointer  Costo della comunicazione  Approcci alla comunicazione 16
  • 17. Concorrenza Software: Modello di esecuzione sequenziale Memory-based derivato dalla Turing Machine Software concorrenti: Molti processori = costo elevato e overhead Standard? Shared memory o message passing Riconoscimento automatico delle parti parallele da parte del compilatore è limitato 17
  • 18. Parallelizzazione Instruction-level parallelism: Gruppi di istruzioni simultanei Limitato finché non si aggiunge hardware Pipelining: Overlap di alcune istruzioni Bene per signal-processing, non in generale Process-level parallelism: Thread multipli controllati dal SO (Posix) o dal ling. (Java) Necessario evitare dipendenze Automaticamente impossibile da trovare 18 Grande responsabilità del programmatore
  • 19. Approcci per la concorrenza Utilizzando due meccanismi: A. Fornire i costrutti espliciti al programmatore 1. SystemC fornisce parallelismo process-level 2. HardwareC e Handel-C invece statement-level Il programmatore deve cambiare il modo di pensare Thread POSIX ≠ parallelismo statement-level B. Il compilatore cerca la concorrenza implicita Compito difficile per un compilatore Esempio: Cones appiattisce (flat) un’intera funzione (loop compresi) e trasforma tutto in un circuito combinatorio 19
  • 20. Timing C non specifica la durata delle istruzioni: Semplifica la scrittura di codice Nessun vincolo da rispettare per il compiler Performance target dell’hardware essenziali: Nel software un processo lento annoia ma mancando un vincolo temporale il sistema fallisce Soprattutto nel caso di sistemi real-time o event-driven Modello best-effort del C è inadeguato 20
  • 21. Dove mettere i cicli di clock? for (i = 0 ; i < 8 ; i++) { a[i] = c[i]; C non specifica quanti b[i] = d[i] || f[i]; cicli impiega l’esecuzione } Cones fa tutto in uno: è combinatorio Transmogrifier-C ne fa 8: una per iterazione Handel-C ne fa 25: una per assegnamento Gli altri permettono all’utente di specificarne il numero esplicitamente nel linguaggio o attraverso un tool di supporto (HardwareC) 21
  • 22. Transmogrifier C :ogni loop in un ciclo di clock Handel-C: ogni assegnamento in un ciclo Transmogrifier C e Handel-C sono molto chiari ma raggiungere determinati vincoli è difficile 22
  • 23. Tipi standard Hardware bit versus software bytes A. C puro e dimensionare attraverso tool GUI di C2Verilog, preprocessore di Transmogrifier C B. Aggiungere tipi hardware al linguaggio Boolean (HardwareC), Integer con dimensioni specificate (Handel-C) C. C++ type system default bool e tipi custom grazie alle classi 23
  • 24. Pointer, shared memory e concorrenza Indirizzi di memoria calcolati solo a runtime Aritmetica dei puntatori: grande flessibilità sw Aliasing: valore accesso da multiple sorgenti Memorie globali condivise più lente delle locali Analisi del comportamento del programma Approssimazioni => memory split Difficile per il compiler 24
  • 25. Pointer: approcci A. Ignorano il modello di memoria del C HardwareC e Transmogrifier C Non supportano array e puntatori Cones: tutte le variabili e gli array sono fili B. Preservano il modella di memoria del C C2Verilog mette tutto in regioni di memoria Handel-C e SystemC usano speciali construtti 25
  • 26. Comunicazione Nel software ogni bit comunicato ha un costo Hw comunicare il primo bit costa (un filo in più) ma poi la comunicazione avviene senza fatica Placement & Routing: Difficile trovare automaticamente un posizionamento efficiente sul circuito 26
  • 27. Metadata Diverse implementazioni hw per un’istruzione C Esempio: Adder hardware: Ripple carry Carry look-ahead Carry save Non realistico fare decidere al compilatore - Rimpiazzare gli operatori C con gate logici - Overloading del C++ (solo basato sui tipi dei parametri) - Annotazioni per il compilatore 27 - File ausiliari o inseriti tramite compilatore
  • 28. “The next great hardware specification language won’t closely resemble C. Software languages work well only for software.” Stephen A. Edwards, Columbia University, 2006 28
  • 29. Esterel  Ideato da G. Berry negli anni ’80  Compilabile in una macchina a stati finiti  Reattivo  Concorrente  Sincrono  Deterministico  Sicuro  Scalabile 29
  • 30. Esterel  Riscoperto nel 2000 per HLS  Adatto a sistemi di event-driven e real-time  Columbia Esterel Compiler source C, Verilog, BLIF, .sm file  Esterel Studio / SCADE Suite ANSI C, C++,ADA, SystemC, VHDL, Verilog, SM Dataflow design 30 Eseguibile formale con vincoli e asserzioni
  • 31. Utilizzo di Esterel Orologi da polso, eventi: clock e bottoni Componenti per processori, cache controller Controllers, protocolli di comunicazione Areonautica, controllo carburante, carrello… 31
  • 32. Automatic Light control Alarm detection Air Con toll Radio Panel Engine control Sleep detector GPS Gearbox Airbags Clutch Radar Direction ABS Supension 32
  • 33. Sincronia di Esterel Astrazione di sincronia: Nessun ritardo tout-tin=0 Una istruzione richiede zero o più istanti Reazioni istantanee atomiche Macchina infinitamente veloce Nella realtà… Clock maggiore del tempo necessario 33 Inoltre per i tick del clock possono essere usati segnali
  • 34. Vantaggi Esterel  Modello del tempo dà regole precise  Concorrenza + Atomicità = Determinismo  Linguaggio a stati finiti  Esecuzione predicibile  Facile verifica formale 34
  • 35. Segnali di Esterel o presente o assente (default) Tipi di segnali: - Pure: assente o presente (bit info) - Full: assente o presente e con valore - Value-only: solo valore Valued Signal: valore accessibile con operatore ? Input, output, in-out, locali Broadcast su tutto il programma allo stesso tempo logico e sono immediatamente visibili 35
  • 36. Coerenza dei segnali Un segnale è assente o presente in un istante present S then nothing else emit S end Impossibile Più comportamenti possibili present S then emit S else nothing end 36 il compilatore vieta questi programmi
  • 37. Statement primitivi nothing non fa niente, instantanea pause si ferma un istante p;q sequenza: terminato p si esegue q termina al termine di q p||q parallelo: p e q sono in parallelo termina quando entrambe terminano loop p end loop ciclo: non termina abort p when S do q end sospende p quando S ed esegue q 37 p e q sono istruzioni S è un segnale
  • 38. Statement primitivi: trap (appr.) trap T in p end trap dichiara l’eccezione T locale a p exit T solleva T trap T in p handle T do q end trap cattura un’eccezione o più eccezioni (case) 38 p e q sono istruzioni T è un segnale
  • 39. Statement primitivi per segnali signal S in p end signal dichiara un nuovo segnale S locale in p emit S emette S nell’istante e termina present S then p else q end present se S è presente esegue p altrimenti q 39 p e q sono istruzioni S è un segnale
  • 40. ABRO example Specifica: classico esempio di un controller che emette O dopo aver ricevuto entrambi A e B. Ricomincia da capo alla ricezione di R. module ABRO: input A, B, R; output O; loop [await A || await B]; emit O each R Box = Stati Frecce = Transizioni Nomi = Segnali Gerarchia = Preemption 40
  • 41. Esempio State Machine loop /X emit X ; await A ; A/ emit Y ; AB/XY present B then emit Z end end AB/XYZ 41
  • 42. Valued signal (appr.) output S := expr : TYPE; emit S(expr) emette S con valore di expr ?S valore di S che è sempre presente pre(S) valore di S prima di questo istante Si possono emettere più segnali nello stesso istante a patto di specificare una funzione di combinazione expr è un’espressione TYPE è un tipo 42 p e q sono istruzioni S è un valued-signal
  • 43. Valued signal (appr.) module COUNT: module COUNT: input I; input I; output Count: integer; output Count := 0 : integer; var Count := 0 : integer in every I do every I do emit Count(pre(?Count)+1); Count := Count + 1; end every emit Count(Count); end module end every end var end module Esempio di utilizzo dei segnali valued: a destra con pre 43 (Esterel v5.92)
  • 44. Esempio semplice emit A ; emit B ; pause ; emit C A B C IN: OUT: 44 arranged from: Kishinevsky, Berry, Singh
  • 45. Esempio loop loop emit A ; emit B ; pause ; emit C end loop A B C IN: OUT: 45 arranged from: Kishinevsky, Berry, Singh
  • 46. Esempio present emit A ; emit B ; pause ; loop present C then emit D else Q end if; present E then emit F end if; pause end loop C C E E A D Q D B F F Il compilatore controlla a compiletime la correttezza dei 46 segnali arranged from: Kishinevsky, Berry, Singh
  • 47. Statement derivati halt loop pause end loop sustain S loop emit S; pause end loop await S abort halt when S loop p each S end loop ciclo iterativo ad S every S do p end every iterazione ad ogni S await # S ripetizione abort p when # S ripetizione loop p each # S ripetizione # è un intero 47 p e q sono istruzioni S è un segnale
  • 48. Esempio parallelo [ await A ; emit C || await B ; emit D ] ; emit E A B C D E Il blocco parallelo B A termina quando i rami paralleli terminano D C E A B C D Le istruzioni parallele iniziano 48 E nello stesso istante arranged from: Kishinevsky, Berry, Singh
  • 49. Statement derivati (appr.) do p upto S p termina solo quando c’è S Quanti istanti durano le istruzioni? ZERO per emit, present Uno o Più per await, abort, ecc… immediate fa durare ZERO o Più 49 p e q sono istruzioni S è un segnale
  • 50. Esempio abort abort pause ; pause ; emit A when B ; emit C A C B C B C 50 arranged from: Kishinevsky, Berry, Singh
  • 51. Esempio await immediate await A ; emit B await immediate A ; emit B A A A B B A A A B B Default non immediato Meccanismo della macchina a stati con stato iniziale 51 arranged from: Kishinevsky, Berry, Singh
  • 52. Esempio weak abort abort weak abort pause; emit A ; pause; emit A ; pause; emit B pause; emit B when C; when C; emit D emit D C C A D D C C B A D A D 52 arranged from: Kishinevsky, Berry, Singh
  • 53. Reazione: quando? Quando reagire ad A? abort p when A weak abort p when A next abort p weak abort p when immediate A when immediate A now now next Quando terminare p? 53 arranged from: Kishinevsky, Berry, Singh
  • 54. Scalabilità Moduli Riutilizzo Definizione di tipi generici run GENERIC_SPEED [ type integer/T; constant 0/Initial, 1/Increment; function +/Add; signal Centimeter/A, Second/B; ] 54
  • 55. Altri statement  Declarazione di moduli/interfacce  Variabili e tipi custom  Chiamate procedure esterne  Funzioni matematiche 55
  • 56. Relazioni vincolari Esclusione tra due segnali (#) Implicazione di due segnali (=>) module SPEED: input Centimeter, Second; relation Centimeter # Second; ouput Speed: integer; loop var Distance := 0 : integer in abort every Centimeter do Distance := Distance + 1; end every when Second do emit Speed(Distance) end abort end var end loop end module 56
  • 57. Comunicazione concorrente every RESET do Riparti ogni RESET loop await A; Attendi A emit B; present C then emit D end; pause end || Concorrenza loop present B then emit C end; pause end Stesso ciclo: end comunicazione 57 bidirezionale
  • 58. Seat-belt Se il guidatore accende la macchina, e non allaccia la cintura in 5 secondi Allora l’allarme suona per 5 secondi, o finchè non allaccia la cintura, o finchè non spegne la macchina input KEY_ON , END_TIMER , KEY_OFF, BELT_ON , RESET; output START_TIMER , BEEP; loop abort present KEY_ON then emit START_TIMER(5); await END_TIMER; emit START_TIMER(5); abort sustain BEEP when END_TIMER; end when KEY_OFF or BELT_ON 58 each RESET arranged from: Roberto Passerone
  • 59. In conclusione: Esterel… Vantaggi: Modello sincrono => preciso controllo Concorrenza => utile per controller Determinismo: Test formali e simulazione software Potente IDE di sviluppo: Esterel Studio 100% Synthesizable C,C++,SystemC,VHDL,Verilog,StateMach. Equazioni Lustre style Svantaggi: Stati finiti limitano la flessibilità A volte difficile avere coerenza nei segnali 59 A volte difficile da compilare
  • 60. Progetto PRBG (appr.) Descrizione del progetto:  Generatore di bit pseudo-casuali  Algoritmo deterministico Pseudo-random bit sequence  Sequenza casuale ripetuta Schema logico:  Registro clocked a scorrimento destro  Feedback di una o più porte logiche XOR che 60 hanno come input alcuni bit del registro
  • 61. Pseudo Random Bit Generator Per ottenere lunghezza massima è necessario usare determinati bit da mette in ingresso allo XOR XOR di più bit vista anche come somma di bit modulo 2 Problema: seed con tutti i bit a zero 61 Progetto di Minetti Alberto, corso ASI @ DISI 2007/2008
  • 62. Circuito di controllo per seed a zero 62
  • 63. Shift register 63 multiplexer
  • 65. module PseudoRandomBitSequence: constant N : unsigned = 8; type Word : bool[N]; input GET_RANDOM; input SEED : Word; output RANDOM : Word; var REGISTER : Word, FIRST : bool in always %loop present SEED then if ?SEED <> 0b0000_0000 then REGISTER := ?SEED; else REGISTER := 0b1000_0000; end if end weak abort REGISTER >> 1; %right shift FIRST := REGISTER[7] xor REGISTER[5] xor REGISTER[4] xor REGISTER[3]; REGISTER := mcat(REGISTER[0..6],FIRST); when GET_RANDOM do emit RANDOM(REGISTER) end abort Pseudo Random end always %each tick end var Bit Generator in 65 end module linguaggio Esterel
  • 66. Non solo FPGA Reconfigurable computing: - Flessibilità - High performance - Modificare il datapath a runtime Elliptic Curve cryptography con chiave di 270 bits XC2V6000 FPGA 66MHz: 0.36ms sw dual-Xeon 2.6GHz: 196.71ms 540 volte più veloce con clock 40 volte più lento 66
  • 67. Bibliografia The Challenges of Synthesizing Hardware from C-Like Languages Stephen A. Edwards, Columbia University High-Level Synthesis: Past, Present, and Future Grant Martin & Gary Smith The Esterel synchronous programming language The Constructive Semantics of Pure Esterel The Esterel v5 Language Primer Gérard Berry http://www-sop.inria.fr/marelle/Laurent.Thery/lsp/esterel.html Programming the Lego Mindstorms using Lustre and Esterel M. Richard, C. Mauras - 1999, Hyères (France). http://www.esterel-technologies.com/products/scade-suite/ http://www.cs.columbia.edu/~sedwards/cec/ Esterel v7 Reference Manual Version v7 30 – initial IEEE standardization http://www-sop.inria.fr/meije/esterel/esterel-eng.html http://www-sop.inria.fr/esterel.org/files/Html/News/News.htm http://www-sop.inria.fr/meije/esterel/scdata.html 67