• Non ci sono risultati.

Capitolo 5

N/A
N/A
Protected

Academic year: 2021

Condividi "Capitolo 5"

Copied!
9
0
0

Testo completo

(1)

Sintesi della FPU

5.1 Cosa è la sintesi

La sintesi è un metodo completamente automatizzato di convertire un alto livello di astrazione (descrizione VHDL) in un livello di astrazione molto più basso (schema circuitale). A livello commerciale esistono molti programmi di sintesi: i più avanzati sono Synergy della Cadence e Design Compiler della Synopsys.

Il sintetizzatore di Synopsys prende in ingresso il codice VHDL e lo trasforma in una lista (netlist) di porte logiche prese dalla libreria tecnologica scelta (processo di mapping) cercando di rispettare vari vincoli: area, velocità, carico capacitivo, ecc., che sono scelti dal progettista a seconda dell’applicazione finale. Gli ingressi al processo di sintesi sono la descrizione VHDL, i vincoli e la libreria tecnologica come si vede in figura 5.1.

(2)

Nei prossimi tre paragrafi vengono descritti quali tipi di vincoli si possono usare e come funziona più in dettaglio il processo di sintesi vero e proprio.

5.2 Il processo di sintesi

Per convertire una descrizione VHDL in uno schema circuitale occorrono tipicamente tre passi. Prima di tutto la descrizione VHDL viene convertita in una descrizione booleana delle uscite in funzione degli ingressi, cioè ogni uscita viene rappresentata come una serie di operazioni logiche AND e OR effettuate sugli ingressi. Tutte le normali istruzioni VHDL quali IF, CASE, LOOP e tutte le istruzioni di assegnamento a segnale vengono convertite nell’equivalente booleano attraverso semplici tabelle di verità che associano i valori reali degli ingressi ai valori desiderati delle uscite. La descrizione ottenuta in questo modo è funzionalmente corretta ma non è per niente ottimizzata, cioè se venisse direttamente convertita in uno schema circuitale implementando ogni operazione logica AND con la porta logica AND ed ogni operazione logica OR con la relativa cella il risultato ottenuto non sarebbe accettabile né in termini di area né in termini di velocità. Per questo motivo il secondo passo consiste nell’applicare algoritmi di ottimizzazione booleana che portano alla realizzazione di una descrizione logica equivalente ma ottimizzata. L’ultimo passo consiste nel mappare la descrizione booleana finale in porte logiche appartenenti alla libreria scelta e produrre la netlist finale. Questa netlist viene scelta fra una varietà di possibili soluzioni in base ai vincoli imposti dal progettista principalmente sull’area e sulla velocità. Alcune netlist danno origine a schemi circuitali che sono molto veloci ma richiedono molte celle della libreria, altre producono schemi elettrici più lenti ma con una superficie minore. Per eseguire la sintesi occorrono molte ore macchina sia a causa dell’intrinseca complessità di alcuni costrutti o funzioni, ovunque vi siano if … then … else annidati, sia per la rigidezza dei vincoli di progetto impostati.

(3)

5.3 I vincoli

I vincoli forniscono gli obiettivi che i processi di ottimizzazione e mapping dovrebbero raggiungere e controllano l’implementazione strutturale del progetto. I vincoli disponibili nei moderni programmi di sintesi riguardano l’area, i ritardi, la potenza assorbita, il carico, ecc., ma quelli più usati riguardano essenzialmente l’area e la velocità. Più in dettaglio:

1) Area : il vincolo sull’area viene usato per specificare il valore di superficie desiderato entro il quale il progettista spera rientri il circuito. L’unità di misura con cui viene specificata l’area può essere scelta dal

progettista ma di solito si usano i micrometri quadrati ( ).

Imponendo ad un circuito il vincolo di non superare ad esempio i

1200 il programma di sintesi ottimizza la netlist ottenuta fino a

soddisfare l’obiettivo richiesto se ciò è possibile, altrimenti ricerca il valore più vicino possibile a quello desiderato. Specificando come

vincolo un’area uguale a 0 l’algoritmo di ottimizzazione lavorerà

fino a trovare l’area più piccola possibile anche se ciò andrà interamente a scapito del tempo di propagazione del segnale dall’ingresso alle uscite.

2 m µ 2 m µ 2 m µ

2) Velocità : questo vincolo viene usato per tenere sotto controllo i ritardi massimi di propagazione del segnale in alcuni percorsi del circuito. Ad esempio un vincolo temporale tipico è il ritardo massimo con cui il segnale si propaga dall’ingresso all’uscita. Questo vincolo guida il processo di ottimizzazione e di mapping fino ad una netlist che soddisfa la richiesta.

(4)

5.4 Libreria tecnologica

La libreria tecnologica contiene tutte le informazioni necessarie al programma di sintesi per creare una netlist di porte logiche che soddisfi ai vincoli imposti dal progettista. Di ogni porta logica la libreria tecnologica contiene non solo la funzionalità logica, ma anche l’area, il ritardo dall’ingresso all’uscita (minimo, tipico, massimo), il fanin (il valore capacitivo assegnato alla porta d’ingresso), il fanout (la capacita di pilotare le porte che seguono) e tutte le caratteristiche fisiche utili al sintetizzatore. Le tabelle 5.1 e 5.2 riportano tutte le caratteristiche della porta logica NAND2 (NAND a due ingressi) della libreria CoreLib8DLLL.HCMOS8D.

