Progettare l hardware con linguaggi di tipo C/C++



Documenti analoghi
Dispensa di Informatica I.1

ARCHITETTURE DI SISTEMI INTEGRATI PER APPLICAZIONI SPECIFICHE. Design Flow

TECNICO SUPERIORE PER L AUTOMAZIONE INDUSTRIALE

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

Linguaggi di programmazione

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Capitolo 4 Pianificazione e Sviluppo di Web Part

Approccio stratificato

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

Introduzione alla Virtualizzazione

Finalità della soluzione Schema generale e modalità d integrazione Gestione centralizzata in TeamPortal... 6

COME SVILUPPARE UN EFFICACE PIANO DI INTERNET MARKETING

Xilinx ISE Tutorial File -> New Project...

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

introduzione I MICROCONTROLLORI

PROJECT MANAGEMENT SERVIZI DI PROJECT MANAGEMENT DI ELEVATA PROFESSIONALITÀ

La Macchina Virtuale

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Elettronica dei Sistemi Programmabili

Linguaggi e Paradigmi di Programmazione

Database. Si ringrazia Marco Bertini per le slides

Introduzione alla Progettazione per Componenti

Reti sequenziali sincrone

Calcolatori Elettronici A a.a. 2008/2009

uadro Soluzioni software per L archiviazione elettronica dei documenti Gestione Aziendale Fa quadrato attorno alla tua azienda

SysAround S.r.l. L'efficacia delle vendite è l elemento centrale per favorire la crescita complessiva dell azienda.

Mon Ami 3000 Provvigioni agenti Calcolo delle provvigioni per agente / sub-agente

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Le fattispecie di riuso

FONDAMENTI di INFORMATICA L. Mezzalira

Via Don Angelo Scapin, 36 I Roncaglia di Ponte San Nicolò (PD) ITALIA Phone/Fax: info@spinips.com

Per capire meglio l ambito di applicazione di un DWhouse consideriamo la piramide di Anthony, L. Direzionale. L. Manageriale. L.

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web: Prof. G. Quarella prof@quarella.

Technical Document Release Version 1.0. Product Sheet. MediaSpot. Creazione e gestione palinsesto pubblicitario

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

DATAMORFOSI. E la sintesi della strategia di prodotto di Webgate400.

IoBirro. Birra fatta in casa con SIMATIC. Siemens AG All Rights Reserved. Industry Sector

Ministero dell istruzione, dell università e della ricerca. Liceo Tecnologico. Indirizzo Informatico, Grafico e Comunicazione

2 Gli elementi del sistema di Gestione dei Flussi di Utenza

C3 indirizzo Elettronica ed Elettrotecnica Profilo

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

La Metodologia adottata nel Corso

STRUMENTI DI PRESENTAZIONE MODULO 6

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi

Architettura hardware

Per informazioni rivolgersi allo Studio:

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

LINGUAGGI DI PROGRAMMAZIONE

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Algebra Di Boole. Definiamo ora che esiste un segnale avente valore opposto di quello assunto dalla variabile X.

Il sistema operativo TinyOS

Scheda. Il CRM per la Gestione del Marketing. Accesso in tempo reale alle Informazioni di rilievo

Artifact Centric Business Processes (I)

La tecnologia cloud computing a supporto della gestione delle risorse umane

Parte I. Prima Parte

Cosa è un foglio elettronico

Progettazione : Design Pattern Creazionali

Il sistema di Kuoni Italia per prenotare On Line il Tuo Viaggio.

BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D

Project Management. Modulo: Introduzione. prof. ing. Guido Guizzi

CONTENT MANAGEMENT SYSTEM

02 L Informatica oggi. Dott.ssa Ramona Congiu

DISCIPLINA TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

Il servizio di registrazione contabile. che consente di azzerare i tempi di registrazione delle fatture e dei relativi movimenti contabili

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Corso di Informatica

Gestione Risorse Umane Web

Rilevi Group srl viene costituita a Bologna, Italia, nel

Concetti di base di ingegneria del software

Progettaz. e sviluppo Data Base

Lezione 1. Introduzione e Modellazione Concettuale

NOVITÀ SITI COMMERCIALISTA

articoli per la ferramenta materiali edili ed affini

Origini e caratteristiche dei calcolatori elettronici

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

ISTITUTO TECNICO ECONOMICO MOSSOTTI

REALIZZARE UN MODELLO DI IMPRESA

Università degli Studi di Salerno

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Sviluppo di processi per l automatizzazione del testing per applicazioni Android

IL MANAGER COACH: MODA O REQUISITO DI EFFICACIA. Nelle organizzazioni la gestione e lo sviluppo dei collaboratori hanno una importanza fondamentale.

DSCube. L analisi dei dati come strumento per i processi decisionali

Progettazione di Basi di Dati

Strumenti per la programmazione

YOUR EASY SOLUTION FOR COSTING

Lo scenario: la definizione di Internet

Con SIGNUM è possibile intervenire con diversi livelli di personalizzazione e controllo sui dati letti. In particolare SIGNUM può essere usato:

APPENDICE I Pratiche di tecnologie informatiche per la elaborazione della musica e del suono

Liceo Tecnologico. Indirizzo Informatico e Comunicazione. Indicazioni nazionali per Piani di Studi Personalizzati

uadro Soluzione software e hardware Per le rilevazione presenze Gestione Aziendale Fa quadrato attorno alla tua azienda

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Il Sistema Nazionale di Autovalutazione

CPU. Maurizio Palesi

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

Transcript:

Progettare l hardware con linguaggi di tipo C/C++ Dietro l acronimo SLD (System Level Design) si celano gli ultimi progressi compiuti nel campo degli strumenti di progettazione hardware e di sistema. Uno di questi è il linguaggio. La progettazione dei circuiti integrati, sin dai primi anni ottanta, si è avvalsa di strumenti CAD che consentivano la creazione dei progetti mediante schematico, cioè un foglio elettronico che raffigurava in maniera opportuna una collezione di simboli logici interconnessi da fili. Per circuiti di dimensioni ragionevoli, come ad esempio un centinaio di flip-flop, non era inoltre escluso il ricorso a descrizioni hardware mediante equazioni logiche grazie ai linguaggi ABEL, PALasm e simili. Questi strumenti di progettazione, con l evoluzione della tecnologia e il perfezionamento dei processi di integrazione, evidenziavano dei limiti dovuti alla produttività (cioè alla capacità di descrivere molti gate in poco tempo), al riuso di un progetto per uno futuro (aspetto in parte arginato dalla creazione di una macro), al re-target tecnologico (un progetto, utilizzando simboli di una libreria di un costruttore, non poteva essere riusato come macro in un nuovo progetto realizzato con un altro costruttore). Agli inizi degli anni novanta sono stati introdotti i linguaggi di descrizione di alto livello come Verilog e VHDL. Anche se l utilizzo di un simile strumento progettuale implica l adozione di un tool di sintesi che trasforma istruzioni, descritte in un opportuna sintassi, in simboli e fili presenti in un file denominato netlist, i progressi sono stati enormi. La produttività è enormemente aumentata (in un giorno si descrive e si testa il comportamento di un circuito altrimenti solamente disegnato in una settimana), il progetto è indipendente dalla tecnologia (sarà il tool di sintesi ad utilizzare l opportuna libreria tecnologica), viene introdotto il vero riuso dei progetti che conduce anche alla creazione di un mercato tra aziende e clienti delle così definite Intellectual Property. Alle soglie dell anno 2000 i linguaggi HDL iniziano a evidenziare limiti dovuti alle spaventose velocità di crescita dell area di integrazione nei dispositivi sia di tipo ASIC sia di tipo programmabile, e non sembrano più in grado di riuscire a descrivere in breve tempo un sistema complesso. I limiti sorgono anche nell aumentato numero di progettisti da coordinare in un sistema complesso che oltrepassata una soglia diventa ingestibile e dai tempi di simulazione via via crescenti. La creazione di linguaggi simili al C/C++, o anche l utilizzo degli stessi, per descrivere l hardware viene in soccorso alle cresciute esigenze di integrazione. In questo caso i software appositamente sviluppati compiono la trasformazione dal dominio C a quello VHDL/Verilog e successivamente a quello circuitale, oppure si occupano del passaggio diretto. Integrazione significa anche System on Chip e quindi algoritmi e funzioni che possono trovare collocazione in una realizzazione software o hardware all interno dello stesso componente essendo descritti in un unico linguaggio nativo. 1

