23
2 L’OTTIMIZZAZIONE DELLE RETI COMBINATORIE 2 L’OTTIMIZZAZIONE DELLE RETI COMBINATORIE 1 2.1 INTRODUZIONE.................................................................................................................... 2 2.2 MINIMIZZAZIONE A DUE LIVELLI DI RETI COMBINATORIE AD UNA USCITA ................... 4 2.2.1 METODO DI QUINE-MCCLUSKEY................................................................................... 5 2.2.2 RAPPRESENTAZIONE MEDIANTE SIS ............................................................................ 13 2.3 MINIMIZZAZIONE A DUE LIVELLI DI RETI COMBINATORIE A PIÙ USCITE ..................... 16 2.3.1 METODO DI QUINE-MCCLUSKEY PER FUNZIONI A PIÙ USCITE .................................... 17 2.4 MINIMIZZAZIONE A PIÙ LIVELLI DI RETI COMBINATORIE ............................................. 22 2.4.1 MODELLI DI RAPPRESENTAZIONE................................................................................. 24 2.4.2 MODELLO ALGEBRICO.................................................................................................. 27 2.4.3 TRASFORMAZIONI BOOLEANE...................................................................................... 32 2.4.4 RAPPRESENTAZIONE MEDIANTE SIS ............................................................................ 38 2.5 LA VALUTAZIONE DEI RITARDI ........................................................................................ 41 2.5.1 RAPPRESENTAZIONE MEDIANTE SIS ............................................................................ 43 Franco Fummi Università di Verona Mariagiovanna Sami Politecnico di Milano 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. Febbraio 2000 L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE 2 2.1 INTRODUZIONE L’ottimizzazione 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 l’area occupata dal circuito (di solito valutata approssimativamente riferendosi al numero di porte logiche e/o al numero di letterali presenti nell’espressione cui il circuito corrisponde) e il ritardo di propagazione, valutato fra l’istante in cui si presenta un evento, cioè una variazione di valore a un ingresso, e l’istante in cui la risposta all’evento appare manifesta all’uscita. Altri parametri possono essere la potenza dissipata dal circuito, la facilità di operare il collaudo dello stesso, o la rispondenza a vincoli specifici posti dall’uso di particolari tecnologie. Riferendosi ai soli parametri area-tempo, idealmente i progetti che corrispondono a un bilancio ottimo si trovano su un’iperbole (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 l’altro 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). C B ritardo area A 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).

Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

2 L’OTTIMIZZAZIONE DELLE RETI COMBINATORIE

2 L’OTTIMIZZAZIONE DELLE RETI COMBINATORIE 1

2.1 INTRODUZIONE ....................................................................................................................2

2.2 MINIMIZZAZIONE A DUE LIVELLI DI RETI COMBINATORIE AD UNA USCITA ...................4

2.2.1 METODO DI QUINE-MCCLUSKEY...................................................................................5

2.2.2 RAPPRESENTAZIONE MEDIANTE SIS ............................................................................13

2.3 MINIMIZZAZIONE A DUE LIVELLI DI RETI COMBINATORIE A PIÙ USCITE .....................16

2.3.1 METODO DI QUINE-MCCLUSKEY PER FUNZIONI A PIÙ USCITE....................................17

2.4 MINIMIZZAZIONE A PIÙ LIVELLI DI RETI COMBINATORIE .............................................22

2.4.1 MODELLI DI RAPPRESENTAZIONE.................................................................................24

2.4.2 MODELLO ALGEBRICO..................................................................................................27

2.4.3 TRASFORMAZIONI BOOLEANE......................................................................................32

2.4.4 RAPPRESENTAZIONE MEDIANTE SIS ............................................................................38

2.5 LA VALUTAZIONE DEI RITARDI ........................................................................................41

2.5.1 RAPPRESENTAZIONE MEDIANTE SIS ............................................................................43

Franco FummiUniversità di Verona

Mariagiovanna SamiPolitecnico di Milano

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

Febbraio 2000

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

2

2.1 INTRODUZIONE

L’ottimizzazione 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 l’area occupata dal circuito (di solito

valutata approssimativamente riferendosi al numero di porte logiche e/o al numero di

letterali presenti nell’espressione cui il circuito corrisponde) e il ritardo di propagazione,

valutato fra l’istante in cui si presenta un evento, cioè una variazione di valore a un

ingresso, e l’istante in cui la risposta all’evento appare manifesta all’uscita. Altri

parametri possono essere la potenza dissipata dal circuito, la facilità di operare il collaudo

dello stesso, o la rispondenza a vincoli specifici posti dall’uso di particolari tecnologie.

Riferendosi ai soli parametri area-tempo, idealmente i progetti che corrispondono a un

bilancio ottimo si trovano su un’iperbole (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 l’altro 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).

C

B

ritardo

area

A

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).

Page 2: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

3

Si considerino dapprima reti combinatorie a una sola uscite. Una generica rete

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

dell’uscita sia specificato per ogni configurazione degli ingressi).

• Si indica con letterale una variabile, sia essa in forma naturale o in forma

complementata; le variabili d’ingresso 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=xia…xk

a (dove

l’insieme di indici i…k è compreso in, o coincide con, l’insieme 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 d’ingresso compaiono

nell’implicante, 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 d’ingresso 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)

dall’implicante 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.

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

4

����� ���� ���� �����

������ ���������������� �����

����� ��������������������� �����

������ ������ ������ �����

[\

]Y�� �� �� ��

��

��

��

��

Figura 2.2. Esempio di mappa di Karnaugh.

Gli implicanti primi sono yz’, xz’, z’v, yv’, x’y’z’; di questi, solo yv’, x’y’v e xz’ sono

essenziali - il primo perché è l’unico che copre gli 1 xyvz=0110 e 1110, il secondo perché

è l’unico che copre 0011, il terzo perché è l’unico che copre 1000; tutti gli altri 1 della

funzione sono coperti da almeno due implicanti primi.

2.2 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 siparla di implicati, corrispondenti a sottocubi costituiti da soli “0” della funzione.

Page 3: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

5

subottime che - in genere - approssimano in modo soddisfacente l’ottimo globale.

2.2.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 y z v f

0 0 0 0 0

0 0 0 1 1

0 0 1 0 0

0 0 1 1 0

0 1 0 0 1

0 1 0 1 1

0 1 1 0 1

0 1 1 1 1

1 0 0 0 0

1 0 0 1 1

1 0 1 0 0

1 0 1 1 1

1 1 0 0 0

1 1 0 1 0

1 1 1 0 1

1 1 1 1 1

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 d’ingresso, e nel riportare (per ogni

sottoinsieme) solamente le configurazioni per cui l’uscita vale 1 (vedi tabella 2.2).

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

6

mi x y z v

1 0 0 0 1 ∨

4 0 1 0 0 ∨

5 0 1 0 1 ∨

6 0 1 1 0 ∨

9 1 0 0 1 ∨

7 0 1 1 1 ∨

11 1 0 1 1 ∨

14 1 1 1 0 ∨

15 1 1 1 1 ∨

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 è l’unica variabile che cambia valore; l’algebra 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.

2 Con il simbolo - si indica qui la condizione di indifferenza (don’t care).

Page 4: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

7

{m1…mn} x y z v {m1…mn} x y z v

1,5 0 - 0 1 A 4,5,6,7 0 1 - - E

1,9 - 0 0 1 B 6,7,14,15 - 1 1 - F

4,5 0 1 0 - ∨

4,6 0 1 - 0 ∨

5,7 0 1 - 1 ∨

6,7 0 1 1 - ∨

6,14 - 1 1 0 ∨

9,11 1 0 - 1 C

7,15 - 1 1 1 ∨

11,15 1 - 1 1 D

14,15 1 1 1 - ∨

Tabella 2.3. Secondo passo dell'algo-ritmo di Quine-McCluskey.

Tabella 2.4. Terzo passo dell'algo-ritmo di Quine-McCluskey.

L’analisi 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 anch’esse

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 l’insieme di tutti e

soli gli implicanti primi della funzione data (che vengono etichettati con lettere

dell’alfabeto, come indicato nelle tabelle).

Si è così completata la prima fase indicata per un algoritmo di minimizzazione esatta a

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

8

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 l’implicante α copre il mintermine i (se cioè il mintermine i è fra quelli che hanno

originato α).

xyzv A B C D E F

0001 X X

0100* X

0101 X X

0110 X X

0111 X X

1001 X X

1011 X X

1110* X

1111 X X

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 è l’unico 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 A B C D E F

0001 X X

1001 X X

1011 X X

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

Page 5: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

9

