Sei sulla pagina 1di 23

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

Introduzione

2 LOTTIMIZZAZIONE DELLE RETI COMBINATORIE

2 LOTTIMIZZAZIONE DELLE RETI COMBINATORIE 2.1 2.2 2.2.1 2.2.2 2.3 2.3.1 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.5 2.5.1

INTRODUZIONE ....................................................................................................................2 MINIMIZZAZIONE A DUE LIVELLI DI RETI COMBINATORIE AD UNA USCITA....................4 METODO DI QUINE-MCCLUSKEY ...................................................................................5 RAPPRESENTAZIONE MEDIANTE SIS ............................................................................13 MINIMIZZAZIONE A DUE LIVELLI DI RETI COMBINATORIE A PI USCITE......................16 METODO DI QUINE-MCCLUSKEY PER FUNZIONI A PI USCITE ....................................17 MINIMIZZAZIONE A PI LIVELLI DI RETI COMBINATORIE .............................................22 MODELLI DI RAPPRESENTAZIONE.................................................................................24 MODELLO ALGEBRICO ..................................................................................................27 TRASFORMAZIONI BOOLEANE ......................................................................................32 RAPPRESENTAZIONE MEDIANTE SIS ............................................................................38 LA VALUTAZIONE DEI RITARDI .........................................................................................41 RAPPRESENTAZIONE MEDIANTE SIS ............................................................................44

Lottimizzazione di un circuito comporta normalmente un compromesso o meglio, un bilancio fra un certo numero di parametri che caratterizzano il circuito stesso. Due parametri tipici (ancora oggi, i fondamentali) sono larea occupata dal circuito (di solito valutata approssimativamente riferendosi al numero di porte logiche e/o al numero di letterali presenti nellespressione cui il circuito corrisponde) e il ritardo di propagazione, valutato fra listante in cui si presenta un evento, cio una variazione di valore a un ingresso, e listante in cui la risposta allevento appare manifesta alluscita. Altri parametri possono essere la potenza dissipata dal circuito, la facilit di operare il collaudo dello stesso, o la rispondenza a vincoli specifici posti dalluso di particolari tecnologie. Riferendosi ai soli parametri area-tempo, idealmente i progetti che corrispondono a un bilancio ottimo si trovano su uniperbole (vedi figura 2.1); il progettista spesso parte da un progetto sub-ottimo (punto A) per spostarsi verso soluzioni rispondenti al bilancio e che premiano uno o laltro dei parametri di valutazione (il punto B corrisponde a un circuito pi costoso in termini di area ma anche pi veloce, il punto C permette un risparmio in area ma presenta un maggiore ritardo di propagazione).
area A

Franco Fummi
Universit di Verona

Mariagiovanna Sami
Politecnico di Milano
Figura 2.1. Relazione tra ottimizzazione di area e ritardo. Le tecniche di sintesi ottimizzata permettono al progettista di raggiungere o almeno avvicinare la curva di bilancio ottimo; star poi al progettista stabilire a quale dei parametri vuole assegnare priorit (e in quale misura). Si considerino dapprima reti combinatorie a una sola uscite. Una generica rete
ritardo

La presente dispensa stampabile e riproducibile esclusivamente per gli scopi didattici dei corsi del Politecnico di Milano e dell'Universit di Verona; ogni altro uso deve essere preventivamente autorizzato dagli autori.

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

combinatoria non pu essere sintetizzata con meno di due livelli (solo funzioni molto particolari sono risolubili con una sola porta logica!); dato che un qualsiasi segnale attraversa solo due porte logiche da ingresso a uscita (appunto, due livelli) la forma a due livelli in linea di principio veloce: la velocit diminuisce per quando cresce il numero degli ingressi a una porta, quindi questo fattore deve essere tenuto in conto nella valutazione del ritardo. Ricordiamo innanzitutto alcune definizioni: le introduciamo per il caso pi semplice, quello di una rete a una sola uscita, completamente specificata (tale cio che il valore delluscita sia specificato per ogni configurazione degli ingressi). Si indica con letterale una variabile, sia essa in forma naturale o in forma complementata; le variabili dingresso sono letterali; una funzione pu a sua volta essere usata come un letterale. Un implicante di una funzione data f(x1,,xn) un prodotto di letterali P=xiaxka (dove linsieme di indici ik compreso in, o coincide con, linsieme degli indici i..n, e a indica che la variabile pu comparire sia in forma naturale sia in forma negata) tale che ogniqualvolta sia P=1 anche f=1. Se tutte le variabili dingresso compaiono nellimplicante, questo si dice anche mintermine della funzione data (spesso indicato anche come 1 della funzione data); un implicante corrisponde a un sottocubo di soli 1 della funzione data, cio a un insieme di 2k configurazioni dingresso a distanza di Hamming unitaria (ognuna a distanza 1 da k altre configurazioni) a ognuna delle quali associato un 1 della funzione. Un implicante si dice primo se non esiste alcun altro implicante pi grande (cio generato da un numero maggiore di 1 adiacenti) che lo contenga interamente; si noti che un implicante pi grande corrisponde a un prodotto di un numero minore di letterali. Un implicante primo si dice essenziale se esiste almeno un 1 incluso (coperto) dallimplicante stesso che non incluso in alcun altro implicante della funzione data. Una copertura di una funzione un insieme di implicanti che coprono tutti i mintermini della funzione stessa. Rifacendosi a una rappresentazione grafica molto semplice e gi nota - quella delle mappe di Karnaugh - si consideri la mappa in figura 2.2.

;   

   

 

 

  



      

Figura 2.2. Esempio di mappa di Karnaugh. Gli implicanti primi sono yz, xz, zv, yv, xyz; di questi, solo yv, xyv e xz sono essenziali - il primo perch lunico che copre gli 1 xyvz=0110 e 1110, il secondo perch lunico che copre 0011, il terzo perch lunico che copre 1000; tutti gli altri 1 della funzione sono coperti da almeno due implicanti primi.

2.1 MINIMIZZAZIONE A DUE LIVELLI DI RETI COMBINATORIE AD


UNA USCITA
Usando come cifra di merito primaria il numero di porte logiche presenti in una realizzazione di una funzione data, e come cifra secondaria il numero di letterali utilizzati complessivamente, si dimostra che esiste una forma minima a due livelli del tipo somma di prodotti costituita da soli implicanti primi, e che un implicante essenziale deve far parte di una qualsiasi forma minima a due livelli1. Un metodo esatto per realizzare una sintesi minima a due livelli di una rete combinatoria deve quindi: identificare tutti gli implicanti primi; identificare un sottoinsieme di implicanti primi che costituisca una copertura di costo minimo - cio un sottoinsieme di cardinalit minima. I metodi esatti derivano dalla soluzione proposta da Quine e McCluskey negli anni 50; dato che sono computazionalmente pesanti, spesso oggi vengono applicati a parti di un circuito complesso, usando poi tecniche euristiche che portano a soluzioni complessive
1 Notazioni e dimostrazioni duali valgono per le forme del tipo prodotto di somme; in tal caso si parla di implicati, corrispondenti a sottocubi costituiti da soli 0 della funzione.

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

subottime che - in genere - approssimano in modo soddisfacente lottimo globale.

mi 1

x 0 0 0 0 1 0 1 1 1

y 0 1 1 1 0 1 0 1 1

z 0 0 0 1 0 1 1 1 1

v 1 0 1 0 1 1 1 0 1

2.1.1 Metodo di Quine-McCluskey


Si veda dapprima il metodo di Quine-McCluskey per reti a una sola uscita completamente specificate. Si parte dalla tabella delle verit della funzione da sintetizzare; sia consideri ad esempio la funzione descritta in tabella 2.1.
x 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 y 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 z 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 v 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 f 0 1 0 0 1 1 1 1 0 1 0 1 0 0 1 1

4 5 6 9 7 11 14 15

Tabella 2.2. Riordino degli implicanti. Ogni configurazione i in un gruppo viene confrontata con tutte le configurazioni nel gruppo immediatamente successivo (le uniche che potenzialmente potrebbero essere a distanza di Hamming 1, avendo un numero di 1 che differisce per una sola unit); quando si trova una configurazione j adiacente alla i, ci indica - nella forma canonica somma di prodotti - la presenza di una somma di due mintermini del tipo Aa+Aa, dove A il prodotto di tutte le variabili (naturali o complementate) identiche nelle due configurazioni, mentre a lunica variabile che cambia valore; lalgebra di Boole ci dice che la somma pu essere sostituita dal solo prodotto (implicante) A. Costruiamo una seconda tabella (tabella 2.3) in cui inseriamo la configurazione A, inserendo un trattino al posto della variabile a; le configurazioni i e j nella tabella di partenza vengono ambedue marcate, in quanto certamente non corrisponderanno ad implicanti primi. Cos, i due mintermini 1 e 5 - corrispondenti alle configurazioni 0001 e 0101 - essendo a distanza unitaria generano nella seconda tabella la configurazione 0-01 e vengono ambedue marcati nella tabella di partenza2.

Tabella 2.1. Tabella delle verit di una funzione completamente specificata. Il primo passo consiste nel riordinare le righe della tabella secondo il numero di 1 contenuti nella corrispondente configurazione dingresso, e nel riportare (per ogni sottoinsieme) solamente le configurazioni per cui luscita vale 1 (vedi tabella 2.2).

Con il simbolo - si indica qui la condizione di indifferenza (dont care). 6

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

{m1mn} 1,5 1,9 4,5 4,6 5,7 6,7 6,14 9,11 7,15 11,15 14,15

x 0 0 0 0 0 1 1 1

y 0 1 1 1 1 1 0 1 1

z 0 0 0 1 1 1 1 1

v 1 1 0 1 0 1 1 1 D C A B

{m1mn} 4,5,6,7 6,7,14,15

x 0 -

y 1 1

z 1

v E F

