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