Boolean satisfiability (SAT)
Progetto automatico dei sistemi digitali
Introduzione
• Gli algoritmi di boolean satisfiability sono
uno strumento largamente utilizzato
nell’ambito del CAD di sistemi digitali
• Testing
• Sintesi
• Verifica formale
1
Definizioni
• CNF (Conjunctive Normal Form o PS) ϕ è
definita come la congiunzione di n clausole
ciascuna delle quali è la disgiunzione di uno o
più letterali
• Esempio:
ϕ(x1, x2, x3) = (x1 + x2)x1(x2 + x3)
• Una formula ϕ corrisponde a una funzione f ,
mentre una funzione può essere rappresentata
da più formule
Problema
• Il problema di satisfiability consiste nel
trovare un assegnamento alle variabili che
risulti in:
f (x1, x2, x3, ...., xn) = 1
• oppure nel provare che f=0
2
SAT e reti combinatorie
• Si può costruire una formula di tipo CNF per gli
assegnamenti validi di ciascun gate
a
ab
x 00 01 11 10
0
1 1 0 1
1
0 0 1 0
x
∧
b
ϕAN D = (a + x′)(b + x′)(a′ + b′ + x)
SAT e reti combinatorie
• Si può costruire una formula di tipo CNF
per gli assegnamenti validi di ciascun gate
x1
x2
u
∧
x3
∨
v
ϕ = (x1 +u)·(x2 +u)·(x′1 +x′2 +u′)(u′ +
v) · (x′3 + v) · (x3 + u + v ′)
3
SAT per reti combinatorie
• Si supponga di voler giustificare v=1
x1
x2
u
∧
x3
∨
v
• Si può risolvere il problema SAT per
l’espressione
ϕ = (x1 +u)·(x2 +u)·(x′1 +x′2 +u′)(u′ +
v) · (x′3 + v) · (x3 + u + v ′) · v
SAT per testing e verifica formale
• Il modello di boolean satisfiability si
applica bene allo schema di principio
utilizzato in ATPG e verifica formale
circuito corretto
POs
diff
PIs
≠
circuito guasto
o da verificare
POs
rete definita
come miter
4
SAT per testing e verifica formale
• Nel caso del testing il problema della test
generation per il guasto in esame si
riconduce a determinare un test che
soddisfi diff=1
• Nel caso della verifica formale se esiste un
vettore di ingresso che giustifichi diff=1 i
due circuiti non sono equivalenti, altrimenti
sono equivalenti
Tecniche di soluzione
• L’espressione precedente fornisce tutti gli
assegnamenti per cui v=1
• Nella maggior parte dei casi interessa un
solo assegnamento
• Questo può essere trovato mediante
procedure di backtrack o altre tecniche
• Il problema è comunque np-completo
5
Algoritmo di backtrack
• L’algoritmo ricerca una soluzione nello spazio
dei possibili assegnamenti
• In un primo passo vengono propagate le
clausole costituite da un solo letterale (es.
(a+b)a(c+d)=a(c+d))
• L’algoritmo è recursivo
– dopo ogni scelta vengono dedotti tutti assegnamenti
resi necessari
– se una clausola diviene non soddisfacibile, una
procedura analizza le cause di tale conflitto ed
aggiunge eventualmente una nuova clausola
Esempio
•
•
•
•
•
•
ϕ=(y+w+z).(z’+x’).(w’+v’+x’)
Assegnamenti correnti: v=1, y=0, x=1
Conflitto: ϕ=(0+w+z).(z’+0).(w’+0+0)=0
Regola: v.y’.x ϕ’
Nuova clausola: (v’+y+x’)
Può essere aggiunta alla CNF
6
Recursive learning
• Identifica condizioni necessarie che sono in
comune fra diverse clausole
• Esempio: ϕ=(u+x+w’).(x+y’).(w+y+z’)
• Assegnamenti correnti: z=1, u=0
• ϕ=(x+w’).(x+y’).(w+y)=x.(....)
• Quindi x=1 è necessario
• Questa condizione si può descrivere come: z.u’
x e quindi come (z’+u+x)
• Questa condizione può essere aggiunta alla CNF
e rappresenta la conoscenza acquisita durante
l’esplorazione di un possibile assegnamento
Problemi specifici degli algoritmi
SAT per reti combinatorie
• I SAT solver sono strumenti del tutto
generali e piuttosto efficienti
• Nel caso delle reti combinatorie, vanno
però perse numerose informazioni di tipo
strutturale
• Si aggiunge quindi un layer intermedio che
gestisce gli aspetti strutturali del problema
7
Progetti
• Nell’ambito del corso sono disponibili alcuni
progetti basati sul tool di boolean satisfiability
Nimo
• Tale tool contiene sia un programma per SAT in
reti combinatorie che un programma SAT per
reti sequenziali
• L’idea è di utilizzarlo per realizzare algoritmi di
test generation per diversi modelli di guasto
• Ci sarà poi anche un progetto per la parte di
affidabilità sempre basato su questo tool
Struttura di un progetto
• Data una rete e un modello di guasto:
– legge e analizza la rete (ho realizzato io un
parser)
– si genera una lista di guasti
– per ciascun guasto:
• si realizza una copia del circuito con il guasto al
suo interno e un opportuno miter
• si invoca Nimo
• si analizza il risultato (ovvero una sequenza di
assegnamenti agli ingressi o un flag di
unsatisfability)
• Risultati sui benchmark
8
Stuck-at singoli e multipli in reti
sequenziali e combinatorie
stuck-at-0
&
+
Circuito di partenza
Stuck-at singoli e multipli in reti
sequenziali e combinatorie
&
&
+
Circuito con lo stuck-at-0
9
Miter
stuck-at-0
&
+
Circuito di partenza
&
comparatore
&
+
Circuito con lo stuck-at-0
Guasti di progettazione
+
&
+
10
Bridging o altri guasti che inducono un
comportamento funzionale complesso
a
g
b
c
&
+
d
e
h
&
+
i
f
Circuito di partenza
Bridging
• Tabella di verità della rete guasta
abcdef ghi
00000 011
10110 101
......
• Il guasto (linee coinvolte) e la funzione
(γ) guasta potrebbero essere lette da un
file
11
Bridging o altri guasti che inducono un
comportamento funzionale complesso
a
g
b
c
γ
d
h
e
i
f
Circuito modificato
Path delay faults
path
&
+
12
Path delay faults
ρ
condizioni sulla
path sensitization
path
Il segnale ρ va in AND con
l’uscita del miter
&
+
0
1
MPX
13