La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Calcolatori Elettronici - Politecnico di Milano Fabio Salice Sintesi Combinatoria Sintesi di reti combinatorie a due livelli.

Presentazioni simili


Presentazione sul tema: "Calcolatori Elettronici - Politecnico di Milano Fabio Salice Sintesi Combinatoria Sintesi di reti combinatorie a due livelli."— Transcript della presentazione:

1 Calcolatori Elettronici - Politecnico di Milano Fabio Salice Sintesi Combinatoria Sintesi di reti combinatorie a due livelli

2 Fabio Salice Calcolatori Elettronici - Politecnico di Milano2 Sintesi di reti combinatorie a due livelli: Introduzione ObiettivoObiettivo : 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

3 Fabio Salice Calcolatori Elettronici - Politecnico di Milano3 Sintesi di reti combinatorie a due livelli: Introduzione metodologie di sintesi ottima: Esatte Karnaugh Quine - Mc Cluskey Euristiche per sintesi a due livelli

4 Fabio Salice Calcolatori Elettronici - Politecnico di Milano4 Sintesi di reti combinatorie a due livelli: Metodi esatti metodo di Karnaugh (cenni) KarnaughKarnaugh 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 implicanti primi implicanti primi essenziali

5 Fabio Salice Calcolatori Elettronici - Politecnico di Milano5 Sintesi di reti combinatorie a due livelli: Metodi esatti metodo di Karnaugh (cenni) Esempio: a b c d f a b c d implicanti primi essenziali a' c' ; a d implicanti primi b' c d' a' b' d' ; b' c d' ; a b' c ; c' d f(a,b,c,d) = a' c' + a d + b' c d' forma minima (unica)

6 Fabio Salice Calcolatori Elettronici - Politecnico di Milano6 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)

7 Fabio Salice Calcolatori Elettronici - Politecnico di Milano7 Sintesi di reti combinatorie a due livelli: Metodi esatti metodo di Karnaugh (cenni) Esempio x x x x a b c d f 0x10 1x1x x a b c d implicanti primi f(a,b,c,d) = a b + b' d b'd ; c'd ; c'b ; ab ; ad

8 Fabio Salice Calcolatori Elettronici - Politecnico di Milano8 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.

9 Fabio Salice Calcolatori Elettronici - Politecnico di Milano9 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. Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey

10 Fabio Salice Calcolatori Elettronici - Politecnico di Milano10 Per ridurre la complessità algoritmica, l'operazione di confronto viene svolta considerando solamente gli insiemi S i j e S i+1 J insieme S i 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 S i j possono essere contenute solo in S i-1 j e S i+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. Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey

11 Fabio Salice Calcolatori Elettronici - Politecnico di Milano11 Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Algoritmo di Quine - Mk Cluskey J=0 J=0; tutti i mintermini appartenenti all’ON-set vengono etichettati e posti nei loro rispettivi S i 0 ; Ripeti Ripeti Perfino a Per k=min(i) fino a (max(i) - 1) confronta ogni configurazione in S i J con ogni altra in S i+1 J. Le configurazioni semplificate vengono marcate ed il risultato della semplificazione viene etichettato e posto in S i J+1. J=J+1 J=J+1 ; Fino a che Fino a che non sono più possibili delle riduzioni Tutte le configurazioni non marcate sono implicanti primi

12 Fabio Salice Calcolatori Elettronici - Politecnico di Milano a b c d Equivalente mappa di Karnaugh Implicanti Primi: P0(1,9): b' c' d P1(9,11,13,15): a d P2(12,13,14,15): a b Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Esempio:

13 Fabio Salice Calcolatori Elettronici - Politecnico di Milano13 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 a i,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. Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey

14 Fabio Salice Calcolatori Elettronici - Politecnico di Milano14 Relazioni tra implicanti e mintermini che permettono la semplificazione della tabella: Essenzialità Dominanza Dominanza di riga Dominanza di colonna Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey

15 Fabio Salice Calcolatori Elettronici - Politecnico di Milano15 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. Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey Righe essenziali: P 1 ; P 2 ; P 3