1. UN VERO PASSO IN AVANTI Dietro lo sviluppo di una tecnologia di progettazione di sistema non c è solo incrementata produttività hardware ma anche possibile modellizzazione di sistemi e co-simulazione tra processi software e algoritmi. Con le metodologie tradizionali, per simulare un sistema da realizzare, occorre creare un modello o eventuali modelli concorrenti con esso, effettuarne simulazioni di alto livello, scegliere il modello opportuno (perchè implementarne più di uno è molto oneroso) e quindi tradurlo in VHDL o Verilog. La fase di traduzione consiste in effetti in una riprogettazione ex-novo con le specifiche desunte dal modello simulato. Il sistema risultante in HDL approssima quello modellizzato producendo risultati che possono non essere soddisfacenti. Con la progettazione a livello di sistema si è in grado di simulare diversi algoritmi e tradurli in hardware in maniera automatica. Questa prospettiva consente di avere rispondenza immediata dei modelli confrontando le simulazioni condotte a livello di sistema con quelle hardware ed evita il lavoro di descrizione dell hardware dei modelli che si decide di testare in quanto condotto in maniera automatica. La velocità di simulazione è un altro fattore che evidenzia i vantaggi di questa nuova metodologia in quanto una simulazione condotta su istruzioni simili al C è molto più veloce e meno avida di risorse computazionali di quella condotta sulla sintassi HDL specialmente se gate-level. 2. IL DILEMMA ATTUALE L uso dei linguaggi di progettazione C/C++ e la parziale riconversione culturale di alcuni progettisti software nella sviluppo di sistemi hardware sta lentamente guadagnando consensi. Un generale flusso di progetto parte da una rappresentazione di una funzione o algoritmo in virgola mobile in C/C++; a questa segue una prima trasformazione in virgola fissa che introduce un fattore di appossimazione; quindi la generazione di un codice VHDL o Verilog (che in certi casi è opzionale); in istanza finale si ottiene la netlist circuitale. Il passaggio dal C in virgola fissa all hardware può quindi avvenire sia mediante creazione di file HDL intermedi sia direttamente. L odierna tendenza è la produzione dei codici intermedi riconosciuta come via preferenziale per implementazioni ASIC o FPGA. Infatti i file prodotti possono essere esaminati o editati utilizzando stili di codifica ottimizzati per le architetture di destinazione. Questa tendenza, essendo materia ancora di dominio hardware, non rappresenta una sorpresa e comunque può essere sovvertita con il crescente numero di progettisti software che realizzeranno hardware. 3. IL TREND I primi sistemi realizzati, utili in fase di simulazione, di scelta dell opportuno modello e di velocità di progettazione, non hanno avuto una grossa cura nell area risultante dei progetti che, in certi casi, poteva anche raggiungere il doppio di quella ottenibile utilizzando i linguaggi HDL. Nelle realizzazione delle nuove versioni dei sistemi di sviluppo si sta lavorando proprio sull area risultante come anche sul corretto mapping degli algoritmi di sistema 2

