STUDIO DI METODOLOGIE DI SINTESI DI ALTO LIVELLO PER LA REALIZZAZIONE DI UN SINTETIZZATORE AUTOMATICO DA INTEGRARE NEL PROGETTO P AND A Relatore: Prof. Fabrizio FERRANDI Correlatore: Ing. Marco Domenico SANTAMBROGIO Francesco Redaelli MATRICOLA 656188 Davide Sacchi MATRICOLA 656975
Sommario Obiettivi P AND A Introduzione alla sintesi di alto livello Tecnologie di sintesi: Diagrammi ASM Sintetizzatore SPARK Grafi SDG Caso di studio: Algoritmo Kernighan-Lin Risultati e Confronto Conclusioni e sviluppi futuri
Obiettivi Analisi di due metodi di sintesi di alto livello esistenti: tramite ASM e tramite SPARK Introduzione di un nuovo metodo basato sugli SDG come rappresentazione formale  Confronto dei metodi di sintesi di alto livello
P AND A DRESD HLS HW/SW Codesign CERBERO
Sintesi di alto livello Sorgente “ High-level synthesis is the process of mapping a behavioral description at the algorithmic level to a structural description in terms of functional units, memory elements and interconnections” Assegnamento  risorse Allocazione risorse Schedulazione while (TRUE) { switch (state) { case S0: x = a + b; state = S1; next; case S1: ... } } Sabih H. Gerez,  “ Algorithms for VLSI Design Automation” sync: process begin wait until CLOCK’event and CLOCK=‘1’; state <= state_next; end process sync; ciclo: process begin case state is when S0 => out1 <= a + c; state_next <= S1; ... end process ciclo; Descrizione Strutturale
Diagrammi ASM (1) REALIZZAZIONE  DEL DIAGRAMMA ASM DESCRIZIONE IN LINGUAGGIO C State Box Posizioni possibili per il nome S1 S1 Uscite asserite Zx Condition Box CONDIZIONE FALSE TRUE Condizione di test Output Box Uscite asserite Zx
Diagrammi ASM (2) CASE stato_presente IS WHEN &quot;10&quot; => if( j<ndiv2 ) then Operazioni stato 10   if (B[j*2 + 1] = 0) then   stato_presente <= &quot;11&quot;;   else   stato_presente <= &quot;13&quot;;   end if; else   stato_presente <= &quot;14&quot;; end if; WHEN &quot;11&quot; => Operazioni stato 11 if( max < maxp ) then   stato_presente <= &quot;12&quot;; else   stato_presente <= &quot;13&quot;; end if; WHEN &quot;12&quot; => Operazioni stato 12 stato_presente <= &quot;13&quot;; WHEN &quot;13&quot; => j <= j+1; stato_presente <= &quot;14“; end case; TRADUZIONE  DEL DIAGRAMMA A  BLOCCHI IN VHDL INDIVIDUAZIONE DEGLI STATI
Sintetizzatore Spark
Grafi SDG (1) CASE stato IS … WHEN A => Operazioni stato A WHEN B => Operazioni stato B WHEN C => Operazioni stato C … end case; Scheduling
Grafi SDG (2) if (clk'event AND clk = '1') then CASE stato_presente IS WHEN x&quot;00&quot; => i <= 0; k <= 0; stato_presente <= x&quot;01&quot;; WHEN x&quot;01&quot; => ind18 <= Dv(i) + Dv(k + ndiv2); iA <= i; iB <= k; Mk <= M(A(i * 2)*n + B(k * 2)) * 2; if(A((i * 2) + 1) > 0) then i <= i+1; end if; if (B((k * 2) + 1) > 0) then k <= k+1; end if; if ((A((i * 2) + 1) > 0) and (B((k * 2) + 1)>0)) then stato_presente <= x&quot;01&quot;; else stato_presente <= x“02&quot;; end if; WHEN x“02&quot; => max <= ind18 - Mk; stato_presente <= x&quot;11&quot;; end CASE; end if; Entry S3 T S4 T S6 S1 W1 S7 S2 S5 W2 S6 S1 W1 S7 S2 S5 W2 S3 S4
Algoritmo Kernighan-Lin a b c d e f 2 3 2 5 A B
Risultati e Confronto (1) Risultati ottenuti attraverso ISE 8 20 5 16 11 419 757 10.014 99.856 SDG 5 14 4 18 14 341 525 4.989 200.423 SPARK 5 15 5 21 16 240 445 4.762 210.013 SDG O 8 9 5 15 10 407 734 16.142 61.949 ASM 5 9 5 15 10 237 429 16.087 62.160 ASM O Occupazione Spazio (%) O I Transizioni Stati SLC LUT Cp(ns) f(MHz) Metodo
Risultati e Confronto (2) Risultati ottenuti attraverso Synplify Pro 554 4.246 235.516 SDG 514 3.562 280.741 SPARK 250 3.750 266.667 SDG O 474 9.874 101.276 ASM 395 9.859 101.430 ASM O LUT Cp(ns) f(MHz) Metodo
Risultati e Confronto (3) Confronto tempistiche di simulazione 2.31 5.46 545 SDG 3.12 4.37 876 SPARK 3.24 4.12 865 SDG O 4.39 7.18 445 ASM 4.39 7.16 445 ASM O Tempo Synplify(ms) Tempo ISE(ms) Cicli Metodo
Conclusioni e sviluppi futuri HLS Modulo di sintesi di alto livello basato su SDG DRESD HW/SW Codesign CERBERO
Fine Presentazione Domande

Thesis Redaelli Sacchi Slide IT

  • 1.
    STUDIO DI METODOLOGIEDI SINTESI DI ALTO LIVELLO PER LA REALIZZAZIONE DI UN SINTETIZZATORE AUTOMATICO DA INTEGRARE NEL PROGETTO P AND A Relatore: Prof. Fabrizio FERRANDI Correlatore: Ing. Marco Domenico SANTAMBROGIO Francesco Redaelli MATRICOLA 656188 Davide Sacchi MATRICOLA 656975
  • 2.
    Sommario Obiettivi PAND A Introduzione alla sintesi di alto livello Tecnologie di sintesi: Diagrammi ASM Sintetizzatore SPARK Grafi SDG Caso di studio: Algoritmo Kernighan-Lin Risultati e Confronto Conclusioni e sviluppi futuri
  • 3.
    Obiettivi Analisi didue metodi di sintesi di alto livello esistenti: tramite ASM e tramite SPARK Introduzione di un nuovo metodo basato sugli SDG come rappresentazione formale Confronto dei metodi di sintesi di alto livello
  • 4.
    P AND ADRESD HLS HW/SW Codesign CERBERO
  • 5.
    Sintesi di altolivello Sorgente “ High-level synthesis is the process of mapping a behavioral description at the algorithmic level to a structural description in terms of functional units, memory elements and interconnections” Assegnamento risorse Allocazione risorse Schedulazione while (TRUE) { switch (state) { case S0: x = a + b; state = S1; next; case S1: ... } } Sabih H. Gerez, “ Algorithms for VLSI Design Automation” sync: process begin wait until CLOCK’event and CLOCK=‘1’; state <= state_next; end process sync; ciclo: process begin case state is when S0 => out1 <= a + c; state_next <= S1; ... end process ciclo; Descrizione Strutturale
  • 6.
    Diagrammi ASM (1)REALIZZAZIONE DEL DIAGRAMMA ASM DESCRIZIONE IN LINGUAGGIO C State Box Posizioni possibili per il nome S1 S1 Uscite asserite Zx Condition Box CONDIZIONE FALSE TRUE Condizione di test Output Box Uscite asserite Zx
  • 7.
    Diagrammi ASM (2)CASE stato_presente IS WHEN &quot;10&quot; => if( j<ndiv2 ) then Operazioni stato 10 if (B[j*2 + 1] = 0) then stato_presente <= &quot;11&quot;; else stato_presente <= &quot;13&quot;; end if; else stato_presente <= &quot;14&quot;; end if; WHEN &quot;11&quot; => Operazioni stato 11 if( max < maxp ) then stato_presente <= &quot;12&quot;; else stato_presente <= &quot;13&quot;; end if; WHEN &quot;12&quot; => Operazioni stato 12 stato_presente <= &quot;13&quot;; WHEN &quot;13&quot; => j <= j+1; stato_presente <= &quot;14“; end case; TRADUZIONE DEL DIAGRAMMA A BLOCCHI IN VHDL INDIVIDUAZIONE DEGLI STATI
  • 8.
  • 9.
    Grafi SDG (1)CASE stato IS … WHEN A => Operazioni stato A WHEN B => Operazioni stato B WHEN C => Operazioni stato C … end case; Scheduling
  • 10.
    Grafi SDG (2)if (clk'event AND clk = '1') then CASE stato_presente IS WHEN x&quot;00&quot; => i <= 0; k <= 0; stato_presente <= x&quot;01&quot;; WHEN x&quot;01&quot; => ind18 <= Dv(i) + Dv(k + ndiv2); iA <= i; iB <= k; Mk <= M(A(i * 2)*n + B(k * 2)) * 2; if(A((i * 2) + 1) > 0) then i <= i+1; end if; if (B((k * 2) + 1) > 0) then k <= k+1; end if; if ((A((i * 2) + 1) > 0) and (B((k * 2) + 1)>0)) then stato_presente <= x&quot;01&quot;; else stato_presente <= x“02&quot;; end if; WHEN x“02&quot; => max <= ind18 - Mk; stato_presente <= x&quot;11&quot;; end CASE; end if; Entry S3 T S4 T S6 S1 W1 S7 S2 S5 W2 S6 S1 W1 S7 S2 S5 W2 S3 S4
  • 11.
    Algoritmo Kernighan-Lin ab c d e f 2 3 2 5 A B
  • 12.
    Risultati e Confronto(1) Risultati ottenuti attraverso ISE 8 20 5 16 11 419 757 10.014 99.856 SDG 5 14 4 18 14 341 525 4.989 200.423 SPARK 5 15 5 21 16 240 445 4.762 210.013 SDG O 8 9 5 15 10 407 734 16.142 61.949 ASM 5 9 5 15 10 237 429 16.087 62.160 ASM O Occupazione Spazio (%) O I Transizioni Stati SLC LUT Cp(ns) f(MHz) Metodo
  • 13.
    Risultati e Confronto(2) Risultati ottenuti attraverso Synplify Pro 554 4.246 235.516 SDG 514 3.562 280.741 SPARK 250 3.750 266.667 SDG O 474 9.874 101.276 ASM 395 9.859 101.430 ASM O LUT Cp(ns) f(MHz) Metodo
  • 14.
    Risultati e Confronto(3) Confronto tempistiche di simulazione 2.31 5.46 545 SDG 3.12 4.37 876 SPARK 3.24 4.12 865 SDG O 4.39 7.18 445 ASM 4.39 7.16 445 ASM O Tempo Synplify(ms) Tempo ISE(ms) Cicli Metodo
  • 15.
    Conclusioni e sviluppifuturi HLS Modulo di sintesi di alto livello basato su SDG DRESD HW/SW Codesign CERBERO
  • 16.