16 Fabio Salice Calcolatori Elettronici - Politecnico di Milano16 Dominanza tra righe: Descrizione: Un implicante i-esimo domina un implicante j-esimo quando P i copre almeno tutti i mintermini coperti da P j. Semplificazione: P j è 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. Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey P 0 : dominata P 1 : dominante P 1 : implicante essenziale secondario

17 Fabio Salice Calcolatori Elettronici - Politecnico di Milano17 Dominanza tra colonne: Descrizione: Un mintermine i-esimo domina un mintermine j-esimo quando ogni implicante che copre m j copre anche m i. (Può non valere l'opposto) Semplificazione: m i è eliminato dalla tabella. Significato: un implicante che copre m j copre anche m i. Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey

18 Fabio Salice Calcolatori Elettronici - Politecnico di Milano18 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. Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey

19 Fabio Salice Calcolatori Elettronici - Politecnico di Milano19 Esempio del metodo di Petrik: (P 0 +P 3 ) (P 0 +P 1 ) (P 1 +P 2 ) (P 2 +P 3 ) (P 1 +P 3 ) = 1 (P 0 +P 3 P 1 ) (P 1 P 3 +P 2 ) (P 1 +P 3 ) = 1 (P 0 P 2 +P 3 P 1 ) (P 1 +P 3 ) = 1 (P 0 P 2 P 1 +P 0 P 2 P 3 +P 3 P 1 ) = 1 Gruppi di implicanti primi: P 0 P 2 P 1 ; P 0 P 2 P 3 ; P 3 P 1 Da un prodotto di somme ad una somma di prodotti Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey

20 Fabio Salice Calcolatori Elettronici - Politecnico di Milano20 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 S i 0 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); Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey

21 Fabio Salice Calcolatori Elettronici - Politecnico di Milano21 Esempio: da sole condizioni di indifferenza Implicanti primi: P 0 : a' b' d' P 1 : a' c' d' P 2 : b c' f(a,b,c,d,)=a'b'd' + bc' Sintesi di reti combinatorie a due livelli: Metodi esatti Quine - Mc Cluskey

22 Fabio Salice Calcolatori Elettronici - Politecnico di Milano22 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. Sintesi di reti combinatorie a due livelli: Metodi esatti Espresso-Exact

23 Fabio Salice Calcolatori Elettronici - Politecnico di Milano23 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. Sintesi di reti combinatorie a due livelli: Metodi esatti Espresso-Exact

24 Fabio Salice Calcolatori Elettronici - Politecnico di Milano24 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 3 n /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). Sintesi di reti combinatorie a due livelli: Metodi euristici

25 Fabio Salice Calcolatori Elettronici - Politecnico di Milano25 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. Sintesi di reti combinatorie a due livelli: Metodi euristici

26 Fabio Salice Calcolatori Elettronici - Politecnico di Milano26 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. Sintesi di reti combinatorie a due livelli: Metodi euristici

27 Fabio Salice Calcolatori Elettronici - Politecnico di Milano27 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.) Sintesi di reti combinatorie a due livelli: Metodi euristici EXPAND

28 Fabio Salice Calcolatori Elettronici - Politecnico di Milano28 Esempio: x x a b c d Implicante da espandere: a c' d' Espansione rispetto a c: a d' espansione ammissibile Espansione rispetto ad a: c' d' espansione non ammissibile Espansione rispetto a d: a c' espansione non ammissibile Sintesi di reti combinatorie a due livelli: Metodi euristici EXPAND OFF-Set : a’c’ + ab’d+a’cd’ Verifica ammissibilità: OFF-Set * (c’d’) = a’c’d’  0 non ammissibile

