Upload
michelangelo-grieco
View
212
Download
0
Embed Size (px)
Citation preview
© 2001/02 - William Fornaciari© 2001/02 - William Fornaciari
Università degli studi di Università degli studi di ParmaParmaDipartimento di Ingegneria dell’InformazioneDipartimento di Ingegneria dell’Informazione
PolitecnicoPolitecnicodi Milanodi Milano
Sintesi di reti a più livelliSintesi di reti a più livelli
Lezione 3.4Lezione 3.4
Approccio algoritmico: SISApproccio algoritmico: SIS
Docente:Docente:
prof. William FORNACIARIprof. William FORNACIARI [email protected]@elet.polimi.it
www.elet.polimi.it/people/fornaciawww.elet.polimi.it/people/fornacia
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 22 - -
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: Sintesi di reti combinatorie a più livelli: Approcci alla Approcci alla ottimizzazione multi-livelloottimizzazione multi-livello
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 33 - -
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 -1simplify -m nocompeliminate -1sweep; eliminate 5simplify -m nocompresub -afxresub -a; sweepeliminate -1; sweepfull_semplify -m nocomp
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Approcci alla Approcci alla ottimizzazione multi-livelloottimizzazione multi-livello
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 44 - -
SweepElimina, nella rete, tutti i vertici con un solo ingresso e quelli relativi a funzioni costanti.
Simplify e Full_simplifySemplificazione due livelli di ogni nodo.
-m nocomp: non calcola l'off-set
EliminateRiduce 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 dovel è numero di letterali del nodo eliminato mentre n è il numero di nodi che lo assorbono
Riduzione non vincolatatutti i nodi vengono collassati in un solo nodo: rete a due livelli.
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 55 - -
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
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: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
incremento di costo: 2*3 -2 -3 = 1
1 2 3 4 5 6 71 -1 -1 -1 -1 -1 -1 -12 -1 0 1 2 3 4 53 -1 1 3 5 7 9 11
l 4 -1 2 5 8 11 14 175 -1 3 7 11 15 19 236 -1 4 9 14 19 24 297 -1 5 11 17 23 29 358 -1 6 13 20 27 34 419 -1 7 15 23 31 39 47
n
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 66 - -
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: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 77 - -
Trasformazioni che utilizzano la manipolazione algebrica delle espressioni:SUBSTITUTION
sostituisce una sotto-espressione di un nodo mediante una variabile (nodo) già presente nella rete.
EXTRACTIONestrae un cubo (o una espressione multi_cubo) da un gruppo di nodi.
DECOMPOSITIONdecompone un nodo estraendo da quest’ultimo un gruppo di nodi.
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 88 - -
SubstitutionSostituzione 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
fi=fdivisore fquoziente + fresto
fj=fdivisorefi=fj fquoziente + fresto
fj=fdivisore
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 99 - -
ExtractionSi 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 condivisibilik: dimensione massima del multi_cubo.
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 1010 - -
Esempio:
fi=fdivisore fquoziente_i + fresto_i
fj=fdivisore fquoziente_i + fresto_j
fi=fk fquoziente_i + fresto_i
fj=fk fquoziente_i + fresto_j
fk=fdivisore
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 1111 - -
DecompositionDue obiettivi:
Ridurre le dimensioni di una espressione a quelle accettabili da un generatore di celleEspressioni 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: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 1212 - -
Esempio:
fi=fd (fdq fqq + frq) + (fdr fqr+ frr)
fj=fq
fi=fj (fk fqq+frq) + fl fqr + frrfl=fdr
fk=fdq
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 1313 - -
Punto fondamentale:
Divisione AlgebricaDefinizione:
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 disgiuntil'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: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 1414 - -
Esempio: siano dati un dividendo ed un divisore.
fresto = cde+bd+ef
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}
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 1515 - -
SubstitutionData 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.
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 1616 - -
ExtractionEstrazione di una sotto_espressione divisore comune di due o più espressioni.Estrazioni:
Di un singolo cubo: monomioDi 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 + bcedivisore a: quoziente ce. Da scartare divisore b: quoziente be. Da scartaredivisore c: quoziente ae+be. E’ ulteriormente fattorizzabile da e. divisore ce: quoziente a+b. E’ divisore!!
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 1717 - -
Esempio (fattorizzazione monomica):
1) ae + be + cde 2) 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} {a, b}
k=a+bf1=ke+cdef2=ke+ad+bd+bg
k=a+bf1=ke+cdef2=kd+ae+be+bg
banali
Divisore Quoziente
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Divisore Quoziente
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 1818 - -
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: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 1919 - -
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni 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:Divisori:{b, ce}
faux= ace + bce + bg + cde + h
b : appartiene solo a f1. E' da scartarece: compare sia in f1 che in f2. Va bene!
f1=k(a+b) + bg
f2=kd + hK=ce
f1= ace + bce + bg
f2=cde + h
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 2020 - -
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=cbf=a’b+q+abc’g=ab’+q(a’+d)
a, b, cb, a’b sono divisoricomuni alle due funzioni.
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 2121 - -
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)}
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}}
Trasformazione in nuove variabili
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
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 2222 - -
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni 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.
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 2323 - -
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni 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.
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 2424 - -
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni 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 -dCube_extract: cube literal matrix is 35 by 17 col7 by 2 value=5 literals 854 by 3 value=5 literals 804 by 2 value=2 literals 783 by 3 value=3 literals 753 by 2 value=1 literals 744 by 2 value=2 literals 722 by 2 value=1 literals 712 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
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 2525 - -
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni 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.
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 2626 - -
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Esempio di applicazione di gkx (X2.eqn) (costo finale: lit(sop)=67 lits(fac)=64)
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 2727 - -
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni 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.
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 2828 - -
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Esempio di applicazione di fx (X2.eqn) (costo finale: lit(sop)=55 lits(fac)=54)
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 2929 - -
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Esempio di applicazione di fx -z (X2.eqn)
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 3030 - -
DecomposeObiettivi:
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: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 3131 - -
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni 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’)
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 3232 - -
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmiTrasformazioni e algoritmi
Esempio di applicazione di decomp (X2.eqn)
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 3333 - -
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: Sintesi di reti combinatorie a più livelli: Valutazione Valutazione deldelDC-set localeDC-set locale
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 3434 - -
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)
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Valutazione Valutazione deldelDC-set localeDC-set locale
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 3535 - -
Condizioni di indifferenza esterne
DCext= CDCin ODCout
CDCin e’ un vettore di nout componenti pari a CDCin
Esempio:
x1
x2
ab
c
y1
y2
retecombinatoria
o1
o2
DCext=CDCin+ODCout=
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
x
x
1
2
'
'
x x x
x x x
1 2 1
1 2 2
' '
' '
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Valutazione Valutazione deldelDC-set localeDC-set locale
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 3636 - -
Esempio: calcolo del CDC di un nodo
x y
a
bc
x=a’+b ; y=abx + a’cx le variabili di supporto di ysono a, b, c, x.
0 0 0 00 0 1 01 1 1 00 0 0 0
00011101
cx ab
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’- - - 00 0 1 -1 1 1-
-- - 0
00011101
cxab
00 01 11 01
y=ax + cx
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Valutazione Valutazione deldelDC-set locale: CDCDC-set locale: CDC
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 3737 - -
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi per la semplificazioneTrasformazioni 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;
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 3838 - -
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi per la semplificazioneTrasformazioni e algoritmi per la semplificazione
Esempio:INORDER = a b c;OUTORDER = y;x=!a+b;y=a*b*x + !a*c*x;
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 3939 - -
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi per la semplificazioneTrasformazioni e algoritmi per la semplificazione
Esempio:
.model CM82
.inputs a b c d e
.outputs f g h
.names a s f01 110 1.names o r g11 100 1.names o d e h01- 10-1 1-11 1.names a b c o00- 10-0 1-00 1.names d e r01 110 1.names b c s01 110 1.end
.model CM82
.inputs a b c d e
.outputs f g h
.names a s f01 110 1.names o r g11 100 1.names o d e h01- 10-1 1-11 1.names a b c o00- 10-0 1-00 1.names d e r01 110 1.names b c s01 110 1.end
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 4040 - -
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: Trasformazioni e algoritmi per la semplificazioneTrasformazioni 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.
Sintesi multilivello: SISSintesi multilivello: SIS © 2001/02 - William Fornaciari© 2001/02 - William Fornaciari- - 4141 - -
Sintesi di reti combinatorie a più livelli: Sintesi di reti combinatorie a più livelli: scriptscript
Script.algebraicsweepeliminate 5simplify -m nocomp -dresub -a
gkx -abt 30resub -a;sweepgcx -bt 30resub -a; sweep
gkx -abt 10resub -a;sweepgcx -bt 10resub -a;sweep
gkx -abresub -a; sweepgcx -bresub -a; sweep
eliminate 0decomp -g *
Script.boolean sweep; eliminate -1simplifyeliminate -1sweep; eliminate 5simplifyresub -agkx -abt 30resub -a; sweepgcx -bt 30resub -a; sweepgkx -abt 10resub -a; sweepgcx -bt 10resub -a; sweepgkx -abresub -a; sweepgcx -bresub -a; sweepeliminate 0decomp -g *eliminate -1; sweep
Script.rugged sweep; eliminate -1simplify -m nocompeliminate -1
sweep; eliminate 5simplify -m nocompresub -a
fxresub -a; sweep
eliminate -1; sweepfull_simplify -m nocomp