Il system-level design per affrontare nuove sfide

I sistemi embedded sono all'interno di prodotti più o meno complessi e quindi non visibili (embedded) all'esterno. Prodotti come i modem, i riproduttori audio, i telefoni, le radio, ecc. hanno al loro interno parti funzionali più o meno complesse di natura embedded. L'integrazione sempre più spinta di funzionalità di natura diversa fra loro, ha reso la progettazione di tali sistemi a complessità crescente, rendendo quindi necessario un livello di astrazione maggiore e conseguentemente l'esigenza di strumenti e metodologie di sviluppo innovative.
L'approccio system-level è il modello di progettazione che, dall'introduzione dei dispositivi microelettronici configurabili e riconfigurabili come i Field Programmable Gate Array e i System-on-Chip programmabili, è stato proposto agli sviluppatori per consentire loro di affrontare in maniera adeguata la sfida di progettazione che simili dispositivi ad elevata complessità imponevano.

La progettazione tradizionale tiene strettamente legate tra loro la fase di specifica con quella della realizzazione, rendendo in tal modo difficile e molto rischioso l'intero ciclo di sviluppo in quanto obbliga a scegliere, per esempio, l'hardware prima ancora di sviluppare il software. L'introduzione della modellazione ha consentito di disaccoppiare la fase di specifica da quella di realizzazione, utilizzando tecniche più o meno sofisticate di simulazione e di generazione automatica del codice di programmazione dei dispositivi, sia inteso come software eseguibile, sia inteso come codice di programmazione dell'hardware. In particolare, proprio la sintesi dell'hardware, e della relativa e funzionalità, è stato il più importante elemento di innovazione nella progettazione dei sistemi embedded di media ed elevata complessità. La modellazione e le relative metodologie e tecniche di implementazione permettono di sovrapporsi alla fase di realizzazione del prodotto senza esservi strettamente legati. In tal modo, è possibile decidere dopo e non prima relativamente alla più idonea piattaforma hardware per l'applicazione. Inoltre, sarà anche possibile in momenti successivi migrare su altre piattaforme che si rendano disponibili nel tempo o che si dimostrino migliori rispetto alle scelte pregresse.

Eterogeneità dei sistemi embedded

I sistemi embedded, in particolare quelli a forte componente di signal processing, sono caratterizzati da una elevata complessità legata soprattutto alla natura eterogenea delle funzionalità. Le tre nature fondamentali di sistema, la digitale, l'analogica e la mista (mixed-signal) coesistono sulla stessa piattaforma hardware, imponendo in tal modo la coesistenza di algoritmi, di metodi di progettazione e di metodi di implementazione molto diversi tra loro. Se si analizza la struttura di un sistema embedded per il signal processing, l'eterogeneità è più che evidente: i microcontrollori coesistono con i Dsp, i sistemi operativi coesistono con funzioni codificate in linguaggio assembler, le memorie multiporta coesistono con i dispositivi mixed-signal, ecc. Per gestire questo livello di complessità il progettista ha bisogno di elevare il livello di astrazione sia a livello software che a livello hardware. Per quanto concerne il software, il livello di astrazione porta necessariamente ad abbandonare completamente il linguaggio assembler a favore di linguaggi ad alto livello, in particolare quelli cosiddetti specification-independent. Per quanto concerne l'hardware, il livello di astrazione deve andare molto oltre il transistor, utilizzando i cosiddetti linguaggi di descrizione dell'hardware. Questo approccio impone che le specifiche di sistema siano un'astrazione delle specifiche hardware e software, in modo da non condizionare all'origine la fase dell'implementazione.

Dal C all'hardware

Una delle strategie di maggiore successo nella progettazione system-level sta nel modello di progettazione di sistema che utilizza la ben consolidata capacità dei progettisti di rappresentare, tramite il linguaggio C, la funzionalità di un sistema. Ovviamente, non si tratta della programmazione basata sul linguaggio C per l'esecuzione software su processori sequenziali, ma del linguaggio C utilizzato come linguaggio di descrizione di processi misti paralleli e sequenziali, da tradurre in codice per configurare l'hardware (Fpga, PSoC, ecc.). Ovviamente si tratta di un linguaggio C solo in termini sintattici e semantici. Dal punto di vista del modello di programmazione, il linguaggio C per la progettazione hardware è stato arricchito di opportune modifiche che consentono di rappresentare adeguatamente la natura intrinsecamente parallela dei sistemi.