(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 l’implicante associato alla colonna B (dominante) copre tutti i mintermini

coperti dall’implicante A, più almeno uno; in altre parole, scegliere l’implicante 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 comportamento

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 B C

0001 X

1001 X X

1011 X

Tabella 2.7. Tabella di copertura, dopo la seconda riduzione.

Finalmente, nella tabella ora realizzata vediamo che la riga 0001 è diventata pseudo-

essenziale - 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

Nell’esempio ora sintetizzato si sono considerati due tipi di caratteristiche che permettono

di semplificare l’elaborazione della tabella di copertura: l’essenzialità (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 B C D

α X X

β X X

γ X X X

δ X X

ε X X X

Tabella 2.8. Esempio di tabella di copertura.

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

10

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 B C D A C

α X X α X X

β X X β X

δ X X δ X

Tabella 2.9. Tabella 2.10.

A questo punto si genera una relazione di dominanza della colonna A rispetto alla D, 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 A B C D E F

000 X X

010 X X

011 X X

100 X X

101 X X

111 X 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

Page 6: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

11

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 l’albero 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 l’applicazione del metodo di Quine-Mc Cluskey a reti a una sola

uscita incompletamente specificate - che ammettano cioè delle condizioni di indifferenza

(corrispondenti a configurazioni d’ingresso 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 f xyzv f

0000 0 1000 0

0001 0 1001 0

0010 0 1010 1

0011 - 1011 1

0100 1 1100 0

0101 - 1101 1

0110 - 1110 1

0111 - 1111 1

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 d’indifferenza - questa vengono marcate a

priori . In tabella 2.13 le condizioni d’indifferenza sono ulteriormente indicate in corsivo.

Nel confronto che porta alla tabella 2.14, ancora, ogni volta che si trova una coppia di

condizioni d’indifferenza adiacente il “potenziale” implicante viene, si, introdotto, ma

viene a priori marcato.

4 0100 √

3 0011 √

5 0101 √

6 0110 √

10 1010 √

7 0111 √

11 1011 √

13 1101 √

14 1110 √

15 1111 √

Tabella 2.13.

4,5 010-

4,6 01-0

3,7 0-11 √

3,11 -011 √

5,7 01-1 √

5,13 -101 √

6,7 011- √

6,14 1-110 √

10,11 101- √

10,14 1-10 √

7,15 -111 √

11,15 1-11 √

13,15 11-1 √

14,15 111- √

Tabella 2.14.

4,5,6,7 01-- A

3,7,11,15 --11 B

5,7,13,15 -1-1 C

6,7,14,15 -11- D

10,11,14,15 1-1- E

Tabella 2.15.

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 B C D E

4 X

10 X

11 X

13 X X

14 X X

15 X X X X

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 l’introduzione di

componenti chiamati PLA (Programmable Logic Array) che potevano essere

programmati dall’utente il quale – creando o distruggendo collegamenti e/o dispositivi

Page 7: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

13

all’interno 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:

Sezione ORSezione AND Linee di funzione

linee di prodotto

bc’

a’c

ab’

c’cb’a’a

b f1=ab’+bc’ f=a’c+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à dell’insieme 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 dall’utente 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 l’uso oramai generale di circuiti C-MOS e l’uso 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.

2.2.2 Rappresentazione mediante SIS

L'algoritmo di Quine-McKluskey è stato brillantemente implementato nel programma disintesi a due livelli ESPRESSO. Benché sia possibile utilizzare esplicitamente questoprogramma è molto più comodo usare la sua reimplementazione nel programma SIS datadal 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 l’utente finale realizza una rete di interconnessione che permette direalizzare la funzione voluta. Casi tipici sono i gate arrays, matrici di porte logiche (es.: NAND a dueingressi).

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

14

minimizzare in formato .blif e manipolare la rete corrispondente dentro SIS. Il lettoreinteressato ad approfondire l'utilizzo di ESPRESSO può comunque utilizzare SIS pergenerare il formato di ingresso di ESPRESSO mediante il comando write_pla di SISche converte un file .blif in un file .pla. Usando le opzioni di ESPRESSO si potrebbeesaminare passo passo l'esecuzione dell'algoritmo di Quine-McKluskey facendo stamparegli implicanti primi, gli essenziali e la copertura minima.

Riprendiamo la funzione riportata in tabella 2.1 e descriviamola in formato .blif. Poiché lafunzione è completamente specificata, si ricorda che è sufficiente descrivere solamentel'ON-set: i mintermini non elencati apparterranno all'OFF-set. La funzione di tabella 2.1 èquindi descritta nel seguente modo:.model COMPSPEC.inputs x y z v.outputs f

.names x y z v f0001 10100 10101 10110 10111 11001 11011 11110 11111 1.end

Il suo caricamento in SIS e la stampa delle statistiche producono il seguente risultato:sis> read_blif compspec.blif

sis> print_statsCOMPSPEC pi= 4 po= 1 nodes= 1 latches= 0lits(sop)= 36

Il modello ha un costo di 36 letterali poiché è descritto da 9 mintermini da 4 variabili. L'aminimizzazione esatta a due livelli (comando full_simplify ) produce il seguenterisultato:sis> full_simplifysis> print_statscompspec pi= 4 po= 1 nodes= 1 latches= 0lits(sop)= 10

sis> write_blif.model compspec.inputs x y z v.outputs f.names x y z v f01-- 1-11- 11-11 1-001 1.end

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

Page 8: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

15

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

Queste equazioni concordano quasi completamente con il risultato ottenuto manualmentee riportato in tabella 2.6 e 2.7. La differenza riguarda l'implicante primo essenziale D (1-11) che è stato selezionato invece dell'implicante C (10-1). Il loro costo in termini diletterali è però identico quindi la loro scelta in fase di copertura è indifferente.

Nel caso di funzioni parzialmente specificate, l'unica differenza consiste nella scritta deldon’t care set (DC-set). Il DC-set viene descritto come l'ON-set, ma viene identificatoperché è posto dopo la parola chiave .exdc . Per esempio, la funzione parzialmentespecificata 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 f0100 11010 11011 11101 11110 11111 1

.exdc

.inputs x y z v

.outputs f

.names x y z v f0011 10101 10110 10111 1.end

I mintermini per cui la funzione è don't care sono riportati dopo la parola chiave .exdce completano l'ON-set della funzione descritto come in precedenza. L'esecuzione delcomando full_simplify produce il seguente risultato:sis> read_blif parspec.blifsis> print_statsparspec pi= 4 po= 1 nodes= 1 latches= 0lits(sop)= 24

sis> full_simplifysis> print_statsparspec pi= 4 po= 1 nodes= 1 latches= 0lits(sop)= 6

sis> write_eqnINORDER = 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;

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

16

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.blifsis> print_statsparspec_nodc pi= 4 po= 1 nodes= 1 latches= 0lits(sop)= 24

sis> full_simplifysis> print_statsparspec_nodc pi= 4 po= 1 nodes= 1 latches= 0lits(sop)= 9

sis> write_eqnINORDER = 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 treprodotti che coprono la funzione poiché non sono state sfruttate le condizioni diindifferenza.

2.3 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).

xyz 00 01 11 10 xy

z00 01 11 10

0 0 1 1 0 0 1 1 0 0

1 0 0 1 0 1 1 0 0 0

F1 F2

Figura 2.4. Mappe di Karnaugh di una funzione a due uscite.

La minimizzazione individuale porta alle due espressioni:

F1= xy+yz’

F2=x’y’+z’x’

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.

Page 9: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

17

z’

x

y

y

z’

x’

y’

x’

F1 F2

Figura 2.5. Prima realizzazione della funzione a due uscite.

x

y

y’

x’

[·yz’

F1

F2

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

x’yz’: individualmente, le due forme non sono più minime – e, in particolare, si è usato

un implicante (x’yz’) 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 sull’uscita 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.

2.3.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

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

18

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 f

000 1

001 1

010 0

011 1

100 1

101 0

110 0

111 1

Una possibile notazione cubica è la seguente:

xyz f

00– 1

–00 1

–10 0

–11 1

101 0

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 f1 f2

00– 01

010 11

11– 10

Questa notazione mette in evidenza i termini comuni a due o più uscite; un’altra

notazione possibile sarebbe:

Page 10: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

19

xyz f1 f2

00– 01

–10 10

0–0 01

11– 10

Si noti in questo caso l’effetto delle parziali sovrapposizioni dei cubi: 010 fa parte sia del

cubo –10 sia del cubo 0–0. In questo caso, il valore della funzione a più uscite per la parte

comune ai due cubi (per i mintermini facenti parte dell’intersezione) 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 f1 f2 xyz f1 f2

000 01 9 00– 01 B

001 01 9 0–0 01 C

010 11 A –10 10 D

110 10 9 11– 10 E

111 10 9

Tabella 2.17. Tabella 2.18.

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

l’ intersezione delle corrispondenti parti d’uscita per creare la parte d’uscita del

corrispondente implicante: se tale parte è nulla, non si introduce in corrispondenza alcun

elemento nella nuova tabella (tabella 2.18). L’implicante usato per crearne uno nuovo

viene marcato se e solo se la parte di uscita del nuovo implicante è identica a quella

dell’implicante di partenza: così, si marcano 000 e 001 perché l’implicante di più uscite

00– ha anch’esso parte d’uscita 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

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

20

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 A B C D E

00001 X

00101 X X

01001 X X

01010 X X

11010 X X

11110 X

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 : nell’esempio 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 f1 f2 f3 xyz f1 f2 f3

000 110 A 00– 010 B

001 011 9 0–0 100 C

010 101 9 –01 011 D

101 011 9 –10 101 E

110 101 9

Tabella 2.20. Tabella 2.21.

Si costruisca ora la tabella di copertura 2.22.

Page 11: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

21

xyz | f1 f2 f3 A B C D E

000100 X X

000010 X X

001010 X X

001001 X

010100 X X

010001 X

101010 X

101001 X

110100 X

110001 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 A B C

000100 X X

000010 X X

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 sull’uso di

implicanti delle funzioni singole) avrebbe richiesto l’uso di quattro implicanti.

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

22

2.4 MINIMIZZAZIONE A PIÙ LIVELLI DI RETI COMBINATORIE

Come si è detto all’inizio 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 area-

tempo, sia per soddisfare ulteriori richieste (es., l’esistenza di più percorsi da un ingresso

a un’uscita, 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, l’applicazione

interattiva della proprietà distributiva (sia da destra verso sinistra che viceversa). Si

consideri un esempio classico (rappresentato dalla mappa di Karnaugh in figura 2.7).

zvxy 00 01 11 10

00 1 0 1 0

01 0 1 0 1

11 1 0 1 0

10 0 1 0 1

Figura 2.7. Mappa di Karnaugh di una funzione particolare.

La sintesi minima a due livelli porta alla forma

f= x’y’z’v’+x’y’zv+x’yz’v+x’yzv’+xyz’v’+xyzv+xy’z’v+xy’zv’

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 x’y’, al terzo e al quarto, raccogliendo x’y, e così via: si ottiene la forma:

f=x’y’(z’v’+zv)+x’y(z’v+zv’)+xy(z’v’+zv)+xy’(z’v+zv’)

cui si può applicare nuovamente la stessa proprietà, raccogliendo questa volta

(rispettivamente) (z’v’+zv) e (z’v+zv’) e ottenendo

f= (x’y’+xy)(z’v’+zv)+(x’y+xy’)(z’v+zv’)

Page 12: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

23

Il corrispondente circuito risulta ancor più semplice se si ricorda che (a’b’+ab)’=a’b+ab’:

lo schema finale è riportato in figura 2.8.

x’

y’

x

y

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 l’uso 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 l’ordine 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 formale - 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’

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

24

a+bc’

(x+y’)v+w’z

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 l’ipotesi 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.

2.4.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 sull’insieme di valori 0,1,-. La struttura di un circuito può

Page 13: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

25

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 è l’insieme dei “vertici” o nodi, partizionato nei sottoinsiemi VI (nodi d’ingresso),

VO (nodi di uscita) e VG (nodi interni – nodi a cui è associata una funzione scalare);

• E è l’insieme 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

i2

i3

a=i1i2

b=a+i2

c=i1+i3

d=bc o1

o2

Figura 2.9. DAG di una rete logica.

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

26

L’ottimizzazione 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 l’area, imponendo dei vincoli sui ritardi,

• o il ritardo, imponendo dei vincoli sull’area.

L’ area - 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 dell’area dovuta ai collegamenti è di gran lunga più

complessa; ua soluzione approssimata valuta quest’ultima 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 l’area richiesta da ogni

“macrocella” costituita da una rete a due livelli, e calcolare poi l’area totale come somma

delle aree parziali.

Per quanto riguarda la temporizzazione, si riferisce di solito l’ottimnizzazione 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 l’area sia le prestazioni, poiché modificano il numero dei letterali, le

funzioni locali, le connessioni; per valutare le trasformazioni si utilizzano delle cifre di

Page 14: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

27

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.

2.4.2 Modello algebrico

Si fa ricorso piuttosto che all’algebra Booleana all’algebra 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 l’algebra polinomiale; non si prendono in considerazione nè l’insieme delle

condizioni d’indifferenza, né specifiche proprietà dell’algebra 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

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

28

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=(a+b+c)e+ef

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

j=a+b+c

x=je+ef

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; l’incremento di costo è

contenuto (pari a 1), ma il numero di nodi è stato ridotto da 3 a 2. Nel programma SISquesta 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

Page 15: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

29

ottiene la rete in figura 2.12.

a

b

c

d

e

f

abcf+cef+de x

acef+def

bcd+acf

y

z

Figura 2.11. Rete prima della decomposizione.

a

b

c

d

e

f

h=ab+e x

j=ac+d

bcd+acf

y

z

l=hcf k=l+de

r=jef

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 totaledei 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:

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

30

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

d

e

f

r=jb+ecf+h x

h=de

t=bcd+j

y

z

j=acf

s=je+hf

Figura 2.13. Rete dopo l'estrazione della parte comune.

In sostanza, nell’estrazione si estrae da un gruppo di nodi un cubo o un’espressione che

contiene più cubi; l’estrazione 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 questaoperazione con il comando fx .

Semplificazione: si riduce la complessità di una funzione sfruttando le proprietà della suarappresentazione, 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 l’espressione associata a un nodo già presente nella rete. Si accetta una sostituzionese porta a una diminuzione dei letterali (comando eliminate di SIS).

Per considerare l’effetto dell’applicazione 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:

Page 16: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

31

p=ce+de

q=a+b

r=p+a’

s=r+b’

t=ac+ad+bc+bd+e

u=q’c+qc’+qc

v=a’d+bd+c’d+ae’

w=v

x=s

y=t

z=u

La rete logica corrispondente è riportata in figura 2.14.

a

b

c

d

e

v=a’d+bd+c’d+ae’ w

p=ce+de r=p+a’ s=r+b’ x

q=a+b u=q’c+qc’+qc z

t=ac+ad+bc+bd+e y

Figura 2.14. Esempio di rete per l'applicazione delle trasformazioni.

L’applicazione 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’

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

32

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

b

c

d

e

j=a’+b+c’ v=jd+ae’ w

k=c+d

q=a+b

s=ke+a’+b’

x

t=kq+e

y

u=q+c

z

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 l’ottimo globale. Diventano

quindi delicate la scelta e l’ordine 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).

2.4.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

Page 17: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

33

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

d’ingresso e di uscita specifiche del progetto; si tratta di condizioni di indifferenza esterne

( dovute, appunto, all’ambiente) 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 d’ingresso che non vengono mai prodotte dall’ambiente e quindi non

vengono mai presentate agli ingressi primari. (l’insieme viene indicato con la sigla

CDCin).

Insieme delle condizioni di indifferenza di osservabilità in uscita: include tutte le

configurazioni d’ingresso corrispondenti a situazioni in cui l’uscita non verrà osservata

dall’ambiente (l’insieme viene indicato con la sigla ODCout: è rappresentato da un vettore

con tanti elementi quante sono le uscite primarie no, e ogni elemento indica quando

un’uscita primaria non viene osservata).

L’insieme complessivo delle condizioni d’indifferenza esterne è costituito da DCext =CDCin∪ ODCout: anche CDCin è un vettore di no elementi, dato che le condizioni

d’indifferenza 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 d’ingresso che

contenga meno o più di un 1 è ammissibile. Si può quindi elencare l’insieme di

condizioni di indifferenza di controllabilità in ingresso con l’espressione

CDCin= x1’ x2’ x3’ x4’+ x1 x2+ x1 x3+ x1 x4+ x2 x3+ x2 x4+ x3 x4

z2

y2

y1

x4

x3

x2dec.

a

b R1

x1

z1

R2

R3

Figura 2.16. 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,

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

34

relativamente alle uscite z1 e z2 quando x4 vale 0. Si può quindi dire che le condizioni

d’indifferenza 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 rete R1, col vettore di

ODCout:

ODCout =

x’ 1

x’ 1

x’ 4

x’ 4

A questo punto, l’insieme complessivo di condizioni di indifferenza esterne diventa:

Dcext = CDCin + ODCout =

x’ 1+ x2+ x3+ x4

x’ 1+ x2+ x3+ x4

x’ 4+ x2+ x3+ x1

x’ 4+ x2+ x3+ x1

È chiaro che in un circuito logico già sintetizzato non possono essere presenti condizioni

d’indifferenza intrinseche; queste possono nascere solo dall’ambiente, 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

y=abx+a’cx

Figura 2.17. Rete composta da moduli interagenti.

Dove sia x=a’+b e y=abx+a’cx . Si osserva immediatamente che x non è una variabile

Page 18: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

35

indipendente - quindi, in patticolare, non potrà mai essere x≠a’+b . Se inizialmente si può

rappresentare y con la seguente mappa di Karnaugh:

abcx 00 01 11 10

00 0 0 0 0

01 0 0 1 0

11 1 1 1 0

10 0 0 0 0

l’identificazione del vincolo su x permette di calcolare CDC=x⊕(a’+b)=x’a’+x’b+xab’ e

quindi di passare alla nuova mappa di Karnaugh:

abcx 00 01 11 10

00 - - - 0

01 0 0 1 -

11 1 1 1 -

10 - - - 0

il che porta a semplificare y=ax+cx.

La relazione mediante cui si è calcolato il CDC formalizza la semplice constatazione che

l’uscita di una funzione non può mai ssere diversa dalla valutazione della funzione stessa;

in sostanza, rappresenta il soddisfacimento di questa ovvia condizione. Per l’intera rete,

G(V,E), si può calcolare l’insieme di soddisfacibilità come

SDC x f x

v Vx

= ⊕∑∈

dove x è l’uscita 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 nell’esempio di

figura 2.17, è

SDC=x⊕(a’+b)+ y⊕(abx+a’cx) = x’a’+x’b+xab’+y’abx+y’a’cx+ya’c’+yb’a+yb’c’+yx’

(l’interpretazione di un’espressione 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 d’ingresso alla rete che l’ambiente non produrrà mai (CDCin) e

l’insieme di soddisfacibilità SDC, si può anche calcolare l’insieme dei vettori d’uscita che

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

36

la rete non potrà mai produrre - indicato anche come l’insieme di condizioni

d’indifferenza di controllabilità in uscita, CDCout. In modo analogo, si possono calcolare

gli insiemi di condizioni d’indifferenza di controllabilità in ingresso a ogni nodo interno

alla rete, cioè i CDCinterni. (Val la pena di osservare che il complemento di CDCout

corrisponde all’insieme di tutte le configurazioni di uscita che la rete effettivamente

produrrà in corrispondenza a tutti i vettori d’ingresso ammissibili - che a loro volta sono

il complemento di CDCin: in termini matematici, (CDCout.)’ costituisce l’immagine di

(CDCin)’). Sono stati proposti vari algoritmi per il calcolo di CDCout, i più importanti dei

quali si basano, rispettivamente, sull’attraversamento della rete logica calcolando i vari

insiemi di condizioni di indifferenza associati a successivi tagli della rete stessa, e

rispettivamente sul calcolo dell’immagine.

Più complesso è il calcolodegli ODC, a parte quelli esterni imposti dall’ambiente. Qui ci

si limita a un’analisi superficiale: in parole molto semplici, si può osservare che si genera

una condizione d’indifferenza di osservabilità ogni volta che un ingresso a una porta

logica assume un valore controllante - tale cioè da stabilire il valore dell’uscita 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

AND 0

OR 1

NAND 0

NOR 1

Se un ingresso assume valore controllante, i valori degli altri ingressi diventano in pratica

condizioni di indifferenza (si era sfruttata questa considerazione nell’esame dell’esempio

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

Page 19: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

37

SDCy2 = y2⊕(x’+y) = y2xy’+y2’x’+y 2’y

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

1 1 - 1 -

- 0 - - 1

- 1 0 - 0

- - 1 - 1

che consente la minimizzazione y2=x’+y; in modo analogo, si minimizza y1=w. A questopunto 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=y1⊕y2

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.

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

38

w

x

y1

y

x’y2

y3F

Figura 2.18. Rete di esempio per il calcolo di ODC.

Si calcola SDCy1 = y1⊕wx=y1w’+y1x’+y1’wx; per quanto riguarda l’insieme 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; d’altra 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

dell’uscita primaria. L’analisi porta a calcolare ODCy1=y+y2’ = x+y. Si verifica che wx≤ODCy1 - quindi l’intero 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.

2.4.4 Rappresentazione mediante SIS

Tutte le trasformazioni algebriche e Booleana appena descritte trovano un corrispondentecomando all'interno di SIS poiché sono state sviluppate a cavallo tra gli anni 80 e 90proprio utilizzando SIS come ambiente comune per la ricerca.

Come è già stato accennato, la difficoltà maggiore nell'applicare questi algoritmi riguardail 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 ilconcetto di script, ossia di sequenza preordinata di comandi eseguibile come un'unicaoperazione con il comando source . Lo script più efficace disponibile in SIS è loscript.rugged che itera l'applicazione di algoritmi algebrici di ristrutturazione dellarete ad algoritmi Booleani di minimizzazione dei nodi così identificati.

Applichiamo questo script alla rete di figura 2.14. È innanzitutto necessario descriverequesta rete in formato .blif verificandone l'esatta rappresentazione.

Page 20: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

.model rete5in4out

.inputs a b c d e

.outputs w x z y

.names c e d p11- 1-11 1

.names a b q1- 1-1 1

.names p a r1- 1-0 1

.names r b s1- 1-0 1

.names a c d b e t11--- 11-1-- 1-1-1- 1--11- 1----1 1

.names q c u01 110 111 1

.names a d b c e v01--- 1-11-- 1-1-0- 11---1 1

.names v w1 1.names s x1 1.names t y1 1.names u z1 1.end

Un metodo efficace per verificare la correttezza della descrizione in formato .blif consistenel caricare il file rete5in4out.blif in SIS e stamparne le equazioni confrontandolecon quelle presenti in figura 2.14. Si ottiene:sis> read_blif rete5in4out.blifsis> print_statsrete5in4out pi= 5 po= 4 nodes= 7 latches= 0lits(sop)= 33

sis> write_eqnINORDER = a b c d e;OUTORDER = w x z y;

p = e*d + c*e;q = b + a;r = !a + p;x = !b + r;y = d*b + c*b + a*d + a*c + e;z = q*!c + !q*c + q*c;w = a*e + d*!c + d*b + !a*d;

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

sis> source -x script.rugged

sweeprete5in4out pi= 5 po= 4 nodes= 7 latches= 0lits(sop)= 33

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

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

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

40

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

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

eliminate 5rete5in4out pi= 5 po= 4 nodes= 4 latches= 0lits(sop)= 26

simplify -m nocomprete5in4out pi= 5 po= 4 nodes= 4 latches= 0lits(sop)= 26

resub -arete5in4out pi= 5 po= 4 nodes= 4 latches= 0lits(sop)= 26

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

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

eliminate -1; sweeprete5in4out pi= 5 po= 4 nodes= 6 latches= 0lits(sop)= 21rete5in4out pi= 5 po= 4 nodes= 6 latches= 0lits(sop)= 21

full_simplify -m nocomprete5in4out pi= 5 po= 4 nodes= 6 latches= 0lits(sop)= 21

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

Page 21: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

41

x = e*[4] + !b + !a;y = [4]*[5] + e;z = [5] + c;w = a*e + d*!c + d*b + !a*d;[4] = d + c;[5] = b + a;

Il risultato ottenuto è praticamente identico a quello mostrato in figura 2.15 e ottenutoapplicando manualmente gli algoritmi presentati. L'unica differenza riguarda la mancatafattorizzazione di

j=a’+b+c’

nel calcolo di w. Infatti, questa ulteriore fattorizzazione avrebbe fatto risparmiare unletterale, ma avrebbe (come mostrato in figura 2.15) aggiunto un nodo alla rete el'algoritmo fx non ha ritenuto favorevole questa operazione.

Applicando nuovamente lo script.rugged non si ottengono ulteriori ottimizzazionifacendo così pensare che il minimo locale raggiunto sia stabile.

2.5 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 corrispondono tutti a ben precise celle di

libreria - la valutazione è più 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 è considerato in questo capitolo, di reti per cui si compie un’ottimizzazione 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 suppone 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

istante data-ready, cioè la stima dell’istante in cui il segnale che esso genera diventa

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

42

stabile; il tempo di arrivo ai terminali d’ingresso primari indica l’istante in cui i segnali

d’ingresso 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, l’istante data-ready

all’uscita di un nodo non è che la somma fra l’istante data-ready del più lento 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

vi∈V si indica con di il ritardo di propagazione e con ti l’istante di data-ready, si può

esprimere dunque

t d ti ij v v V

jj i

= +∈:( , )

max

Gli istanti data-ready possono essere calcolati per tutti i nodi attraversando la rete logica

data in un tempo proporzionale al numero di nodi e di lati nella rete. L’istante data-ready

massimo si valuta su un’uscita primaria e costituisce il ritardo topologico critico 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.

J

E

K

N

D

Q S O P [

T \

Figura 2.19. Rete di esempio per l'analisi dei ritardi.

Page 22: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

43

Siano gli istanti data-ready agli ingressi primari ta=0, tb=10 i̧ 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

quelli richiesti e si procede all’indietro calcolando mano a mano le differenze per tutti inodi (in questo caso, è t t di

j vi vj Ej j= −

∈:( , )min ).

Anche questo problema viene risolto introducendo opportune trasformazioni sulla rete e

applicandole con algoritmi di tipo euristico.

2.5.1 Rappresentazione mediante SIS

SIS mette a disposizione alcuni comandi per l'analisi e la ristrutturazione di una rete infunzione dei ritardi. Innanzi tutto, per valutare il massimo ritardo, associato al percorsotopologico critico, si può utilizzare il comando print_delay che calcola i ritardo dipropagazione 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 diassociare i nodi della rete a delle porte reali di una libreria tecnologica (si veda ilCapitolo 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 NOTpresenti in una libreria di riferimento. Si applichi questo secondo metodo al circuitoottimizzato di figura 2.14 prima e dopo la minimizzazione logica.

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

44

sis> read_library mcnc.genlib

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

Si noti come il cammino più lento sia associato alla generazione del segnale x. Dopo laminimizzazione logica (rete in figura 2.15) si ottiene:sis> print_statsrete5in4out pi= 5 po= 4 nodes= 6 latches= 0lits(sop)= 21sis> print_delay -m mappednetwork not mapped, using mapped delay modela : arrival=( 0.00 0.00) required=( 0.00 0.00) slack=( 0.00 0.00)b : arrival=( 0.00 0.00) required=( 0.00 0.00) slack=( 0.00 0.00)c : arrival=( 0.00 0.00) required=( 0.00 0.00) slack=( 0.00 0.00)d : arrival=( 0.00 0.00) required=( 0.00 0.00) slack=( 0.00 0.00)e : arrival=( 0.00 0.00) required=( 2.90 2.90) slack=( 2.90 2.90){x} : arrival=( 6.30 6.30) required=( 6.90 6.90) slack=( 0.60 0.60){y} : arrival=( 6.90 6.90) required=( 6.90 6.90) slack=( 0.00 0.00){z} : arrival=( 6.40 6.40) required=( 6.90 6.90) slack=( 0.50 0.50){w} : arrival=( 6.60 6.60) required=( 6.90 6.90) slack=( 0.30 0.30)[483] : arrival=( 3.30 3.30) required=( 3.30 3.30) slack=( 0.00 0.00)[484] : 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 larete in funzione di ridurre la lunghezza dei cammini critici. Il comando reduce_depthesegue questa operazione.sis> reduce_depthsis> print_delay -m mappednetwork not mapped, using mapped delay modela : arrival=( 0.00 0.00) required=( 1.10 1.10) slack=( 1.10 1.10)b : arrival=( 0.00 0.00) required=( 0.00 0.00) slack=( 0.00 0.00)c : arrival=( 0.00 0.00) required=( 1.20 1.20) slack=( 1.20 1.20)d : arrival=( 0.00 0.00) required=( 2.60 2.60) slack=( 2.60 2.60)e : arrival=( 0.00 0.00) required=( 2.60 2.60) slack=( 2.60 2.60){x} : arrival=( 3.80 3.80) required=( 6.60 6.60) slack=( 2.80 2.80){y} : arrival=( 3.90 3.90) required=( 6.60 6.60) slack=( 2.70 2.70){z} : arrival=( 4.70 4.70) required=( 6.60 6.60) slack=( 1.90 1.90){w} : arrival=( 6.60 6.60) required=( 6.60 6.60) slack=( 0.00 0.00)

sis> print_statsrete5in4out pi= 5 po= 4 nodes= 4 latches= 0lits(sop)= 26

Page 23: Università di Verona Franco Fummi APPRESENTAZIONE …users.libero.it/sandry/download/Calcolatoridownload/... · 2004-12-14 · Q UINE-M C C LUSKEY.....5 2.2.2 R APPRESENTAZIONE MEDIANTE

L'OTTIMIZZAZIONE DELLE RETI COMBINATORIE

45

sis> write_eqnINORDER = 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 lafigura 2.15) dovuta alla replicazione di logica necessaria a diminuire i livelli, e quindi iritardi, della rete.

Questo esempio è una ulteriore conferma della correttezza della curva di ottimizzazionearea/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.