Questo corso tratta di High-Level Synthesis (HLS) per la progettazione di circuiti digitali, con un'enfasi sulla progettazione di acceleratori hardware/software per applicazioni specifiche di dominio. Con la crescita delle dimensioni e della complessità dei circuiti digitali, la progettazione RTL manuale è diventata il principale collo di bottiglia nel ciclo di sviluppo. Nel frattempo, i rapidi progressi negli algoritmi di AI/ML/DSP, che richiedono una grande quantità di prestazioni di calcolo parallelo con requisiti di basso consumo energetico, impongono ai progettisti di fornire nuove soluzioni hardware con miglioramenti in prestazioni, energia, area in meno tempo di sviluppo rispetto al passato. Progettare e testare acceleratori hardware per ogni algoritmo specifico utilizzando il tradizionale design RTL è semplicemente impraticabile e il mancato miglioramento dell'efficienza energetica impedirà l'adozione degli algoritmi più recenti in molteplici settori. Per stare al passo con questo ambiente in rapida evoluzione, l'unica soluzione praticabile è spostare la progettazione verso livelli superiori di astrazione, e l’HLS soddisfa questa esigenza. Infatti, l'HLS è il modo più veloce per convertire algoritmi ad alta intensità di calcolo in implementazioni hardware energeticamente efficienti e reagire tempestivamente ai rapidi cambiamenti nelle specifiche degli algoritmi. Con l'HLS, il processo di progettazione hardware è evoluto dai linguaggi di descrizione hardware (HDL) ai linguaggi ad alto livello (come C/C++) che riducono l'intervento manuale e i conseguenti errori della tradizionale codifica RTL. Lavorando a un livello superiore di astrazione, i progettisti possono concentrarsi sulla funzionalità del circuito senza dover specificare manualmente dettagli di implementazione a basso livello. L'HLS si occupa di generare automaticamente una descrizione RTL ottimizzata dalle specifiche funzionali, facilitando il flusso dal software al silicio con una maggiore produttività, una più efficiente esplorazione dello spazio di progettazione e una più semplice riutilizzabilità del design.
Una volta completato il corso, gli studenti saranno competenti nell'implementare e ottimizzare sistemi digitali utilizzando l’HLS basata su C/C++, acquisendo una profonda comprensione dell'intero flusso di progettazione HLS, dalla specifica all'implementazione. Inoltre, acquisiranno conoscenze sulle capacità e limitazioni dell'HLS rispetto ai tradizionali flussi di progettazione RTL. Gli studenti svolgeranno anche esercitazioni con strumenti HLS commerciali per risolvere un caso studio pratico.
This course deals with High-Level Synthesis (HLS) for the design of digital circuits, with emphasis on the design of HW/SW accelerations for domain-specific applications. With the growing size and complexity of digital circuits, hand-coded RTL design has become the major bottleneck in the development cycle. Meanwhile, the rapid advances in AI/ML/DSP algorithms, requiring a huge amount of parallel compute performance with low-power requirements, mandate designers to deliver new hardware solutions with improved power-performance-area (PPA) in less development time than ever. Designing and validating hardware accelerators for each specific algorithm using traditional RTL design is simply impractical and failing to improve energy efficiency will prevent the adoption of the latest algorithms in many different areas. To keep pace with this fast-evolving environment, the only viable solution is to shift the design towards higher levels of abstraction, and HLS fits this need. Indeed, HLS is the fastest way to convert compute-intensive algorithms into energy-efficient hardware implementation and timely react to rapid changes in algorithm specifications. With HLS, the hardware design process has evolved from hardware description languages (HDL) to high-level languages (such as C/C++) that alleviate the manual intervention and error-prone nature of traditional RTL coding. Working at a higher layer of abstraction, designers can focus on the circuit functionality without needing to manually specify low-level implementation details. HLS is in charge of automatically generating an optimized RTL description from the functional specifications, facilitating the software-to-silicon flow with higher productivity, more efficient design space exploration, and easier design reuse.
After completing the course, students will be proficient in implementing and optimizing digital systems using C/C++-based HLS, acquiring an in-depth understanding of the entire HLS design flow. Additionally, they will gain insight into the capabilities and limitations of HLS compared to traditional RTL design flows. Students will also practice with commercial HLS tools to solve a practical case study.
Una conoscenza minima nei seguenti campi può essere utile per seguire il corso: Architettura dei computer, Conoscenza di base del design digitale e della programmazione in C/C++, Conoscenza di base di VHDL/Verilog HDL.
Minimum knowledge in the following fields may help to enjoy the course: Computer Architecture, Basic knowledge of digital design and C/C++ programming, Basic knowledge of VHDL/Verilog HDL.
- Introduzione alla teoria HLS: motivazioni, sfide e opportunità
- Flusso HLS e strumenti
- Metodi di ottimizzazione e la loro implementazione nei moderni framework HLS: Ottimizzazione dei cicli, Partizionamento degli array, Pipelining e Parallelismo
- Tecniche di programmazione per HLS
- Esercitazione pratica su un caso di studio (AI/ML/DSP): Ottimizzazione e valutazione delle prestazioni
- Seminario di ricerca sulle tendenze e il futuro dell'HLS nei segmenti applicativi chiave (AI/ML/DSP)
- Introduction to HLS theory: motivations, challenges, and opportunities
- HLS flow and tools
- Optimization methods and their implementation in modern HLS frameworks: Loop Optimization, Arrays Partitioning, Pipelining & Parallelism
- Programming techniques for efficient HLS
- Hands-on on a Case Study (AI/ML/DSP): Optimization and performance assessment
- Research Seminar on HLS trends and future in key application segments (AI/ML/DSP)
In presenza
On site
Prova di laboratorio di natura pratica sperimentale o informatico - Sviluppo di project work in team
Laborartory test on experimental practice or informatics - Team project work development
P.D.1-1 - Novembre
P.D.1-1 - November
Le lezioni si terranno presso il Laboratorio di Ricerca LAB 8 (DAUIN, secondo piano) secondo il seguente calendario:
Lunedì 25 novembre, 10:00-12:00
Martedì 26 novembre, 10:00-13:00
Lunedì 2 dicembre, 10:00-13:00
Martedì 3 dicembre, 10:00-13:00
Lunedì 9 dicembre, 10:00-13:00
Martedì 10 dicembre, 10:00-13:00
Giovedì 12 dicembre, 14:00-17:00
The lectures will take place at the LAB 8 Research Laboratory (DAUIN, second floor) according to the following schedule:
Monday, November 25, 10:00-12:00
Tuesday, November 26, 10:00-13:00
Monday, December 2, 10:00-13:00
Tuesday, December 3, 10:00-13:00
Monday, December 9, 10:00-13:00
Tuesday, December 10, 10:00-13:00
Thursday, December 12, 14:00-17:00