La Osci (Open SystemC Iniziative) ha definito il linguaggio SystemC portandolo a livello di standard industriale (Ieee Std. 1666-2005). SystemC è un linguaggio di progettazione system-level nato come open source basato sulle librerie delle classi C++. La peculiarità di questo linguaggio è quella di permettere di modellare le parti di un sistema, di valutare e verificare la ripartizione tra hardware e software, di controllare l'interazione tra i blocchi funzionali e di misurare le interazioni tra questi.
L'utilizzo di SystemC da parte di chi sviluppa sistemi elettronici di media e alta complessità è abbastanza diffuso in quanto questi traggono un elevato vantaggio dal fatto che questa metodologia di progettazione dell'hardware offre la possibilità dell'esplorazione delle possibili architetture di sistema per pervenire alla migliore possibile.
SystemC è fondamentalmente uno strumento di modellazione e simulazione estremamente utile per la progettazione di sistemi complessi ed eterogenei, come la maggior parte dei sistemi embedded. La trasformazione in codice di programmazione dell'hardware (per esempio di Fpga) è un ulteriore e utile passo per completare il ciclo di progettazione.

Per esempio, Agility Compiler di Celoxica consente di trasformare un Transaction Level Model (TML), descritto con il linguaggio SystemC, nel corrispondente silicio configurato. Celoxica promuove anche l'uso di Handel-C, un linguaggio di descrizione dell'hardware con costrutti tipici del linguaggio C, modificato in modo da poter descrivere processi paralleli e concorrenti, direttamente implementabili in hardware. Un altro esempio viene da Altera che per il Nios II embedded processor rende disponibile il C2H (C-to-Hardware) acceleration compiler, uno strumento che consente di accelerare le prestazioni delle funzioni Ansi C time-critical, trasformandole in acceleratori hardware implementati su Fpga. La peculiarità di questo compilatore C per la programmazione dell'hardware è quella di non richiedere un C esteso, bensì un Ansi/Iso C standard per la codifica.

La progettazione model-based

Ambienti di sviluppo come Matlab (per il controllo) e Labview (per la misura) sono due esempi di ambienti di modellazione che si sono evoluti nella direzione del system-level design. Matlab per esempio ha integrato l'ambiente nativo di modellazione matematica con Simulink e Stateflow, per consentire di gestire a un livello di astrazione superiore funzionalità differenti.
Questo è un ulteriore livello di astrazione, che consente di gestire adeguatamente la crescente complessità ed eterogeneità dei sistemi. Si tratta del cosiddetto model-based design.

Il model-based design consente di progettare il sistema embedded e di valutarne la funzionalità senza realizzare il sistema hardware. Ciò non significa, quando il progetto è completamente verificato, di non poter passare alla fase realizzativa (prototipazione). La generazione automatica del codice di programmazione consente di ottenere il codice di programmazione dell'hardware (Fpga, Asic strutturato, ecc.) con la garanzia che il livello funzionale è corretto, essendo stato simulato e verificato a livello di modello.
The Mathworks ha sviluppato un ambiente di modellazione particolarmente orientato alla progettazione dei sistemi di controllo embedded. L'ambiente visuale interattivo model-based design di The Mathworks consente di verificare tramite simulazione l'intera funzionalità del modello di controllo, senza scrivere codice di programmazione o realizzare hardware per l'esecuzione di tale codice.

Il core di questa metodologia di progettazione sono Matlab e Simulink, che mettono a disposizione rispettivamente i modelli matematici dei sistemi fisici e i modelli di simulazione di tali processi. Grazie alla natura grafica dell'ambiente di modellazione Simulink, è possibile costruire in pochissimo tempo un modello di controllo embedded con operazioni tipiche di una interfaccia grafica utente (drag-and-drop, clik, ecc.). La natura eterogenea del processo (continuo, discreto, multi-rate, ecc.) è completamente supportata sia dall'ambiente di modellazione, sia da quello di simulazione.

Anche National Instruments ha investito pesantemente per ottimizzare LabView, il suo ambiente di modellazione grafica dei processi di acquisizione dati e controllo, con l'obiettivo di soddisfare le esigenze di progettazione di sistemi di controllo complessi in termini di model-Based Design. Con l'introduzione dei tool add-on di progettazione dei sistemi di controllo per LabView, NI ha reso disponibile un ambiente grafico unitario per l'identificazione di sistema, la progettazione del controllo, la simulazione e l'analisi. Senza modificare il codice, è possibile trasferire gli algoritmi di controllo e il sistema modellato su hardware operante in real-time sia per la prototipazione hardware, sia la simulazione cosiddetta Hil (Hardware-in-the-loop). In tal modo gli sforzi di integrazione vengono considerevolmente ridotti e contemporaneamente anche i tempi di apprendimento da parte dei progettisti, soprattutto quando affrontano problematiche applicative nuove relativamente alla loro esperienza.

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome