Electronic systems are increasingly used in various domains like transportation, industrial automation, healthcare or telecommunication to execute critical applications and to manipulate sensitive data. These systems often involve financial and industrial interests but also human lives. Hence, the safety and the reliability of such systems are key issues. For this reason, the various common debugging techniques have expanded with more methods to detect anomalies and numerous verification techniques have been proposed to generate hardware monitors that check logic and/or temporal behaviors against a priori known properties through signals/registers spying. In this thesis we describe an approach for automatic detection of logical bugs in hardware designs generated using High-level Synthesis (HLS). The main goal is to remove the restrictions described above, allowing the usage of all the available options for the memory layouts and all the compiler optimizations when performing HLS, without compromising the possibility to debug the generated circuit without modifications. All of this preserving the ability to relate the generated Hardware Description Languages (HDL) to the original high–level source code. These goals are very important because we do not want to limit our debugging methodology to unoptimized circuits, and we want to be able to spot bugs introduced by any optimization step performed in HLS. We describe our implementation of a debugging tool to show a real–world application of the described methodology. Then, starting from the work on this debugging technique, we designed a parallel event based C and mixed HDL simulator. The goal is to handle simulations of hardware modules written in different HDLs and those C-produced. This work can improve, potentially, not only the code reusability within the same project and across projects but the parallelization can also speed up the simulation itself. The discrepancy analysis represents a negligible overhead compared to the standard simulation: around 15% in the worst cases, but in the most common average case is much less. The results obtained through the use of this technique shows that the percentage of assignments checked at runtime with our method are always at least 45% of the total, with a maximum of 89%. This clearly demonstrates the potential of our method compared to other approaches to source–level debugging for HLS–generated circuit which are not able to check temporaries and force to disable compiler optimizations. These results are very promising and research is still ongoing in order to complete the coverage also of addresses and pointer arithmetics.

L'elettronica è sempre più utilizzata in vari settori come i trasporti, l'automazione industriale, l'assistenza sanitaria o nelle telecomunicazione per eseguire applicazioni critiche e per manipolare dati sensibili. Questi sistemi spesso coinvolgono interessi finanziari e/o industriali, ma anche vite umane. Quindi, la sicurezza e l'affidabilità di tali sistemi sono aspetti chiave. Per questo motivo, le comuni tecniche di debug sono state ampliate con più metodi per rilevare anomalie e numerose tecniche di verifica sono state proposte per generare monitor hardware che controllano la logica e/o i comportamenti, basati su proprietà note a propri, attraverso l'ispezione dei segnali e dei registri. In questa tesi si descrive un metodo per il rilevamento automatico degli errori nella logica di un circuito generato usando la sintesi ad alto livello. L'obiettivo principale è quello di rimuovere le limitazioni sopra descritte e che consenta l'utilizzo di tutte le opzioni disponibili per i layout della memoria e tutte le ottimizzazioni del compilatore durante l'esecuzione della sintesi ad alto livello, senza compromettere la possibilità di fare il debugging del circuito generato senza modifiche. Tutto questo è possibile mantenendo la relazione tra il linguaggio di descrizione hardware generato e il codice sorgente originale ad alto livello. Questi obiettivi sono molto importanti perché non vogliamo limitare la nostra metodologia di debug a circuiti non ottimizzati, e vogliamo essere in grado di individuare bug introdotti in una qualsiasi fase di ottimizzazione eseguita nella sintesi ad alto livello. Inoltre descriviamo l'implementazione dello strumento di debug per mostrare una applicazione della metodologia descritta in un contesto di utilizzo reale. A seguito di questo lavoro su questa tecnica di debug, abbiamo progettato un simulatore ad eventi parallelo tra C e linguaggi di descrizione hardware misti. L'obiettivo è quello di gestire simulazioni di progetti che includono sia moduli hardware scritti in diversi linguaggi di descrizione hardware sia altri scritti in C. Tale lavoro può potenzialmente migliorare non solo il riutilizzo di codice all'interno dello stesso progetto e fra progetti differenti, ma la parallelizazzione può anche velocizzare la simulazione stessa. L'analisi delle discrepanze rappresenta un overhead trascurabile rispetto alla simulazione standard: circa il 15% nei casi peggiori, ma nel caso medio più comune è molto meno. I risultati ottenuti con l'uso di questa tecnica mostrano che la percentuale di assegnamenti controllata a runtime dal nostro metodo è sempre almeno il 45% sul totale, con un picco dell'89%. Ciò dimostra chiaramente il potenziale del nostro metodo rispetto ad altri approcci per il debug, a livello di sorgenti, per circuiti generati da sintesi ad alto livello i quali non sono in grado di verificare le variabili temporanee e obbligano l'utente a disattivare le ottimizzazioni del compilatore. Questi risultati sono molto promettenti e la ricerca è ancora in corso al fine di completare anche la copertura di indirizzi e l'aritmetica dei puntatori.

Trace-based automated logical debugging for high-level synthesis generated circuits

CASTELLANA, MICHELE
2015/2016

Abstract