alle risorse della tecnologia scelta (nel caso degli FPGA si cerca di sfruttare le risorse delle celle logiche come carry, cascade, or di riporto, memorie, celle di moltiplicazione). Probabilmente si raggiungerà una inversione di tendenza e, a parità di progetto, l area circuitale sarà inferiore a quella ottenuta da un tool di sintesi a partire da una descrizione HDL. Anche se i sistemi di progettazione a livello di sistema raggiungeranno elevati gradi di eccellenza l obiettivo resterà quello di fornire un modello, un algoritmo, un sistema, in un lasso di tempo contenuto e con buoni risultati. Il mondo delle interfacce o delle macro hardware dovrebbe restare sotto il controllo dei linguaggi VHDL/Verilog più vicini all hardware sia come istanziazione di componenti sia come performance di tipo timing. Tuttavia c è da evidenziare che qualche fornitore di IP si sta muovendo nella direzione contraria privilegiando compattezza sintattica e velocità di esecuzione che implicano resa economica. L evoluzione naturale della tecnologia e delle tendenze annesse stabilirà come verrà progettato l hardware del futuro e se sopravviverà un unico linguaggio. 4. NON SOLO C La maggior parte dei linguaggi di sistema è basata sul C/C++. Tra i due tipi di linguaggio, il C++ è più orientabile alla descrizione dell hardware grazie alla sua estensibilità, cioè alla possibilità di definire delle nuove librerie. Tuttavia il C++ non è un linguaggio di semplice apprendimento, non è molto diffuso nella comunità dei progettisti hardware e non è progettato per essere usato come linguaggio di sistema (trova maggiori applicazioni nella creazione dei modelli). Un vero linguaggio di alto livello dovrebbe essere in grado di consentire la coesistenza di progettazione hardware e software con adeguati strumenti di simulazione e verifica, di fornire un rapido e non brusco passaggio dal dominio delle architetture a quello dell implementazione, di evidenziare veri benefici, in termini di potenzialità aggiuntive e facilità d uso, ai progettisti che devono migrare verso nuovi sistemi di sviluppo. Si affacciano all orizzonte soluzioni alternative come Java e Superlog. Java è un linguaggio interpretato object-oriented di facile uso, solido e indipendente dall architettura a cui il progetto è indirizzato. Tuttavia evidenzia gli stessi problemi del C nell approccio hardware ed al momento non è competitivo per descrivere codici di boot software o driver per periferiche. Superlog è un linguaggio ibrido tra il C ed il Verilog, in cui sono stati aggiunti costrutti per protocolli, interfacce e modelli dinamici. 5. SOLUZIONI COMMERCIALI Synopsys, Cadence, C Level Design, Celoxica e Frontier Design Automation sono le principali compagnie che offrono tool di progettazione a livello di sistema in C/C++. C Level Design basa il suo linguaggio di progettazione di sistema sul nativo ANSI C/C++; Synopsys, Frontier e altre compagnie sul SystemC che si basa su un opportuno insieme di librerie C++ progettate per la creazione di processi concorrenti hardware. Co-design Automation lavora al Superlog e anche Mentor ha pianificato l ingresso nel settore avendo una soluzione proprietaria. 3