29 Fabio Salice Calcolatori Elettronici - Politecnico di Milano29 Esempio di espansione: Copertura iniziale: on-set: {ac'd', a'b'cd, bcd, ab'cd'} ; dc-set: {abc'd, abcd'} Copertura iniziale Copertura dopo Expand ordine implicanti da espandere: (1) (2) (3) x x a b c d E' coperto dall'espansione (1) ed è eliminato Copertura finale: on-set: {ad', a'cd, bcd } ; dc-set: {abc'd, abcd'} Sintesi di reti combinatorie a due livelli: Metodi euristici EXPAND

30 Fabio Salice Calcolatori Elettronici - Politecnico di Milano30 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. Sintesi di reti combinatorie a due livelli: Metodi euristici EXPAND

31 Fabio Salice Calcolatori Elettronici - Politecnico di Milano31 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: | | * | | T = 11 Implicanti: ac’d’  =11(2) a’b’cd  =9(1) bcd  =11(3) ab’cd’  =11(4) Ordine conteggio per colonna: peso minore = più letterali, meno letterali condivisi  più probabile sia espandibile Sintesi di reti combinatorie a due livelli: Metodi euristici EXPAND

32 Fabio Salice Calcolatori Elettronici - Politecnico di Milano32 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) Sintesi di reti combinatorie a due livelli: Metodi euristici REDUCE

33 Fabio Salice Calcolatori Elettronici - Politecnico di Milano33 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  un implicante appartenente alla copertura della funzione e La riduzione massima di  è Sintesi di reti combinatorie a due livelli: Metodi euristici REDUCE

34 Fabio Salice Calcolatori Elettronici - Politecnico di Milano34 Esempio: x x a b c d a b c d supercubo(Q') a b c d supercubo(Q) x x a b c d Sintesi di reti combinatorie a due livelli: Metodi euristici REDUCE

35 Fabio Salice Calcolatori Elettronici - Politecnico di Milano35 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: Sintesi di reti combinatorie a due livelli: Metodi euristici REDUCE Implicanti: ad’  =13(1) bcd  =12(3) a’cd  =13(2) Ordine conteggio per colonna:

36 Fabio Salice Calcolatori Elettronici - Politecnico di Milano36 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. Sintesi di reti combinatorie a due livelli: Metodi euristici IRREDUNDANT

37 Fabio Salice Calcolatori Elettronici - Politecnico di Milano37 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 Sintesi di reti combinatorie a due livelli: Metodi euristici ESPRESSO

38 Fabio Salice Calcolatori Elettronici - Politecnico di Milano38 (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). Sintesi di reti combinatorie a due livelli: Metodi euristici ESPRESSO

39 Fabio Salice Calcolatori Elettronici - Politecnico di Milano39 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  2=Cost(on_set) ripeti  1=|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|<  1) on_set=Last_gasp(on_set,dc_set,off_set) fino a che (Cost(on_set) <  2) on_set=on_set U essential_set dc_set=dc_set - essential_set on_set=Make_sparse(on_set,dc_set,off_set) Sintesi di reti combinatorie a due livelli: Metodi euristici ESPRESSO

40 Fabio Salice Calcolatori Elettronici - Politecnico di Milano40 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;

41 Fabio Salice Calcolatori Elettronici - Politecnico di Milano41 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

42 Fabio Salice Calcolatori Elettronici - Politecnico di Milano42 Sintesi di reti combinatorie a due livelli: ESPRESSO Esempio: ipeca4>espresso -v '' ex3.pla EXPAND: (covered 0) EXPAND: (covered 1) EXPAND: (covered 0) # IRRED: F=3 E=3 R=0 Rt=0 Rp=0 Rc=0 Final=3 Bound=0 ESSENTIAL: ESSENTIAL: REDUCE: to sec EXPAND: (covered 0) # IRRED: F=1 E=1 R=0 Rt=0 Rp=0 Rc=0 Final=1 Bound=0 REDUCE_GASP: reduced to # IRRED: F=3 E=3 R=0 Rt=0 Rp=0 Rc=0 Final=3 Bound=0.i 4.o 1.p e ipeca4> ipeca4>espresso -v '' ex3.pla EXPAND: (covered 0) EXPAND: (covered 1) EXPAND: (covered 0) # IRRED: F=3 E=3 R=0 Rt=0 Rp=0 Rc=0 Final=3 Bound=0 ESSENTIAL: ESSENTIAL: REDUCE: to sec EXPAND: (covered 0) # IRRED: F=1 E=1 R=0 Rt=0 Rp=0 Rc=0 Final=1 Bound=0 REDUCE_GASP: reduced to # IRRED: F=3 E=3 R=0 Rt=0 Rp=0 Rc=0 Final=3 Bound=0.i 4.o 1.p e ipeca4> x x a b c d.i 4.o 1.type fd i 4.o 1.type fd Cubi Notazione Pesi Ordine positional-cube Cubi Notazione Pesi Ordine positional-cube