due livelli; si tratta ora di trovare la copertura minima della funzione data. A questo punto, si passa alla seconda fase realizzando innanzitutto una tabella di copertura che ha tante righe quanti i mintermini della funzione e tante colonne quanti gli implicanti primi ora determinati (tabella 2.5); nella casella (i,) della tabella si inserisce una marca se e solo se limplicante copre il mintermine i (se cio il mintermine i fra quelli che hanno originato ).
xyzv 0001 0100* 0101 0110 0111 1001 X X X X X X X X A X B X X X X X X X C D E F

Tabella 2.3. Secondo passo dell'algoritmo di Quine-McCluskey.

Tabella 2.4. Terzo passo dell'algoritmo di Quine-McCluskey.

1011 1110* 1111

Lanalisi completa della tabella 2.3 porta a costruire la tabella 2.4 e a marcare tutti i mintermini nella tabella di partenza - nessun mintermine un implicante primo. Anche le configurazioni nella seconda tabella vengono raggruppate sulla base del numero di 1 presenti, e su di esse si ripete lo stesso confronto fatto prima, facendo attenzione al fatto che si possono confrontare solo due configurazioni appartenenti a due gruppi immediatamente successivi e nelle quali il trattino si trovi nella stessa posizione (la variabile semplificata per ambedue le configurazioni deve essere ovviamente la stessa, perch le due configurazioni possano essere confrontabili). Si pu verificare che la configurazione derivata da 4,5 e quella derivata da 6,7 sono adiacenti - si semplificano dando 01-- - e adiacenti sono anche le due configurazioni 4,6 e 5,7, che danno anchesse la configurazioni 01--: nella terza tabella che si costruisce (tabella 2.4) si inserisce una sola volta la configurazione risultante, ma si marcano tutti i quattro implicanti identificati in tabella 2.3. Procedendo in questo modo, si vede che nella tabella 2.4 compaiono due sole configurazioni: la 4,5,6,7 gi indicata e la 6,7,14,15 (-11-). Nella tabella 2.3 restano non marcate le configurazioni 1,5 (0-01), 1,9 (-001), 9,11 (10-1) e 11,15 (1-11). La tabella 2.4 non ammette ulteriori riduzioni; le due configurazioni in questa tabella, insieme alle quattro non marcate nella tabella precedente, costituiscono linsieme di tutti e soli gli implicanti primi della funzione data (che vengono etichettati con lettere dellalfabeto, come indicato nelle tabelle). Si cos completata la prima fase indicata per un algoritmo di minimizzazione esatta a

Tabella 2.5. Tabella di copertura dell'algoritmo di Quine-McKluskey. Esaminiamo ora la tabella di copertura. Innanzitutto, notiamo che esistono alcune righe che contengono una sola marca; la colonna in cui tale marca appare corrisponde a un implicante essenziale, dato che il corrispondente implicante primo lunico a coprire il mintermine associato alla riga (si sono marcate le righe con *). Qualsiasi forma minima somma di prodotti dovr contenere gli implicanti essenziali (colonne essenziali): gli implicanti essenziali sono E ed F. Possiamo indicare preliminarmente che la forma minima sar f=E+F+.; gli implicanti E ed F coprono anche altri implicanti, che non richiedono altra copertura nella forma minima. Passiamo a una tabella ridotta (tabella 2.6) ottenuta da quella iniziale cancellandone le colonne corrispondenti agli implicanti essenziali e le righe corrispondenti alle righe coperte dagli implicanti essenziali.
xyzv 0001 1001 1011 A X B X X X X X C D E F

Tabella 2.6. Tabella di copertura, dopo la prima riduzione. Ci troviamo ora di fronte a una tabella nella quale ogni mintermine coperto da almeno

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

(qui, esattamente) due implicanti; non ci sono pi relazioni di essenzialit. Operiamo per un confronto fra le colonne A e B; la colonna B ha tutte le marche della A, pi almeno una: si dice che B dominante rispetto ad A. Dal nostro punto di vista, ci significa che limplicante associato alla colonna B (dominante) copre tutti i mintermini coperti dallimplicante A, pi almeno uno; in altre parole, scegliere limplicante B per la forma somma di prodotti non porter mai a un costo maggiore di quello che si avrebbe scegliendo A. Si pu quindi cancellare la colonna A senza modificare il comprtamento del circuito che si sintetizzer. Analogamente, si cancella la colonna D (dominata dalla C); evidentemente inutile riportare le colonne E ed F, che sono vuote. Si giunge alla tabella ridotta 2.7 (non si sono aggiunti per ora altri termini prodotti alla forma f):
xyzv 0001 1001 1011 B X X X X C

Si confrontino ora le righe e ; la dominata dalla . Ci significa che qualunque implicante copra copre anche , ma non viceversa; in altre parole, se nel corso di una copertura si sceglie un implicante che copra il mintermine dominato si sicuri di coprire anche quello dominante, mentre la scelta opposta potrebbe non dare la medesima garanzia. Scegliere un implicante che copra il mintermine dominato di conseguenza garantisce che il costo non maggiore di quello che si otterrebbe scegliendone uno che coprisse il mintermine dominante, mentre la scelta di un implicante che coprisse il mintermine dominante potrebbe portare a un aumento di costo. Analogamente, dominata da : quindi possibile semplificare la tabella cancellando le righe dominanti (tabella 2.9).
A X X X X B C X X D A X X X C X

Tabella 2.7. Tabella di copertura, dopo la seconda riduzione. Finalmente, nella tabella ora realizzata vediamo che la riga 0001 diventata pseudoessenziale - nella tabella ridotta coperta dal solo implicante B - come anche la riga 1011 (coperta dal solo C): si possono quindi aggiungere B e C alla forma, ottenendo f=E+F+B+C Nellesempio ora sintetizzato si sono considerati due tipi di caratteristiche che permettono di semplificare lelaborazione della tabella di copertura: lessenzialit (sia essa primaria o pseudo-essenzialit) e la dominanza fra colonne. Si supponga ora che, dopo avere selezionato eventuali implicanti essenziali ed eliminato colonne dominate, ci si sia riportati alla tabella ridotta 2.8 in cui non esistono righe essenziali, n relazioni di dominanza fra colonne.
A X X X X X X X X X B C X X X D

Tabella 2.9.

Tabella 2.10.

A questo punto si genera una relazione di dominanza della colonna A rispetto alla E, e della C rispetto alla B, che porta a ulteriori riduzioni (tabella 2.10) e permette di concludere che la somma A+C copre con costo minimo la tabella 2.8. Non sempre le riduzioni dovute a essenzialit e dominanza consentono di giungere a una soluzione; si consideri il caso (peraltro molto semplice) descritto in tabella 2.11.
xyz 000 010 011 100 101 111 X X X A X X X X X X X X B C D E F X

Tabella 2.11. Esempio di tabella di copertura. In questa tabella non esistono righe essenziali, e non sono identificabili relazioni di dominanza n fra righe n fra colone. Peraltro, la scelta di tutti gli implicanti primi (sei) darebbe una copertura sicuramente ridondante. Per giungere a una copertura si procede dunque per tentativi; si sceglie un implicante come se fosse essenziale, si cancellano oltre alla sua colonna - tutte le righe che esso copre, e si riesamina la tabella ridotta per
9 10

Tabella 2.8. Esempio di tabella di copertura.

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

eventuali semplificazioni. Ovviamente, non c nessuna garanzia che la scelta operata (ed eventualmente quelle che occorre ripetere anche in seguito) porti alla soluzione ottima; in teoria almeno, occorrerebbe esplorare tutto lalbero delle scelte per valutare alla fine quale, fra e varie soluzioni, effettivamente la ottima. In realt, si utilizzano delle euristiche opportunamente guidate (ad esempio, si inizia scegliendo un implicante che copra un numero di mintermini pi elevato possibile - l dove questa selezione sia ammissibile). Infine, si considera lapplicazione del metodo di Quine-Mc Cluskey a reti a una sola uscita incompletamente specificate - che ammettano cio delle condizioni di indifferenza (corrispondenti a configurazioni dingresso che non si presenteranno mai, e per le quali di conseguenza qualunque valore di uscita ammissibile). Sia data la funzione f(x,y,z,v) assegnata mediante la tabella delle verit 2.12.
xyzv 0000 0001 0010 0011 0100 0101 0110 0111 f 0 0 0 1 xyzv 1000 1001 1010 1011 1100 1101 1110 1111 f 0 0 1 1 0 1 1 1

4 3 5 6 10 7 11 13 14 15

0100 0011 0101 0110 1010 0111 1011 1101 1110 1111

4,5 4,6 3,7 3,11 5,7 5,13 6,7 6,14 10,11 10,14 7,15 11,15 13,15 14,15

01001-0 0-11 -011 01-1 -101 0111-110 1011-10 -111 1-11 11-1 111

4,5,6,7 3,7,11,15 5,7,13,15 6,7,14,15 10,11,14,15

01---11 -1-1 -111-1-

A B C D E

Tabella 2.15.

Tabella 2.13.

Tabella 2.14. Di nuovo, iterando la procedura si giunge alla tabella 2.15, che raccoglie tutti e soli gli implicanti primi della funzione. Si passa quindi a costruire la tabella di copertura 2.16 nella quale ovviamente le righe corrispondono solo agli uni della funzione - non necessario coprire le condizioni di indifferenza!
A 4 X X X X X X X X X X X B C D E

Tabella 2.12. Tabella delle verit di una funzione parzialmente specificata. Si elencano in ordine di numero crescente di 1 tutte le configurazioni corrispondenti sia a 1 della funzione, sia a condizioni di indifferenza; tenendo per presente che non necessario coprire le condizioni di indifferenza - e che quindi non potranno mai esistere implicanti primi costituiti da sole condizioni dindifferenza - questa vengono marcate a priori. In tabella 2.13 le condizioni dindifferenza sono ulteriormente indicate in corsivo. Nel confronto che porta alla tabella 2.14, ancora, ogni volta che si trova una coppia di condizioni dindifferenza adiacente il potenziale implicante viene, si, introdotto, ma viene a priori marcato.
10 11 13 14 15

Tabella 2.16. Tabella di copertura della funzione parzialmente specificata. Le forme a due livelli sono state le prime ad essere usate (inizialmente, erano anche le uniche per cui esistessero tecniche formali che fossero la base di strumenti di CAD); a parte le iniziali realizzazioni in logica sparsa, rimasero in uso con lintroduzione di componenti chiamati PLA (Programmable Logic Array) che potevano essere programmati dallutente il quale creando o distruggendo collegamenti e/o dispositivi