Elanix consente, nel suo System View, di definire una collezione di funzioni MATLAB. Xilinx ha stretto accordi con Synopsys per un tool di trasposizione dal C/C++ all ambiente FPGA e con MathWorks per interfacciare il proprio tool di back-end con Simulink. Quest interfaccia ha originato un tool noto come System Generator in cui alcuni blocchi funzionali, terminata la simulazione di sistema, sono direttamente implementabili con il Core Generator. La recente acquisizione di Lava Logic consentirà la creazione di un sistema implementato in FPGA e descritto in linguaggio Java. 6. SPW - CADENCE Il programma Cierto Signal Processing Worksystem (SPW) è una struttura integrata per sviluppare prodotti nell ambito delle telecomunicazioni e del DSP. SPW permette, tramite i suoi tool, di caratterizzare, simulare, testare ed implementare un ampia gamma di progetti DSP, tra i quali, ad esempio, sistemi di controllo, sistemi di comunicazione digitale o di processamento di immagini. Il sistema SPW è composto da una serie di moduli che interagiscono. Alcuni moduli sono opzionali e aggiunti come estensione alla versione base. Un interfaccia grafica consente la modellizzazione di sistemi o sottosistemi. Per simularne il comportamento si possono creare stimoli in ingresso, tramite semplici file ASCII salvati in opportuni direttori; analogamente si possono memorizzare le uscite sia come file di dati sia come forme d onda visualizzabili con opportuni strumenti come il modulo SigCalc o tramite il Simulation Manager. I moduli che compongono la versione base del sistema sono il File Manager, il Block Diagram Editor, il Signal Calculator, il Simulation Manager, il simulatore SPB, la libreria DSP. Il File Manager permette di creare e gestire le librerie SPW, di accedere ai file di dati SPW e di richiamare gli altri tool del sistema. Il BDE (Block Diagram Editor) è l interfaccia grafica che permette di rappresentare un sistema come un insieme di blocchi funzionali connessi tra di loro. Il SigCalc (Signal Calculator) crea i segnali di ingresso per simulare il progetto e ne analizza i segnali di uscita. Sono possibili operazioni computazionali in virgola fissa e mobile, filtraggi di segnali e svariate funzioni come, ad esempio, FFT (Fast Fourier Transform) e cross-correlazione. Il Simulation Manager permette di organizzare ed eseguire simulazioni. Si possono effettuare simulazioni con il simulatore standard SPB-I (Simulation Program Builder Interpreted) oppure con il simulatore opzionale SPB-C (Simulation Program Builder Compiled). Il simulatore SPB, definito il diagramma BDE ed un insieme di segnali di ingresso, determina i segnali di uscita del sistema in un certo intervallo di tempo specificato. I risultati, che vengono salvati su file, possono essere visualizzati ed analizzati tramite SigCalc. Il simulatore SPB-I è il simulatore standard fornito a tutti gli utenti di SPW. Il simulatore SPB-C è un acceleratore di simulazioni facoltativo che fornisce codice C ottimizzato per implementare gli algoritmi DSP. Comunque i risultati delle simulazioni compiute con i due simulatori, se applicati allo stesso diagramma a blocchi, sono identici. 4

La libreria DSP fornisce un insieme standard di blocchi di libreria utili a realizzare ed a simulare molti sistemi DSP, assemblandoli direttamente tramite il tool BDE. Alcuni blocchi di libreria sono polimorfici, cioè sono blocchi parametrizzabili che, in base ai parametri d ingresso, modificano il loro comportamento. In tal caso si possono facilmente testare diverse funzionalità sullo stesso blocco. Si possono così definire sistemi multiformi e confrontare rapidamente nuove idee. Accanto alla suite di tool presentata esistono tool, librerie e ambienti di verifica opzionali che si aggiungono e completano la configurazione di base. Tra i tool facoltativi si menziona: DSP Processor Models, Multimedia Design Kit, Filter Design System (FDS), Finite State Machine (FSM) Editor, Hardware Design System (HDS), MultiProx, SPB-C, CGS-DSP, SPW MATLAB Interface, Visual Architect (VA). Il Filter Design System è un tool flessibile che permette il progetto e l analisi di filtri digitali FIR ed IIR. Offre un ampia varietà di metodi di progettazione di filtri, basati su tecniche classiche, ottime, sub-ottime ed altre ancora. Dopo aver specificato il metodo di progetto del filtro (Bessel, Butterworth ecc.) e le sue caratteristiche, FDS determina i coefficienti del filtro, che possono anche essere convertiti in formato fixed-point. Con il Finite State Machine Editor si possono rappresentare graficamente, utilizzando stati e transizioni, modelli di macchine a stati, quali, ad esempio, controllori e protocolli di telecomunicazioni. Si possono realizzare in floating-point oppure in fixedpoint. L Hardware Design System consente di trasformare SPW in un ambiente concettualmente simile a quello della sintesi, per poter sviluppare prodotti hardware. Include tool per verifiche algoritmiche, modellizzazioni in formato fixed-point, cosimulazioni SPW/HDL e generazione di codice VHDL/Verilog. L HDS standard include una libreria di blocchi funzionali di tipo fixed-point behavioral e bit-processing. Utilizzando tali blocchi, si possono evidenziare gli effetti della precisione numerica limitata (overflow e troncamento) sugli algoritmi DSP e si possono definire architetture di sistema interconnettendo blocchi bit-processing. Il Visual Architect colma il gap tra le specifiche ad alto livello di tipo behavioral e le specifiche RTL (Register Transfer Level), input necessari ai tool di sintesi logica. Accanto ai predetti tool aggiuntivi alla versione base, SPW offre una serie di librerie opzionali di blocchi che si possono aggiungere al progetto. Sono disponibili le seguenti librerie: Communications Library-Floating Point, Communications Library- Fixed Point, Interactive Simulation Library (ISL), Radar and Radio Frequency (RF) Library. Sono inoltre utilizzabili ambienti di verifica per esplorazione concettuale ed implementazione di prodotti per comunicazione cellulare e personale come il GSM System-Level Verification Environment, l IS-136 Verification Environment e il PCS/WCDMA Verification Environment. 7. HANDEL, DK1 - CELOXICA L Handel-C è un linguaggio di programmazione di alto livello basato sull ANSI-C che consente la diretta conversione di un file di testo descrivente un algoritmo di comunicazione nella netlist hardware ad esso associabile (hardware synthesis software). Sviluppato nel 1991 nel dipartimento di calcolo dell università di Oxford è stato usato fino al 1999 nell ambiente universitario per realizzare progetti tipicamente di calcolo 5