43 Fabio Salice Calcolatori Elettronici - Politecnico di Milano43 Sintesi di reti combinatorie a due livelli: ESPRESSO Esempio:.i 4.o 3.type fr EXPAND: (covered 2) EXPAND: (covered 3) EXPAND: (covered 0) EXPAND: (covered 0) EXPAND: (covered 0) # IRRED: F=5 E=5 R=0 Rt=0 Rp=0 Rc=0 Final=5 Bound=0 ESSENTIAL: REDUCE: to sec REDUCE: to sec REDUCE: to sec EXPAND: (covered 0) EXPAND: (covered 0) EXPAND: (covered 0) # IRRED: F=4 E=4 R=0 Rt=0 Rp=0 Rc=0 Final=4 Bound=0 REDUCE_GASP: reduced to REDUCE_GASP: reduced to REDUCE_GASP: reduced to REDUCE_GASP: reduced to EXPAND: (covered 0) # IRRED: F=5 E=2 R=3 Rt=0 Rp=3 Rc=1 Final=3 Bound=0 REDUCE: to sec EXPAND: (covered 0) # IRRED: F=3 E=3 R=0 Rt=0 Rp=0 Rc=0 Final=3 Bound=0 … (continua) EXPAND: (covered 2) EXPAND: (covered 3) EXPAND: (covered 0) EXPAND: (covered 0) EXPAND: (covered 0) # IRRED: F=5 E=5 R=0 Rt=0 Rp=0 Rc=0 Final=5 Bound=0 ESSENTIAL: REDUCE: to sec REDUCE: to sec REDUCE: to sec EXPAND: (covered 0) EXPAND: (covered 0) EXPAND: (covered 0) # IRRED: F=4 E=4 R=0 Rt=0 Rp=0 Rc=0 Final=4 Bound=0 REDUCE_GASP: reduced to REDUCE_GASP: reduced to REDUCE_GASP: reduced to REDUCE_GASP: reduced to EXPAND: (covered 0) # IRRED: F=5 E=2 R=3 Rt=0 Rp=3 Rc=1 Final=3 Bound=0 REDUCE: to sec EXPAND: (covered 0) # IRRED: F=3 E=3 R=0 Rt=0 Rp=0 Rc=0 Final=3 Bound=0 … (continua) # IRRED: F=3 E=3 R=0 Rt=0 Rp=0 Rc=0 Final=3 Bound=0 REDUCE_GASP: reduced to REDUCE_GASP: reduced to REDUCE_GASP: reduced to # 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 # IRRED: F=3 E=3 R=0 Rt=0 Rp=0 Rc=0 Final=3 Bound=0 EXPAND: (covered 0).i 4.o 3.p e … (continua) # IRRED: F=3 E=3 R=0 Rt=0 Rp=0 Rc=0 Final=3 Bound=0 REDUCE_GASP: reduced to REDUCE_GASP: reduced to REDUCE_GASP: reduced to # 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 # IRRED: F=3 E=3 R=0 Rt=0 Rp=0 Rc=0 Final=3 Bound=0 EXPAND: (covered 0).i 4.o 3.p e

44 Calcolatori Elettronici - Politecnico di Milano Fabio Salice Sintesi Combinatoria Sintesi di reti combinatorie a più livelli

45 Fabio Salice Calcolatori Elettronici - Politecnico di Milano45 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 area ritardo due livellipiù livelli

46 Fabio Salice Calcolatori Elettronici - Politecnico di Milano46 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)

47 Fabio Salice Calcolatori Elettronici - Politecnico di Milano47 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

48 Fabio Salice Calcolatori Elettronici - Politecnico di Milano48 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). Sintesi di reti combinatorie a più livelli: Introduzione

49 Fabio Salice Calcolatori Elettronici - Politecnico di Milano49 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 V I (Primary Inputs - PI) nodi di uscita V O (Primary Outputs - PO) nodi interni V G : Sono moduli della rete combinatoria a cui è associata una funzione combinatoria scalare (una uscita) Sintesi di reti combinatorie a più livelli: Modello

50 Fabio Salice Calcolatori Elettronici - Politecnico di Milano50 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. i1i1 i2i2 i3i3 a= i 1 i 2 c= i 1 + i 3 b= a i 3 + i 2 o2o2 d= b c o1o1 Sintesi di reti combinatorie a più livelli: Modello

51 Fabio Salice Calcolatori Elettronici - Politecnico di Milano51 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)

52 Fabio Salice Calcolatori Elettronici - Politecnico di Milano52 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. Sintesi di reti combinatorie a più livelli: Trasformazioni per reti logiche

53 Fabio Salice Calcolatori Elettronici - Politecnico di Milano53 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. Sintesi di reti combinatorie a più livelli: Approcci alla ottimizzazione multi-livello

54 Fabio Salice Calcolatori Elettronici - Politecnico di Milano54 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 Sintesi di reti combinatorie a più livelli: Approcci alla ottimizzazione multi-livello

55 Fabio Salice Calcolatori Elettronici - Politecnico di Milano55 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. Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi

56 Fabio Salice Calcolatori Elettronici - Politecnico di Milano56 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: = 11Costo: = 12 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. Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi incremento di costo: 2* = 1

57 Fabio Salice Calcolatori Elettronici - Politecnico di Milano57 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 Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi

58 Fabio Salice Calcolatori Elettronici - Politecnico di Milano58 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. Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi

59 Fabio Salice Calcolatori Elettronici - Politecnico di Milano59 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 f i usando f j f i =f divisore f quoziente + f resto f j =f divisore f i =f j f quoziente + f resto f j =f divisore Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi

60 Fabio Salice Calcolatori Elettronici - Politecnico di Milano60 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. Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi

61 Fabio Salice Calcolatori Elettronici - Politecnico di Milano61 Esempio: f i =f divisore f quoziente_i + f resto_i f j =f divisore f quoziente_i + f resto_j f i =f k f quoziente_i + f resto_i f j =f k f quoziente_i + f resto_j f k =f divisore Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi

62 Fabio Salice Calcolatori Elettronici - Politecnico di Milano62 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. Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi

63 Fabio Salice Calcolatori Elettronici - Politecnico di Milano63 Esempio: f i =f d (f dq f qq + f rq ) + (f dr f qr + f rr ) f j =f q f i =f j (f k f qq +f rq ) + f l f qr + f rr f l =f dr f k =f dq Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi

64 Fabio Salice Calcolatori Elettronici - Politecnico di Milano64 Punto fondamentale: Divisione Algebrica Definizione: una funzione f divisore è un divisore algebrico di f dividendo quando f dividendo =f divisore *f quoziente +f resto con f divisore *f quoziente  0 e il supporto di f divisore è disgiunto dal supporto di f quoziente (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}. Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi

65 Fabio Salice Calcolatori Elettronici - Politecnico di Milano65 Esempio: siano dati un dividendo ed un divisore. f resto = cde+bd+ef f dividendo = ac+ab+cde+bd+ef f divisore =c+b A={ac,ab,cde,bd, ef}B={c,b} divisione per c: A c ={a,de}divisione per b: A b ={a,d} Q= A c  A b ={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} Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi

66 Fabio Salice Calcolatori Elettronici - Politecnico di Milano66 Substitution Data una espressione f i si vuole ridurne le dimensioni usando una variabile j definita dalla equazione j=f j : f i = j f quoziente +f resto 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 f i / f j è vuota se: f j contiene variabili non presenti in f i f j contiene più termini di f i f j contiene almeno un monomio che ha più termini di ogni altro contenuto in f i Teorema : Il quoziente di una divisione algebrica tra due espressioni è vuoto se esiste un percorso che le collega. Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi

67 Fabio Salice Calcolatori Elettronici - Politecnico di Milano67 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!! Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi

68 Fabio Salice Calcolatori Elettronici - Politecnico di Milano68 Esempio (fattorizzazione monomica) : 1) ae + be + cde2) ad + ae + bd + be + bg a:{d, e} b:{d, e, g} c:Ø d:{a, b} e:{a,b} 1:{ad, ae, bd, be, bg} a:{e} b:{e} c:{de} e:{a, b, cd} 1: fattorizzabile per e {a, b} k=a+b f 1 =ke+cde f 2 =ke+ad+bd+bg k=a+b f 1 =ke+cde f 2 =kd+ae+be+bg banali Divisore Quoziente   Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Divisore Quoziente

69 Fabio Salice Calcolatori Elettronici - Politecnico di Milano69 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..... Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi

70 Fabio Salice Calcolatori Elettronici - Politecnico di Milano70 Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Estrazione di un cubo. Ogni coppia di funzioni f i e f k è raggruppata sotto una unica funzione ausiliaria f i +f k 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: Divisori:{b, ce} faux= ace + bce + bg + cde + h b : appartiene solo a f 1. E' da scartare ce: compare sia in f 1 che in f 2. Va bene! f 1 =k(a+b) + bg f 2 =kd + h K=ce f 1 = ace + bce + bg f 2 =cde + h

71 Fabio Salice Calcolatori Elettronici - Politecnico di Milano71 Esempio: f=a’b+bc+abc’ ; g=ab’+a’bc+bcd f aux =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. Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi

72 Fabio Salice Calcolatori Elettronici - Politecnico di Milano72 Estrazione di un multi_cubo. Si cerca l'intersezione tra due elementi dell'insieme dei quozienti delle funzioni. Esempio: f 1 =ace + bce + de + g ; Quozienti(f 1 )={(ace+bce+de+g), (ac+bc+d), (a+b)} f 2 =ad + ae + bd + be + bg ; Quozienti(f 2 )={(ad+ae+bd+be+bg), (d+e), (d+e+g), (a+b)} Quozienti(f 1 )={{x ace,x bce,x de,x g }, {x ac,x bc,x d }, {x a,x b }} Quozienti(f 2 )={{x ad,x ae,x bd,x be,x bg }, {x d,x e }, {x d,x e,x g }, {x a,x b }} Trasformazione in nuove variabili f aux =x ace x bce x de x g +x ac x bc x d +x a x b +x ad x ae x bd x be x bg +x d x e +x d x e x g Divisori:{x d,x e,x a x b,x d x e } si sceglie a+b poiché d+e non è in f 1 Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi

73 Fabio Salice Calcolatori Elettronici - Politecnico di Milano73 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.

74 Fabio Salice Calcolatori Elettronici - Politecnico di Milano74 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.

75 Fabio Salice Calcolatori Elettronici - Politecnico di Milano75 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 2value=5literals 85 4 by 3value=5literals 80 4 by 2value=2literals 78 3 by 3value=3literals 75 3 by 2value=1literals 74 4 by 2value=2literals 72 2 by 2value=1literals 71 2 by 3value=1literals 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

76 Fabio Salice Calcolatori Elettronici - Politecnico di Milano76 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.

77 Fabio Salice Calcolatori Elettronici - Politecnico di Milano77 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)

78 Fabio Salice Calcolatori Elettronici - Politecnico di Milano78 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.

79 Fabio Salice Calcolatori Elettronici - Politecnico di Milano79 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)

80 Fabio Salice Calcolatori Elettronici - Politecnico di Milano80 Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Esempio di applicazione di fx -z (X2.eqn)