11

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

allinterno di una matrice come quella indicata in figura 2.3 aveva la possibilit di definire sia i termini prodotto creati nella sezione AND, sia i termini somma creati nella sezione OR:
ab ac bc linee di prodotto

minimizzare in formato .blif e manipolare la rete corrispondente dentro SIS. Il lettore interessato ad approfondire l'utilizzo di ESPRESSO pu comunque utilizzare SIS per generare il formato di ingresso di ESPRESSO mediante il comando write_pla di SIS che converte un file .blif in un file .pla. Usando le opzioni di ESPRESSO si potrebbe esaminare passo passo l'esecuzione dell'algoritmo di Quine-McKluskey facendo stampare gli implicanti primi, gli essenziali e la copertura minima. Riprendiamo la funzione riportata in tabella 2.1 e descriviamola in formato .blif. Poich la funzione completamente specificata, si ricorda che sufficiente descrivere solamente l'ON-set: i mintermini non elencati apparterranno all'OFF-set. La funzione di tabella 2.1 quindi descritta nel seguente modo:

Sezione AND

Linee di funzione Sezione OR

.model COMPSPEC .inputs x y z v .outputs f .names x y z v f 0001 1 0100 1 0101 1 0110 1 0111 1 1001 1 1011 1 1110 1 1111 1 .end

f1=ab+bc

f=ac+bc

Figura 2.3. Esempio di realizzazione con PLA di una funzione a due livelli. Una PLA predefinisce il numero di linee di prodotto ammissibili (un numero molto inferiore alla cardinalit dellinsieme di tutti i mintermini) e il numero delle linee di funzione: tipicamente, ha senso utilizzarla per reti a pi uscite. Oggi, non esistono PLA come dispositivi a s stanti programmabili dallutente finale; si trovano eventualmente come strutture facenti parti di sistemi VLSI complessi (dove risultano interessanti a causa della loro estrema regolarit, e quindi della compattezza del layout risultante). La tendenza oggi con luso oramai generale di circuiti C-MOS e luso di dispositivi semicustom 3- spinge piuttosto verso la realizzazione di reti a pi livelli. Prima di passare alle tecniche di sintesi a pi livelli, vale la pena di considerare il problema della ottimizzazione a due livelli di funzioni a pi uscite.

Il suo caricamento in SIS e la stampa delle statistiche producono il seguente risultato:


sis> read_blif compspec.blif sis> print_stats COMPSPEC pi= 4 lits(sop)= 36 po= 1 nodes= 1 latches= 0

Il modello ha un costo di 36 letterali poich descritto da 9 mintermini da 4 variabili. L'a minimizzazione esatta a due livelli (comando full_simplify) produce il seguente risultato:
sis> full_simplify sis> print_stats compspec pi= 4 lits(sop)= 10 sis> write_blif .model compspec .inputs x y z v .outputs f .names x y z v f 01-- 1 -11- 1 1-11 1 -001 1 .end po= 1 nodes= 1 latches= 0

2.1.2 Rappresentazione mediante SIS


L'algoritmo di Quine-McKluskey stato brillantemente implementato nel programma di sintesi a due livelli ESPRESSO. Bench sia possibile utilizzare esplicitamente questo programma molto pi comodo usare la sua reimplementazione nel programma SIS data dal comando full_simplify. In questo modo possibile descrivere la funzione da
3 Dispositivi costituiti da un insieme di sottocircuti predefiniti ad esempio, porte logiche con un numero fisso di ingressi fra i quali lutente finale realizza una rete di interconnessione che permette di realizzare la funzione voluta. Casi tipici sono i gate arrays, matrici di porte logiche (es.: NAND a due ingressi).

La funzione ora descritta con quattro prodotti il cui costo sceso a 10 letterali. Per facilitare la lettura di questi prodotti, possibile stamparli come equazioni:

13

14

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

sis> write_eqn INORDER = x y z v; OUTORDER = f; f = !y*!z*v + x*z*v + y*z + !x*y;

Il costo della funzione sceso a 6 letterali per i tre prodotti (A, C, E) che erano stati gi identificati manualmente nella tabella di copertura 2.16. Si noti che l'esecuzione del comando full_simplify sulla funzione senza il DC-set, produce il seguente risultato:
sis> read_blif parspec_nodc.blif sis> print_stats parspec_nodc pi= 4 po= 1 nodes= lits(sop)= 24 sis> full_simplify sis> print_stats parspec_nodc pi= 4 9 lits(sop)= 1 latches= 0

Queste equazioni concordano quasi completamente con il risultato ottenuto manualmente e riportato in tabella 2.6 e 2.7. La differenza riguarda l'implicante primo essenziale D (111) che stato selezionato invece dell'implicante C (10-1). Il loro costo in termini di letterali per identico quindi la loro scelta in fase di copertura indifferente. Nel caso di funzioni parzialmente specificate, l'unica differenza consiste nella scritta del dont care set (DC-set). Il DC-set viene descritto come l'ON-set, ma viene identificato perch posto dopo la parola chiave .exdc. Per esempio, la funzione parzialmente specificata di tabella 2.12 descritta in formato .blif nel seguente modo:
.model parspec .inputs x y z v .outputs f .names x y z v f 0100 1 1010 1 1011 1 1101 1 1110 1 1111 1 .exdc .inputs x y z v .outputs f .names x y z v f 0011 1 0101 1 0110 1 0111 1 .end

po= 1

nodes=

latches= 0

sis> write_eqn INORDER = x y z v; OUTORDER = f; f = !x*y*!z*!v + x*y*v + x*z;

Il maggior costo correttamente dato dalla minore riduzione delle dimensioni dei tre prodotti che coprono la funzione poich non sono state sfruttate le condizioni di indifferenza.

2.2 MINIMIZZAZIONE A DUE LIVELLI DI RETI COMBINATORIE A


PI USCITE
Una prima soluzione al problema della sintesi a due livelli di funzioni a pi uscite potrebbe apparire quella di minimizzare individualmente le singole uscite utilizzando gli algoritmi gi visto. Si consideri per l'esempio di una rete a tre ingressi e due uscite (F1 e F2) riportato come mappe di Karnaugh in figura 2.4).
xy z

I mintermini per cui la funzione don't care sono riportati dopo la parola chiave .exdc e completano l'ON-set della funzione descritto come in precedenza. L'esecuzione del comando full_simplify produce il seguente risultato:
sis> read_blif parspec.blif sis> print_stats parspec pi= 4 po= 1 lits(sop)= 24 sis> full_simplify sis> print_stats parspec pi= 4 lits(sop)= 6 sis> write_eqn INORDER = x y z v; OUTORDER = f; f = y*v + x*z + !x*y; Don't care: INORDER = x y z v; OUTORDER = f; f = !x*y*z*!v + !x*y*!z*v + !x*!y*z*v + !x*y*z*v; nodes= 1 latches= 0

00 0 0

01 1 0 F1

11 1 1

10 0 0

xy z

00 1 1

01 1 0 F2

11 0 0

10 0 0

0 1

0 1

po= 1

nodes=

latches= 0

Figura 2.4. Mappe di Karnaugh di una funzione a due uscite. La minimizzazione individuale porta alle due espressioni: F1= xy+yz F2=xy+zx e quindi alla rete di figura 2.5, per un costo totale di quattro porte AND a due ingressi e due porte OR a due ingressi.

15

16

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

x y y z F1

x y x z F2

in questo) la cosiddetta rappresentazione cubica. Una rappresentazione cubica fa in sostanza riferimento a una forma a due livelli (somma di prodotti o prodotto di somme): di conseguenza, una funzione ammette in genere pi notazioni cubiche. Si consideri dapprima la seguente funzione a tre ingressi e una uscita:
xyz 000 001 f 1 1 0 1 1 0 0 1

Figura 2.5. Prima realizzazione della funzione a due uscite.


x y F1 y z

010 011 100 101 110 111

Una possibile notazione cubica la seguente:


x y F2

xyz 00 00

f 1 1 0 1 0

Figura 2.6. Realizzazione condivisa della funzione a due uscite. Al contrario, la rete in figura 2.6) realizza le stesse due funzioni, condividendo il prodotto xyz: individualmente, le due forme non sono pi minime e, in particolare, si usato un implicante (xyz) che non primo n per F1 n per F2 ma la rete complessiva ha un costo inferiore. Si giunti a questo, appunto, identificando degli implicanti comuni che possono essere condivisi dalle due uscite (si introdotto un fanout sulluscita di una delle porte AND, che ora alimenta due porte OR). Per giungere a una metodologia che sfrutti il concetto di condivisione introdotto ora intuitivamente , occorre introdurre il concetto di implicante primo di pi multiple. In poche parole, oltre agli implicanti primi delle singole funzioni, occorre considerare anche quelli dei prodotti di singole funzioni: date tre funzioni F1, F2, F3, occorre considerare gli implicanti primi di: F1, F2, F3, F1.F2, F1.F3, F2.F3, F1.F2.F3. Ad esempio, gli implicanti primi di F1.-F2 sono i massimi implicanti condivisi da F1 e F2.

10 11 101

Si tratta chiaramente di una notazione pi compatta della tabella delle verit: in sostanza, corrisponde ad indicare un insieme di implicanti e di implicati (in genere, primi) che coprano la funzione assegnata, ammettendo eventuali ridondanze. Si pu vedere che due cubi possono parzialmente sovrapporsi, per quanto riguarda gli ingressi: i due cubi 00 e 00, nel nostro esempio, includono ambedue il termine 000. Tornando alla funzione a due uscite di figura 2.4, una possibile notazione cubica :
xyz 00 010 11 f1 f2 01 11 10

2.2.1 Metodo di Quine-McCluskey per funzioni a pi uscite


Una notazione che riesce particolarmente utile nel caso delle reti a pi uscite (e non solo

Questa notazione mette in evidenza i termini comuni a due o pi uscite; unaltra notazione possibile sarebbe:

17

18

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

xyz 00 10 00 11

f1 f2 01 10 01 10

cui, come al solito, si pongono sulle righe gli implicanti e sulle colonne i mintermini con la regola che ogni mintermine deve essere ripetuto tante volte quante sono le uscite cui appartiene (nel nostro caso, 010 comparir due volte): la matrice di copertura risultante data in tabella 2.19.
xyz | f1 f2 00001 00101 01001 01010 11010 11110 X X A B X X X X X X X X C D E

Si noti in questo caso leffetto delle parziali sovrapposizioni dei cubi: 010 fa parte sia del cubo 10 sia del cubo 00. In questo caso, il valore della funzione a pi uscite per la parte comune ai due cubi (per i mintermini facenti parte dellintersezione) si ottiene sommando tutte le parti di uscita nel nostro caso, il valore (giustamente) 10+01=11. Un cubo diventa dunque un implicante di pi uscite. Su questa base, si estende il metodo di Quine-McCluskey per giungere alla minimizzazione di funzioni a pi uscite. Innanzitutto, si creano gli implicanti primi di uscite multiple. Si parte da una tabella in qui si elencano tutti i mintermini per cui almeno una delle uscite vale 1.
xyz 000 001 010 110 111 f1 f2 01 01 11 10 10 xyz f1 f2 01 01 10 10 B C D E

Tabella 2.19. Tabella di copertura di una funzione a due uscite. Le regole di copertura sono le solite si cerca il minimo numero di colonne le cui marche consentano di coprire tutte le righe facendo attenzione a rispettare le marche che indicano le specifiche funzioni interessate : nellesempio particolare, immediato vedere come la scelta degli implicanti A, B ed E dia la soluzione di costo minimo. Si consideri ora una funzione a tre uscite per la quale in tabella 2.20 e 2.21 effettuata l'analisi dei prodotti secondo il metodo di Quine-McKluskey.
xyz 000 f1 f2 f3 110 011 101 011 101 Tabella 2.20. xyz f1 f2 f3 010 100 011 101 B C D E

' '
A

00 00 10 11

' '

Tabella 2.17.

Tabella 2.18.

001 010 101 110

Nella prima tabella (tabella 2.17) si elencano tutti i mintermini delle due uscite, indicando per quali uscite il valore sia 1. Si cercano poi i mintermini adiacenti, e si compie lintersezione delle corrispondenti parti duscita per creare la parte duscita del corrispondente implicante: se tale parte nulla, non si introduce in corrispondenza alcun elemento nella nuova tabella (tabella 2.18). Limplicante usato per crearne uno nuovo viene marcato se e solo se la parte di uscita del nuovo implicante identica a quella dellimplicante di partenza: cos, si marcano 000 e 001 perch limplicante di pi uscite 00 ha anchesso parte duscita 01, ma non si marca 010 perch nella creazione di 00 si ha parte di uscita 01 (quella di 010 11) e nella creazione di 10 si ha parte di uscita 10. Gli implicanti primi di pi uscite sono quindi quelli (A,B,C,D,E) indicati sulle tabelle. A questo punto, nasce il problema di identificare una copertura. Si consideri come unica cifra di merito il numero delle porte logiche necessarie; si crea una tabella di copertura in

' ' ' '

00 00 01 10

Tabella 2.21.

Si costruisca ora la tabella di copertura 2.22.

19

20

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

xyz | f1 f2 f3 000100 000010 001010 001001 010100 010001 101010 101001 110100 110001

A X X

C X

2.3 MINIMIZZAZIONE A PI LIVELLI DI RETI COMBINATORIE


Come si detto allinizio del capitolo, oggi si tende a favorire la sintesi dei circuiti combinatori mediante reti logiche a pi livelli; questo tipo di sintesi d al progettista un maggior numero di gradi di libert che pu sfruttare sia per effettuare il bilancio areatempo, sia per soddisfare ulteriori richieste (es., lesistenza di pi percorsi da un ingresso a unuscita, il limite sul numero di ingressi ad ogni singola porta, ecc.). Sono state proposte tecniche esatte di ottimizzazione a pi livelli; si tratta per di proposte relativamente vecchie (risalgono agli anni 60 e 70) e di metodologie applicabili solo a reti combinatorie dotate di particolari caratteristiche e per di pi computazionalmente inaccettabili per funzioni di complessit anche modesta. Gi per reti a componenti discreti si fatto ricorso a tecniche euristiche: una soluzione immediata per realizzare reti a pi livelli consiste nella fattorizzazione - in pratica, lapplicazione della propriet distributiva (sia da destra verso sinistra che viceversa), se del caso iterativamente. Si consideri un esempio classico (rappresentato dalla mappa di Karnaugh in figura 2.7).
zv xy

X X X X X X X X X X X

Tabella 2.22. Tabella di copertura di una funzione a tre uscite. Si verifica immediatamente che gli implicanti D ed E sono essenziali; dovranno quindi comparire in qualsiasi forma minima, rispettivamente, D di f2 ed f3 ed E di f1 ed f3. Si costruisce quindi la tabella ridotta 2.22., in cui compaiono solo i mintermini non coperti da D ed E e gli implicanti residui (A, B, C).
xyz | f1 f2 f3 000100 000010 A X X X B C X

00 1 0 1 0

01 0 1 0 1

11 1 0 1 0

10 0 1 0 1

00 01 11 10

Tabella 2.23. Tabella di copertura ridotta di una funzione a tre uscite. Si verifica che A domina sia B sia C e garantisce la copertura completa di tutti gli implicanti residui per f1 ed f2 rispettivamente; le tre uscite risultano quindi sintetizzate come: f1= A+E f2= A+D f3= D+E La funzione a tre uscite dunque sintetizzabile con tre soli implicanti. Si pu facilmente osservare che la minimizzazione individuale delle tre funzioni (basata sulluso di implicanti delle funzioni singole) avrebbe richiesto luso di quattro implicanti.

Figura 2.7. Mappa di Karnaugh di una funzione particolare. La sintesi minima a due livelli porta alla forma f= xyzv+xyzv+xyzv+xyzv+xyzv+xyzv+xyzv+xyzv e corrisponde a un circuito costituito da otto porte AND a quattro ingressi e una porta OR a otto ingressi - porte raramente disponibili in una normale libreria e certamente caratterizzate da ritardi di propagazione elevati. Si applichi ora la propriet distributiva del prodotto rispetto alla somma da destra verso sinistra (operando cio un raccoglimento a fattor comune) rispettivamente al primo e al secondo termine, raccogliendo xy, al terzo e al quarto, raccogliendo xy, e cos via: si ottiene la forma: f=xy(zv+zv)+xy(zv+zv)+xy(zv+zv)+xy(zv+zv) cui si pu applicare nuovamente la stessa propriet, raccogliendo questa volta (rispettivamente) (zv+zv) e (zv+zv) e ottenendo f= (xy+xy)(zv+zv)+(xy+xy)(zv+zv)
21 22

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

Il corrispondente circuito risulta ancor pi semplice se si ricorda che (ab+ab)=ab+ab: lo schema finale riportato in figura 2.8.
x y x y

a+bc (x+y)v+wz mentre (xy) sulla base della definizione data non una forma fattorizzata - la negazione di un prodotto non inclusa fra le possibilit prese in considerazione. Esistono algoritmi di tipo euristico che - partendo, come si detto, da una forma a due livelli, tipicamente somma di prodotti - estraggono forme fattorizzate; in genere, tali forme possono non essere ottime, nel senso che applicando ad esse ulteriori operazioni (non di fattorizzazione) possibile giungere a forme meno costose o pi veloci. Anche per quanto riguarda tali successive operazioni, gli strumenti di CAD attualmente in uso fanno tutti riferimento a metodi euristici che non garantiscono di raggiungere una soluzione ottima ma che consentono di ottenere risultati ottimali in tempi ragionevoli. Si fa lipotesi fondamentale di esaminare solamente reti prive di anelli di retroazione; con porte a una sola uscita. Le tecniche euristiche correnti partono da una prima sintesi (ottenuta, ad esempio, da una sintesi a due livelli su cui si sia operata una fattorizzazione, o dalla composizione di moduli preesistenti in libreria) e procedono su due passi successivi: 1) una prima fase di ottimizzazione in cui si ignorano i vincoli implementativi (vincoli imposti dalla libreria tecnologica usata, limiti al fan-in e fan-out ammissibile, ecc.); 2) una seconda fase in cui il risultato della fase 1) viene raffinato sulla base dei vincoli implementativi. Il risultato inevitabilmente di qualit inferiore a quello che si potrebbe ottenere considerando simultaneamente vincoli e tecniche di ottimizzazione, ma - ancora una volta - il carico computazionale inferiore. In questo corso, si considerer solamente la fase 1); la fase 2) (che comporta anche il mapping tecnologico, riferito alla specifica libreria di cui il progettista si serve, si veda il capitolo 3) pi dipendente dalla tecnologia usata, e si presta quindi meno a uno studio di base. Per procedere alla sintesi a pi livelli, occorre introdurre i modelli di cui ci si servir e le trasformazioni che si opereranno su tali modelli.

z v z v

Figura 2.8. Rete a pi livelli che realizza la funzione di figura 2.7. Il costo totale della rete ancora di nove porte logiche (e due negatori), ma tutte le porte sono a due ingressi reperibili quindi in qualsiasi libreria e con prestazioni molto migliori delle precedenti; se poi si considera il numero dei letterali presenti, la riduzione veramente drastica (da 40 a 16, tenendo in conto luso dele due espressioni negate). La tecnica di fattorizzazione applicata manualmente implica evidentemente una certa misura di intuito (o di fortuna) da parte del progettista, che deve saper scegliere nel modo migliore i termini rispetto a cui fattorizzare e lordine di applicazione della fattorizzazione; inoltre, spesso occorre procedere a una fase di espansione (ricorrendo, tipicamente, al teorema di Shannon) prima di poter fattorizzare. Occorre in genere procedere per tentativi nella ricerca - procedimento meglio applicato mediante strumenti di progettazione automatica. In genere, le forme fattorizzatevengono derivate da forme del tipo somma di prodotti; la definizione formmale - di tipo ricorsivo - di una forma fattorizzata la seguente: un prodotto pu essere o un singolo letterale o un prodotto di forme fattorizzate; una somma pu essere o un singolo letterale o una somma di forme fattorizzate; una forma fattorizzata o una somma o un prodotto. Ad esempio, forma fattorizzate sono: x abc
23

2.3.1 Modelli di rappresentazione.


I circuiti a cui ci si dedica sono, per generalit, reti a pi uscite,. Il comportamento di una generica rete con n ingressi ed m uscite rappresentabile mediante un vettore di m funzioni booleane fi definite sullinsieme di valori 0,1,-. La struttura di un circuito pu

24

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

essere rappresentata mediante una rete logica costituita da porte logiche interconnesse fra di loro; il concetto di rete logica pu in effetti essere esteso definendo la rete come interconnessione di moduli che sono a loro volta associati ad arbitrarie funzioni booleane a una sola uscita (funzioni scalari). Si pu considerare la rete logica come una struttura che collega dei comportamenti - quelli delle funzioni locali associate ai singoli nodi. Una rete logica pu poi essere rappresentata mediante un grafo orientato aciclico (DAG, Directed Acyclic Graph) G(V,E) in cui: V linsieme dei vertici o nodi, partizionato nei sottoinsiemi VI (nodi dingresso), VO (nodi di uscita) e VG (nodi interni nodi a cui associata una funzione scalare); E linsieme dei lati; A ogni nodo (e alla corrispondente funzione locale) si associa una variabile temporanea. Si considera il caso di funzioni locali a due livelli, della forma somma di prodotti. Si consideri ad esempio una rete a tre ingressi (i1,i2,i3) e due uscite primarie (o1,o2) descritta dalle seguenti equazioni: a=i1i2 c=i1+i3 b=a+ i2 d=bc o1=d o2=c La rete logica corrispondente riportata in figura 2.9.
i1 a=i1i2

Lottimizzazione a pi livelli ha lo scopo di ridurre area e ritardi del circuito; si tratta di un problema di ottimizzazione a pi obiettivi, e spesso conviene identificare dei punti di bilancio, proponendosi di minimizzare: o larea, imponendo dei vincoli sui ritardi, o il ritardo, imponendo dei vincoli sullarea. Larea - in un circuito integrato - relativa a componenti (porte logiche) e collegamenti (wiring): mentre quella delle porte definibile una volta che si conosca la libreria tecnologica, o comunque valutabile parametricamente sulla base, in particolare, del numero di ingressi, la valutazione dellarea dovuta ai collegamenti di gran lunga pi complessa; ua soluzione approssimata valuta questultima area in proporzione al numero totale di letterali presenti nella rete (si noti che - in una rete a pi livelli - si devono tenere presenti anche i letterali derivanti dai livelli intermedi). Per una rete a pi livelli, pu anche essere comodo - in prima approssimazione - valutare larea richiesta da ogni macrocella costituita da una rete a due livelli, e calcolare poi larea totale come somma delle aree parziali. Per quanto riguarda la temporizzazione, si riferisce di solito lottimnizzazione del ritardo alla minimizzazione del ritardo lungo il percorso critico, cio il percorso pi lento. Per calcolare il ritardo lungo un percorso occorre valutare sia il ritardo di propagazione relativo a ogni nodo del percorso, sia il ritardo dovuto ai segmenti di interconessione; mentre il primo abbastanza facile da calcolare, una volta nota la tecnologia ( una funzione del fanout di una porta, e tale funzione specificata dalle specifiche della libreria), per quanto riguarda il percorso stesso la valutazione precisa si pu in realt avere solo dopo che si completato il disegno fisico del circuito. Normalmente, si ricorre a una approssimazione che tiene in conto solo i ritardi dovuti ai nodi, usando poi approcci statistici per i ritardi sulle interconnessioni. Le tecniche euristiche di ottimizzazione a molti livelli operano mediante un insieme di trasformazioni che mantengono il comportamento complessivo ingresso-uscita. Le trasformazioni adottate possono essere locali o globali. Le prime modificano localmente una funzione booleana senza modificare la struttura della rete, mentre le seconde modificano anche la struttura della rete (ad esempio, fondendo due nodi e le rispettive funzioni in un solo nodo, mediante un processo di eliminazione). Le trasformazioni sono applicate a partire da una rete logica che collega funzioni locali rappresentate da espressioni logiche, eventualmente fattorizzate. Le trasformazioni modificano sia larea sia le prestazioni, poich modificano il numero dei letterali, le funzioni locali, le connessioni; per valutare le trasformazioni si utilizzano delle cifre di

i2

b=a+i2

d=bc

o1

i3

c=i1+i3

o2

Figura 2.9. DAG di una rete logica.

25

26

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

merito, in modo da rifiutare le trasformazioni non convenienti. Le trasformazioni vengono applicate in modo iterativo; il procedimento termina - e la rete viene considerata ottimale - rispetto a un insieme di trasformazioni quando nessuna ulteriore applicazione di queste la migliora. Per ogni trasformazione si definisce un algoritmo che determina dove la trasformazione pu essere applicata e termina quando nessuna trasformazione dello stesso tipo ulteriormente applicabile; gli algoritmi legati a trasformazioni diverse vengono applicati in sequenza. Inevitabilmente, sequenze diverse possono portare a soluzioni differenti: gli strumenti CAD adottano regole empiriche per superare questo problema, per esempio identificano sequenze di operazioni che statisticamente producono buoni risultati.

danno valore costante. Sweep viene richiamata ripetutamente, a valle di altre trasformazioni che potrebbero generare nodi con le caratteristiche citate. Meno immediata la eliminazione di un nodo interno di una rete logica: il nodo viene rimosso dalla rete, e la variabile corrispondente viene sostituita dalla corrispondente espressione in tutti i punti in cui compare nella rete. Lo scopo di questa trasformazione essenzialmente quella di ridurre la lunghezza di un percorso da ingresso a uscita, calcolata come numero di nodi attraversati: al limite, se applicata in modo non vincolato, porta a una rete a due livelli, collassando tutti i nodi del grafo in un unico nodo. In genere, ovviamente, si applica in modo vincolato se e solo se provoca un aumento di area inferiore a un certo limite. Un esempio di eliminazione di un nodo pu essere quello in figura 2.10.
x=je+ef j=a+b+c x=(a+b+c)e+ef

2.3.2 Modello algebrico


Si fa ricorso piuttosto che allalgebra booleana allalgebra polinomiale usando quindi un sottoinsiene delle trasformazioni booleane per semplificare la ricerca delle trasformazioni utili, anche se questo riduce la qualit del risultato. Per chiarire la differenza fra trasformazioni algebriche (polinomiali) e trasformazioni booleane, si considerino i seguenti due esempi. Esempio 1 Sia data f=a+bcd+e; introducendo il termine q=a+cd, si pu passare alla forma a pi livelli f= a+bq+e; infatti, si ha f=a+bq+e=a+ba+bcd+e= a+bcd+e grazie alla propriet di assorbimento. Questa una tipica trasformazione booleana, che non pu essere determinata usando trasformazioni polinomiali. Esempio 2 Sia data f=ka+kb+e; si pu sostituire k=q=a+b, ottenendo f=kq+e. Questa sostituzione determinabile mediante trasformazioni polinomiali. Le espressioni algebriche sono derivate dalle espressioni polinomiali considerando i cubi alla stregua di monomi e mantenendo come variabili differenti i letterali con polarit diversa (vale a dire i forma naturale piuttosto che complementata: a e a vanno tenuti distinti). Le trasformazioni algebriche si ottengono manipolando espressioni algebriche mediante lalgebra polinomiale; non si prendono in considerazione n linsieme delle condizioni dindifferenza, n specifiche propriet dellalgebra booleana quali a+a=1, a.a=0 ecc.). Detto ci, si considerano ora le trasformazioni che utilizzano la manipolazione algebrica delle espressioni. Una prima trasformazione banale adottata, ad esempio, nel programma SIS di Berkeley, la sweep, che elimina dalla rete tutti i nodi con un solo ingresso e i nodi le cui funzioni
27

y=(a+b+c)f+be y=jf+be

Figura 2.10. Esempio di applicazione dell'eliminazione di un nodo. Se come indice di costo si valuta il numero dei letterali, la rete iniziale di figura 2.10 ha un costo pari a 3 letterali per il primo nodo, quattro per il secondo e quattro per il terzo (quindi 11), mentre la rete trasformata ha un costo pari a 6+6=12; lincremento di costo contenuto (pari a 1), ma il numero di nodi stato ridotto da 3 a 2. Nel programma SIS questa operazione viene eseguita dal comando eliminate. Le altre trasformazioni sono pi complesse; utilizzare a pieno campo le possibilit offerte dalle trasformazioni booleane porterebbe a eccessiva complessit computazionale. Scomposizione (Decomposition): si sostituisce un nodo interno alla rete logica con un insieme di due o pi nodi che formano una sottorete equivalente al nodo originale: ad esempio, si consideri x=abcf+efc+de y=acef+def z=bcd+acf Una prima rete logica riportata in figura 2.11; si pu per fattorizzare la funzione x come cf(ab+e) +de, e la y come ef(ac+d); estraendo rispettivamente h=ab+e, j=ac+d si
28

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

ottiene la rete in figura 2.12.


a b c d e f bcd+acf z acef+def y abcf+cef+de x

j=acf h=de r=jb+ecf+h; x=r s=je+hf; y=s t=bcd+j; z=t giungendo alla rete di figura 2.13 il cui numero dei letterali ora 24.
a b c j=acf r=jb+ecf+h x

h=de

s=je+hf

Figura 2.11. Rete prima della decomposizione.


a b c d e f bcd+acf z j=ac+d r=jef y h=ab+e l=hcf k=l+de x

d e f t=bcd+j z