riconfigurabile. Questi progetti venivano mappati in tecnologia FPGA Xilinx in quanto il sistema produceva a partire dal C direttamente una netlist in formato XNF. La data di sviluppo colloca l Handel-C indubbiamente tra i primi sistemi del suo genere. Un progettista hardware o software era in grado con esso di creare un FPGA in una modalità simile alla descrizione dei codici per ambienti a microprocessore, cioè in un linguaggio molto simile al C, senza avere conoscenze di linguaggi VHDL o Verilog. Una delle caratteristiche che rendevano l Handel-C uno strumento di successo era la capacità di usare il parallelismo, cioè la possibilità di dividere il software realizzato, o in corso di sviluppo, in sottoblocchi le cui uscite non erano dipendenti le une dalle altre. Ogni procedura relativa ad un istruzione veniva eseguita in parallelo e al completamento di tutte le procedure avveniva il salto alla successiva istruzione. Alla fine degli anni novanta un gruppo di ricercatori staccatosi dal Comlab (Computing Laboratory) dell università di Oxford ha fondato una società dal nome Embedded Solution Ltd. con l intento di realizzare una versione commerciale del linguaggio dal nome in codice ConfigR. Successivi accordi di partnership con Wind River Systems e Xilinx e una nuova ridenominazione della società in Celoxica hanno condotto a due linee strategiche di mercato. Da un lato è stato perfezionato l ambiente di progettazione con l aggiunta al compilatore Handel-C di un simulatore, di un debugger e di un project manager originando la suite denominata commercialmente con la sigla DK1; è stata inoltre aggiunta alla precedente tecnologia FPGA di tipo Xilinx quella di tipo Altera. Dall altro lato la compagnia si è concentrata sulla promozione di una piattaforma di calcolo riconfigurabile RC1000 basata su FPGA Xilinx. La partnership con Wind River e Xilinx ha dimostrato la possibilità di creare una Internet Reconfigurable Logic sfruttando il linguaggio per la creazione di riproduttori MP3 e telefoni IP implementati in tecnologia Xilinx e configurati via internet mediante il sistema operativo real-time (RTOS) di Wind River. 8. DA COSSAP A SYSTEMC SYNOPSYS Nel settembre 1999 Synopsys ed altre compagnie hanno ratificato uno standard industriale denominato Open SystemC Initiative (OSCI), attualmente non unico, per la progettazione a livello di sistema. Questo standard propone un linguaggio basato sul C/C++ e denominato SystemC. Il sistema di sviluppo proposto da Synopsys e denominato CoCentric si prefigge l abbattimento della barriera tra la descrizione di una funzione in hardware, tipicamente compiuta in HDL, ed una software descritta in C/C++. L adozione di quest ultimo linguaggio consentirà rapide valutazioni di sistema e conseguenti decisioni sulla realizzazione di una funzione in hardware o in software. Synopsys non è nuova ad iniziative in questo settore. Il Cossap, anche se in dismissione, è stato un valido esempio di strumento di progettazione di sistema. Cossap è un ambiente di progettazione in grado di creare, modificare, implementare e testare algoritmi ed architetture. È particolarmente indirizzato ad applicazioni di tipo DSP come codifica del segnale vocale, processamento d immagini, progettazione di modem. Grazie al Block Diagram Editor vengono descritti gli algoritmi utilizzati come specifica d ingresso per la simulazione e per l implementazione. La simulazione viene realizzata grazie allo Stream-driven Simulator un potente simulatore parametrizzabile. L implementazione può essere realizzata per tecnologia DSP programmabile o per l hardware. 6

