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).
23
Embed
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
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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).
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.
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).
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
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
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
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
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:
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> 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> 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.
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:
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.
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.
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’)
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ò
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
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
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:
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
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
(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
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.
.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;
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
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
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
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;
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.
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.
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.