# Generazione di programmi di prova automatici

La generazione automatica di vettori di collaudo (ATPG) è un metodo e una tecnologia, utilizzata per trovare una sequenza di collaudo che, quando applicata ad un circuito digitale, dà la possibilità ai tester di distinguere fra il comportamento del circuito corretto e non corretto determinato da anomalie funzionali. Le procedure generate sono usate per collaudare i dispositivi a semiconduttore dopo la produzione, ed in taluni casi per assistere alla determinazione delle cause di malfunzionamento. L'efficacia dell'ATPG è misurata dall'ammontare dei difetti modellati, o modelli di guasto, che sono rivelati ed il numero delle procedure generate. Quest'ammontare indica genericamente la qualità del controllo (più elevata con maggiore rivelazione di guasti) e il tempo di esecuzione dei collaudi (più elevato con maggiori procedure). L'efficienza dell'ATPG è un altro fattore importante. È influenzata dal modello di guasto in esame, dal tipo del circuito in collaudo (con predisposizioni per il collaudo automatico, sequenziale sincrono, o sequenziale asincrono), dal grado di astrazione utilizzato per rappresentare il circuito in esame (porte, registri a transistor, interruttori), e la copertura di qualità di collaudo richiesta.

## Principi dell'ATPG

Difetto è un errore introdotto nel dispositivo durante il processo di fabbricazione. Modello di guasto è una descrizione matematica di come un difetto alteri il suo comportamento progettuale. Si dice che un guasto è rivelato da un modello di prova se, quando applicato lo schema di prova al progetto difettoso, qualsiasi valore logico osservato in uno o più uscite primarie del circuito differisce da quello relativo al progetto normalmente operativo. Il processo dell'ATPG per un guasto stabilito come obiettivo consiste di due fasi: attivazione del guasto e propagazione del guasto. Attivazione del guasto stabilisce un valore del segnale sul lato del modello di guasto che è l'opposto del valore prodotto dal modello di guasto; propagazione del guasto sposta avanti il valore del segnale risultante, o effetto del guasto, sensibilizzando un percorso dal lato del guasto a una uscita primaria.
L'ATPG può non riuscire a trovare una procedura di prova per un particolare guasto in due casi. Il primo, il guasto potrebbe essere intrinsecamente non rivelabile, cosicché non esiste nessun modello che possa rivelare quel particolare guasto. L'esempio classico di ciò è un circuito ridondante, progettato affinché nessun guasto singolo possa fare cambiare l'uscita. In tale circuito, qualsiasi guasto singolo sarà inerentemente non rivelabile.
Il secondo, è possibile che esista o esitano dei modelli, ma l'algoritmo non è capace di trovarli. Dato che il problema dell'ATPG è un problema NP-Completo (per riduzione da un problema di soddisfacibilità booleana), ci saranno dei casi in cui il modello esiste, ma l'ATPG rinuncia perché richiederebbe un tempo incredibilmente lungo per trovarlo.

## Modo a guasti bloccati

Nelle parecchie decadi passate, il modello di guasto più popolare utilizzato in pratica era il modello di guasti bloccati singoli. In questo modello è assunto che una linea di segnale di un circuito sia bloccata su un valore logico, a prescindere da quale segnale d'ingresso sia applicato al circuito. Pertanto, se un circuito ha n linee di segnale, ci sono potenzialmente definiti 2n difetti bloccati nel circuito, dei quali alcuni possono essere osservati poiché sono equivalenti agli altri. Il modello di guasti bloccati è un modello logico perché non è associata nessuna informazione di ritardo alla sua definizione. Viene chiamato pure modello di guasto permanente dato che si assume che il suo effetto sia permanente,in contrasto con i guasti intermittenti che si verificano a caso e guasti transitori che si presentano sporadicamente, forse in dipendenza delle condizioni di lavoro (p.es., temperatura, tensione di alimentazione) o dei valori dei dati (stati di tensione alti o bassi) sulle linee di segnale circostanti. Il modello a guasto bloccato o permanente è strutturale poiché è basato su un modello di circuito a struttura a livelli di porte.
Un insieme di programmi con una copertura dei guasti permanenti del 100% consiste di prove che rivelano ogni guasto permanente possibile in un circuito. 100% di copertura non garantisce necessariamente una qualità elevata, dato che guasti di molti altri tipi, come guasti cortocircuitanti, guasti per interruzione, e guasti di transizione sovente si verificano.