A B

Z

Figura 5.2 - Schema di una porta NAND a 2 ingressi

Area 12.288 µm2 Altezza 6.400 µm Larghezza 1.920 µm Numero di transistor 4 Fanin in A 0.0052 pF Fanin in B 0.0051 pF Fanout in Z 0.1800 pF

Tabella 5.1 - Caratteristiche della NAND2

(5)

5.5 Come si esegue la sintesi

La prima cosa da fare quando si lavora con Synopsys è crearsi un file di setup o di avvio, avente il nome .synopsys_dc.setup. Tale file deve contenere una serie di informazioni che Synopsys utilizzerà quando sarà all’opera: in esso è indicato il percorso di ricerca sul disco di tutte le librerie di componenti di cui si necessita, standard e non; vi sono alcune impostazioni circa le convenzioni sui nome dei segnali e alcune variabili poste a certi valori. A questo punto, con un file di codice VHDL e con un file di setup si può lanciare la generazione della netlist. Per fare questo occorre creare un file .script con l’insieme di comandi da dare a Synopsys : tali comandi saranno le direttive di compilazione del circuito. All’inizio del file .script va fatta la selezione ed il collegamento alle librerie da cui far attingere Synopsys durante la sintesi. Si devono quindi definire le regole di progetto e le condizioni operative. Conclusa la definizione dell’ambiente in cui opererà il circuito integrato, si procede all’impostazione dei vincoli. A questo punto si compila il VHDL. Compilare il VHDL vuol dire mapparlo in celle della tecnologia scelta tenendo presente tutti i vincoli di progetto preliminarmente specificati. Design Compiler di Synopsys esegue anche un’analisi dei tempi al fine di mostrare se il progetto è compatibile all’ambiente descritto. La compilazione viene eseguita tramite il comando compile e produce come risultato un circuito sintetizzato di cui se ne potrà analizzare le temporizzazioni e successivamente inserire le strutture di test. In ultimo vengono salvati su file i risultati della sintesi. Il file .script per la sintesi della FPU è riportato integralmente nell’appendice D.

(6)

5.6 Sintesi della FPU

La FPU è stata sintetizzata con il programma Design Compiler di Synopsys in tecnologia CMOS 0,18 µm standard cell, la libreria tecnologica utilizzata è stata la HCMOS8DLL (Device Low Leakage), fornita da ST Microelectronics, progettata per minimizzare il consumo di potenza e che può essere alimentata con una tensione che va da 1,2 V a 1,95 V. Al compilatore è stato indicato di utilizzare le condizioni operative “worst case commercial” (1,55 V e 85°C). Al fine di indicare una stima di complessità che sia indipendente dalla tecnologia è utile normalizzare l’area occupata dal circuito rispetto a quella occupata da una standard cell di riferimento. Solitamente si prende come riferimento, gate equivalente, una porta NAND a due ingressi che in tecnologia CMOS è realizzata con

quattro transistori, due a canale n e due a canale p, ed occupa 12,29 . Il

risultato della sintesi dei singoli blocchi della FPU è riferito nella tabella 5.2 in valore assoluto ed in gate equivalenti.

2

m µ

Blocco Area occupata Gate

equivalenti % ESEGUI 647,16 µm2 53 0,00 VSI-INGRESSO 5054,46 µm2 412 0,04 ADD-SUB 5010263,74 µm2 407670 42,30 MUL 368644,12 µm2 29996 3,12 DIV 722173,75 µm2 58762 6,10 SQRT* 5732437,49 µm2 466431 48,40 ABS-NEG 2387,96 µm2 195 0,02 SINCRONIZZA 212,99 µm2 18 0,00 VSI-USCITA 2473,98 µm2 202 0,02 Totale 11844295,65 µm2 963735 100,00 *valore stimato

Tabella 5.2 – Sintesi della FPU (vincoli: Max Area = 0.0, T clock = 50 ns)

(7)

Il cammino critico è interno al blocco DIV, quando si esegue la divisione per ottenere il risultato occorre aspettare 227,12 ns.

Dalla tabella 5.2 si ricava che l’occupazione totale di area della FPU è

11844295,65 pari a 963735 gate equivalenti di cui la maggior parte è

occupata dai blocchi ADD-SUB (42,3%) e SQRT (48,4%). 2

m µ

Questo risultato è causato dal fatto che l’operazione di addizione e sottrazione sono realizzate alla massima precisione consentita dalla rappresentazione adottata. Il blocco ADD-SUB è costruito per poter realizzare, nel caso peggiore, una traslazione della mantissa di 255 bit, questo richiede la sintesi un costrutto if… then… else molto complesso. Questo fatto si ripercuote anche sull’operazione di radice quadrata che per essere realizzata utilizza sia una funzione che fa l’addizione simile a quella usata nel blocco ADD-SUB e sia una funzione che fa la divisione di numeri in formato floating point e per questo esso occupa quasi la metà dell’area della FPU.

Per ridurre l’area occupata dal blocco ADD-SUB si possono percorrere 2 strade:

1. Realizzare un altro algoritmo per il calcolo del risultato. 2. Accontentarsi di una precisione minore.

La prima, sicuramente da esplorare, non è stata percorsa a causa dei tempi necessari per portarla a termine. La seconda invece è percorribile in tempi minori ed è stata seguita imponendo come vincolo di precisione che l’errore relativo dell’operazione di addizione o sottrazione sia al massimo

pari a 0,0000000596

2 1

24 = . Nel caso peggiore si fa una traslazione di 24

posizioni e soprattutto non è necessario realizzare variabili di supporto all’operazione da eseguire. Sintetizzando questo nuovo blocco ADD-SUB la tabella 5.2 si modifica come mostrato in tabella 5.3.

(8)

Blocco Area occupata Gate equivalenti % ESEGUI 647,16 µm2 53 0,03 VSI-INGRESSO 5054,46 µm2 412 0,25 ADD-SUB 99700,70 µm2 8113 4,93 MUL 368644,12 µm2 29996 18,23 DIV 722173,75 µm2 58762 35,70 SQRT* 821874,45 µm2 66874 40,62 ABS-NEG 2387,96 µm2 195 0,11 SINCRONIZZA 212,99 µm2 18 0,01 VSI-USCITA 2473,98 µm2 202 0,12 Totale 2023169,57 µm2 164620 100,00 *valore stimato

Tabella 5.3 – FPU semplificata (vincoli : Max Area = 0.0, T clock = 50 ns)

Nella tabella 5.3 si vede che l’area occupata ora dal blocco ADD-SUB si è notevolmente ridotta diventando l’ 1,98% di quella iniziale, di conseguenza anche l’area occupata dal blocco SQRT è diventata il 14,33% dell’iniziale.

L’occupazione totale di area della FPU diviene 2023169,57 pari a

164620 gate equivalenti. Rinunciando alla precisione assoluta si è ottenuto quindi una riduzione totale d’area pari al 82,91% di quella iniziale.

2

m µ

Il valore ottenuto è in linea con quello della GRFPU [5.2], la FPU da poco realizzata dalla Gaisler Research appositamente per il LEON, che ha un’occupazione d’area pari a 100000 gate equivalenti.

Il cammino critico rimane quello interno al blocco DIV che non ha subito modifiche. Considerando che il risultato dell’operazione di divisione viene prodotto in 1 solo ciclo di clock, mentre nella GRFPU la DIV viene realizzata in 15/16 cicli, anche questo risultato è in linea con i valori della GRFPU.

(9)

5.7 Sintesi dell’ Interfaccia tra FPU e LEON

Anche l’Interfaccia della FPU per il LEON è stata sintetizzata in tecnologia CMOS 0,18 µm standard cell con libreria tecnologica HCMOS8DLL.

Al compilatore è stato indicato di utilizzare le condizioni operative “worst case commercial” (1,55 V e 85°C). Il risultato della sintesi per quanto è riferito nella tabella 5.4.

Area occupata Gate equivalenti

Interfaccia 11665,40 µm2 950

Tabella 5.4 – Interfaccia LEON –FPU (vincoli: Max Area = 0.0, T clock = 50 ns)

Il cammino critico è pari a 14,08 ns.

Bibliografia

[5.1] Manuale completo di Synopsys Per tutto il capitolo.

[5.2] http://www.gaisler.com

Riferimenti

Documenti correlati

Le operazioni generali per far funzionare una LIM sono le seguenti: si collega la LIM ad un computer tramite cavo, sia esso di tipo Universal Serial Bus (USB) o di tipo porta

Orienta lo sviluppo delle proprie competenze musicali, nell’ottica della costruzione di un’identità musicale che muova dalla consapevolezza delle proprie attitudini e capacità,

82 5.1.2 Acquisire un segnale infrarosso con interfaccia IR Pag. 84 5.2 Telecomando universale con interfaccia grafica

ARPA Valle d’Aosta è responsabile della gestione dell’Inventario regionale delle emissioni inquinanti in aria, i cui dati sono utilizzati per la compilazione del

Nel caso di opere a carattere ornamentale unicamente nel caso di strutture minute inferiori a 0,008 mc/ml la misurazione verrà effettuata in ragione del minimo

L’affidatario (l’appaltatore), entro 30 giorni dall'aggiudicazione e comunque almeno 5 giorni prima dell'inizio dei lavori, deve predisporre e consegnare al Direttore dei

3. L'esame e la verifica, da parte della Direzione Lavori, dei progetti delle varie strutture in cemento armato, non esonera in alcun modo l'Appaltatore dalle

SOLLEVARE, ABBASSARE, SALTARE, SALTELLARE, RIMBALZARE, CAMMINARE, CORRERE, RINCORRERE, AVVIARSI, TENDERE, POSARE, CHIUDERE, SOCCHIUDERE, RITRARRE, VOLARE, SVOLAZZARE,