L implementazione su DSP programmabile è fatta dal DSP Code Generator che trasforma il codice C in istruzioni per il processore. Quella verso l hardware è fatta dal Behavioral Code Generator che esplora lo spazio delle possibili soluzioni per una migliore realizzazione gate-level sfruttando il Behavioral Compiler oppure attraverso la generazione del codice RTL successivamente sintetizzato dal Design Compiler. La verifica della soluzione implementata è compiuta usando una co-simulazione tra la soluzione ottenuta e quella di specifica formata da istruzioni HDL o codice assembler DSP. Gli strumenti messi a disposizione sono i simulatori Synopsys quali VHDL System Simulator, VCS e Cyclone e quelli Verilog-XL di Cadence e ModelSim di Mentor. 9. AR T BUILDER La fusione tra la ex-divisione DSP di Philips e Frontier Design ha originato una nuova compagnia denominata Adelante Technologies il cui prodotto di punta per la progettazione di sistema è l A RT Designer, già noto come prodotto Frontier. Questo sistema di sviluppo è in grado di generare architetture per ASIC o FPGA a partire dalla rappresentazione in virgola mobile dell ANSI C, da quella in virgola fissa del SystemC, da librerie di sistema precostituite. I risultati sono ottenuti dopo il vaglio di una serie di soluzioni implementative automaticamente candidate. L A RT Designer consente di interfacciarsi con MATLAB, SPW e Cossap. Una descrizione in virgola mobile può ad esempio essere tradotta in virgola fissa dal Synopsys CoCentric Fixed-Point Designer e importata direttamente nel sistema per esaminare le alternative architetturali prima della generazione del codice RTL. I programmi che compongono la suite della Frontier sono l A RT Builder che converte gli algoritmi descritti in virgola fissa in C in rappresentazioni VHDL o Verilog, le librerie A RT che raccolgono funzioni DSP precostituite come ALU, sommatori e moltiplicatori, l A RT Designer che vaglia rappresentazioni alternative dell architettura ottimale candidata all implementazione hardware. Al fine di raggiungere la netlist definitiva, i risultati prodotti dovranno comunque essere trasferiti ad un tool di sintesi. Analizzando l RTL prodotto si vede che il sistema crea una rappresentazione dell hardware secondo il modello di macchina a stati di Mealy, in cui l intera funzione è scomposta in uno o più processi sequenziali e uno o più processi combinatori. L uso delle variabili è ampio e l aggiunta di modifiche anche semplici non è immediata perchè la sintassi (problema comune a tutti i tool del genere) è un po criptica. Il tipo di risorse utilizzabili nella traduzione implementativa RTL può essere condizionato dal progettista con opportuni vincoli in cui possono essere definite le allocazioni delle risorse, gli operatori destinati ad esse e le relative priorità. Ad esempio, al fine di accrescere le prestazioni, sono definibili classi di risorse speciali, in cui si eseguono un insieme di operazioni in un ciclo di clock, e insiemi di operazioni combinate in una super-istruzione che può essere eseguita con le risorse speciali. Queste super-istruzioni possono confluire in un template che viene automaticamente applicato all intero codice ispezionato. 7