Figura 2.13. Rete dopo l'estrazione della parte comune. In sostanza, nellestrazione si estrae da un gruppo di nodi un cubo o unespressione che contiene pi cubi; lestrazione viene ripetuta fino a che possibile. Si tratta di identificare divisori comuni a due o pi espressioni; estraendolo, esso diventa un nuovo nodo della rete e ha per successori i nodi da cui proveniva. Il programma SIS realizza questa operazione con il comando fx. Semplificazione: si riduce la complessit di una funzione sfruttando le propriet della sua rappresentazione, localmente o globalmente. Nel programma SIS il comando simplify ed il comando full_simplify realizzano questa operazione. La differenza tra i due comandi va ricercata nella maggior capacit del secondo di calcolare i don't care locali ad ogni nodo. Sostituzione: si riduce la complessit di una funzione sostituendo una sottoespressione con lespressione associata a un nodo gi presente nella rete. Si accetta una sostituzione se porta a una diminuzione dei letterali (comando eliminate di SIS). Per considerare leffetto dellapplicazione delle varie propriet a un esempio pi complesso, si consideri un esempio preso da [De Micheli], relativo a una rete a cinque ingressi e quattro uscite:

Figura 2.12. Rete dopo la decomposizione. Una ragione per la scomposizione quella di passare da nodi con funzioni complesse a nodi con funzioni pi semplici che possono essere pi facilmente minimizzati. Si pu notare inoltre che nel particolare esempio si anche ridotto (da 28 a 26) il numero totale dei letterali. Il programma SIS realizza questa funzionalit con il comando resub. Estrazione (Extraction): si pu trovare una sottoespressione comune di due funzioni associata due nodi diversi; estraendola, e creando un nuovo nodo, si pu giungere a una semplificazione della rete. Si faccia riferimento allo stesso esempio; si pu osservare che la sottoespressione acf comune a tutte e tre le funzioni, mentre de comune a x e y. Estraendole, si possono riscrivere le tre funzioni come:
29

30

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

p=ce+de q=a+b r=p+a s=r+b t=ac+ad+bc+bd+e u=qc+qc+qc v=ad+bd+cd+ae w=v x=s y=t z=u La rete logica corrispondente riportata in figura 2.14.
a v=ad+bd+cd+ae w

w=v x=s y=t z=u cui corrisponde la rete logica in figura 2.15 (anche qui, il numero totale dei letterali diminuito passando da 33 a 20).
a j=a+b+c v=jd+ae w

q=a+b

x s=ke+a+b y u=q+c

c d

k=c+d

e b c q=a+b d u=qc+qc+qc z p=ce+de r=p+a s=r+b x

t=kq+e

Figura 2.15. Risultato delle trasformazioni applicate alle rete di figura 2.14. Come si accennato, il problema di un approccio basato su trasformazioni che applicando sequenze diverse di trasformazioni si possono raggiungere risultati diversi in altre parole, si possono raggiungere diversi ottimi locali relativamente alla sintesi del circuito dato. Questo pu facilmente impedire di raggiungere lottimo globale. Diventano quindi delicate la scelta e lordine di applicazione delle trasformazioni; le soluzioni algoritmiche adottate nella maggior parte degli strumenti CAD definiscono un algoritmo per ogni tipo di trasformazione, e questi identifica quando e dove applicare la trasformazione stessa (terminando quando ulteriori applicazioni non porterebbero a miglioramenti).

t=ac+ad+bc+bd+e

Figura 2.14. Esempio di rete per l'applicazione delle trasformazioni. Lapplicazione delle varie trasformazioni porta a creare la seguente rete: j=a+b+c k=c+d q=a+b s=ke+a+b t=kq+e u=q+c v=jd+ae

2.3.3 Trasformazioni booleane


In questo tipo di modello, si fa pieno uso della logica booleana; a ogni nodo si associa quindi non solo la funzione booleana locale, ma anche un insieme di condizioni di indifferenza locali. La trasformazione fondamentale; se le funzioni locali sono espresse come somme di prodotti, si pu anche ricorrere a tecniche esatte di ottimizzazione , con qualche variante (ad esempio, sostituendo il numero di letterali al numero delle porte

31

32

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

come criterio di ottimizzazione). In genere, le condizioni di indiffereneza derivano dal fatto che la rete booleana che si vuole progettare inserita in un ambiente descrivibile mediante le configurazioni dingresso e di uscita specifiche del progetto; si tratta di condizioni di indifferenza esterne ( dovute, appunto, allambiente) costituite da una componente di controllabilit e una di osservabilit, definite come segue: Insieme delle condizioni di indifferenza di controllabilit in ingresso: include tutte le configurazioni dingresso che non vengono mai prodotte dallambiente e quindi non vengono mai presentate agli ingressi primari. (linsieme viene indicato con la sigla CDCin). Insieme delle condizioni di indifferenza di osservabilit in uscita: include tutte le configurazioni dingresso corrispondenti a situazioni in cui luscita non verr osservata dallambiente (linsieme viene indicato con la sigla ODCout: rappresentato da un vettore con tanti elementi quante sono le uscite primarie no, e ogni elemento indica quando unuscita primaria non viene osservata). Linsieme complessivo delle condizioni dindifferenza esterne costituito da DCext = CDCin ODCout: anche CDCin un vettore di no elementi, dato che le condizioni dindifferenza di controllabilit agli ingressi devono a loro volta essere correlate alle uscite. Si consideri ad esempio la rete in figura 2.16, in cui un circuito combinatorio R1 riceve quattro ingressi x1, x2, x3, x4 da un decodificatore con ingressi a, b: data la funzione del decodificatore, ad ogni istante uno e uno solo degli ingressi di R1 avr valore 1, mentre gli altri tre varranno 0. In altre parole, nessuna configurazione dingresso che contenga meno o pi di un 1 ammissibile. Si pu quindi elencare linsieme di condizioni di indifferenza di controllabilit in ingresso con lespressione CDCin= x1 x2 x3 x4+ x1 x2+ x1 x3+ x1 x4+ x2 x3+ x2 x4+ x3 x4
a dec. b x1 x2 x3 x4 R1 y1 y2 z1 z2 R3

relativamente alle uscite z1 e z2 quando x4 vale 0. Si pu quindi dire che le condizioni dindifferenza di osservabilit per le uscite y1 e y2 corrispondono a x1 e per z1 e z2 a x4. Ci si pu riassumere, relativamente alle quattro uscite della retet R1, col vettore di ODCout:
x1 x1 x4 x4

ODCout =

A questo punto, linsieme complessivo di condizioni di indifferenza esterne diventa:


x1+ x2+ x3+ x4 x1+ x2+ x3+ x4 x4+ x2+ x3+ x1 x4+ x2+ x3+ x1

Dcext = CDCin + ODCout = chiaro che in un circuito logico gi sintetizzato non possono essere presenti condizioni dindifferenza intrinseche; queste possono nascere solo dallambiente, cio dai circuiti che sono collegati in ingresso o in uscita alla rete data. Allo stesso modo si pu ragionare per le diverse parti interconnesse a costituire una rete logica; per ogni nodo della rete si possono determinare insiemi locali di condizioni di indifferenza. Si consideri la rete logica in figura 2.17.

x=a+b

R2

y=abx+acx

Figura 2.16. Rete composta da moduli interagenti. Figura 2.17. Rete composta da moduli interagenti. Si consideri ora la rete R2: la sua uscita in AND con la variabile x1: quindi, i valori di y1 e y2 sono indifferenti se x1 vale 0; un discorso perfettamente analogo riguarda la rete R3,
33

Dove sia x=a+b e y=abx+acx . Si osserva immediatamente che x non una variabile
34

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

indipendente - quindi, in patticolare, non potr mai essere xa+b. Se inizialmente si pu rappresentare y con la seguente mappa di Karnaugh:
ab cx

00 0 0 1 0

01 0 0 1 0

11 0 1 1 0

10 0 0 0 0

00 01 11 10

lidentificazione del vincolo su x permette di calcolare CDC=x(a+b)=xa+xb+xab e quindi di passare alla nuova mappa di Karnaugh:
ab cx

la rete non potr mai produrre - indicato anche come linsieme di condizioni dindifferenza di controllabilit in uscita, CDCout. In modo analogo, si possono calcolare gli insiemi di condizioni dindifferenza di controllabilit in ingresso a ogni nodo interno alla rete, cio i CDCinterni. (Val la pena di osservare che il complemento di CDCout corrisponde allinsieme di tutte le configurazioni di uscita che la rete effettivamente produrr in corrispondenza a tutti i vettori dingresso ammissibili - che a loro volta sono il complemento di CDCin: in termini matematici, (CDCout.) costituisce limmagine di (CDCin)). Sono stati proposti vari algoritmi per il calcolo di CDCout, i pi importanti dei quali si basano, rispettivamente, sullattraversamento della rete logica calcolando i vari insiemi di condizioni di indifferenza associati a successivi tagli della rete stessa, e rispettivamente sul calcolo dellimmagine. Pi complesso il calcolodegli ODC, a parte quelli esterni imposti dallambiente. Qui ci si limita a unanalisi superficiale: in parole molto semplici, si pu osservare che si genera una condizione dindifferenza di osservabilit ogni volta che un ingresso a una porta logica assume un valore controllante - tale cio da stabilire il valore delluscita qualunque sia la configurazione di valori presente sugli altri ingressi. facile verificare che per le principali porte logiche i valori controllanti sono definiti dalla seguente tabella:
porta logica valore controllante 0 1 0 1

00 0 1 -

01 0 1 -

11 1 1 -

10 0 0

00 01 11 10

il che porta a semplificare y=ax+cx. La relazione mediante cui si calcolato il CDC formalizza la semplice constatazione che luscita di una funzione non pu mai ssere diversa dalla valutazione della funzione stessa; in sostanza, rappresenta il soddisfacimento di questa ovvia condizione. Per lintera rete, G(V,E), si pu calcolare linsieme di soddisfacibilit come SDC = x f
vx V x

AND OR NAND NOR

