Memory Fault Simulator
1
User’s Requirements
Obiettivi del tool
Memory Fault Simulator calcola la copertura fornita ad un insieme di modelli di guasto
della memoria da parte di un algoritmo di test, eliminando eventuali operazioni inutili contenute.
Inoltre, dato un vincolo sulla massima potenza media dissipabile dalla memoria, modifica
l’algoritmo o la frequenza di esecuzione, affinché il vincolo sia rispettato.
2
Input
2.1
Modello della memoria
Il programma riceve in input un file contenente vari parametri che descrivono:
 l’organizzazione dell’array: sono supportate memorie sia word-oriented, sia multi-port
(le diverse porte possono avere parallelismi massimi di accesso differenti);
 le operating conditions tipiche (tensione di alimentazione, temperatura);
 le caratteristiche elettriche (tempi di ciclo, corrente assorbita dall’alimentazione in
stand-by e durante un ciclo);
 aspetti relativi alle DRAM.
2.1.1 Simulazione a livello elettrico
Il programma può essere esteso per implementare un simulatore di RAM che traccia
l’evoluzione temporale dei valori di tensione delle celle dell’array di memoria.
Lo stato di una generica cella di memoria è definito dal valore di tensione contenuto e
dall’istante temporale della prossima variazione di tale tensione (timeout).
Le transizioni fra gli stati avvengono in risposta ad eventi predefiniti (lettura o scrittura della
cella, timeout, variazione delle operating conditions della RAM).
L’utente può ridefinire le funzioni di risposta agli eventi (in codice C-like); quest’ultime,
invocate su una cella v, vedono la memoria come una matrice di valori di tensione con
indirizzamento relativo alla cella v. In questo modo è possibile modellare comportamenti non ideali,
quali, in una memoria dinamica, la diminuizione della tensione di una cella allo stato “alto” con il
trascorrere del tempo.
2.2
Modelli di guasto
Nei modelli di guasto la memoria è vista come una matrice di celle (bit).
2.2.1 Celle coinvolte nel guasto
Ogni modello di guasto riguarda k celle base, eventuali vicinati predefiniti ed eventuali celle
vicine.
La copertura del guasto è verificata per ogni possibile disposizione delle k celle base
all’interno dell’array; l’utente può indicare eventuali distanze orizzontali e/o verticali massime fra
tali celle, per ridurre la complessità dell’elaborazione nel caso in cui k sia elevato.
I vicinati predefiniti possono avere dimensioni fisse (npsf4, npsf8) o variabili (riga, colonna,
diagonali, intero array).
 2002 Luca Calaprice
1
Memory Fault Simulator
User’s Requirements
Le celle vicine sono indicate per mezzo di offset di riga e colonna rispetto alla cella base;
sono utili per modellare vicinati di dimensioni fisse definiti dall’utente.
2.2.2 Blocchi e sequenze
Un modello di guasto è un blocco; ciascun blocco contiene una o più sequenze; ciascuna
sequenza contiene una o più operazioni elementari e/o blocchi. Affinché il guasto sia rilevato è
necessario che l’algoritmo di test esegua le operazioni nell’ordine in cui compaiono nelle sequenze
di appartenenza, ma non importa l’ordine relativo di esecuzione fra sequenze di uno stesso blocco.
Per garantire il determinismo del modello di guasto, si richiede che una stessa cella non sia
indirizzata da sequenze appartenenti (anche ricorsivamente) ad uno stesso blocco.
In questo modo si possono trattare casi in cui l’ordine delle operazioni compiute su celle
diverse può essere qualunque (inizializzazione, operazioni sulle celle di un vicinato).
2.2.3 Operazioni elementari
Le operazioni elementari contenute in un modello di guasto possono essere:
 la verifica di una condizione riguardante le operating conditions della RAM (per
modellare guasti che occorrono in condizioni operative particolari);
 la scrittura o la lettura (con o senza verifica) di una cella base o di una sua vicina,
