Xilinx ha presentato un ambiente di progettazione completamente nuovo che affianca il preesistente ISE Design Suite e promette un netto aumento della produttività dei progettisti. Battezzata Vivado, la nuova suite è il risultato di quattro anni di ricerca e sviluppo, ai quali ha fatto seguito un anno di sperimentazione sul campo con il coinvolgimento di oltre cento clienti. Vivado affronta i problemi che caratterizzano la progettazione degli Fpga più evoluti, dispositivi utilizzati oggi per realizzare System-on-Chip sempre più grandi e complessi, e fabbricati con geometrie di processo molto piccole che impongono un nuovo approccio nella fase di posizionamento/sbroglio. Nel caso di Xilinx, l'evoluzione degli Fpga è resa particolarmente evidente dal recente lancio dei dispositivi Zynq-7000 Extensible Processing Platform, che comprendono un core Arm, e dei Virtex-7 2000T in tecnologia Stacked Silicon Interconnect. Naturalmente anche il preesistente ambiente ISE è stato aggiornato nel corso degli anni per tenere il passo con questa evoluzione, ma nel 2008 Xilinx comprese che per aumentare drasticamente la produttività dei progettisti sarebbe stato necessario realizzare un ambiente di progettazione totalmente nuovo, sfruttando tecnologie Eda simili a quelle del mondo Asic e affrontando il problema della gestione della IP. Abbiamo parlato di questi temi con Tom Feist, Senior Director Marketing, Design Methodology Marketing, e con John Blaine, Staff tools and Methodology Application Engineer di Xilinx.
Nuovi ostacoli
Come hanno spiegato Feist e Blaine, Vivado affronta i nuovi ostacoli che oggi limitano la produttività dei progettisti, sia sul fronte dell'integrazione (cioè l'assemblaggio dei diversi elementi che concorrono a creare un System-on-Chip), sia su quello dell'implementazione (cioè, sostanzialmente, del lavoro necessario per mappare il progetto sul tessuto logico dell'Fpga). Per quanto riguarda l'integrazione, le odierne difficoltà riguardano la creazione e il riutilizzo dei blocchi di IP; l'integrazione tra IP di diversa origine e diversa natura, in particolare tra IP algoritmica (funzioni scritte in linguaggio C, destinate ai tradizionali Dsp) e IP di tipo Rtl (funzioni che nascono nel mondo dell'hardware); la combinazione tra i diversi domini presenti nel progetto, come Dsp, funzioni embedded, connettività e logica; e infine la verifica di blocchi e sistemi. Per quanto riguarda l'implementazione, oggi gli ostacoli comprendono la pianificazione gerarchica del chip, l'ottimizzazione fisica multi-dominio e multi-die, le modifiche verso la fine del progetto (ECO, Engineering Change Orders) ecc.
Un “data model” unificato
Una delle principali novità introdotte da Vivado per quanto riguarda il flusso di implementazione consiste nell'adozione di un “data model” unificato, analogamente ai sistemi Eda per la progettazione di Asic. Il preesistente ambiente ISE di Xilinx utilizzava invece più “data model” diversi, derivanti da strumenti di diversa origine. Il data model unificato consente di condividere l'informazione di progetto tra le varie fasi del processo di implementazione (sintesi, simulazione, floorplanning, posizionamento/sbroglio ecc.) e quindi di effettuare in ciascuna di esse l'analisi e il debug; diviene pertanto possibile svolgere brevi iterazioni limitate a ogni singola fase, anziché lunghe iterazioni a valle del posizionamento/sbroglio. Ciò consente di ridurre il numero complessivo delle iterazioni stesse e di velocizzare il raggiungimento della “timing closure”. In questo modo, inoltre, il progettista ottiene fin dall'inizio del flusso una visibilità sui parametri principali del progetto: temporizzazioni, consumo, utilizzazione delle risorse dell'Fpga, congestione (cioè densità delle linee di interconnessione). La precisione di queste stime aumenta man mano che il processo di implementazione procede. Il data model unificato assicura inoltre un'efficace utilizzazione della memoria (necessaria per trattare progetti di grandi dimensioni, fino a dieci milioni di celle logiche) e consente il “cross-probing” nell'intero progetto: analizzando un determinato problema, diviene possibile evidenziare le corrispondenze tra le diverse viste (schema, rapporti di temporizzazione, celle logiche ecc. fino al codice Hdl).
Posizionamento e sbroglio
Ancora in tema di implementazione, un'altra importante innovazione introdotta da Vivado è il nuovo engine di posizionamento e sbroglio, anch'esso ispirato alle tecnologie utilizzate nei sistemi Eda per la progettazione di Asic. Nel precedente sistema di sviluppo, l'algoritmo di posizionamento e sbroglio perseguiva l'ottimizzazione di un solo parametro, le temporizzazioni; il nuovo engine, invece, è in grado di ottimizzare parallelamente tre parametri: temporizzazione, lunghezza delle interconnessioni, congestione. In altri termini, la nuova soluzione tiene conto del fatto che a 20 nanometri è necessario anche ridurre la lunghezza delle interconnessioni (che introducono ritardi confrontabili con quelli dovuti alla logica) e che oggi non è possibile trascurare i problemi dovuti all'eccessiva densità delle linee di interconnessione. E' cambiato anche l'algoritmo utilizzato per esplorare lo spazio delle possibili soluzioni di posizionamento/sbroglio: al posto del “simulated annealing”, che esplora casualmente lo spazio nei dintorni della posizione scelta inizialmente dal progettista, è stato adottato un nuovo approccio che consente di ottimizzare i tre parametri in parallelo sull'intero chip. Il nuovo engine, inoltre, è in grado di trattare anche progetti molto grandi, oltre dieci milioni di celle logiche, e consente di ridurre i consumi tramite le tecniche di clock gating che erano già state adottate in ISE. Per dimostrare i miglioramenti ottenuti, Xilinx ha affidato a ISE e a Vivado la descrizione Rtl dello stesso progetto, destinato a un dispositivo Virtex-7 2000T da 1,2 milioni di celle logiche; ISE ha svolto il posizionamento/sbroglio in 13 ore impegnando 16 gigabyte di memoria, mentre Vivado ha impiegato 5 ore con 9 gigabyte di memoria. Non solo: l'implementazione prodotta da Vivado è risultata anche molto più compatta e meno affetta da problemi di congestione.
Vivado consente inoltre di apportare piccole modifiche al progetto (meno del 5%) dopo la fase di posizionamento e sbroglio, tramite un'implementazione incrementale che non richiede di ricompilare l'intero chip.
Gestione della IP
Per quanto riguarda l'integrazione della IP, Vivado offre tre strumenti specifici denominati rispettivamente “IP Packager”, “IP Integrator” ed “Extensible IP Catalog”. IP Packager consente di confezionare qualunque parte del progetto (o anche l'intero progetto) in conformità allo standard IP-XACT, in modo da farlo diventare un core di IP riutilizzabile. Ciò può essere effettuato a qualunque livello del flusso di progettazione: Rtl, netlist, placed netlist, placed-and-routed netlist. Tramite IP Packager, quindi, diviene possibile fornire lo stesso “look and feel” ai blocchi di IP di diversa origine, siano essi forniti da Xilinx, sviluppati internamente dall'utilizzatore o acquistati da terze parti. Lo strumento IP Integrator permette invece di unire tra loro diversi blocchi di IP al livello dell'interconnessione anziché a livello dei singolo pin. Il progettista deve solo trascinare col mouse i blocchi di IP nel proprio progetto e il tool provvede a verificare se le relative interfacce sono tra loro compatibili; in caso affermativo sarà sufficiente unire i due blocchi con una linea e IP Integrator produrrà automaticamente il codice Rtl necessario per collegare tutti i singoli pin. Lo strumento Extensible IP Catalog, infine, consente di creare un catalogo organizzato di blocchi di IP, i quali possono essere forniti all'utilizzatore in un formato unificato immediatamente accessibile, anziché sotto forma di file zippati.
Sintesi ad alto livello
Altro elemento fondamentale di Vivado per la parte integrazione è il nuovo tool di sintesi ad alto livello che Xilinx ha ottenuto tramite l'acquisizione della società specializzata AutoESL nel 2010. Lo strumento consente di sintetizzare codice scritto in C, C++ e SystemC, per la descrizione di algoritmi anche in virgola mobile con precisione arbitraria. Questa possibilità è rivolta in primo luogo alla creazione di singoli blocchi di IP (non di interi progetti) da parte di progettisti che hanno una formazione software (abituati cioè a scrivere algoritmi per i Dsp) e che non conoscono Verilog né Vhdl. Secondo Feist e Blaine, questo tool offre vantaggi rispetto ad altri strumenti HSL anche perché è ottimizzato per l'architettura dei dispositivi Xilinx. Per dimostrare i risultati ottenibili, la società ha fornito un esempio che pone a confronto diretto la sintesi da linguaggio C con la codifica manuale Vhdl, relativamente allo stesso algoritmo: il tempo di progettazione si riduce da dodici settimane a una settimana, inoltre l'implementazione è molto più compatta in termini di risorse hardware utilizzate sul chip (memoria e Lut). Vivado comprende anche un nuovo tool di sintesi logica più veloce, con supporto per SystemVerilog, e un nuovo simulatore per linguaggi misti (Verilog e Vhdl) che, tramite accelerazione a livello comportamentale, raggiunge una velocità tripla rispetto al simulatore del precedente sistema Ise. Grazie alla co-simulazione hardware, inoltre, le prestazioni a livello di gate possono aumentare di cento volte.
Flessibile e basato su standard
Tutti gli strumenti che compongono la suite Vivado sono basati su standard industriali del settore Eda, tra cui Sdc (Synopsys Design Constraints), le interconnessioni Amba AXI4 sviluppate da Arm per i blocchi di IP, le specifiche IP-Xact definite dal consorzio Spirit per il confezionamento e la fornitura della IP, lo scripting Tcl (Tool Command Language). Vivado può funzionare in modalità completamente automatica (“pushbutton”), ma può anche consentire all'utilizzatore una totale interattività in tutte le fasi del flusso di progettazione. Oltre a Tcl, la gamma delle interfacce utente disponibili comprende altre opzioni tra cui anche le linee di comando (command line).