dove x luscita del generico nodo vx, fx la funzione che genera x e la condizione di soddisfacibilit viene valutata per tutti i nodi della rete. Per la rete nellesempio di figura 2.17, SDC=x(a+b)+ y(abx+acx) = xa+xb+xab+yabx+yacx+yac+yba+ybc+yx (linterpretazione di unespressione come questa si riduce a imporre x non pu valere 0 quando a vale 0, oppure y non pu valere 1 quando x vale 0 ecc.). Quando si semplificano i nodi interni di una rete logica mediante algoritmi di minimizzazione a due livelli, spesso si usano semplicemente gli insiemi di SDC. Una volta noti i vettori dingresso alla rete che lambiente non produrr mai (CDCin) e linsieme di soddisfacibilit SDC, si pu anche calcolare linsieme dei vettori duscita che

Se un ingresso assume valore controllante, i valori degli altri ingressi diventano in pratica condizioni di indifferenza (si era sfruttata questa considerazione nellesame dellesempio in figura 2.16). Si supponga ora di voler minimizzare una rete logica a pi livelli la cui uscita F generata da una porta logica OR, indicata come nodo j, che riceve in ingresso due variabili intermedie y1 e y2, e si voglia minimizzare la funzione locale che genera y2:oltre alle condizioni di soddisfacibilit riguardanti y2, si deve tener conto anche del fatto che il valore della y2 stessa indifferente quando y1 vale 1. Si supponga ad esempio che sia: y1=xw y2=x+y F=y1+y2 Le SDC per y2 sono date da

35

36

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

SDCy2 = y2(x+y) = y2xy+y2x+y2y In base alle osservazioni appena fate, si pu scrivere ODCy2=(y1=1). A questo punto, la funzione y2 pu essere rappresentata mediante la seguente tabella delle verit:
w x y y1 y2

w x y x

y1

y3

y2

1 -

1 0 1 -

0 1

1 -

1 0 1 Figura 2.18. Rete di esempio per il calcolo di ODC. Si calcola SDCy1 = y1wx=y1w+y1x+y1wx; per quanto riguarda linsieme ODC, si devono per ora considerare due termini. Da un lato, per , si devono per ora considerare due termini. Da un lato, per y2=0 il valore di y1 inessenziale; daltra parte, per y=1 il valore di F non dipende n da y1 n da y2. Occorre quindi tenere in considerazione tutti i motivi per cui pu accadere che il valore del nodo in esame non influenzi il valore delluscita primaria. Lanalisi porta a calcolare ODCy1=y+y2 = x+y. Si verifica che wx ODCy1 - quindi lintero y1 risulta ridondante. Esistono metodi rigorosi per calcolare gli ODC; sebbene facilmente traducibili in termini algoritmici, possono per risultare computazionalmente molto pesanti se applicati a tutti i nodi di una rete logica, particolarmente quando si trattano reti con un numero di livelli molto elevato e si considerano nodi molto profondi nella rete. I programmi di CAD di solito selezionano un sottoinsieme di nodi che per qualche motivo si giudicano significativi e operano la riduzione solo nei riguardi di tali nodi.

che consente la minimizzazione y2=x+y; in modo analogo, si minimizza y1=w. A questo punto si pu applicare la trasformazione sweep discussa in precedenza, e ricondursi quindi alla funzione semplificata y2=x+y F=w+y2 Si consideri una funzione leggermente diversa, definita da: y1=xw y2=x+y F=y1y2 Questa volta, anche se gli SDC sono gli stessi di prima, la porta finale un EXOR che non ha valori controllanti; per questo nodo non ci sono cio ODC. La minimizzazione di y2 non pi possibile. Si consideri ora la rete logica espressa da: y1=wx y2=x+y y3=y1y2 F=y3+y e rappresentata in figura 2.18.

2.3.4 Rappresentazione mediante SIS


Tutte le trasformazioni algebriche e booleana appena descritte trovano un corrispondente comando all'interno di SIS poich sono state sviluppate a cavallo tra gli anni 80 e 90 proprio utilizzando SIS come ambiente comune per la ricerca. Come gi stato accennato, la difficolt maggiore nell'applicare questi algoritmi riguarda il loro ordinamento e la loro applicazione ripetuta alla ricerca di un ottimo locale il pi possibile vicino all'ottimo globale. Per facilitare l'uso di questi comandi SIS utilizza il concetto di script, ossia di sequenza preordinata di comandi eseguibile come un'unica operazione con il comando source. Lo script pi efficace disponibile in SIS lo script.rugged che itera l'applicazione di algoritmi algebrici di ristrutturazione della rete ad algoritmi booleani di minimizzazione dei nodi cos identificati. Applichiamo questo script alla rete di figura 2.14. innanzitutto necessario descrivere questa rete in formato .blif verificandone l'esatta rappresentazione.

37

38

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

.model rete5in4out .inputs a b c d e .outputs w x z y .names c e d p 11- 1 -11 1 .names a b q 1- 1 -1 1 .names p a r 1- 1 -0 1

.names r b s 1- 1 -0 1 .names a c d b e t 11--- 1 1-1-- 1 -1-1- 1 --11- 1 ----1 1 .names q c u 01 1 10 1 11 1

.names a d b c e v 01--- 1 -11-- 1 -1-0- 1 1---1 1 .names 1 1 .names 1 1 .names 1 1 .names 1 1 .end v w s x t y u z

cui il nodo stato sostituito in tutti i suoi fanout. Se un nodo usato una sola volta il suo guadagno -1. In questo caso vengono quindi eliminati tutti i nodi che sono usati una sola volta.
simplify -m nocomp rete5in4out pi= 5 lits(sop)= 23 po= 4 nodes= 5 latches= 0

semplifica tutti i nodi della rete usando una minimizzazione alla ESPRESSO basata anche sul calcolo dei don't care set.
eliminate -1; sweep rete5in4out pi= 5 lits(sop)= 23 rete5in4out pi= 5 lits(sop)= 23 eliminate 5 rete5in4out lits(sop)= 26 pi= 5 po= 4 po= 4 nodes= nodes= 5 5 latches= 0 latches= 0

Un metodo efficace per verificare la correttezza della descrizione in formato .blif consiste nel caricare il file rete5in4out.blif in SIS e stamparne le equazioni confrontandole con quelle presenti in figura 2.14. Si ottiene:
sis> read_blif rete5in4out.blif sis> print_stats rete5in4out pi= 5 po= 4 nodes= lits(sop)= 33 sis> write_eqn INORDER = a b c d e; OUTORDER = w x z y; p q r x y z w = = = = = = = e*d + c*e; b + a; !a + p; !b + r; d*b + c*b + a*d + a*c + e; q*!c + !q*c + q*c; a*e + d*!c + d*b + !a*d; 7 latches= 0

po= 4

nodes=

latches= 0

simplify -m nocomp rete5in4out pi= 5 lits(sop)= 26 resub -a rete5in4out lits(sop)= 26 pi= 5

po= 4

nodes=

latches= 0

po= 4

nodes=

latches= 0

sostituisce ogni nodo della rete negli altri, applicando una divisione algebrica, finch non si verificano ulteriori cambiamenti.
fx rete5in4out lits(sop)= 21 pi= 5 po= 4 nodes= 6 latches= 0

Queste equazioni, a meno della sostituzione delle variabili uguali, corrispondono a quelle riportate in figura 2.14. Si applichi ora lo script.rugged evidenziando i comandi in esso contenuti (source -x) e facendo stampare automaticamente il risultato del comando sulla rete (set autoexec print_stats). Si ottiene:
sis> set autoexec print_stats rete5in4out pi= 5 po= 4 lits(sop)= 33 sis> source -x script.rugged sweep rete5in4out lits(sop)= 33 pi= 5 po= 4 nodes= 7 latches= 0 nodes= 7 latches= 0

ricerca in maniera greedy il cubo singolo e doppio che sia miglior divisore di tutti gli altri cubi.
resub -a; sweep rete5in4out pi= 5 lits(sop)= 21 rete5in4out pi= 5 lits(sop)= 21 eliminate -1; sweep rete5in4out pi= 5 lits(sop)= 21 rete5in4out pi= 5 lits(sop)= 21 po= 4 po= 4 nodes= nodes= 6 6 latches= 0 latches= 0

po= 4 po= 4

nodes= nodes=

6 6

latches= 0 latches= 0

elimina tutti i nodi non usati e sostituisce le costanti ed i nodi con un solo ingresso all'interno dei nodi che li usano; in questo caso non ci sono modifiche.
eliminate -1 rete5in4out lits(sop)= 31 pi= 5 po= 4 nodes= 5 latches= 0

full_simplify -m nocomp rete5in4out pi= 5 po= 4 lits(sop)= 21

nodes=

latches= 0

minimizza tutti i nodi della rete alla ESPRESSO usando i don't care locali di ingresso e uscita calcolati per ogni nodo.
sis> write_eqn INORDER = a b c d e; OUTORDER = w x z y;

elimina tutti i nodi della rete che permettono un guadagno superiore o uguale alla soglia. Il guadagno dato dalla differenza in letterali tra la rete in presenza del nodo e la rete in

40

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

x = y = z = w = [4] [5]

e*[4] + !b + !a; [4]*[5] + e; [5] + c; a*e + d*!c + d*b + !a*d; = d + c; = b + a;

Il risultato ottenuto praticamente identico a quello mostrato in figura 2.15 e ottenuto applicando manualmente gli algoritmi presentati. L'unica differenza riguarda la mancata fattorizzazione di j=a+b+c nel calcolo di w. Infatti, questa ulteriore fattorizzazione avrebbe fatto risparmiare un letterale, ma avrebbe (come mostrato in figura 2.15) aggiunto un nodo alla rete e l'algoritmo fx non ha ritenuto favorevole questa operazione. Applicando nuovamente lo script.rugged non si ottengono ulteriori ottimizzazioni facendo cos pensare che il minimo locale raggiunto sia stabile.

