polito.it
Politecnico di Torino (logo)

Flusso di lavoro per la verifica di dispositivi DSP progettati in C++ per High-Level Synthesis = Workflow for verifcation of DSP designed in C++ for High-Level Synthesis

Giacomo Spinello

Flusso di lavoro per la verifica di dispositivi DSP progettati in C++ per High-Level Synthesis = Workflow for verifcation of DSP designed in C++ for High-Level Synthesis.

Rel. Maurizio Martina, Guido Masera. Politecnico di Torino, Corso di laurea magistrale in Ingegneria Elettronica (Electronic Engineering), 2022

Abstract:

In questa tesi si presenta la realizzazione di un flusso di lavoro che si proponga di verificare il DUT (Design Under Test) dal punto di vista funzionale. Lungo la trattazione, per verifica funzionale si intenderà il procedimento tramite il quale dimostrare la correttezza del funzionamento del dispositivo rispetto alle specifiche. Il flusso di lavoro è inteso come un insieme di operazioni, una prassi, che l'utente seguirà per sottoporre il DUT di interesse al processo di verifica funzionale. Tale prassi è da considerarsi, infatti, all'interno di un contesto lavorativo di più persone con la necessità di verificare dispositivi diversi. Il flusso sarà il punto di partenza di ogni processo di verifica e può essere schematizzato nei seguenti passaggi: 1) randomizzazione dei vettori in ingresso al DUT, 2) simulazioni multiple del DUT, 3) raccolta dei risultati, creazione di un report finale e rappresentazione della copertura funzionale (Functional Coverage in inglese). La categoria di DUT per cui è stato pensato il flusso è quella dei dispositivi DSP (Digital Signal Processing) descritti in C++ la cui sintesi RTL (Register-Transfer Level) è affidata ad un programma di sintesi HLS (High-Level Synthesis). Come anticipato sopra, il flusso di lavoro si svolge attraverso tre principali fasi: la randomizzazione dei vettori di ingresso al DUT, il lancio di una campagna di simulazioni in cui il dispositivo sarà sottoposto ai diversi scenari di utilizzo, infine, la raccolta dei dati all’interno di un unico report che unifichi i risultati delle simulazioni e ne evidenzi le criticità e comportamenti non conformi. Per la verifica funzionale e la raccolta dati sulla functional coverage, sarà utilizzato un ambiente di verifica scritto in C++. Il flusso di lavoro presentato permetterà di verificare la correttezza degli algoritmi progettati in C++ fornendo indicazioni quantitative sulle violazioni e sulle fonti di tali violazioni. La tecnica che è stata usata ricalca quella delle assertion UVM anche se necessariamente la sintassi adottata sarà diversa. L'idea di fondo delle assertion è quella di formulare delle espressioni booleane il cui fallimento è utilizzato per stabilire la deviazione dal comportamento atteso. L'inserimento della possibilità di registrare la copertura funzionale (Functional Coverage in inglese) consentirà al verificatore di saggiare la distribuzione degli ingressi inviati al DUT creando quindi la possibilità di valutare la bontà della campagna di simulazioni. I costrutti utilizzati sono simili a quelli usati in SystemVerilog (covergroup, coverpoints, bins…) e risulteranno familiari al verificatore UVM. I dati della functional coverage uniti al report creato combinando le assertion violate in ogni simulazione, saranno i principali risultati che il verificatore avrà a disposizione per valutare il dispositivo e le simulazioni stesse.

Relatori: Maurizio Martina, Guido Masera
Anno accademico: 2022/23
Tipo di pubblicazione: Elettronica
Numero di pagine: 154
Informazioni aggiuntive: Tesi secretata. Fulltext non presente
Soggetti:
Corso di laurea: Corso di laurea magistrale in Ingegneria Elettronica (Electronic Engineering)
Classe di laurea: Nuovo ordinamento > Laurea magistrale > LM-29 - INGEGNERIA ELETTRONICA
Aziende collaboratrici: STMicroelectronics
URI: http://webthesis.biblio.polito.it/id/eprint/24747
Modifica (riservato agli operatori) Modifica (riservato agli operatori)