81 Fabio Salice Calcolatori Elettronici - Politecnico di Milano81 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. k=a'+b t=kc+d q=te+g q=a'ce+bce+de+g Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi

82 Fabio Salice Calcolatori Elettronici - Politecnico di Milano82 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’)

83 Fabio Salice Calcolatori Elettronici - Politecnico di Milano83 Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi Esempio di applicazione di decomp (X2.eqn)

84 Fabio Salice Calcolatori Elettronici - Politecnico di Milano84 Modello: Rete logica costituita da vertici a cui è associata una funzione booleana locale ed un DC-set locale Problema: Valutazione del DC-set Sintesi di reti combinatorie a più livelli: Valutazione del DC-set locale

85 Fabio Salice Calcolatori Elettronici - Politecnico di Milano85 Condizioni di Indifferenza Esterne: sono relative all’interazione della funzione booleana con l’ambiente. Due aspetti: Controllabilità Condizioni di indifferenza di ingresso (CDC in ) –Insieme di configurazioni di ingresso mai fornite alla rete Osservabilità Condizioni di indifferenza di uscita (ODC out ) –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 (n out ) Sintesi di reti combinatorie a più livelli: Valutazione del DC-set locale

86 Fabio Salice Calcolatori Elettronici - Politecnico di Milano86 Condizioni di indifferenza esterne DC ext = CDC in  ODC out CDC in e’ un vettore di n out componenti pari a CDC in Esempio: x1 x2 a b c y1 y2 rete combinatoria o1 o2 DC ext =CDC in +ODC out = CDC in : x1 x2 non assume mai la configurazione 01  CDC in = x1’x2 ODC out : per x1=0, y1 non è osservabile  ODC out = per x2=0, y2 non è osservabile Sintesi di reti combinatorie a più livelli: Valutazione del DC-set locale

87 Fabio Salice Calcolatori Elettronici - Politecnico di Milano87 Esempio: calcolo del CDC di un nodo xy a b c x=a’+b ;y=abx + a’cx le variabili di supporto di y sono a, b, c, x cxab y può essere ulteriormente semplificata osservando che: non è possibile che x  a’+b (x non è una variabile indipendente) quindi CDC= x  (a’+b) = x’a’ + x’b + xab’ cx ab y=ax + cx Sintesi di reti combinatorie a più livelli: Valutazione del DC-set locale: CDC

88 Fabio Salice Calcolatori Elettronici - Politecnico di Milano88 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;

89 Fabio Salice Calcolatori Elettronici - Politecnico di Milano89 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;

90 Fabio Salice Calcolatori Elettronici - Politecnico di Milano90 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 names o r g names o d e h names a b c o names d e r names b c s end.model CM82.inputs a b c d e.outputs f g h.names a s f names o r g names o d e h names a b c o names d e r names b c s end

91 Fabio Salice Calcolatori Elettronici - Politecnico di Milano91 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.

92 Fabio Salice Calcolatori Elettronici - Politecnico di Milano92 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 resub -a;sweep gcx -bt 10 resub -a;sweep gkx -ab resub -a; sweep gcx -b resub -a; sweep eliminate 0 decomp -g * Script.boolean sweep; eliminate -1 simplify eliminate -1 sweep; eliminate 5 simplify resub -a gkx -abt 30 resub -a; sweep gcx -bt 30 resub -a; sweep gkx -abt 10 resub -a; sweep gcx -bt 10 resub -a; sweep gkx -ab resub -a; sweep gcx -b resub -a; sweep eliminate 0 decomp -g * eliminate -1; sweep Script.rugged sweep; eliminate -1 simplify -m nocomp eliminate -1 sweep; eliminate 5 simplify -m nocomp resub -a fx resub -a; sweep eliminate -1; sweep full_simplify -m nocomp


Scaricare ppt "Calcolatori Elettronici - Politecnico di Milano Fabio Salice Sintesi Combinatoria Sintesi di reti combinatorie a due livelli."

Presentazioni simili


Annunci Google