Electronic systems are increasingly used in various domains like transportation, industrial automation, healthcare or telecommunication to execute critical applications and to manipulate sensitive data. These systems often involve financial and industrial interests but also human lives. Hence, the safety and the reliability of such systems are key issues. For this reason, the various common debugging techniques have expanded with more methods to detect anomalies and numerous verification techniques have been proposed to generate hardware monitors that check logic and/or temporal behaviors against a priori known properties through signals/registers spying. In this thesis we describe an approach for automatic detection of logical bugs in hardware designs generated using High-level Synthesis (HLS). The main goal is to remove the restrictions described above, allowing the usage of all the available options for the memory layouts and all the compiler optimizations when performing HLS, without compromising the possibility to debug the generated circuit without modifications. All of this preserving the ability to relate the generated Hardware Description Languages (HDL) to the original high–level source code. These goals are very important because we do not want to limit our debugging methodology to unoptimized circuits, and we want to be able to spot bugs introduced by any optimization step performed in HLS. We describe our implementation of a debugging tool to show a real–world application of the described methodology. Then, starting from the work on this debugging technique, we designed a parallel event based C and mixed HDL simulator. The goal is to handle simulations of hardware modules written in different HDLs and those C-produced. This work can improve, potentially, not only the code reusability within the same project and across projects but the parallelization can also speed up the simulation itself. The discrepancy analysis represents a negligible overhead compared to the standard simulation: around 15% in the worst cases, but in the most common average case is much less. The results obtained through the use of this technique shows that the percentage of assignments checked at runtime with our method are always at least 45% of the total, with a maximum of 89%. This clearly demonstrates the potential of our method compared to other approaches to source–level debugging for HLS–generated circuit which are not able to check temporaries and force to disable compiler optimizations. These results are very promising and research is still ongoing in order to complete the coverage also of addresses and pointer arithmetics.
FEZZARDI, PIETRO
ING - Scuola di Ingegneria Industriale e dell'Informazione
28-set-2016
2015/2016
L'elettronica è sempre più utilizzata in vari settori come i trasporti, l'automazione industriale, l'assistenza sanitaria o nelle telecomunicazione per eseguire applicazioni critiche e per manipolare dati sensibili. Questi sistemi spesso coinvolgono interessi finanziari e/o industriali, ma anche vite umane. Quindi, la sicurezza e l'affidabilità di tali sistemi sono aspetti chiave. Per questo motivo, le comuni tecniche di debug sono state ampliate con più metodi per rilevare anomalie e numerose tecniche di verifica sono state proposte per generare monitor hardware che controllano la logica e/o i comportamenti, basati su proprietà note a propri, attraverso l'ispezione dei segnali e dei registri. In questa tesi si descrive un metodo per il rilevamento automatico degli errori nella logica di un circuito generato usando la sintesi ad alto livello. L'obiettivo principale è quello di rimuovere le limitazioni sopra descritte e che consenta l'utilizzo di tutte le opzioni disponibili per i layout della memoria e tutte le ottimizzazioni del compilatore durante l'esecuzione della sintesi ad alto livello, senza compromettere la possibilità di fare il debugging del circuito generato senza modifiche. Tutto questo è possibile mantenendo la relazione tra il linguaggio di descrizione hardware generato e il codice sorgente originale ad alto livello. Questi obiettivi sono molto importanti perché non vogliamo limitare la nostra metodologia di debug a circuiti non ottimizzati, e vogliamo essere in grado di individuare bug introdotti in una qualsiasi fase di ottimizzazione eseguita nella sintesi ad alto livello. Inoltre descriviamo l'implementazione dello strumento di debug per mostrare una applicazione della metodologia descritta in un contesto di utilizzo reale. A seguito di questo lavoro su questa tecnica di debug, abbiamo progettato un simulatore ad eventi parallelo tra C e linguaggi di descrizione hardware misti. L'obiettivo è quello di gestire simulazioni di progetti che includono sia moduli hardware scritti in diversi linguaggi di descrizione hardware sia altri scritti in C. Tale lavoro può potenzialmente migliorare non solo il riutilizzo di codice all'interno dello stesso progetto e fra progetti differenti, ma la parallelizazzione può anche velocizzare la simulazione stessa. L'analisi delle discrepanze rappresenta un overhead trascurabile rispetto alla simulazione standard: circa il 15% nei casi peggiori, ma nel caso medio più comune è molto meno. I risultati ottenuti con l'uso di questa tecnica mostrano che la percentuale di assegnamenti controllata a runtime dal nostro metodo è sempre almeno il 45% sul totale, con un picco dell'89%. Ciò dimostra chiaramente il potenziale del nostro metodo rispetto ad altri approcci per il debug, a livello di sorgenti, per circuiti generati da sintesi ad alto livello i quali non sono in grado di verificare le variabili temporanee e obbligano l'utente a disattivare le ottimizzazioni del compilatore. Questi risultati sono molto promettenti e la ricerca è ancora in corso al fine di completare anche la copertura di indirizzi e l'aritmetica dei puntatori.
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
thesis.pdf

non accessibile

Descrizione: Trace Based Automated Logical Debugging for High Level Synthesis Generated Circuits
Dimensione 1.17 MB
Formato Adobe PDF
1.17 MB Adobe PDF   Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/126821