eventualmente raggruppate per formare un’operazione multi-port;
Una lista di operazioni elementari può essere associata ad un vicinato predefinito di una
cella base (o sua vicina).
2.2.4 Delay ed operazioni non appartenenti al modello di guasto
Davanti ad un’operazione multi-port è possibile porre un prefisso di ripetizione e/o un
vincolo temporale (delay minimo o massimo dall’operazione precedente del modello di guasto).
Davanti ad ogni singola operazione single-port è possibile porre un vincolo temporale (delay
minimo o massimo dall’operazione precedente del modello di guasto sulla stessa cella).
Infine, ad ogni cella coinvolta nel guasto sono associati i permessi di operazioni di lettura
e/o scrittura (del valore presunto) non appartenenti al modello di guasto, abilitabili o disabilitabili in
ogni punto del modello.
2.3
Algoritmo di test
L’algoritmo di test vede la memoria come una matrice di parole, di ampiezza pari al
parallelismo massimo della porta di accesso considerata. Può contenere espressioni che riferiscono
variabili intere utente, costanti simboliche del modello della RAM e le operating conditions attuali.
2.3.1 Statements
I costrutti utilizzabili nell’algoritmo di test sono:
 statements C-like (blocchi, cicli for, if-else, valutazione di un’espressione);
 march elements: ripetizione delle operazioni contenute su tutte le parole della memoria;
 vicinati: ripetizione delle operazioni contenute su un vicinato predefinito di una parola;
 cicli burst: sequenza di letture e/o scritture in modalità burst;
 ridefinizione dei background patterns.
 2002 Luca Calaprice
2
Memory Fault Simulator
User’s Requirements
2.3.2 Operazioni elementari
Le operazioni elementari contenute negli statements dell’algoritmo di test possono essere:
 attese temporali;
 modifica delle operating conditions della RAM;
 letture e scritture di parole di memoria, con un valore immediato o un background
pattern, ad un indirizzo implicito o esplicito (statements C-like), eventualmente
raggruppate in operazioni multi-port. Sono supportati i test trasparenti (valori p’, p).
3
Analisi della potenza media dissipata
Il vincolo sulla potenza è espresso come potenza media massima dissipabile in un dato
intervallo di tempo. Scegliendo il protocollo semisincrono, il programma calcola la massima
frequenza di clock del sistema di elaborazione che esegue l’algoritmo di test affinchè il vincolo sia
soddisfatto. Altrimenti, con il protocollo asincrono, il programma inserisce istruzioni di attesa
temporale in opportuni punti dell’algoritmo di test (cercando di non penalizzare i cicli più interni).
4
Fault simulation
La prima fase della fault simulation analizza la modularità dell’algoritmo di test. Se
possibile, si suddivide l’array di memoria in insiemi di celle che subiscono la stessa sequenza di
operazioni, esprimendone gli istanti di inizio come funzioni lineari degli indirizzi di riga e colonna.
Inoltre si determina la dimensione massima del rettangolo di vicinato su cui opera l’algoritmo.
Dato un modello di guasto, il numero di disposizioni di celle su cui si calcola la copertura
dipende dal numero k di celle base e dalla presenza di eventuali vicinati; ad esempio:
 k = 1, senza vicinati: si considera una generica cella per ogni insieme (in presenza di
vincoli temporali, si calcolano i range di indirizzi in cui sono soddisfatti);
 k = 2, senza vicinati: si considera ogni possibile combinazione degli insiemi di
appartenenza delle due celle. Per ognuna, fissata una delle due celle, si calcola la
copertura per i casi seguenti:
 la seconda cella ha una posizione generica, ma la distanza verticale fra le due celle è
maggiore della dimensione del rettangolo di vicinato;
 la seconda cella occupa una qualsiasi posizione in ogni riga a sinistra e a destra del
rettangolo di vicinato della prima;
 la seconda cella occupa ogni possibile posizione nel rettangolo di vicinato della
prima.
Infine, avviene la minimizzazione dell’algoritmo di test (eliminazione delle operazioni inutili
contenute).
5
Output
In output si ottiene:
 l’elenco dei modelli di guasto, con la copertura % di ciascuno (opzionalmente è
possibile avere l’elenco delle celle dell’array su cui ciascun guasto non è rilevato);
 il testo dell’algoritmo di test, modificato con l’eventuale inserimento di attese temporali
(protocollo asincrono) e la cancellazione delle operazioni inutili;
 la frequenza di clock massima (protocollo semisincrono).
 2002 Luca Calaprice
3