Spaziando attraverso la maggior parte dei domini applicativi, Internet of Things ha un impatto sui requisiti e le priorità di sviluppo hardware/software che va ben oltre le classiche considerazioni esclusivamente legate a prestazioni, potenza e costo. La verifica integrata - che combina verifica formale, simulazione a livello transazionale e di trasferimento di registro classico, emulazione e prototipazione basata su Fpga - è diventata un requisito fondamentale. La Cadence Verification Suite ha già aperto la strada proponendo i migliori motori di verifica formale e di emulazione. Cadence ha lanciato la release di nuova generazione per la simulazione e la prototipazione basate su Fpga. Xcelium introduce nuovi livelli di parallelizzazione che integrano la tecnologia ottenuta nel 2016 nell’ambito dell’acquisizione di Rocketick, mentre Protium S1 segna una nuova pietra miliare nella prototipazione basata su Fpga. Tale soluzione riduce il tempo di prototipazione, coerentemente con l’emulazione e le nuove funzionalità per lo sviluppo software, in precedenza sconosciute nella prototipazione basata su Fpga. Con queste nuove integrazioni, la Cadence Verification Suite diventa la soluzione a cui rivolgersi per la verifica e lo sviluppo software dei progetti nell’era dell’IoT. I progetti considerati come IoT interessano domini applicativi che vanno dall’elettronica indossabile ai dispositivi mobili, passando attraverso case intelligenti connesse, set-top box, auto dotate di assistenza alla guida e collegamenti tra veicoli, fino ad arrivare all’automazione aziendale declinata in chiave di smart industry, sanità, smart-city e gestione energetica. Essi comprendono progetti per i nodi edge, hub di aggregazione dati così come disegni molto complessi per networking e server, in cui i dati si vengono trasmessi e analizzati permettendo applicazioni mai viste grazie alle capacità legate ai processi di analytics e machine learning. In passato, potenza, prestazioni e costi erano i principali driver che aiutavano i team di progettazione a dare delle priorità. Nell’era dell’IoT questi driver sono affiancati da altre priorità, come sicurezza, connettività e aggiornabilità sul campo. Oltre a dover essere considerate e bilanciate, le nuove priorità variano anche in funzione dell’applicazione finale. Per i tracker fitness, ad esempio, il costo è la massima priorità, seguita da consumi e connettività. Al contrario, per le protesi sanitarie impiantabili, la sicurezza e la protezione assumono la priorità più alta. L’aggiornabilità sul campo è al secondo posto, seguita dal consumo di energia. Nelle applicazioni reattive per automotive, automazione industriale e robotica, le prestazioni vengono prima di tutto, seguite da connettività e aggiornabilità sul campo. In una macchina, il ritardo di una risposta per il conducente può mettere a repentaglio la vita umana o comportare perdite quando un problema costringe ad arrestare un processo di produzione industriale. Nell’ambito dell’infrastruttura urbana, per elementi diffusi quali impianti semaforici o installazioni cittadine cui fanno riferimento importanti funzioni di controllo, l’aggiornabilità sul campo è la massima priorità, seguita da sicurezza e costi.
La Cadence Verification Suite
Date le diverse esigenze di sviluppo legate a nodi edge, hub, reti e server, gli strumenti per la verifica e lo sviluppo del software devono essere estremamente flessibili e garantire una stretta interazione. La Fig. 1 mostra la Cadence Verification Suite con i suoi quattro motori core: formale, di simulazione, di emulazione e di prototipazione. È fondamentale per i team di sviluppo essere in grado di trasferire in modo efficiente un progetto attraverso i diversi motori, capitalizzando la loro forza individuale attraverso una combinazione ottimale. Una struttura di verifica si estende attraverso i motori e fornisce un’esperienza d’uso unificata per aspetti fondamentali come la gestione della verifica, il debug e la portabilità dei test. In combinazione, motori e struttura sono orientati a ottimizzare il throughput totale dei progetti, garantendo un time to market più rapido e consentendo uno sviluppo guidato dalla metrica che offre agli ingegneri delle chiare indicazioni relativamente a quando sono pronti a procedere e implementare i loro prodotti. I flussi di sviluppo e di verifica software risultanti sono ottimizzati per domini applicativi specifici e sono concepiti per essere accessibili in remoto attraverso la progettazione basata su Cloud. Motori hardware, emulazione e prototipazione basata su Fpga sono disponibili da tempo. Essi permettono di accelerare le velocità, ampliando la gamma delle capacità sul fronte delle verifiche hardware/software, dello sviluppo del software e della validazione di sistema. Nell’era dell’IoT, lo sviluppo del software è diventato chiaramente l’elemento portate che consente di rispettare i tempi di implementazione del prodotto e con esso le esigenze di profitto. Essere in grado di sviluppare il software precocemente e in parallelo all’hardware è la chiave del successo di un prodotto. Ciò richiede una velocità di sviluppo possibile solo con l’assistenza dell’hardware. L’emulazione, tipicamente nella gamma dei MHz, è tipicamente concentrata sull’uso di costosi modelli che estendono la verifica hardware all’ottimizzazione a bassa potenza, all’analisi delle prestazioni e al trattamento preliminare delle sequenze di test per la verifica post-silicio. Il tutto è abilitato da processi di debug simulation-like, bring-up veloci e flessibilità di assegnazione dei compiti nell’ambito delle farm di emulazione. Con la sua velocità superiore alle decine di MHz o anche alle centinaia di MHz, il punto di forza della prototipazione basata su Fpga è sempre stato tipicamente lo sviluppo del software e la validazione del sistema.
Cadence Protium S1
Non esiste però un motore che non abbia comportato delle sfide. L’emulazione è sempre stata leggermente limitata in termini di velocità e mentre le connessioni smart alle piattaforme virtuali in configurazioni ibride possono accelerare il tempo anche di 50 volte, la prototipazione basata su Fpga raggiunge generalmente un rendimento appropriato che soddisfa le esigenze degli sviluppatori software. Tuttavia, il tempo di prototipazione, a causa delle ottimizzazioni in gran parte manuali richieste e della necessità di riscrivere l’Rtl per renderlo compatibile a livello Fpga, è sempre stato molto lungo, spesso nell’ordine dei mesi. Cadence Protium S1, insieme alla piattaforma di emulazione Cadence Palladium Z1 Enterprise, affronta direttamente queste sfide rivoluzionando il tempo di bring-up mediamente dell’80%, cioè riducendolo da mesi a settimane o addirittura giorni. Questo offre agli utenti il percorso di prototipazione più veloce per lo sviluppo del software, la convalida del sistema e le regressioni hardware. A tal fine, le innovazioni chiave offerta da Protium S1 sono rappresentate da un livello di automazione che permette di accelerare il tempo di prototipazione e dalla sua congruenza con l’emulazione. Una sfida fondamentale per la prototipazione basata su Fpga è la modellazione delle memorie. Le memorie Asic sono di solito molto diverse dalle memorie Fpga interne. In genere esse hanno più di 2 porte e dispongono di caratteristiche di Write_Enable multiple. Pertanto, per rendere possibili tali funzioni anche in un ambiente Fpga, gli utenti devono aggiungere dei multiplexer e implementare un comportamento multi-porta e una circuiteria Write_Enable capace di garantire che l’accesso in scrittura si verifichi nel momento giusto e in sincronia con indirizzo e dati validi. La modellazione manuale di tutte le memorie del progetto può essere un processo lungo e complicato. Con Protium S1, la modellazione della memoria è rapida e automatica, come mostrato in Fig. 2. La logica di generazione del clock viene replicata in ogni Fpga, mentre la logica di reset è implementata su un solo Fpga, che di fatto può essere uno qualsiasi degli Fpga. La logica di reset è necessaria per sincronizzare le temporizzazioni su molteplici Fpga. Un’altra sfida per la prototipazione basata su Fpga è la distribuzione dei clock e la loro sincronizzazione. Quando un progetto è suddiviso su più Fpga, i clock primari necessari devono essere instradati a ciascuno di essi. Questi clock devono garantire una stretta relazione di fase tra gli Fpga. I progetti in genere hanno decine di clock primari con una vasta gamma di requisiti di frequenza. La moltitudine di clock sulla scheda e la loro distribuzione a tutti gli Fpga comporta una struttura scarsamente efficiente. Per far fronte a questo aspetto, il flusso di compilazione di Protium S1 automatizza le temporizzazioni e utilizza i Pll incorporati negli Fpga per generare tali clock a livello locale. Ciò richiede solo un clock globale da instradare a tutti gli Fpga. I Pll possono usare questo clock come orologio di riferimento: tutti i clock degli Fpga sono così sincronizzati con un segnale di reset comune. Inoltre, Protium S1 usa una temporizzazione basata su ciclo automatico per il flusso completamente automatizzato, come mostrato in Fig. 3. Il compilatore genera automaticamente un clock concettuale chiamato Fclk con cui tutti i clock del progetto sono sincronizzati e con cui tutte le reti vengono aggiornate una volta per ciclo. Utilizzando tale tecnologia è possibile supportare nel progetto un numero illimitato di clock, evitando qualsiasi violazione di hold, superando le limitazioni dei clock Fpga specifici e migliorando i tempi di chiusura e di place and route. Quando mappati in Protium S1, i progetti che girano in emulazione, attraverso il compilatore multi-struttura Cadence vengono completati nel giro di settimane o addirittura giorni. Non sono necessarie modifiche Rtl: il partizionamento e la compilazione di memoria sono interamente automatizzati e il place and route dell’Fpga è totalmente integrato. Gli sforzi manuali che la prototipazione tradizionale richiede vengono quindi automatizzati e gli utenti possono in genere vedere prontamente in esecuzione i loro disegni a 3 a 5 MHz, circa 5 volte più velocemente che in emulazione. Ma le prestazioni non si esauriscono qui. Protium S1 è scalabile da 3 MHz a 100 MHz, da completamente automatico a completamente manuale. Il front-end automatizzato di Protium S1 permette un’ulteriore ottimizzazione di temporizzazioni, percorsi critici e porte di memoria. Insieme al place and route, ciò permette di ampliare facilmente l’intervallo di velocità a 10 MHz. Per estendere ulteriormente le prestazioni, l’hardware Protium S1 può sostituire facilmente i sistemi Fpga sviluppati internamente, permettendo di raggiungere prestazioni di 10 MHz attraverso l’ottimizzazione manuale. Per lo sviluppo del software, Protium S1 offre funzionalità uniche e molto specifiche, non disponibili in altri sistemi di prototipazione basati su Fpga. Upload e download della memoria unitamente alla capacità di avviare e arrestare liberamente la progettazione o forzare e rilasciare le abilitazioni dei segnali, garantiscono un debug avanzato del software. Protium S1 dispone anche di un’interfaccia transazionale che consente di collegare software basati su host. Per coprire una vasta gamma di dimensioni di progetto e adattarsi ai diversi requisiti di interfaccia, Protium S1 è disponibile in molteplici configurazioni hardware, che vanno da due Fpga per sistema a otto Fpga per sistema. Tutti gli Fpga sono dispositivi Ultrascale XCVU440 di Xilinx che garantiscono, a seconda del progetto da prototipare, fino a 25M gate di capacità Asic e fino a 88 MB di memoria embedded per Fpga. Le schede sono montate in un telaio personalizzato, dotato di alimentazione e raffreddamento, interfacce e cablaggi. Oltre a offrire una vasta gamma di interfacce on-board, la piattaforma Protium S1 è completata da una gamma completa di schede figlia. La piattaforma Protium S1 è anche totalmente compatibile con la famiglia di adattatori SpeedBridge di Cadence, offrendo una transizione ottimizzata da un ambiente di emulazione a un ambiente di prototipazione basato su Fpga.