Sintesi di reti combinatorie a due livelli Sintesi Combinatoria Sintesi di reti combinatorie a due livelli Fabio Salice
Sintesi di reti combinatorie a due livelli: Introduzione Obiettivo: ridurre la complessità di una (o più) funzione(i) booleana(e) espressa(e) in forma di Prodotto di Somme o di Somma di Prodotti (SOP). Ci si concentrerà solo sulla forma Somma Di Prodotti (l'altra ne è la duale). Nella sintesi a due livelli gli obiettivi sono due: Riduzione del numero dei termini prodotto (principale) Riduzione del numero di letterali (secondario) Obiettivo della sintesi a più livelli: riduzione numero dei letterali Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Introduzione metodologie di sintesi ottima: Esatte Karnaugh Quine - Mc Cluskey Euristiche per sintesi a due livelli Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Metodi esatti metodo di Karnaugh (cenni) Si propone di identificare forme minime a due livelli. La formula di riduzione da applicare è del tipo: a B + a' B = (a+a') B = B con B termine prodotto di n-1 variabili. Metodo: individuazione degli implicanti primi e primi essenziali; Implicante primo Termine prodotto associato ad un “raggruppamento” di dimensione massima. implicante primo essenziale Implicante primo che copre uno o più 1 non coperti da nessun altro implicante primo. copertura. implicanti primi implicanti implicanti primi essenziali Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti metodo di Karnaugh (cenni) Esempio: a b c d f 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 implicanti primi essenziali a b 0 1 0 0 1 a' c' ; a d c d 0 0 0 1 1 1 1 0 0 1 0 1 1 implicanti primi 0 1 1 0 0 a' b' d' ; b' c d' ; a b' c ; c' d 0 0 1 1 0 1 1 1 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 0 1 0 1 1 1 1 1 f(a,b,c,d) = a' c' + a d + b' c d' forma minima (unica) 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 1 implicanti primi essenziali Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti metodo di Karnaugh (cenni) Nel caso di funzioni non completamente specificate, la generazione degli implicanti primi tratta le condizioni di indifferenza come 1. condizioni di indifferenza (don't care) sono valori dell'uscita non specificate dal problema ad esempio, legate a configurazioni degli ingressi che non si presentano mai. Nella fase di copertura vengono considerati solo gli 1 (on-set della funzione) e non le condizioni di indifferenza (dc-set della funzione) Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti metodo di Karnaugh (cenni) Esempio a b c d f 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 x a b implicanti primi 0 1 0 0 x c d 0 0 0 1 1 1 1 0 0 1 0 1 x b'd ; c'd ; c'b ; ab ; ad 0 1 1 0 0 0 0 x 1 0 1 1 1 0 1 0 0 0 0 0 1 1 x 1 x f(a,b,c,d) = a b + b' d 1 0 0 1 x 1 0 1 0 0 1 1 x 1 1 1 0 1 1 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Metodo di minimizzazione tabellare facilmente traducibile in un algoritmo. Due fasi: 1) Ricerca degli implicanti primi; 2) Ricerca della copertura ottima. Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Prima Fase (ricerca degli implicanti primi) (nota: si fa riferimento alla forma SOP). Si applica sistematicamente la proprietà: a B + a’ B = B Ad ogni passo della minimizzazione: si confrontano esaustivamente tutti i termini prodotto appartenenti all’ON-set; si operano le riduzioni su tutte quelle coppie che hanno una parte comune ed una sola variabile differente. I termini prodotto semplificati vengono marcati; si crea un nuovo insieme di termini prodotto da confrontare. Il processo ha fine quando non sono più possibili delle riduzioni. I termini non marcati sono implicanti primi. Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Per ridurre la complessità algoritmica, l'operazione di confronto viene svolta considerando solamente gli insiemi Sij e Si+1J insieme Si j : insieme dei termini prodotto, all'iterazione j, con un numero di 1 pari ad i. Le configurazioni adiacenti ad un termine prodotto appartenente a Sij possono essere contenute solo in Si-1 j e Si+1 j. Per facilitare la costruzione della tabella di copertura (seconda fase): Ad ogni termine prodotto è associata una etichetta che rappresenta l'insieme dei mintermini che esso copre. L'etichetta di un nuovo termine prodotto è ottenuta per concatenamento delle etichette dei termini da cui proviene. Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Algoritmo di Quine - Mk Cluskey J=0; tutti i mintermini appartenenti all’ON-set vengono etichettati e posti nei loro rispettivi Si0; Ripeti Per k=min(i) fino a (max(i) - 1) confronta ogni configurazione in SiJ con ogni altra in Si+1J . Le configurazioni semplificate vengono marcate ed il risultato della semplificazione viene etichettato e posto in SiJ+1. J=J+1; Fino a che non sono più possibili delle riduzioni Tutte le configurazioni non marcate sono implicanti primi Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Esempio: Equivalente mappa di Karnaugh a b c d 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 Implicanti Primi: P0(1,9): b' c' d P1(9,11,13,15): a d P2(12,13,14,15): a b 1 1 1 1 1 0 1 Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Seconda Fase (ricerca della copertura ottima) Tabella degli implicanti (o tabella di copertura) É una matrice binaria A dove: indici di riga: Implicanti primi trovati nella prima fase indici di colonna: I mintermini appartenenti all’ON-set della funzione. elementi ai,j : a 1 quando l'implicante primo i_esimo copre il mintermine j_esimo, altrimenti 0. Il problema di copertura è intrattabile. Si utilizzano le proprietà di essenzialità e dominanza. Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Relazioni tra implicanti e mintermini che permettono la semplificazione della tabella: Essenzialità Dominanza Dominanza di riga Dominanza di colonna Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Righe Essenziali: Descrizione: Se una colonna contiene un solo 1, la colonna corrisponde ad un prodotto fondamentale e la riga corrisponde ad un implicante primo essenziale. La riga è chiamata riga essenziale. Semplificazione: La riga essenziale e le colonne da essa coperte (presenza di un 1) vengono eliminate dalla tabella. Righe essenziali: P1 ; P2 ; P3 Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Dominanza tra righe: Descrizione: Un implicante i-esimo domina un implicante j-esimo quando Pi copre almeno tutti i mintermini coperti da Pj. Semplificazione: Pj è eliminato dalla tabella. Ulteriori semplificazioni: L'eliminazione per dominanza di una riga può generare dei nuovi implicanti essenziali. Poiché questi ultimi divengono essenziali a causa delle semplificazioni, le righe ad essi associate sono chiamate righe essenziali secondarie. P0 : dominata P1 : dominante P1: implicante essenziale secondario Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Dominanza tra colonne: Descrizione: Un mintermine i-esimo domina un mintermine j-esimo quando ogni implicante che copre mj copre anche mi. (Può non valere l'opposto) Semplificazione: mi è eliminato dalla tabella. Significato: un implicante che copre mj copre anche mi. Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Quando tutte le righe essenziali e le colonne e righe dominate sono rimosse, la tabella ottenuta, se esiste, è ridotta e ciclica. E' detta Tabella ciclica degli implicanti primi Soluzione: a) Branch (esponenziale con la dimensione della tabella) b) Metodo di Petrik. Permette di risolvere il problema della scelta degli implicanti quando la tabella degli implicanti è ciclica. Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Esempio del metodo di Petrik: Da un prodotto di somme (P0+P3) (P0+P1) (P1+P2) (P2+P3) (P1+P3) = 1 (P0+P3 P1) (P1P3+P2) (P1+P3) = 1 (P0P2+P3 P1) (P1+P3) = 1 ad una somma di prodotti (P0P2P1+P0P2P3+P3 P1) = 1 Gruppi di implicanti primi: P0P2P1 ; P0P2P3 ; P3 P1 Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Nel caso di funzioni non completamente specificate, la generazione degli implicanti primi tratta le condizioni di indifferenza come 1. A quanto visto in precedenza si aggiungono le seguenti regole: Tutte le condizioni di indifferenza sono trattate come 1; Nella tabella di copertura compaiono come indici di colonna solo i mintermini appartenenti all’ON-set. Per evitare di considerare implicanti primi costituiti da sole condizioni di indifferenza è possibile attuare ulteriori regole: Tutte le configurazioni in Si0 relative alle condizioni di indifferenza sono marcate a priori e Tutte le configurazioni relative a raggruppamenti di sole condizioni di indifferenza sono marcate anche se non semplificate. (riduce il numero degli implicanti primi da considerare nella copertura); Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Esempio: da sole condizioni di indifferenza Implicanti primi: P0 : a' b' d' P1 : a' c' d' f(a,b,c,d,)=a'b'd' + bc' P2 : b c' Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti Espresso-Exact Espresso-Exact Algoritmo implementato in Espresso per la minimizzazione esatta. I principi su cui si basa sono gli stessi della procedura di Quine-Mc Cluskey (algoritmi utilizzati sono un po’ diversi). Efficienza maggiore. Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi esatti Espresso-Exact In Espresso-exact gli implicanti sono partizionati in tre insiemi: Essenziali. Totalmente ridondanti: sono quelli coperti da implicanti essenziali e dal DC-set. Parzialmente ridondanti: i rimanenti. Questo ultimo insieme è l'unico ad essere coinvolto nella fase di copertura. Una tabella di copertura ridotta è ottenuta ponendo come indici di riga i soli implicanti parzialmente ridondanti. Gli indici di colonna sono in corrispondenza uno a uno con l'insieme dei mintermini. La tabella è più compatta rispetto a quella ottenuta con Quine-Mc Cluskey e non ha colonne essenziali. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Metodi euristici La minimizzazione esatta ha due problemi: L'enorme numero di implicanti primi. Può essere dimostrato che il numero degli implicanti primi di una funzione logica di n ingressi può essere maggiore di 3n/n. L'intrattabilità del problema di copertura. E’ un problema NP-completo. Soluzione: Miglioramento iterativo della soluzione. Partendo da una condizione iniziale (specifiche della funzione) la copertura è modificata per cancellazione, aggiunta e modifica di implicanti fino a che non è raggiunta una condizione di minimalità (quando nessuna delle operazioni porta a successivi miglioramenti). Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Metodi euristici I metodi euristici di minimizzazione differiscono per qualità della soluzione. Qualità: Differenza in cardinalità tra la copertura minimale (euristica) e quella minima (ottenuta con metodi esatti [quando possibile]). Le soluzioni di espresso Espresso coincidono spesso con quelle di Espresso-Exact (ma in tempi più brevi). Procedura di minimizzazione: Ingresso: Lista degli implicanti (ON-set) ed il DC-set della funzione. Condizione iniziale: La lista degli implicanti rappresenta la copertura iniziale della funzione. Sviluppo: La copertura iniziale viene iterativamente manipolata da alcuni operatori. Termine: L'operazione si conclude quando nessun operatore migliora la copertura. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Metodi euristici Gli operatori utilizzati da Espresso sono: Expand espande i cubi rendendoli primi; la copertura risulta prima Reduce riduce i cubi; la copertura risulta non prima ma della stessa cardinalità di quella di partenza. Irredundant elimina i cubi ridondanti; modifica la cardinalità della copertura. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Metodi euristici EXPAND Gli implicanti relativi alla copertura sono rielaborati uno alla volta. Ogni implicante è espanso a primo e tutti gli implicanti da esso coperti sono eliminati. L'operatore Expand rende la copertura prima e minimale. L'espansione di un implicante è realizzata aumentando il sotto cubo ad esso associato in una o più direzioni e verificando se l'espanso è ammissibile Verifica dell'ammissibilità dell'espansione: Una espansione è ammissibile se l'implicante ottenuto non interseca l’OFF-set. (E' richiesta la conoscenza dell’OFF-set e questo può essere pesante in termini di memoria utilizzata.) Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Metodi euristici EXPAND Esempio: Espansione rispetto ad a: c' d' espansione non ammissibile OFF-Set : a’c’ + ab’d+a’cd’ a b Verifica ammissibilità: OFF-Set * (c’d’) = a’c’d’ 0 non ammissibile c d 0 0 0 1 1 1 1 0 0 0 1 1 Implicante da espandere: a c' d' 0 1 x 1 1 1 1 1 1 0 x 1 Espansione rispetto a c: a d' espansione ammissibile Espansione rispetto a d: a c' espansione non ammissibile Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Metodi euristici EXPAND Esempio di espansione: Copertura iniziale: on-set: {ac'd' , a'b'cd , bcd , ab'cd'} ; dc-set: {abc'd , abcd'} 1 x 0 0 0 1 1 1 1 0 a b c d ordine implicanti da espandere: (1) (2) (3) Copertura iniziale Copertura dopo Expand E' coperto dall'espansione (1) ed è eliminato Copertura finale: on-set: {ad' , a'cd , bcd } ; dc-set: {abc'd , abcd'} Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Metodi euristici EXPAND La qualità del risultato dipende da due fattori: (a) Ordine degli implicanti da espandere; (b) Ordine di espansione (direzione). Si usano delle euristiche. La più semplice è la seguente: (b) ordine lessico-grafico (a) Gli implicanti che hanno più probabilità di essere espansi sono per analizzati primi. Si utilizza la notazione positional-cube per codificare 0,1 e -: 0 10, 1 01, - 11 , non ammesso 00 Ad ogni implicante è associato un peso. L'implicante con peso minore è quello che ha più probabilità di essere espanso e non coperto da altri. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Metodi euristici EXPAND Esempio di ordinamento degli implicanti da espandere: Ogni peso è calcolato come Prodotto Interno del vettore conteggio per colonna con il vettore relativo all’implicante, espresso in notazione positional-cube. Es: |01 11 10 10| * |23 32 13 21|T = 11 Implicanti: ac’d’ 01 11 10 10 3+3+2+1+2=11 (2) a’b’cd 10 10 01 01 2+3+3+1=9 (1) bcd 11 01 01 01 2+3+2+3+1=11 (3) ab’cd’ 01 10 01 10 3+3+3+2=11 (4) Ordine conteggio per colonna: 23 32 13 21 peso minore = più letterali, meno letterali condivisi più probabile sia espandibile Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Metodi euristici REDUCE Trasforma la copertura in un'altra non prima della stessa cardinalità. Gli implicanti sono rielaborati uno alla volta; questa operazione può ridurre gli implicanti di dimensione. Condizione: Il nuovo insieme di implicanti deve essere una copertura per la funzione. La trasformazione di un implicante è attuata riducendo il sottocubo ad esso associato in una o più direzioni. (nota: permette di uscire da minimi locali) Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Metodi euristici REDUCE Una riduzione è ammissibile se l'implicante ridotto forma con i rimanenti una copertura per la funzione. La copertura non è prima ma mantiene la stessa cardinalità. Sia a un implicante appartenente alla copertura della funzione e La riduzione massima di a è Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Metodi euristici REDUCE Esempio: 1 0 0 0 1 1 1 1 0 a b c d supercubo(Q) 1 x 0 0 0 1 1 1 1 0 a b c d 1 1 1 0 0 0 1 1 1 1 0 a b c d supercubo(Q') 1 x 0 0 0 1 1 1 1 0 a b c d Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Metodi euristici REDUCE Il risultato della riduzione dipende dall'ordine con il quale gli implicanti sono selezionati. La regola euristica di scelta: Il primo implicante da ridurre è quello con peso maggiore (peso calcolato come in Expand). Esempio: Implicanti: ad’ 01 11 11 10 3+2+3+1+3+1=13 (1) bcd 11 01 01 01 1+3+3+3+2=12 (3) a’cd 01 11 01 01 3+2+3+3+2=13 (2) Ordine conteggio per colonna: 13 23 13 12 Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a due livelli: Metodi euristici IRREDUNDANT Irredundant Rende la copertura non ridondante. E' scelto un sottinsieme di implicanti parzialmente ridondanti tale che ogni implicante non è interamente coperto da un altro dello stesso sottinsieme. la copertura è divisa in tre insiemi relativamente essenziali parzialmente ridondanti totalmente ridondanti Rispetto al metodo esatto, la copertura è costituita da implicanti non tutti necessariamente primi. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Metodi euristici ESPRESSO L'uscita di Espresso è: Una copertura non ridondante Spesso di minima cardinalità. Algoritmo: Procedure Complement: genera il complemento Essentials: estrae gli implicanti essenziali Last_gasp: modifica la copertura usando Expand e Reduce con euristiche diverse. Cost: calcola il costo della copertura Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Metodi euristici ESPRESSO (1982) ESPRESSO II è basato sulla applicazione di iterate espansioni e riduzioni . I passi seguiti da ESPRESSO II sono: 1. COMPLEMENT: Calcola l'OFF set. 2. EXPAND: Espande gli implicanti portandoli a primi e rimuovendo quelli coperti. 3. ESSENTIAL PRIMES: Estrae gli implicanti essenziali primi e li unisce al DC set. 4. EXPAND: Espande gli implicanti portandoli a primi e rimuovendo quelli coperti. 5. IRREDUNDANT COVER: Trova la copertura minimale non ridondante. 6. REDUCE: Riduce ogni implicante a un implicante essenziale minimo. 7. Si iterano i passi 4,5,6 fino a che non si ottiene un miglioramento. 8. LASTGASP: applica per un'ultima volta REDUCE, EXPAND e IRREDUNDANT COVER usando una differente strategia. Se questa operazione ha successo viene continuata l'iterazione (passo 7). 9. MAKESPARSE: Rende la struttura della PLA sparsa; Per ridurre il numero dei transistor modifica il #1 e il #0 senza cambiare la copertura (aumenta la parte di ingresso riducendo quella di uscita di ogni implicante). Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: Metodi euristici ESPRESSO Espresso(on_set,dc_set) off_set=Complement(on_set U dc_set) on_set=Expand(on_set, off_set) /*copertura prima ridondante*/ on_set=Irredundant(on_set, dc_set) essential_set=Essentials(on_set, dc_set) on_set=on_set - essential_set /* toglie 1 dall'on_set */ dc_set=dc_set U essential_set /* e li aggiunge al dc_set */ ripeti f2=Cost(on_set) ripeti f1=|on_set| on_set=Reduce(on_set,dc_set) on_set=Expand(on_set, off_set) on_set=Irredundant(on_set,dc_set) fino a che (|on_set|< f1) on_set=Last_gasp(on_set,dc_set,off_set) fino a che (Cost(on_set) < f2) on_set=on_set U essential_set dc_set=dc_set - essential_set on_set=Make_sparse(on_set,dc_set,off_set) Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: ESPRESSO Comando: espresso [parametri] [file] Funzione: minimizzazione di funzioni logiche a due livelli. Parametri: -d: debugging -e[opzioni]: seleziona le opzioni di espresso: fast, ness, nirr, nunwrap, onset, pos, strong, eat, eatdots, kiss, random -o[tipo]: seleziona il formato di uscita: f, fd, fr, fdr, pleasure, eqntott, kiss, cons -s: fornisce un breve sommario relativo all’esecuzione; -t: fornisce un ampio sommario relativo all’esecuzione; -x: non visualizza la soluzione; Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: ESPRESSO Parametri (continua): -v[typo]: messaggi di dettaglio (-v ‘’ per un accurato dettaglio) -D[comando]: esegue il sotto-comando: ESPRESSO, many, exact, qm, single_output, so, so_both, simplify, echo, opo, opoall, pair, pairall, check, stats, verify, PLAverify, equiv, map, mapdc, fsm, contain, d1merge, d1merge_in, disjoint, dsharp, intersect, minterms, primes, separate, sharp, union, xor, essen, expand, gasp, irred, make_sparse, reduce, taut, super_gasp, lexsort, test -Sn: seleziona la strategia per il sotto comando (solo quelli riportati): opo: bit2=esatto, bit1=ripetuto bit0=salta sparse opoall: 0=minimizza, 1=esatto pair: 0=algebrico, 1=strongd, 2=espresso, 3=esatto pairall: 0=minimizza, 1=esatto, 2=opo so_espresso: 0=minimize, 1=exact so_both: 0=minimize, 1=exact Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: ESPRESSO Esempio: 1 x 0 0 0 1 1 1 1 0 a b c d -111 1-00 ipeca4>espresso -v '' ex3.pla EXPAND: 0011 1 (covered 0) EXPAND: 1-00 1 (covered 1) EXPAND: -111 1 (covered 0) # IRRED: F=3 E=3 R=0 Rt=0 Rp=0 Rc=0 Final=3 Bound=0 ESSENTIAL: 0-11 1 ESSENTIAL: 1--0 1 REDUCE: -111 1 to 1111 1 0.00 sec EXPAND: 1111 1 (covered 0) # IRRED: F=1 E=1 R=0 Rt=0 Rp=0 Rc=0 Final=1 Bound=0 REDUCE_GASP: 11-- 1 reduced to 1111 1 .i 4 .o 1 .p 3 11-- 1 0-11 1 1--0 1 .e ipeca4> .i 4 .o 1 .type fd 1-00 1 0011 1 -111 1 1010 1 1101 - 1110 - 0011 1010 Cubi Notazione Pesi Ordine positional-cube 1-00 1 0 1 1 0 1 0 1 11 2 0011 0 1 0 1 1 0 1 0 10 1 -111 1 1 1 0 1 0 1 0 12 4 1010 1 0 0 1 1 0 0 1 11 3 2 3 3 2 1 3 2 2 Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a due livelli: ESPRESSO Esempio: EXPAND: 1100 100 (covered 2) EXPAND: 1011 010 (covered 3) EXPAND: 1111 010 (covered 0) EXPAND: 1100 001 (covered 0) EXPAND: 01-- 001 (covered 0) # IRRED: F=5 E=5 R=0 Rt=0 Rp=0 Rc=0 Final=5 Bound=0 ESSENTIAL: 0--- 001 REDUCE: -0-1 111 to -0-1 101 0.00 sec REDUCE: 1-1- 010 to 1-11 010 0.00 sec REDUCE: 1-00 011 to 1100 001 0.00 sec EXPAND: 1-11 010 (covered 0) EXPAND: -0-1 101 (covered 0) # IRRED: F=4 E=4 R=0 Rt=0 Rp=0 Rc=0 Final=4 Bound=0 REDUCE_GASP: 1-00 011 reduced to 1100 001 REDUCE_GASP: 1-1- 010 reduced to 1111 010 REDUCE_GASP: 11-0 110 reduced to 1100 100 REDUCE_GASP: -0-1 111 reduced to -0-1 101 EXPAND: 1100 111 (covered 0) # IRRED: F=5 E=2 R=3 Rt=0 Rp=3 Rc=1 Final=3 Bound=0 REDUCE: -0-1 111 to -0-1 101 0.01 sec # IRRED: F=3 E=3 R=0 Rt=0 Rp=0 Rc=0 Final=3 Bound=0 … (continua) … (continua) # IRRED: F=3 E=3 R=0 Rt=0 Rp=0 Rc=0 Final=3 Bound=0 REDUCE_GASP: 1-1- 010 reduced to 111- 010 REDUCE_GASP: 1100 111 reduced to 1100 111 REDUCE_GASP: -0-1 111 reduced to -0-1 101 # IRRED: F=2 E=2 R=0 Rt=0 Rp=0 Rc=0 Final=2 Bound=0 # IRRED: F=3 E=2 R=1 Rt=1 Rp=0 Rc=0 Final=2 Bound=0 EXPAND: -0-1 101 (covered 0) .i 4 .o 3 .p 4 1100 111 1-1- 010 -0-1 101 0--- 001 .e .i 4 .o 3 .type fr 00-1 1-1 01-- 001 1000 0-- 1001 --1 1011 -1- 1100 111 1101 000 1110 -10 1111 01- Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli Sintesi Combinatoria Sintesi di reti combinatorie a più livelli Fabio Salice
Sintesi di reti combinatorie a più livelli: Introduzione Obiettivo (della sintesi combinatoria) Ridurre Area-tempo. Reti combinatorie a due livelli: Area e tempo sono ridotti contemporaneamente. Reti combinatorie a più livelli: Area e tempo non procedono nella stessa direzione area ritardo due livelli più livelli Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Introduzione Problemi da risolvere nella minimizzazione di reti combinatorie multi-livello: Minimizzazione dell'area (con vincolo sul ritardo) Minimizzazione del ritardo (con vincolo sull'area) Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Introduzione Ottimizzazione a più livelli: Vantaggi: Più efficiente in termini di area e prestazioni. Permette di utilizzare elementi di libreria. Svantaggi: Maggiore complessità della ottimizzazione. Metodi di ottimizzazione: Esatti Complessità computazionale estremamente elevata. Euristici Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Introduzione Euristica del problema di ottimizzazione: Due passi: a) Si ignorano i vincoli di realizzazione (quali fan_in, fan_out, elementi di libreria...) b) Si raffina il risultato considerando i vincoli strutturali (library mapping). Risultato dell'ottimizzazione è di inferiore qualità rispetto ad una ottimizzazione che considera contemporaneamente i punti a) e b) ma risulta computazionalmente più semplice. Si analizzerà il solo punto a). Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Modello Un circuito combinatorio è rappresentato mediante un grafo orientato aciclico (DAG - Direct Acyclic Graph). Grafo per reti combinatorie È un grafo orientato G(V,E) aciclico V: insieme dei nodi E: insieme degli archi V è partizionato negli insiemi: nodi di ingresso VI (Primary Inputs - PI) nodi di uscita VO (Primary Outputs - PO) nodi interni VG: Sono moduli della rete combinatoria a cui è associata una funzione combinatoria scalare (una uscita) Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Modello E' un modello comportamentale/strutturale Strutturale: connessioni. Comportamentale: ad ogni nodo è associata una funzione. Nel modello considerato, ogni funzione è a due livelli. Il modello è bipolare e non gerarchico Bipolare: Ogni arco può assumere valore 0 o 1. i1 a= i1 i2 b= a i3 + i2 d= b c i2 o1 c= i1 + i3 o2 i3 Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a più livelli: Trasformazioni per reti logiche Metodi euristici Realizzano un miglioramento iterativo della rete logica mediante trasformazioni logiche che conservano il comportamento di I/O. Due tipi di trasformazioni: Locali Modificano localmente la funzione non toccando la struttura della rete. Globali Modificano anche la struttura della rete (es. la cancellazione di un nodo) Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a più livelli: Trasformazioni per reti logiche Le trasformazioni logiche modificano sia l'area che le prestazioni Poiché modificano: numero dei letterali, le funzioni locali, le connessioni. Sono usate cifre di merito per valutare le trasformazioni Trasformazioni non convenienti sono rifiutate. Le trasformazioni sono applicate in modo iterativo. La rete è considerata ottimale rispetto ad un insieme di operatori quando nessuno di questi la migliora. Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a più livelli: Approcci alla ottimizzazione multi-livello L’approccio tipicamente utilizzato è quello algoritmico (Viene utilizzato in SIS) Consiste nel definire un algoritmo per ogni tipo di trasformazione. L'algoritmo determina dove può essere applicata la trasformazione, attua la trasformazione stessa e la mantiene se porta benefici e termina quando nessuna trasformazione di quel tipo è ulteriormente applicabile. Il maggior vantaggio dell'approccio algoritmico è che trasformazioni di un dato tipo sono sistematicamente applicate alla rete. Algoritmi legati a differenti trasformazioni sono applicati in sequenza. Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a più livelli: Approcci alla ottimizzazione multi-livello Problema: differenti sequenze possono portare a differenti soluzioni. Soluzione: si usano regole frutto di sperimentazioni. Esempio: per reti combinatorie è consigliato lo Rugged.script. sweep; eliminate -1 simplify -m nocomp eliminate -1 sweep; eliminate 5 simplify -m nocomp resub -a fx resub -a; sweep eliminate -1; sweep full_semplify -m nocomp Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Sweep Elimina, nella rete, tutti i vertici con un solo ingresso e quelli relativi a funzioni costanti. Simplify e Full_simplify Semplificazione due livelli di ogni nodo. -m nocomp: non calcola l'off-set Eliminate Riduce la lunghezza del percorso I/O. La lunghezza è calcolata in numero di nodi attraversati . Riduzione vincolata (opzione Val_Intero) - es. eliminate 5 L'eliminazione di un vertice è accettata se incrementa l'area di una quantità inferiore a Val_Intero dove l’incremento di area è calcolato come n*l -n -l dove l è numero di letterali del nodo eliminato mentre n è il numero di nodi che lo assorbono Riduzione non vincolata tutti i nodi vengono collassati in un solo nodo: rete a due livelli. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Esempio di eliminate 2: Eliminate -1 d=a+b+c x=de+ef y=df+de x=(a+b+c)e+ef y=(a+b+c)f+de Costo: 3 + 4 + 4 = 11 Costo: 6 + 6 = 12 incremento di costo: 2*3 -2 -3 = 1 Osservano i dati relativi a n*l-n-l al variare di n e l si può constatare che l’effetto di eliminate -1 è quello di eliminare tutti i nodi composti da un solo letterale. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Le altre trasformazioni sono più complesse a causa dei gradi di libertà disponibili nella manipolazione di espressioni Booleane. Per semplificare la ricerca di trasformazioni utili, a prezzo della qualità del risultato, si utilizzano delle trasformazioni algebriche (algebra polinomiale) poiché sono un sottoinsieme delle trasformazioni Booleane. Espressioni algebriche: Derivano dalle espressioni Booleane considerando i cubi (prodotti di letterali) come monomi. Letterali con diversa polarità sono da considerarsi variabili differenti (ad esempio, a è differente da a’). Trasformazioni Algebriche: Manipolazione delle espressioni mediante regole dell'algebra polinomiale Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Trasformazioni che utilizzano la manipolazione algebrica delle espressioni: SUBSTITUTION sostituisce una sotto-espressione di un nodo mediante una variabile (nodo) già presente nella rete. EXTRACTION estrae un cubo (o una espressione multi_cubo) da un gruppo di nodi. DECOMPOSITION decompone un nodo estraendo da quest’ultimo un gruppo di nodi. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Substitution Sostituzione di una sotto-espressione mediante una variabile (nodo) già presente nella rete. Ogni sostituzione è accettata se produce guadagno nel numero di letterali. Fa uso della divisione algebrica; si cerca di ridurre fi usando fj fj=fdivisore fi=fdivisore fquoziente + fresto fj=fdivisore fi=fj fquoziente + fresto Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Extraction Si estrae un cubo (o una espressione multi_cubo) da gruppi di nodi. L'estrazione viene fatta fino a che è possibile. Identificazione di divisori comuni a 2 o più espressioni. Un divisore può essere estratto e costituisce un nuovo nodo della rete che ha per successori i nodi da cui proviene. Vincoli: n: ogni n iterazioni vengono ricalcolate tutte le possibili parti condivisibili k: dimensione massima del multi_cubo. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Esempio: fi=fdivisore fquoziente_i + fresto_i fj=fdivisore fquoziente_i + fresto_j fi=fk fquoziente_i + fresto_i fk=fdivisore fj=fk fquoziente_i + fresto_j Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Decomposition Due obiettivi: Ridurre le dimensioni di una espressione a quelle accettabili da un generatore di celle Espressioni più piccole (possono essere più probabilmente divisori e quindi usabili da Substitute) La decomposizione associa una nuova variabile al divisore e riduce la funzione originale. La decomposizione può essere applicata ricorsivamente al divisore, quoziente e resto. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Esempio: fi=fd (fdq fqq + frq) + (fdr fqr+ frr) fk=fdq fl=fdr fi=fj (fk fqq+frq) + fl fqr + frr fj=fq Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Punto fondamentale: Divisione Algebrica Definizione: una funzione fdivisore è un divisore algebrico di fdividendo quando fdividendo=fdivisore*fquoziente+fresto con fdivisore*fquoziente ¹ 0 e il supporto di fdivisore è disgiunto dal supporto di fquoziente (non condividono le stesse variabili). Supporti disgiunti l'espressione ottenuta dal prodotto delle due espressioni a supporto disgiunto è una espressione somma di prodotti booleana non ridondante. Esempio: (a + b) (a + c) = aa + ac + ba + bc espressione booleana non nella forma minima poiché aa = a. Si noti che {a,b}{a,c} = {a}. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Esempio: siano dati un dividendo ed un divisore. fdividendo= ac+ab+cde+bd+ef fdivisore=c+b A={ac,ab,cde,bd, ef} B={c,b} divisione per c: Ac={a,de} divisione per b: Ab={a,d} Q= Ac Ab={a} poiché i monomi sono elementi atomici R= A - Q x B = A - {a} x {c,b} = {ac,ab,cde,bd,ef} - {ac, ab}= {cde,bd,ef} fresto = cde+bd+ef Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Substitution Data una espressione fi si vuole ridurne le dimensioni usando una variabile j definita dalla equazione j=fj: fi= j fquoziente+fresto La ricerca dei sostitutori algebrici è fatta considerando tutte le coppie di espressioni presenti nella rete. La ricerca è ridotta considerando: Filtri (condizioni di ammissibilità della divisione algebrica). La divisione algebrica fi/ fj è vuota se: fj contiene variabili non presenti in fi fj contiene più termini di fi fj contiene almeno un monomio che ha più termini di ogni altro contenuto in fi Teorema: Il quoziente di una divisione algebrica tra due espressioni è vuoto se esiste un percorso che le collega. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Extraction Estrazione di una sotto_espressione divisore comune di due o più espressioni. Estrazioni: Di un singolo cubo: monomio Di una espressione multi_cubo: polinomio Importante: se il risultato della divisione per un monomio è ancora un monomio, il raccoglimento è banale (da scartare). Esempio: espressione: ace + bce divisore a: quoziente ce. Da scartare divisore b: quoziente be. Da scartare divisore c: quoziente ae+be. E’ ulteriormente fattorizzabile da e. divisore ce: quoziente a+b. E’ divisore!! Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Esempio (fattorizzazione monomica): 1) ae + be + cde 2) ad + ae + bd + be + bg Divisore Quoziente Divisore Quoziente a: {e} b: {e} c: {de} e: {a, b, cd} 1: fattorizzabile per e a: {d, e} b: {d, e, g} c: Ø d: {a, b} e: {a ,b} 1: {ad, ae, bd, be, bg} banali k=a+b f1=ke+cde f2=kd+ae+be+bg k=a+b f1=ke+cde f2=ke+ad+bd+bg Ç Ç {a, b} {a, b} Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Estrazione di un cubo. Il metodo precedentemente sviluppato porta ad ottenere un sotto insieme delle soluzioni ammissibili (che può essere anche vuoto). Esempio: Poiché le funzioni da cui estrarre il cubo sono analizzate separatamente, non vengono considerate soluzioni che rappresentano dei raccoglimenti banali. Alcune delle soluzioni ammissibili possono essere escluse. f=a’b+bc+abc’ ; g=ab’+a’bc+bcd b: {a’, c, ac’} b: {a’c, cd} ; bc: {a’, d} NON c’è soluzione comune (non banale - es.: a’) bc potrebbe essere estratto da f e da g. . . . . Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Estrazione di un cubo. Ogni coppia di funzioni fi e fk è raggruppata sotto una unica funzione ausiliaria fi+fk di cui si calcolano i divisori. Il cubo che può essere estratto è il divisore di dimensione massima che ha intersezione non nulla con le due funzioni di partenza. Esempio: f1= ace + bce + bg faux= ace + bce + bg + cde + h f2=cde + h Divisori:{b, ce} b : appartiene solo a f1. E' da scartare ce: compare sia in f1 che in f2. Va bene! f1=k(a+b) + bg K=ce f2=kd + h Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Esempio: f=a’b+bc+abc’ ; g=ab’+a’bc+bcd faux=a’b+bc+abc’+ab’+a’bc+bcd a: {bc’, b’} b: {a’, c, ac’, cd} c: {b, a’b, bd} cb: {1, a’, d} a’: {b, bc’} a’b: {1,c} q=cb f=a’b+q+abc’ g=ab’+q(a’+d) a, b, cb, a’b sono divisori comuni alle due funzioni. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Estrazione di un multi_cubo. Si cerca l'intersezione tra due elementi dell'insieme dei quozienti delle funzioni. Esempio: f1=ace + bce + de + g ; Quozienti(f1)={(ace+bce+de+g), (ac+bc+d), (a+b)} f2=ad + ae + bd + be + bg ; Quozienti(f2)={(ad+ae+bd+be+bg), (d+e), (d+e+g), (a+b)} Trasformazione in nuove variabili Quozienti(f1)={{xace,xbce,xde,xg}, {xac,xbc,xd}, {xa,xb}} Quozienti(f2)={{xad,xae,xbd,xbe,xbg}, {xd,xe}, {xd,xe,xg}, {xa,xb}} faux=xace xbce xde xg+xac xbc xd+xa xb+xad xae xbd xbe xbg+xd xe+xd xe xg Divisori:{xd,xe,xa xb,xd xe} si sceglie a+b poiché d+e non è in f1 Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Comando: print_kernel [-as] node-list Funzione: Stampa i divisori ed i rispettivi quozienti di tutti i nodi specificati nella node-list. Parametri: -a: (default) stampa tutti i divisori ed i rispettivi quozienti. -s: stampa solamente i sotto-quozienti. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Comando: gcx [-bcdf] [-t threshold] Funzione: Estrae da una rete i cubi comuni e ri-descrive la rete stessa in termini di questi cubi puntando alla riduzione del costo. Parametri: -b: estrae, ad ogni passo, il miglior cubo che può essere estratto -c: estrae il cubo o il suo complemento durante la fase di estrazione. -f: il numero dei letterali è valutato sulle forme fattorizzate invece che sulla somma-di-prodotti. -t: i cubi utilizzati per la ristrutturazione della rete sono quelli con costo superiore alla soglia. -d: opzione di debbuging. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Esempio di applicazione di gcx (X2.eqn) (costo finale: lit(sop)=70 lits(fac)=69) INORDER = a b c d e f g h i j; OUTORDER = k l m n o p q; k = j + !i + !h; l = !j*!m + !h*!m + i; m = !h*!i*!j; n = y + m + j + h + c; o = i*j + !h + !g; p = c*o*!y*z + f*j*!z + d*!e*!k + !i*!j + !g; q = h*o*!p*!y + d*!k*!p + p*!z + !l + !g; y = b + a; z = !i + h; lits(SOP)=90 lits(FAC)=75 sis> gcx -d Cube_extract: cube literal matrix is 35 by 17 col 7 by 2 value=5 literals 85 4 by 3 value=5 literals 80 4 by 2 value=2 literals 78 3 by 3 value=3 literals 75 3 by 2 value=1 literals 74 4 by 2 value=2 literals 72 2 by 2 value=1 literals 71 2 by 3 value=1 literals 70 INORDER = a b c d e f g h i j; OUTORDER = k l m n o p q; k = !i*!j + f1 + e1 + d1 + b1; l = g1 + f1 + d1 + b1; m = c1; n = g1 + e1 + d1 + c1 + b1 + c + b + a; o = f1 + d1 + c1 + b1 + !g; p = h*b1*i1 + !h*!i*i1 + d*!e*g1 + !i*!j + h1 + !g; q = !a*!b*!c*h*j + d*e*i*g1 + h1 + e1 + c1 + !g; b1 = i*j; c1 = !h*!i*!j; d1 = !h*j; e1 = h*!i*j; f1 = !h*i; g1 = h*!j; h1 = f*!h*b1; i1 = !a*!b*c; lits(SOP)=70 lits(FAC)=69 Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Comando: gkx [-1abcdfo] [-t threshold] Funzione: Estrae da una rete i multi_cubo divisori comuni e ri-descrive la rete stessa in termini di questi cubi puntando alla riduzione del costo. Parametri: -a: genera tutti i divisori per tutte le funzioni presenti nella rete. Per default, utilizza solamente i divisori di livello 0. -b: seleziona, ad ogni passo dell’algoritmo, il miglior divisore multi_cubo. -c: prova ad utilizzare sia il nuovo fattore che il suo complemento. -d: opzione di debugging. -f: il numero dei letterali è valutato sulle forme fattorizzate. -o: consente la sovrapposizione di fattori. -t: i divisori sono estratti solo se il loro valore supera la soglia. Per default la soglia è 0 cosicché tutti i possibili multi_cubo sono estratti dalla rete. -1: l’algoritmo attraversa la rete una sola volta. Per default l’estrazione dei quozienti è iterata fino a che ci sono divisori il cui valore supera la soglia. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Esempio di applicazione di gkx (X2.eqn) (costo finale: lit(sop)=67 lits(fac)=64) Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Comando: fx [-o] [-b limit] [-z] Funzione: Dopo avere trovato tutti i miglior divisori di ogni nodo composti da un cubo (monimiali) e da un un doppio cubo (binomiali), associa un costo ad ogni nodo ed estrae, iterativamente, il nodo con la miglior funzione di costo. (algoritmo tipo Greedy) Parametri: -o: divisori binomiali di solo livello 0. -b: limite superiore di divisori generati (default: 50000). -z: utilizza anche i divisori di peso zero; sono estratti tutti i divisori che non danno una perdita di costo nella decomposizione della rete. La decomposizione potrebbe essere migliore ma richiede un ampio sforzo computazionale. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Esempio di applicazione di fx (X2.eqn) (costo finale: lit(sop)=55 lits(fac)=54) Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Esempio di applicazione di fx -z (X2.eqn) Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Decompose Obiettivi: 1) Ridurre le dimensioni delle espressioni a quelle accettabili da un generatore di celle 2) Espressioni più piccole sono probabilmente dei divisori ed utilizzabili da Substitute. q=a'ce+bce+de+g k=a'+b t=kc+d q=te+g Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Comando: decomp [-gqd] [node-list] Funzione: Decompone tutti i nodi della lista; se la lista non è specificata tutti i nodi della rete saranno decomposti. decomp fattorizza i nodi e introduce nella rete i divisori come nuovi nodi. Parametri: -g: estrae in successione i divisori migliori (good). -q: decomposizione rapida (quick); estrae di un divisore arbitrario. -d: decomposizione disgiunta; i divisori estratti non condividono variabili. Algoritmo: partiziona i cubi in insiemi che hanno variabili di supporto non condivise, crea un nodo per ogni partizione ed un nodo che è l’OR di queste partizioni (es: k=h’j+i’+hj’ k=[1]+[2]; [1]=h’j+hj’; [2]=i’) Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Esempio di applicazione di decomp (X2.eqn) Calcolatori Elettronici - Politecnico di Milano
Valutazione del DC-set Sintesi di reti combinatorie a più livelli: Valutazione del DC-set locale Modello: Rete logica costituita da vertici a cui è associata una funzione booleana locale ed un DC-set locale Problema: Valutazione del DC-set Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a più livelli: Valutazione del DC-set locale Condizioni di Indifferenza Esterne: sono relative all’interazione della funzione booleana con l’ambiente. Due aspetti: Controllabilità Condizioni di indifferenza di ingresso (CDCin) Insieme di configurazioni di ingresso mai fornite alla rete Osservabilità Condizioni di indifferenza di uscita (ODCout) Insieme delle configurazioni di configurazioni di ingresso che produco uscite non osservabili dall’ambiente. E’ un vettore che ha tante componenti quante sono le uscite primarie (nout) Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a più livelli: Valutazione del DC-set locale Condizioni di indifferenza esterne DCext= CDCin ODCout CDCin e’ un vettore di nout componenti pari a CDCin Esempio: x1 x2 a b c y1 y2 rete combinatoria o1 o2 CDCin: x1 x2 non assume mai la configurazione 01 CDCin= x1’x2 ODCout: per x1=0, y1 non è osservabile ODCout= per x2=0, y2 non è osservabile DCext=CDCin+ODCout= Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a più livelli: Valutazione del DC-set locale: CDC Esempio: calcolo del CDC di un nodo le variabili di supporto di y sono a, b, c, x. x=a’+b ; y=abx + a’cx x y a b c 1 00 01 11 cx ab y può essere ulteriormente semplificata osservando che: non è possibile che x a’+b (x non è una variabile indipendente) ab quindi CDC= x(a’+b) = x’a’ + x’b + xab’ cx 00 01 11 01 00 - - - 01 1 - y=ax + cx 11 1 1 1 - 01 - - - Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi per la semplificazione Comando: simplify [-d] [-m method] [-f filter] [node-list] Funzione: semplifica ogni nodo della rete utilizzando il metodo specificato e generando l’opportuno DC-set. Il nodo è sostituito con la nuova funzione se quest’ultima ha meno letterali (nella forma fattorizzata) Parametri: -m method: specifica il metodo da utilizzare nella minimizzazione snocomp (default): non calcola l’OFF-set completo; nocomp: utilizza ESPRESSO; non calcola l’OFF-set completo; dcsimp: minimizzatore tautology-based; dctype: specifica come il DC-set è generato; -d: il DC-set non è utilizzato; -f filter: specifica come il DC-set è filtrato exact: filtro esatto; disjsup: usa il filtro basato sui supporti disgiunti; Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi per la semplificazione Esempio: INORDER = a b c; OUTORDER = y; x=!a+b; y=a*b*x + !a*c*x; Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi per la semplificazione Esempio: .model CM82 .inputs a b c d e .outputs f g h .names a s f 01 1 10 1 .names o r g 11 1 00 1 .names o d e h 01- 1 0-1 1 -11 1 .names a b c o 00- 1 0-0 1 -00 1 .names d e r .names b c s .end Calcolatori Elettronici - Politecnico di Milano
Calcolatori Elettronici - Politecnico di Milano Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi per la semplificazione Comando: full_simplify [-d] [-o ordering] [-m method] [-l] [-v verbose ] Funzione: semplifica ogni nodo della rete utilizzando i DC locali. Parametri: -m method: specifica il metodo da utilizzare nella minimizzazione snocomp (default): non calcola l’OFF-set completo; nocomp: utilizza ESPRESSO; non calcola l’OFF-set completo; dcsimp: minimizzatore tautology-based; -d: l’ODC-set non è calcolato; -o ordering: ordinamento dei nodi della rete 0 (default): i nodi sono ordinati in base alla profondità; 1: utilizza il livello del nodo; -v: informazioni per il debugging. Calcolatori Elettronici - Politecnico di Milano
Sintesi di reti combinatorie a più livelli: script Script.algebraic sweep eliminate 5 simplify -m nocomp -d resub -a gkx -abt 30 resub -a;sweep gcx -bt 30 resub -a; sweep gkx -abt 10 gcx -bt 10 gkx -ab gcx -b eliminate 0 decomp -g * Script.boolean sweep; eliminate -1 simplify eliminate -1 sweep; eliminate 5 resub -a gkx -abt 30 resub -a; sweep gcx -bt 30 gkx -abt 10 gcx -bt 10 gkx -ab gcx -b eliminate 0 decomp -g * eliminate -1; sweep Script.rugged sweep; eliminate -1 simplify -m nocomp eliminate -1 sweep; eliminate 5 resub -a fx resub -a; sweep eliminate -1; sweep full_simplify -m nocomp Calcolatori Elettronici - Politecnico di Milano