1 (b) LOGIC SYNTHESIS DESIGN FLOW ASIC HDL DIGITAL CIRCUITS DESIGN FLOW FPGA HDL DESIGN FLOW SINTESI DI TENTATIVO E SIMULAZIONE POST SINTESI DEL PROCESSORE MU0 OTTIMIZZAZIONE DELLA SINTESI DEL PROCESSORE MU0
2 ASIC HDL DIGITAL CIRCUITS DESIGN FLOW
ASIC HDL DIGITAL CIRCUITS DESIGN FLOW 3 IL FLUSSO (SEMPLIFICATO) DI PROGETTAZIONE CHE UTILIZZEREMO IN QUESTO CORSO SI CONCENTRA SULLE FASI DI FRONT END DELLO SVILUPPO. IL RISULTATO FINALE DELLA FASE DI FRONT END E' LA DESCRIZIONE DEL CIRCUITO IN TERMINI DI NETLIST DI CELLE DI LIBRERIA I TOOL CHE UTILIZZEREMO SONO MODELSIM (PER LA SIMULAZIONE VERILOG) E LEONARDO (PER LA SINTESI LOGICA) FUNCTIONAL SPECIFICATION RTL CODING FUNCTIONAL VERIFICATION LOGIC SYNTHESIS POST-SYNTHESIS VERIFICATION SYNTHESIS OPTIMIZATION FRONT-END LAYOUT (PLACE&ROUTE) BACK-ANNOTATION ETC. BACK-END CHIP FABRICATION
ASIC HDL DIGITAL CIRCUITS DESIGN FLOW 4 SPECIFICATION Il circuito digitale deve innanzitutto essere specificato in termini di porte di I/O e di funzione di trasferimento. La specifica di partenza è espressa in maniera non formale (sotto forma di descrizione testuale, flowchart o altro) RTL CODING La specifica di partenza viene specificata in maniera formale utilizzando un linguaggio testuale di descrizione dell'hardware (HDL). In questo corso utilizziamo il Verilog. La specifica deve essere di tipo RTL sintetizzabile (vedi lezioni Prof. Raffo) FUNCTIONAL VERIFICATION La funzionalità del modello HDL viene simulata al fine di verificarne la corrispendenza alle specifiche funzionali richieste (vedi lezioni Prof. Raffo). La verifica viene eseguita con l'ausilio di un tool di simulazione e di appositi modelli HDL di supporto (testbench) in grado di stimolare e verificare la funzionalità del modello in fase di verifica (Device Under Test - DUT). In questo corso utilizziamo il tool di simulazione Modelsim. Il risultato finale di queste prime 3 fasi di sviluppo è il modello Verilog RTL sintetizzabile del circuito, corredato dell'opportuno testbench. FUNCTIONAL SPECIFICATION RTL CODING FUNCTIONAL VERIFICATION LOGIC SYNTHESIS POST-SYNTHESIS VERIFICATION SYNTHESIS OPTIMIZATION LAYOUT (PLACE&ROUTE) BACK-ANNOTATION ETC. CHIP FABRICATION FRONT-END BACK-END
ASIC HDL DIGITAL CIRCUITS DESIGN FLOW 5 LOGIC SINTHESYS (SINTESI DI TENTATIVO) Il modello RTL del circuito viene trasformato in un modello espresso in termini di interconnessione di celle di libreria attraverso il processo semiautomatico definito sintesi logica. Tale processo viene svolto tramite un tool di sintesi corredato della libreria di celle della tecnologia sulla quale verrà implementato il chip (vedi lezioni Prof. Raffo). In questo corso utilizziamo il tool di sintesi Leonardo Spectrum. La prima sintesi di tentativo ha lo scopo di verificare l'effettiva sintetizzabilità del modello RTL codificato. Il risultato finale di questa fase è il modello Verilog in termini di interconnessione di celle di libreria del circuito digitale da sviluppare. POST SINTHESYS VERIFICATION La funzionalità del modello risultato della fase precedente viene verificata risimulandolo utilizzando lo stesso testbench utilizzato per la fase di verifica funzionale. Al fine di rendere possibile l'eventuale fase di debug è indispensabile che: il modello RTL di partenza sia fortemente gerarchizzato la sintesi sia eseguita preservando la gerarchia solo utilizzando questi 2 accorgimenti è possibile riconoscere all'interno del modello sviluppato i segnali interni originali da monitorare. FUNCTIONAL SPECIFICATION RTL CODING FUNCTIONAL VERIFICATION LOGIC SYNTHESIS POST-SYNTHESIS VERIFICATION SYNTHESIS OPTIMIZATION LAYOUT (PLACE&ROUTE) BACK-ANNOTATION ETC. CHIP FABRICATION FRONT-END BACK-END
ASIC HDL DIGITAL CIRCUITS DESIGN FLOW LOGIC SINTHESYS (SINTHESYS OPTIMIZATION) Questa fase ha un duplice scopo: Esplorare le figure di merito principali (area, massima frequenza di funzionamento, dissipazione energetica, etc,) del circuito digitale in fase di sviluppo. Al variare dei vincoli di sintesi viene esplorate il trade-off costi-prestazioni del modello. Risultati finali di questa fase sono una serie di grafici quali ad esempio area al variare della massima freq. di funzionamento, dissipazione di potenza al variare dell'area, ecc. Individuare le parti critiche del circuito in maniera da identificare eventuali porzioni di codice da modificare in modo da migliorare le prestazioni (in termini di area, frequenza, power, ecc.) della implementazione finale) In questo corso studieremo l'ottimizzazione di alcuni modelli HDL di processori. FUNCTIONAL SPECIFICATION RTL CODING FUNCTIONAL VERIFICATION LOGIC SYNTHESIS POST-SYNTHESIS VERIFICATION SYNTHESIS OPTIMIZATION 6 FRONT-END LAYOUT (PLACE&ROUTE) BACK-ANNOTATION ETC. BACK-END CHIP FABRICATION
7 FPGA HDL DESIGN FLOW
FPGA HDL DIGITAL CIRCUITS DESIGN FLOW 8 NEL CASO DI CIRCUITI LOGICI PROGRAMMABILI IL FLUSSO DI PROGETTAZIONE SI DIFFERENZIA COMPLETAMNTE DA QUELLO ASIC PER QUANTO RIGUARDA LE FASI DI BACK- END E IN PARTE ANCHE PER QUANTO RIGUARDA LE FASI DI FRONT-END (VEDI LEZIONI PROF. RAFFO)
9 SINTESI DI TENTATIVO E SIMULAZIONE POST SINTESI DEL PROCESSORE MU0
SINTESI DI TENTATIVO LA SINTESI DI TENTATIVO HA LO SCOPO VERIFICARE L'EFFETTIVA SINTETIZZABILITA' DELLA CODIFICA RTL (MODELLO RTL) DEL CIRCUITO. IL MODELLO RTL VIENE DATO IN INPUT AL TOOL DI SINTESI LOGICA (LEONARDO SPECTRUM NEL NOSTRO CASO IL PROCESSO DI SINTESI NECESSITA INOLTRE DI UNA LIBRERIA DI CELLE CHE VA DATA ANCH'ESSA IN INPUT AL TOOL MODELLO RTL 10 LOGIC SYNTHESIS LIBRERIA CELLE MODELLO GATE-LEVEL IN PRIMA ISTANZA LA SINTESI DI TENTATIVO INDIVIDUA 2 TIPI DI PROBLEMI: LA PRESENZA DI COSTRUTTI NON SINTETIZZABILI (ERRORS), LEGATI AL DEBUG O AD ERRORI VERI E PROPRI DI CODIFICA LA PRESENZA DI COSTRUTTI CHE POSSONO POTENZIALMENTE DARE LUOGO A MALFUNZIONAMENTI O DISCREPANZE FRA IL COMPORTAMENTO DEL MODELLO PRE- SINTESI DAL MODELLO GATE-LEVEL POST-SINTESI (IL MODELLO OTTENUTO DAL PROCESSO DI SINTESI) IN SECONDA ISTANZA LA SINTESI DI TENTATIVO CONSENTE LA INDIVIDUAZIONE DI EVENTUALI MALFUNZIONAMENTI DOVUTI A CODIFICA RTL NON CORRETTA (P.E. CASE INCOMPLETI CHE PORTANO ALL'INFERENZA DI LATCH). IL MODELLO POST SINTESI GERARCHICO FORNITO IN OUTPUT PUO' INFATTI ESSERE SIMULATO CON LA POSSIBILITA' DI INDIVIDUARE EVENTUALI BUGS.
SIMULAZIONE POST SINTESI 11 LA SIMULAZIONE POST SINTESI HA LO SCOPO DI VERIFICARE LA CORRISPONDENZA FUNZIONALE FRA IL MODELLO PRE-SINTESI (RTL) ED IL MODELLO POST-SINTESI (GATE-LEVEL) ALFINE DI ESEGUIRE TALE VERIFICA SI ESEGUE LA SIMULAZIONE DEL MODELLO POST-SINTESI UTILIZZANDO LO STESSO TETBENCH UTILIZZATO PER LA VERIFICA FUNZIONALE DEL MODELLO PRE-SINTESI. I PASSI DA SEGUIRE PER LA SIMULAZIONE POST SINTESI SONO I SEGUENTI COMPILARE LA LIBRERIA DI CELLE ALL'INTERNO DEL TOOL DI SIMULAZIONE IN MODO DA POTERLE REFERENZIARE AL MOMENTO DEL CARICAMENTO DEL MODELLO DA SIMULARE. TALE STEP PUO' ESSERE ESEGUITO PER OGNI DIVERSO PROGETTO (POCO INTELLIGENTE) OPPURE UNA VOLTA PER TUTTE USANDO IL COSTRUTTO USELIB DEL VERILOG (MOLTO PIU' INTELLIGENTE) MODIFICARE EVENTUALMENTE IL TESTBENCH IN MODO DA ELIMINARE RIFERIMENTI A VARIABILI INTERNE ALLA GERERCHIA CHE NON SAREBBERO PIU' REFERENZIABILI ESEGUIRE LA SIMULAZIONE IDENTIFICARE LE PARTI DEL CIRCUITO NELLE CHE MANIFESTANO MALFUNZIONAMENTI E RISALIRE ALLE PORZIONI DI CODICE DEL MODELLO RTL DA MODIFICARE (AIAH!)
12 OTTIMIZZAZIONE DELLA SINTESI DEL PROCESSORE MU0
OTTIMIZZAZIONE DELLA SINTESI 13 UNA VOLTA STABILIZZATO IL CODICE DEL MODELLO RTL DAL PUNTO DI VISTA DELLA CORRETTEZZA DELLA CODIFICA E' OPPORTUNO ESEGUIRE UNO STUDIO RELATIVA ALLA EFFICIENZA DELLA STESSA ESEGUENDO VARI TENTATIVI DI SINTESI (AL VARIARE DELLE CONSTRAINTS) E' POSSIBILE INDIVIDUARE LE PARTI CRITICHE DEL CIRCUITO IN TERMINI DI FREQUENZA E DI AREA, IN MODO DA IDENTIFICARE EVENTUALI PORZIONI DI CODICE DA OTTIMIZZARE DEFINIRE DEI GRAFICI AREA-FREQUENZA-POWER CHE DIANO UN STIMA ESAUSTIVA DELLE PRESTAZIONI DEL CIRCUITO MODELLO RTL CONSTRAINTS LOGIC SYNTHESIS LIBRERIA CELLE REPORTS (AREA, FREQ., POWER, ETC.)