Table of Contents Table of Contents
Previous Page  46 / 86 Next Page
Information
Show Menu
Previous Page 46 / 86 Next Page
Page Background

EDA/SW/T&M

SoC TESTING

46

- ELETTRONICA OGGI 468 - MARZO 2018

essi può rivelarsi un’attività estremamente onerosa in

termini di tempo. La figura 1 mostra un semplice SoC,

equipaggiato con memorie di tipo flash e DDR, una

memoria TCM (Tightly-Coupled Memory), nonché una

UART e un motore DMA, i cui registri vengono acce-

duti tramite un apposito bus per periferiche a bassa

velocità. Sebbene l’obiettivo finale sia di riuscire a ve-

rificare che del codice in esecuzione sul processore

acceda correttamente ai registri delle varie IP, è possi-

bile procedere inizialmente con una verifica basata pu-

ramente su UVM, che consenta di focalizzarsi meglio

sull’oggetto della verifica stessa. Procedendo dappri-

ma a una verifica in UVM del sottosistema di memoria,

sarà infatti possibile acquisire una maggiore confiden-

za, in vista della successiva fase operabile mediante

software effettivamente in esecuzione sul processore

embedded. L’utilizzo del tool per il

portable stimulus

Questa inFact di Mentor, consentirà di esprimere e di

riutilizzare più volte un medesimo

test intent

, indiriz-

zandolo dapprima verso un ambiente UVM e succes-

sivamente verso un ambiente di software embedded,

risparmiando una significativa quantità di tempo nor-

malmente necessario per lo sviluppo dei test.

Utilizzo dei grafi per descrivere i registri

Questa inFact utilizza una descrizione degli input di tipo

dichiarativo, incentrata sull’utilizzo di

grafi

, che alla po-

tenza della programmazione basata sui vincoli aggiun-

ge la capacità di specificare logiche decisionali espres-

se in maniera iterativa. Come si vedrà, tale possibilità di

esprimere iterativamente le decisioni si rivela di grande

aiuto quando si giunge al momento di dover specificare

i vincoli per l’accesso ai registri.

Nel nostro esempio, si inizierà catturando gli attributi

fondamentali che caratterizzano, nei test, una operazio-

ne di accesso alla memoria: indirizzo, dimensione del

dato, valore da scrivere e maschera di scrittura. La ma-

schera di scrittura specifica quali sono i bit da leggere/

scrivere, e quali vanno invece ignorati per gli scopi del

test corrente. Una

action

rappresenta l’unità di compor-

tamento che dovrà essere eseguita all’interno dell’am-

biente target della verifica. Si vedrà più avanti come la

modifica dell’implemen-

tazione del body di tale

azione consentirà di ri-

dirigere in modo sempli-

ce il

test intent

di questo

accesso ai registri verso

i diversi ambienti relativi

rispettivamente all’UVM

e al software embedded.

Il descrittore di accesso ai registri mostrato in figu-

ra 2 non include ancora alcun dettaglio relativo alle

differenti tipologie di IP presenti nel sistema. Il pas-

saggio successivo consiste dunque nell’aggiunta di

tali restrizioni specifiche. Il motore DMA utilizzato (in

questo caso il Wishbone DMA Core di

opencores.org)

possiede un set di registri

core

, nonché un array di

registri

descrittori

dei canali. Utilizzando una descri-

zione basata su grafi è possibile descrivere in modo

iterativo gli indirizzi di tutti i registri in questione.

La descrizione grafica sopra riportata illustra il pro-

cesso di selezione dell’indirizzo di un registro DMA:

core

oppure dell’array dei

registri di controllo dei canali (dma_reg).

-

nali.

- Selezione del canale (dma_ch).

- Selezione del registro di canale da indirizzare (dma_

ch_reg).

La figura 4 mostra la descrizione testuale di questo

stesso processo.

Sono inoltre necessarie, naturalmente, delle indica-

zioni più dettagliate per

specificare l’indirizzo

del registro e la ma-

schera di scrittura, le

quali vengono codifi-

cate mediante il vincolo

Fig. 3 – Selezione dell’indirizzo di un registro DMA

Fig. 2 – Struct di base che speci-

fica l’accesso ai registri

Fig. 4 – Regole per la selezione

dell’indirizzo di un registro DMA