High Level Synthesis

Informazioni Generali

  • studenti interessati: studenti di dottorato
  • periodo: secondo semestre
  • durata: 24 ore
  • lingua: Inglese (eventualmente Italiano, in base alle necessità degli studenti)
  • professore: Carlo Sau

Iscrizione

Il corso verrà svolto nella prima metà di luglio (il programma pressochè finale delle lezioni è disponibile in fondo a questa pagina). Per iscriversi è necessario mandare una e-mail al docente all’indirizzo carlo.sau@unica.it.


Sommario

A causa della diffusione dei Systems-on-Chip (SoCs) eterogenei, che integrano nello stesso chip logica general purpose e logica dedicata, l’Electronic Design Automation (EDA), che per i sistemi digitali si concentra nella sintesi logica e nell’implementazione, sta andando verso un ulteriore livello di astrazione. Se il Register Transfer Level (RTL) e i linguaggi di descrizione dell’hardware (Hardware Description Languages, HDLs) oggigiorno sono il modo più comune di descrivere il comportamento del sistema, la strada verso l’adozione di linguaggi di più alto livello e specifiche più astratte è stata già pianificata e intrapresa. L’High Level Synthesis (HLS) utilizza linguaggi di programmazione general purpose, prevalentemente C, per generare una descrizione RTL del sistema pronta per la sintesi logica. Nonostante ciò, sono ancora necessari l’intervento dell’utente e la conoscenza di dettagli di basso livello, che hanno un grosso impatto nel sistema risultante e, nella pratica, limitano la grande diffusione di questa tecnica, dimostrando che la tecnologia di HLS si trova ad un buon stadio di sviluppo ma non è ancora abbastanza matura.


Obiettivi

Il corso ha l’obiettivo di fornire le motivazioni dell’HLS, che risiedono nell’evoluzione dei SoC verso piattaforme eterogenee, così come nell’incremento della complessità delle applicazioni e del numero di dati da processare.

Il flusso di HLS verrà descritto ed esplorato sotto vari aspetti, e verranno analizzate diverse soluzioni di HLS disponibili in letteratura e nel mercato. Verranno studiati gli strumenti tipicamente disponibili per indirizzare l’HLS a seconda dei requisiti specifici e degli obiettivi, così come l’impatto che questi strumenti hanno sul sistema risultante.

Alcuni tool di HLS (Vivado HLS e CAPH) verranno adottati nella pratica considerando uno stesso caso di studio per tutto il corso, in modo da comprendere meglio l’utilizzo, le potenzialità e le limitazioni di queste nuove soluzioni tecnologiche.


Syllabus

  1. Introduzione [2h]
  2. Concetti base dell’HLS [8h]
    1. Nozioni Necessarie
    2. Flusso di HLS
  3. Software di HLS [12h]
    1. Peculiarità dell’HLS
    2. Vivado HLS
    3. CAPH
  4. Progetto Finale [2h]

Requisiti

  • Linguaggi di Programmazione
  • Progettazione di Sistemi Digitali

Valutazione

  • Progetto Finale (progettazione di un acceleratore specializzato per un’applicazione d’esempio proposta dallo studente)

Programma delle Lezioni

  • Thursday, 01/07/2021: (9-11, 15-17), 4h
    • Introduzione (9-11)
    • Concetti base dell’HLS – Nozioni Necessarie (15-17)
    • Concetti base dell’HLS – Flusso di HLS (15-17)
  • Monday, 05/07/2021: (9-11, 15-17), 4h
    • Concetti base dell’HLS – Flusso di HLS (9-11)
    • Concetti base dell’HLS – Flusso di HLS (15-17)
  • Wednesday, 07/07/2021: (9-11, 15-17), 4h
    • Concetti base dell’HLS – Flusso di HLS (9-11)
    • Software di HLS – Peculiarità dell’HLS (15-17)
    • Software di HLS – Vivado HLS (15-17)
  • Thursday, 08/07/2021: (9-11, 15-17), 4h
    • Software di HLS – Vivado HLS (9-11)
    • Software di HLS – Vivado HLS (15-17)
  • Friday, 09/07/2021: (9-11), 2h
    • Software di HLS – Vivado HLS (9-11)
  • Monday, 12/07/2021: (16-18), 2h
    • Software di HLS – CAPH (16-18)
  • Tuesday, 13/07/2021: (16-18), 2h
    • Software di HLS – CAPH (16-18)
  • Tuesday, 20/07/2021: (9-11), 2h
    • Progetto Finale (9-11)