istante data-ready, cio la stima dellistante in cui il segnale che esso genera diventa stabile; il tempo di arrivo ai terminali dingresso primari indica listante in cui i segnali dingresso sono stabili, e viene normalmente posto a zero. Una soluzione relativamente semplice consiste nel calcolare i tempi di arrivo solo sulla base della topologia della rete logica, cio considerando solo i percorsi di propagazione e ignorando il fatto che particolari combinazioni dei valori agli ingressi dei nodi precludano la propagazione delle variazioni di segnale attraverso i nodi stessi. Di conseguenza, listante data-ready alluscita di un nodo non che la somma fra listante data-ready del pi lnto fra gli ingressi del nodo e il ritardo di propagazione del nodo stesso. Ogni terminale di uscita primario dipende esattamente da un nodo interno; al terminale si pu associare un ritardo di propagazione per modellare caratteristiche della porta di uscita. Se per qualsiasi nodo viV si indica con di il ritardo di propagazione e con ti listante di data-ready, si pu esprimere dunque ti = d i +
j :( v j ,v V )i

2.4 LA VALUTAZIONE DEI RITARDI


Si tratta, come si gi indicato, di un problema molto complesso. Se la rete che si progettata vincolata - se cio i nodi della rete corrsipondono tutti a ben precise celle di libreria - la valutazione i facile; a ogni cella associato un ritardo noto, altri ritardi di propagazione sono legati al carico delle celle stesse (valutabile sulla base del fan-out di ogni cella) e quindi un calcolo pu essere fatto con discreta approssimazione (manca, naturalmente, la valutazione definitiva legata al layout vero e proprio). Nel caso per che si consideraton in questo capitolo, di reti per cui si compie unottimizzazione abbastanza generica, senza vincoli precisi sulle singole celle, la valutazione meno immediata. Lo schema pi banale, utilizzato peraltro molto spesso (soprattutto finch si sono utilizzati componenti a piccola integrazione) si limita ad associare un ritardo unitario a ogni livello di porte logiche. Con maggior cautela, si ricorre a volte a una stima del caso pessimo: si calcolano i ritardi di propagazione nella rete logica facendo riferimento alle condizioni pessime di funzionamento (temperatura, livelli di alimentazione, anche carico per le singole porte), in base al concetto che il ritardo effettivo in funzionamento non potr superare quello calcolato, che pu essere visto come un limite superiore. Con questo approccio evidentemente facile che il progetto non sfrutti al meglio le potenzialit della tecnologia; peraltro, una stima troppo ottimistica dei ritardi pu condurre a circuiti che non funzionano correttamente. Si supppone di conoscere per ogni nodo della rete il ritardo di propagazione - che sar indicato con un numero positivo. A ogni nodo si assegna anche un tempo di arrivo, o

max t j

Gli istanti data-ready possono essere calcvolati per tutti i nodi attraversando la rete logica data in un tempo proporzionale al numero di nodi e di lati nella rete. Listante data-ready massimo si valuta su unuscita primaria e costituisce il ritardo topologico critio della rete; esso corrisponde al peso associato al pi lungo percorso nella rete, se per peso si indica il ritardo di propagazione associato a un nodo. Tale percorso viene a sua volta indicato come percorso topologico critico. Si consideri la rete logica in figura 2.19.

41

42

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

quelli richiesti e si procede allindietro calcolando mano a mano le differenze per tutti i nodi (in questo caso, t i = min t j d j ).
j :( vi ,vj E )

Anche questo problema viene risolto introducendo opportune trasformazioni sulla rete e applicandole con algoritmi di tipo euristico.

2.4.1 Rappresentazione mediante SIS


3 5 2 SIS mette a disposizione alcuni comandi per l'analisi e la ristrutturazione di una rete in funzione dei ritardi. Innanzi tutto, per valutare il massimo ritardo, associato al percorso topologico critico, si pu utilizzare il comando print_delay che calcola i ritado di propagazione di tutti i segnali di uscita. Per calcolare questo ritardo in maniera accurata necessario associare un ritardo reale ai nodi della rete. Una prima opzione quella di associare i nodi della rete a delle porte reali di una libreria tecnologica (si veda il Capitolo 3). In alternativa si pu ottenere una stima affidabile del ritardo reale di un nodo, descritto in somma di prodotti, utilizzando i ritardi delle sole porte AND, OR e NOT presenti in una libreria di riferimento. Si applichi questo secondo metodo al circuito ottimizzato di figura 2.14 prima e dopo la minimizzazione logica.
sis> read_library mcnc.genlib

6 Figura 2.19. Rete di esempio per l'analisi dei ritardi. Siano gli istanti data-ready agli ingressi primari ta=0, tb=10i ritardi di propagazione dei nodi interni siano dg=3, dh=8, dm=1, dk=10, dl=3, dn=5, v dp=2, dx=2, dy=3. Gli istanti data-ready si valutano allora come segue: tg= 0+3=3; th= 3+8=11; tk= 3+10=13; tn= 10+5=15; tp= 15+2=17; tl= max [17,13]+3=20; tm= max [3, 11,20]+1=21; tx= 2+21=23; tq= 20+2=22; ty= 22+3=25. Il tempo massimo ty=25, il percorso topologico critico dato dalla sequenza di nodi b, n, p, l, q, y. Il problema della ottimizzazione dei ritardi (timing optimization) per le reti a pi livelli pu essere visto come la necessit di ristrutturare la rete stessa in modo da soddisfare i vincoli temporali imposto per le uscite primarie. Normalmente, si definiscono dei tempi di arrivo richiesti alle uscite primarie, si calcola la differenza fra i tempi di arrivo reali e
43

viene caricata una libreria tecnologica di riferimento (si veda il Capitolo 3).
sis> read_blif rete5in4out.blif sis> print_delay -m mapped network not mapped, using mapped delay model a : arrival=( 0.00 0.00) required=( 2.30 2.30) b : arrival=( 0.00 0.00) required=( 2.30 2.30) c : arrival=( 0.00 0.00) required=(-0.00 -0.00) d : arrival=( 0.00 0.00) required=(-0.00 -0.00) e : arrival=( 0.00 0.00) required=(-0.00 -0.00) p : arrival=( 3.70 3.70) required=( 3.70 3.70) q : arrival=( 3.20 3.20) required=( 5.50 5.50) r : arrival=( 6.50 6.50) required=( 6.50 6.50) {x} : arrival=( 9.20 9.20) required=( 9.20 9.20) {y} : arrival=( 3.90 3.90) required=( 9.20 9.20) {z} : arrival=( 6.90 6.90) required=( 9.20 9.20) {w} : arrival=( 6.60 6.60) required=( 9.20 9.20)

slack=( 2.30 slack=( 2.30 slack=(-0.00 slack=(-0.00 slack=(-0.00 slack=(-0.00 slack=( 2.30 slack=(-0.00 slack=( 0.00 slack=( 5.30 slack=( 2.30 slack=( 2.60

2.30) 2.30) -0.00) -0.00) -0.00) -0.00) 2.30) -0.00) 0.00) 5.30) 2.30) 2.60)

Si noti come il cammino pi lento sia associato alla generazione del segnale x. Dopo la minimizzazione logica (rete in figura 2.15) si ottiene:
sis> print_stats rete5in4out pi= 5 po= 4 nodes= lits(sop)= 21 sis> print_delay -m mapped network not mapped, using mapped delay a : arrival=( 0.00 0.00) required=( b : arrival=( 0.00 0.00) required=( c : arrival=( 0.00 0.00) required=( d : arrival=( 0.00 0.00) required=( e : arrival=( 0.00 0.00) required=( {x} : arrival=( 6.30 6.30) required=( {y} : arrival=( 6.90 6.90) required=( 6 latches= 0

model 0.00 0.00 0.00 0.00 2.90 6.90 6.90

0.00) 0.00) 0.00) 0.00) 2.90) 6.90) 6.90)

slack=( slack=( slack=( slack=( slack=( slack=( slack=(

0.00 0.00 0.00 0.00 2.90 0.60 0.00

0.00) 0.00) 0.00) 0.00) 2.90) 0.60) 0.00)

44

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

{z} : {w} : [483] [484]

arrival=( 6.40 6.40) required=( 6.90 6.90) slack=( 0.50 0.50) arrival=( 6.60 6.60) required=( 6.90 6.90) slack=( 0.30 0.30) : arrival=( 3.30 3.30) required=( 3.30 3.30) slack=( 0.00 0.00) : arrival=( 3.30 3.30) required=( 3.30 3.30) slack=( 0.00 0.00)

Si pu vedere come il ritardo massimo sia sceso, si pu per pensare di ristrutturare la rete in funzione di ridurre la lunghezza dei cammini critici. Il comando reduce_depth esegue questa operazione.
sis> reduce_depth sis> print_delay -m mapped network not mapped, using mapped delay a : arrival=( 0.00 0.00) required=( b : arrival=( 0.00 0.00) required=( c : arrival=( 0.00 0.00) required=( d : arrival=( 0.00 0.00) required=( e : arrival=( 0.00 0.00) required=( {x} : arrival=( 3.80 3.80) required=( {y} : arrival=( 3.90 3.90) required=( {z} : arrival=( 4.70 4.70) required=( {w} : arrival=( 6.60 6.60) required=( sis> print_stats rete5in4out pi= 5 lits(sop)= 26 po= 4 nodes= model 1.10 0.00 1.20 2.60 2.60 6.60 6.60 6.60 6.60 4

1.10) 0.00) 1.20) 2.60) 2.60) 6.60) 6.60) 6.60) 6.60)

slack=( slack=( slack=( slack=( slack=( slack=( slack=( slack=( slack=(

1.10 0.00 1.20 2.60 2.60 2.80 2.70 1.90 0.00

1.10) 0.00) 1.20) 2.60) 2.60) 2.80) 2.70) 1.90) 0.00)

latches= 0

sis> write_eqn INORDER = a b c d e; OUTORDER = w x z y; x = d*e + c*e + !b + !a; y = b*d + a*d + b*c + a*c + e; z = c + b + a; w = a*e + d*!c + d*b + !a*d;

Il ritardo massimo diminuito a fronte per di una ridondanza del circuito (si confronti la figura 2.15) dovuta alla replicazione di logica necessaria a diminuire i livelli, e quindi i ritardi, della rete. Questo esempio una ulteriore conferma della correttezza della curva di ottimizzazione area/ritardo presentata in figura 2.1. L'applicazione del comando reduce_depth pu essere vista come lo spostamento dal punto C al punto B del grafico.

45

Potrebbero piacerti anche