I metodi tradizionalmente utilizzati per lo sviluppo dei moderni sistemi sono basati su processi distinti per la progettazione di PCB, FPGA e ASIC. Ogni progettista si specializza nel proprio dominio di competenza e raramente comunica con i colleghi appartenenti ad altri gruppi. La situazione peggiora nel caso in cui i domini siano dislocati in aziende diverse. Ne deriva un processo di progettazione di tipo seriale, in cui l’output di un gruppo costituisce l’input per quello successivo. Il flusso delle informazioni è, quindi, unidirezionale ed esiste poco margine per attività parallele cruciali per ottenere una riduzione del time-to-market.
Le sfide
Generalmente, l’ottimizzazione dei path di segnale avviene solo all’interno di un singolo dominio (ad esempio, il pin assignment degli FPGA), ne consegue che i path di segnale generati sono più lunghi nel dominio successivo, con un decadimento dell’integrità dei segnali ed un incremento dei costi di produzione. La progettazione inizia, infatti, a livello FPGA e/o a livello IC, per proseguire a livello del PCB. Queste problematiche si accentuano con il crescere del pin-count dei componenti utilizzati nel sistema. Il groviglio di connessioni è un tipico risultato di questo approccio metodologico. È verosimile pensare che esista spazio per l’ottimizzazione del pin-out in entrambi i componenti. Negli ultimi anni, molte aziende si sono impegnate nella ricerca di una metodologia di co-progettazione che consenta di implementare una maggiore integrazione tra i team di sviluppo dei diversi domini. Questo documento propone alcune tecniche rivelatesi utili per l’ottimizzazione del signal-assignment a livello di sistema.
Approccio “integrato” e approccio “distribuito"
In un contesto ideale, tutti i progettisti impegnati nello sviluppo del sistema dovrebbero utilizzare un unico database comune, contenente l’intero insieme dei dati di progetto. Con questo approccio, ogni modifica verrebbe propagata immediatamente. Sarebbe quindi possibile tracciare il segnale e i suoi vincoli anche attraverso i confini dei diversi domini. Bisogna sottolineare che esistono due distinte modalità di interazione tra il progettista ed il database. La prima è rappresentata dal processo di progettazione per il dominio target del progettista. La seconda è legata all’ottimizzazione tra i domini. Un modello che le consideri distintamente si rivelerebbe più efficace, ma presenterebbe alcuni inconvenienti. Inoltre, va segnalato che attualmente per ogni dominio vengono utilizzati strumenti EDA differenti.
Esiste poi un secondo approccio; questo approccio si basa sui flussi di progettazione di dominio esistenti, con l’aggiunta di un livello addizionale di integrazione e ottimizzazione. Questo livello è responsabile dello scambio dei dati relativi ai diversi componenti tra i diversi domini e dovrebbe inoltre fornire servizi mirati all’ottimizzazione dei componenti. In generale, questo approccio si rivela più complesso, tuttavia presenta il vantaggio di essere più flessibile, poiché utilizza i flussi di progettazione esistenti e comporta minori modifiche sia ai processi di sviluppo sia ai software EDA utilizzati. Il resto di questo documento si concentra sull’analisi di questo secondo approccio.
Requisito fondamentale: lo scambio di dati
I fondamenti di una metodologia distribuita di co-progettazione sono costituiti dall’organizzazione dello scambio dei dati. Generalmente, ogni dominio progettuale possiede la propria catena di tool EDA, il che rende difficoltosa l’attività di integrazione. Un’ulteriore problematica risiede nel fatto che, a volte, i diversi team sono restii a condividere in modo completo le informazioni di progetto, al fine di proteggere le proprie IP (Intellectual Properties). La pratica comune mostra come l’insieme ottimale di informazione sia costituito dall’interfaccia logica dei componenti, unitamente al suo footprint e ai vincoli per il signal-to-pin assignment. Si può convenire di chiamare questo insieme di informazioni “footprint+”.
Il livello di integrazione è responsabile della definizione e gestione di un insieme consistente di simboli, footprint e vincoli per ogni componente, in tutti i domini del progetto.
Contesto di ottimizzazione: layout
In questa metodologia si assume che ogni componente venga ottimizzato nel contesto di uno o più layout, ognuno dei quali solitamente appartiene ad un diverso dominio di progetto. L’ottimizzazione deve essere condotta dallo specifico team di dominio, nel rispetto di vincoli espressi dagli altri team, relativamente ai dati del componente. Nella maggioranza dei casi, sarà necessaria più di un’iterazione per giungere a un compromesso accettabile tra le esigenze dei diversi domini. Poiché la quasi totalità di tali iterazioni farà sorgere delle richieste ECO di tipo multi-dominio, sarebbe buona norma iniziare con l’ottimizzazione quanto prima possibile. Il processo di ottimizzazione può iniziare quando sono disponibili i componenti necessari per il layout e quando è stata definita la connettività tra di essi. Tuttavia è possibile iniziare un’ottimizzazione, se pur parziale, non appena parte dei dati viene resa disponibile. In generale, l’ottimizzazione ha le sue massime probabilità di successo quando viene condotta nel corso del floor planning ad alto livello.
I signal assignment ottimali per un componente dipendono da tre fattori.
• Connettività tra le interfacce logiche del componente ottimizzato e degli altri componenti
Essendo solitamente determinata dai requisiti funzionali, la si può considerare un dato di tipo statico, che non può essere modificato nel corso del processo di ottimizzazione.
• Placement di tutti i componenti
Iniziando l’ottimizzazione dell’I/O durante lo stadio del floor planning ad alto livello, si è solitamente in grado di valutare le diverse topologie alternative. Durante gli stadi successivi si gode invece di una minore libertà, rimanendo possibili solo piccole modifiche (per esempio, la rotazione dei componenti). Infine, non si gode di alcun grado di libertà se si tenta di utilizzare l’ottimizzazione dell’I/O per la soluzione di problemi emersi nel corso dell’ultima fase di routing. L’utilizzo di modifiche del placement per districare i grovigli delle reti presenta il vantaggio di non proiettare alcun effetto sui layout degli altri domini.
• Signal-to-pin assignment degli altri componenti
Questo è il tipo di dati che rimane sempre dinamico nel corso del processo di ottimizzazione. Ogni componente rappresenta l’interfaccia tra domini diversi, è quindi necessario accettare la presenza di modifiche provenienti da questi domini. Per limitare la portata di queste modifiche, è opportuno definire dei vincoli sull’assignment dei componenti.
Vincoli sull’assignment dei componenti
È una pratica comune, da parte dei produttori di FPGA, quella di definire un insieme molteplice di regole che vincolino i segnali assegnati ai propri apparati. Queste regole possono essere anche piuttosto complesse ed è fondamentale che non vengano violate nel corso del processo di ottimizzazione. I componenti del package e del die presentano di solito minori vincoli produttivi. È comunque possibile aggiungere dei vincoli personalizzati per qualsiasi tipo di componente. Essi costituiscono un metodo semplice e flessibile per individuare un compromesso tra le esigenze dei diversi domini progettuali. I progettisti impegnati in un dominio possono aggiungere dei vincoli per imporre alcune scelte di assignment che considerano per loro importanti. I progettisti del secondo dominio restano liberi di ricercare le proprie ottimizzazioni, rimanendo però all’interno dell’insieme di regole definite dai primi.
Analisi What-If del placement dei componenti: scenari di placement
La maggior parte delle modifiche di placement dei componenti produce un enorme impatto sull’ottimizzazione dell’assignment dei segnali. Per poter confrontare gli effetti di queste scelte radicali, è necessario possedere un metodo efficiente per la creazione e l’archiviazione dei relativi insiemi di dati: placement dei componenti, rotazioni ed assignment signal-to-pin per ogni componente. Questi dati sono completamente differenti per ogni topologia di placement ed è possibile identificarli, ottimizzarli e memorizzarli come scenari di placement.
Ottimizzazione dell’assignment dei componenti: unraveling interattivo e automatico
Una volta definito il placement dei componenti per un dato scenario, il passo successivo è costituito dall’ottimizzazione degli assignment signal-to-pin. Quando le modifiche necessarie per sbrogliare la matassa sono minime, è possibile procedere in modalità interattiva, mediante inversioni dell’assignment tra specifiche coppie di pin. Questo modo di procedere presenta il vantaggio di consentire il pieno controllo sugli effetti indotti. Quando tuttavia il progetto richiede un elevato numero di modifiche, il che avviene nella maggior parte dei casi, è indispensabile utilizzare un algoritmo di ottimizzazione automatico (unraveling). In entrambi i casi è comunque molto importante che venga costantemente garantito il rispetto di tutti i vincoli di assignment.
Definizione fisica dei componenti: virtual prototyping
Esiste un ulteriore grado di libertà, reso talvolta disponibile durante le fasi iniziali del processo di progettazione. Nel dominio FPGA, è solitamente possibile scegliere uno specifico package tra le numerose alternative,, ciascuna delle quali dotata di una particolare configurazione di pin. Nel caso dei package ASIC, è addirittura possibile progettare una configurazione personalizzata dei pin, ottimizzata per le proprie esigenze. Lo stesso vale per quanto riguarda il bumping degli IC o la configurazione degli I/O ring. L’integrazione di queste configurazioni all’interno del processo di co-progettazione è estremamente dispendiosa in termini di tempo, poiché produce una crescita vertiginosa del numero di soluzioni, il che rende impossibile poterle verificare tutte. Il miglior approccio sembra essere quello di scegliere preventivamente una particolare definizione fisica per ogni componente, ed utilizzarla attraverso tutto il processo di ottimizzazione. Dopo aver valutato molteplici topologie di placement dei componenti, il virtual prototyping può rivelarsi estremamente efficace per il fine-tuning dei risultati, all’interno del migliore scenario di placement individuato.
Conclusioni
Dopo un’attenta analisi delle difficoltà e delle sfide insite nei processi di progettazione multi-dominio utilizzati per la maggior parte dei prodotti elettronici odierni, risulta evidente che un approccio di tipo “distribuito” all’integrazione dei domini presenta numerosi vantaggi. L’introduzione di un livello di integrazione ed ottimizzazione fornisce uno strumento per lo scambio dei dati tra gli specifici gruppi di progetto dei diversi domini, nel rispetto sia dei vincoli organizzativi che di quelli legati alla protezione delle IP, e inoltre semplifica l’attività cruciale di ottimizzazione dell’assignment signal-to-pin. Tra gli strumenti disponibili per realizzare l’obiettivo vanno inclusi: l’utilizzo di vincoli di assignment, gli scenari di placement, l’unraveling - sia automatico che interattivo - ed il virtual prototyping. L’utilizzo di questa metodologia favorisce incrementi di produttività estremamente significativi per i team di sviluppo, minori costi di produzione ed una migliore qualità dei progetti.