## ATPG sequenziale

L'ATPG per circuiti sequenziali cerca una sequenza di vettori per rivelare un guasto particolare in tutto lo spazio delle possibili sequenze di vettori. Varie strategie di ricerca ed euristiche sono state escogitate per individuare la sequenza più breve e/o individuare più velocemente una sequenza. Comunque, secondo i risultati segnalati, nessuna singola strategia/euristica supera le altre per tutte le applicazioni e/o circuiti. Questa osservazione comporta che un generatore di prove dovrebbe includere un insieme esauriente di euristiche.
Persino un semplice guasto permanente richiede una sequenza di vettori per il rilevamento in un circuito sequenziale. Inoltre, a causa degli elementi di memoria, la controllabilità e la osservabilità dei segnali interni in un circuito sequenziale sono in generale molto più difficili di quelle in un circuito combinatorio. Questi fattori rendono la complessità di un ATPG sequenziale molto più elevata di quella di un ATPG combinatorio.
A causa della elevata complessità dell'ATPG sequenziale, un compito impegnativo rimane per i circuiti altamente sequenziali e grandi che non incorporano nessuna predisposizione progettata di testabilità. Tuttavia, questi generatori di prove, insieme con delle tecniche di prova conglobate di basso profilo come la catena di prove inglobata parziale, hanno fatto vedere un certo grado di successo nel provare grossi progetti. Per i progetti che sono sensibili alle spese di adempimento, la soluzione di impiegare ATPG a circuiti sequenziali e catene di prova conglobate limitate offrono una alternativa attraente alla soluzione comune a catena di prove inglobata totale, che è fondata su ATPG a circuiti combinatori.

## ATPG e nanotecnologia

Da un punto di vista storico l'ATPG si è concentrato sui guasti che avevano origine da modelli di guasto a livello porte logiche. Poiché la tendenza dei progetti si sposta verso la nanotecnologia, problemi nuovi di controllo della produzione stanno emergendo. Durante la validazione del progetto, gli ingegneri non possono più a lungo ignorare gli effetti della diafonia e dei rumori dell'alimentazione sulla affidabilità e le prestazioni. Il modellamento dei guasti corrente e le tecniche di generazione di vettori prova stanno cedendo ai nuovi modelli e tecniche che considerano informazioni di temporizzazione durante la generazione delle prove, che possono essere ridimensionati per progetti maggiori, e che possono impadronirsi di condizioni di progetto estreme. Per la nanotecnologia, molti problemi di validazione progettuale correnti stanno anche diventando problemi di prova della produzione, cosicché modellamenti di guasto e tecniche ATPG nuovi saranno necessari.

## Metodologia algoritmica

Provare dei circuiti a scala di integrazione molto grande (VLSI) con una copertura guasti elevata è un compito difficile per la sua complessità. Perciò sono stati sviluppati molti metodi differenti di ATPG per parlare ai circuiti combinatori e sequenziali.
* Gli algoritmi della prima generazione come "differenza booleana" e "proposizione letterale" non erano pratici da mettere in atto sul computer.
* L'algoritmo D fu il primo algoritmo generatore di prove in termini di fabbisogno di memoria. L'algoritmo D ha introdotto la "notazione D" che continua ad essere usata in quasi tutti gli algoritmi degli ATPG.
* Path-Oriented Decision Making (PODEM) è un miglioramento dell'algoritmo D. Il PODEM è stato creato nel 1981 quando deficienze nell'Algoritmo D si evidenziarono nel momento in cui innovazioni progettuali si risolsero in circuiti che l'Algoritmo D non era in grado di realizzare.
* Fan-Out Oriented (FAN Algorithm) è un miglioramento del PODEM. Limita l'insieme delle soluzioni possibili per ridurre il tempo computazionale ed accelera il backtracking.
* Metodi basati sulla soddisfacibilità booleana sono talvolta impiegati per generare dei vettori-prova.
* Pseudorandom test generation è il sistema più semplice per creare delle prove. Utilizza un generatore di numeri pseudo-casuali per generare dei vettori-prova, e fa affidamento sulla simulazione di logica per computare buoni risultati macchina, e la simulazione di guasti per calcolare la copertura guasti dei vettori generati.