Come cambia il flusso di progettazione Fpga

I dispositivi Fpga hanno subito cambiamenti architetturali significativi negli ultimi anni. A cominciare dai blocchi sintetizzati come le Ram e i Dsp, gli Fpga ora includono transceiver e blocchi IP sintetizzati, come Ethernet e Pci Express. Con questi nuovi blocchi funzionali, I progettisti Fpga possono ora creare progetti molto complessi. Tuttavia, questi progetti complessi possono talvolta spingere verso i propri limiti i costi, i consumi e i requisiti di specifiche di prestazioni dell'Fpga di riferimento.  In applicazioni consumer/mobili, ad esempio, i bassi costi e i bassi consumi sono essenziali, e i progettisti che cercano di raggiungere questi obiettivi sfidanti di consumi e di costi potrebbero dover:
1 - Esplorare diversi pacchetti di tool, ad esempio con funzioni extra per l'instradamento e il posizionamento dei segnali per cercare di migliorare le prestazioni o di ridurre l'area
2 - Realizzare modifiche di progetto, come la scelta di Ram a blocchi al posto della Ram distribuita per le prestazioni
3 - Cambiare l'architettura del progetto, ad es. scegliendo un protocollo parallelo al posto di un protocollo seriale.
Tuttavia, tutti questi approcci alla progettazione sono tipicamente esplorati in modo sequenziale. Di conseguenza, il tempo complessivo di compilazione aumenta, il che può creare grossi problemi con i tempi di consegna. Quasi sempre, i progettisti - particolarmente coloro che progettano prodotti consumer - sono sotto grandi pressioni sui tempi per battere la concorrenza di modo che il proprio prodotto possa essere il primo sul mercato. Di conseguenza, i progettisti devono poter completare il proprio progetto Fpga pur rispettando specifiche di progetto sfidanti nel più breve tempo possibile. Sotto la sfida di rispettare specifiche di progetto nelle tempistiche prestabilite, i progettisti vedrebbero con favore la capacità di esplorare più realizzazioni di progetto o cambiamenti architetturali all'interno del software di progettazione Fpga nel più breve tempo possibile.

Problemi con il flusso di progettazione Fpga tradizionale
Usando il flusso di progettazione tradizionale, i progettisti Fpga spesso lottano per soddisfare le specifiche di riferimento del progetto senza avere conseguenze sui tempi di consegna e senza impattare sul rilascio del prodotto sul mercato. Il motivo principale per questo è che il flusso di progettazione tradizionale è stato fondamentalmente concepito come sequenziale: ogni volta che l'utente effettua una modifica al progetto, questo deve essere ricompilato allo scopo di valutare l'impatto del cambiamento. Questo processo è ripetuto fino a che non vengono soddisfatte le specifiche di progetto. Questo flusso di progettazione sequenziale e ripetitivo può far dilatare i tempi di consegna, il che è inaccettabile per ragioni di competitività. È necessaria una soluzione che ridurrà il tempo di compilazione complessivo all'interno del flusso di progettazione.

Esplorazione delle impostazioni e multiprocessing       
Il software di progettazione Fpga ha introdotto un tool chiamato “esploratore delle impostazioni” per aiutare i progettisti a raggiungere i propri obiettivi (o specifiche di progetto) sotto pressioni schiaccianti sulle tempistiche. Questo tool consente al progettista di scegliere le impostazioni di ottimizzazione, come il controllo delle ritemporizzazioni o del massimo numero di porte pilotabili, da attivare sul processo e quindi di archiviare i risultati dell'intero spazio, ad es. tutte le esecuzioni effettuate esplorando le diverse impostazioni, o di salvare solo l'esecuzione con i risultati migliori. Il progettista può lasciare che il tool selezioni automaticamente le impostazioni in base a qualche obiettivo di alto livello, come il “flusso di progettazione per ridurre i consumi” o “la riduzione dell'area del progetto” e di esplorare l'intero spazio. La funzionalità di esplorazione delle impostazioni ha migliorato la capacità di soddisfare gli obiettivi. Tuttavia, non ha alleviato completamente le pressioni sulle tempistiche di consegna, dato che qualsiasi modifica al progetto potrebbe fare sì che l'utente debba rilanciare il tool e sottoporre il progetto a un lungo tempo di compilazione. Un'altra innovazione è stata introdotta per trarre vantaggio delle architetture di calcolo che sono ora costituite da più core di Cpu; il software di progettazione Fpga potrebbe usare qualsiasi numero di core per ridurre il tempo di compilazione, Tuttavia, un'altra modifica al progetto ancora richiedeva un'altra compilazione, il che si aggiungeva al tempo complessivo intercorso, anche se il tempo di compilazione di un'iterazione di progetto era stato ridotto.

