Gli strumenti Eda (Electronic design automation), inizialmente finalizzati ad assistere lo sviluppatore in contesti molto impegnativi e complessi, come quelli della progettazione di sistemi logici programmabili basati su Fpga oppure di circuiti microelettronici custom e semicustom di natura system-on-chip, si sono progressivamente posizionati su altri contesti di progettazione, mantenendo in primo piano la connotazione di progettazione assistita da calcolatore finalizzata a ridurre la complessità della progettazione, accorciare il ciclo di sviluppo e rendere più affidabile il risultato finale, grazie a una serie di strumenti collaterali che ormai qualsiasi sistema Eda è in grado di offrire. La crescita di complessità dei sistemi oggetto della progettazione, anche come singoli componenti, è tale da richiedere una assistenza da parte del computer attraverso la disponibilità di strumenti come la simulazione, il profiling di funzionalità caratteristiche del sistema, l’analisi funzionale del sistema, ecc. In particolare per il progettista vi sono esigenze emergenti da soddisfare come la verifica e l’implementazione a livello di sistema di funzionalità applicative con caratterizzazioni difficili da ricondurre agli standard tipici della progettazione tradizionale. L’obiettivo, sia dei progettisti interessati all’Eda che dei produttori dei sistemi Eda, è quello di ridurre i costi di sviluppo continuamente crescenti dei sistemi e i tempi di sviluppo in rapporto alla complessità comunque e continuamente crescente.
Eda e automotive
Un caso emblematico è quello della progettazione in ambito automotive, dove l’aumento della complessità è ormai esponenziale. Nell’automotive recentemente c’è stata una significativa accelerazione nell’adozione di circuiti integrati sempre più complessi e di paradigmi di elaborazione altrettanto complessi, in quanto sono stati definiti target applicativi che superano ampiamente gli orizzonti applicativi tipici dell’automotive tradizionale. L’elettronica viene utilizzata in funzionalità che riguardano la sicurezza come airbag e Abs, oppure di assistenza al guidatore, come il parcheggio assistito o la guida assistita, oppure il confort del guidatore e dei passeggeri, come la climatizzazione, l’intrattenimento e la comunicazione, ecc. Tutto ciò si basa su componenti elettronici sempre già complessi e sofisticati da integrare in contesti embedded sempre più stringenti in termini di requisiti e prestazioni. In questo scenario di esplosione della complessità dei sistemi il ruolo e l’interesse da parte degli sviluppatori verso i sistemi Eda cresce con lo stesso ritmo definendo nuovi obiettivi cui i sistemi Eda mirano a soddisfare: minimizzazione dei consumi di potenza nei sistemi; ottimizzazione del rapporto costo/potenza dei sistemi; verifica funzionale a livello fisico; supporto alla produzione senza soluzione di continuità dalla progettazione al prodotto finale; riduzione dei costi. La nuova dimensione della complessità dello sviluppo dei sistemi ha riesumato o inventato paradigmi di progettazione assistita da computer come la simulazione, la prototipazione virtuale, il system profiling e l’energy profiling. Grazie alla prototipazione virtuale, è possibile eseguire la verifica funzionale di un sistema senza le limitazioni delle tecniche della progettazione tradizionale rigidamente legata alla disponibilità del prototipo fisico. La prototipazione virtuale consente di progettare facendo riferimento a un modello funzionale modificabile in qualsiasi momento del ciclo di sviluppo e presenta il vantaggio di poter trasformare il modello in sistema finale potendo in tal modo ottenere la validazione del software in assenza dell’hardware. Grazie alla prototipazione virtuale è possibile comprimere i costi della fase di progettazione, diversamente non comprimibili.
Eda e modellazione
Un contesto di progettazione che ha ampiamente beneficiato dell’approccio Eda alla progettazione è stato quello della comunicazione in ambito consumer (telefonia mobile e servizi dati su dispositivi palmari). In questo contesto il model system design lanciato da Mathworks ha rappresentato la via maestra dell’automazione della progettazione automatica. Matlab e Simulink di Mathworks consentono attraverso un linguaggio ad alto livello e interattivo di visualizzare in forma grafica e di programmare l’applicazione con la possibilità di utilizzare strumenti commerciali di altri vendor di Eda dotati di Bsp (Board support package). Un approccio simile è stato adottato da Synopsys con SPW con l’obiettivo di superare i limiti intrinseci di approcci come quello di Matlab basati prevalentemente sull’utilizzo di linguaggi di programmazione per la rappresentazione del modello. SPW di Synopsys (Fig. 2) adotta una strategia di modellazione Cdf (C Data Flow) che consente una descrizione più efficiente degli algoritmi di signal processing implementabili su hardware digitale di natura embedded. L’approccio Cdf è più intuitivo nel descrivere sistemi ad elevato parallelismo e quindi ottenere uno schedule esecutivo completamente deterministico, requisito questo che è alla base delle attuali architetture eterogenee multicore. Gli algoritmi di signal processing dello strumento SPW sono supportati da un ampio set di modelli Dsp contenuti in una libreria (3000 modelli). Il package base di SPW include la co-simulazione dell’interfaccia Rtl.
Eda e prototipazione
La prototipazione virtuale è una delle principali peculiarità degli strumenti Eda: consente lo sviluppo anticipato del software e rende possibile l’automazione della prototipazione. La Virtual System Platform di Cadence, per esempio, consente la creazione dei prototipi virtuali attraverso la generazione automatica del codice da un IP-Xact o da un input di testo, generando un Tlm (Transaction-level model). Vengono resi disponibili i modelli delle IP sotto forma di funzioni di libreria integrabili Tlm e la codifica System-C in versione sorgente modificabile per aggiornamenti, correzioni e adeguamenti a nuove specifiche (Fig. 3). La Virtual System Platform supporta modelli veloci come gli Arm Fast Model operanti ad alta velocità. La verifica funzionale viene eseguita come se si trattasse di un vero e proprio prototipo basato sull’hardware finale e con le modalità tipiche del debug hardware e software (breakpoints, steps, tracing, source-level debug, ecc.). La visibilità dell’hardware è completa e consente di individuare qualsiasi baco hardware o software, a qualsiasi livello di annidamento del sistema. Un simile approccio simile alla prototipazione virtuale fa parte del Vista Virtual Prototyping di Mentor Graphics. Il modello di astrazione è quello Tlm. Il Tlm consente la separazione tra la comunicazione tra le unità e la loro implementazione. La codifica del modello Tlm è basata su SystemC, e ciò implica la possibilità da parte dello sviluppatore di modificarlo a sua convenienza a qualsiasi livello.