Riduzione del tempo di esecuzione ed esplorazione del progetto
Il software di progettazione Fpga ha aggiunto un'ulteriore funzionalità, mutuata dalla metodologia di progettazione Asic e ha introdotto il flusso di progettazione incrementale. In questo flusso, gli utenti possono partizionare i loro progetti in base alle gerarchie logiche per la riduzione del tempo di esecuzione e per preservare le temporizzazioni. Usando questa tecnologia, un utente può creare una partizione sulle gerarchie logiche in cui potrebbero avvenire delle modifiche al progetto e queste potrebbero necessitare di essere ricompilate. In questo modo, quando si effettua una modifica localizzata che non impatta l'intero progetto, il flusso incrementale può contribuire a ridurre il tempo complessivo di compilazione pur preservando le prestazioni del resto del progetto. Questo è stato un grande passo nella direzione giusta; tuttavia, tale approccio non si occupa del fatto che il flusso di progettazione rimane ancora sequenziale per natura. Gli utenti possono avere solo un'esecuzione del progetto attiva in un determinato istante, e devono aspettare l'esecuzione sequenziale di due compilazioni allo scopo di confrontare i risultati. Ciò che occorre è una modifica più radicale nel flusso di progettazione Fpga, di modo che gli utenti possano compilare più esecuzioni in parallelo e confrontare i risultati di due esecuzioni dopo una singola compilazione piuttosto che dopo due compilazioni sequenziali. Gli utenti quindi possono rifiutare o accettare le modifiche rapidamente e con un impatto limitato sui propri tempi di consegna.

Scenari di progetto
Considerate un esempio in cui l'utente deve modificare l'esecuzione del progetto dall'uso delle Ram a blocchi a favore delle Ram distribuite; questo tipo di modifica è realizzata allo scopo di risparmiare risorse di Ram a blocchi. Ad esempio, questo avviene in progetti Dsp-centrici in cui la Ram a blocchi è richiesta per memorizzare le operazioni sui coefficienti. Le Ram a blocchi sono ideali per questi tipi di operazioni perché forniscono tempi di risposta più rapidi rispetto alle Ram distribuite. Se l'utente desidera effettuare una simile modifica, esso deve completare due esecuzioni sequenzialmente prima di poter valutare l'impatto di questa grande modifica al progetto. Tuttavia, con più esecuzioni fatte girare in parallelo, l'utente può ridurre il tempo di esecuzione a una sola esecuzione completa e valutare l'impatto molto più rapidamente. Un altro esempio in cui far girare più esecuzioni in parallelo è molto vantaggioso è quando l'utente modifica l'architettura del progetto. Un caso tipico è nelle applicazioni mobili ad alta velocità, in cui passare da un'esecuzione seriale a una parallela per gestire il traffico dati costituisce una delle modifiche effettuate di frequente ad un progetto. Usando il flusso di progettazione tradizionale, occorreranno due compilazioni per valutare l'impatto di una simile modifica; ma in un flusso di progettazione in cui sono possibili le esecuzioni in parallelo, occorrerà solo un'esecuzione per valutare l'impatto, risparmiando il tempo di un'intera esecuzione. Con una simile fondamentale modifica al flusso di progettazione Fpga, gli utenti possono accelerare i propri tempi di consegna o, per lo meno, ridurre le pressioni sui tempi di consegna e migliorare la produttività.

Come accelerare l'esplorazione di progetto
Un esempio di un flusso di progettazione contemporaneo si può trovare all'interno del software di progettazione Lattice Diamond Fpga di Lattice Semiconductor, il quale è ottimizzato per dispositivi che si rivolgono ad applicazioni a basso consumo e sensibili ai costi, come le famiglie di prodotti MachXO/XO2 e LatticeECP. Il software Lattice Diamond include una funzionalità detta Run Manager: l'utente può avere due file Rtl per un singolo progetto catturati come due esecuzioni e fare girare questi ultimi in parallelo. Con Run Manager, l'utente può ridurre il tempo di compilazione rispetto ad un flusso di progettazione tradizionale e confrontare rapidamente i risultati delle due esecuzioni. Se soddisfatto dei risultati, l'utente può immediatamente programmare il dispositivo scegliendo la migliore delle due esecuzioni. Se l'utente non è soddisfatto di alcuna delle modifiche, esso può creare nuove esecuzioni e farle girare di nuovo per valutare il loro impatto. Non c'è limite al numero delle esecuzioni che gli utenti possono far girare contemporaneamente.

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome