Introduzione 
 2 
interagendo. Nelle automobili, per esempio, coesistono pi� sistemi dedicati che si occupano del 
controllo (elettronico) dell�iniezione, del cambio automatico, delle sospensioni attive, dell�ABS, 
dell�airbag, dei pretensionatori delle cinture di sicurezza e altro ancora. 
L�architettura di un sistema dedicato � di tipo eterogeneo, includendo un processore sul quale 
viene eseguito il software ad alte prestazioni, e alcuni moduli hardware dedicati che interagiscono 
con l�ambiente esterno e con il processore. La tecnologia attuale permette di realizzare, per sistemi 
di piccole dimensioni, un singolo ASIC (Application Specific Integrated Circuit) con logica dedicata, il 
microprocessore per il controllo e le parti di interfacciamento con i segnali derivanti dall�ambiente. 
Dato l�utilizzo finale a cui sono destinati i sistemi dedicati, � indispensabile riuscire ad ottenere un 
buon compromesso tra i costi dovuti alle componenti hardware e le prestazioni fornite dal 
software. 
Per raggiungere soluzioni ottimali di integrazione tra i vari componenti che costituiscono il sistema 
sarebbe necessario esplorare un numero notevole di configurazioni architetturali, con una 
conseguente perdita di tempo, proporzionale alle soluzioni esplorate. Tuttavia la forte 
competizione del mercato costringe a completare in tempi rapidi la realizzazione di un sistema, 
forzando i progettisti a fermarsi non appena viene raggiunto un raffinamento accettabile delle 
specifiche con processori pi� veloci e memorie pi� grandi del necessario. Inoltre, lo studio e 
l�analisi di un sistema embedded vengono effettuate nella primissima fase di progettazione, 
dopodich� lo sviluppo della parte software e della parte hardware procedono parallelamente ma 
senza una significativa interazione, con problemi notevoli nella fase finale di integrazione. 
Da quanto detto risulta chiara la necessit� di un nuovo flusso di progettazione che utilizzi 
metodologie e strumenti in grado di evitare i problemi legati ad uno sviluppo non integrato delle 
parti hardware e software, fornendo la possibilit� di una progettazione concorrente e la valutazione 
di soluzioni differenti di allocazione delle funzionalit� nelle due partizioni, oltre alla simulazione 
dell�intero sistema e alla valutazione dei costi di implementazione prima della realizzazione finale. 
Il co-design ha come scopo l�unificazione della progettazione hardware e software ad un unico livello 
di astrazione, prescindendo dalla reale tecnologia implementativa e permettendo l�acquisizione 
delle funzionalit� dell�intero sistema (co-specifica). Inoltre fornisce un�alta flessibilit� nell�allocazione 
delle risorse (partizionamento), la possibilit� di ottimizzare la specifica del sistema tramite una 
ristrutturazione basata sul calcolo di metriche statiche e dinamiche e la verifica delle funzionalit� del 
sistema tramite la simulazione ad alto livello o la co-simulazione delle sezioni hardware e software 
sintetizzate. Il co-design permette quindi: 
Introduzione 
 3 
- la riduzione dei tempi di progettazione e sviluppo di un sistema dedicato; 
- l�esplorazione di un vasto numero di soluzioni implementative, ricercando l�allocazione dei 
moduli che minimizzi opportuni parametri di costo come l�area o il consumo energetico; 
- la verifica funzionale della specifica di sistema senza arrivare ad una implementazione finale; 
- la definizione di strategie standard per la sintesi delle sezioni hardware e software; 
- l�automazione della documentazione del codice e l�aggiornamento delle versioni. 
Negli ultimi cinque anni � aumentato moltissimo l�interesse nel settore di ricerca del co-design e tra 
i numerosi lavori presenti si inserisce il progetto TOSCA (TOols for System Co-design 
Automation), in sviluppo presso l�area EDA (Electronic Design Automation) del centro di ricerca 
CEFRIEL (CEntro per la ricerca e la FoRmazione in Ingegneria ELettronica del Politecnico di 
Milano), il cui obiettivo � la definizione di una metodologia e di un ambiente per la progettazione 
di sistemi misti hardware/software. 
Il presente lavoro di tesi, inserito nell�ambito del progetto TOSCA, affronta le problematiche 
legate alla sintesi delle sezioni hardware. In particolare vengono presentate due strategie alternative 
di sintesi hardware che si basano su architetture circuitali differenti. La prima architettura � 
costituita da un insieme di moduli gerarchicamente innestati che implementano i singoli processi 
del linguaggio di specifica, mentre la seconda, costituita da una macchina a stati finiti con unit� di 
elaborazione, si basa sulla separazione della parte di controllo da quella di elaborazione dei dati. 
Tali strategie sono state sviluppate in modo da poter essere facilmente integrate nel flusso di 
sviluppo di sistemi dedicati realizzati in un ambiente di progettazione concorrente hardware-
software ed in particolare nell�ambiente TOSCA. Viene inoltre affrontato lo studio della 
valutazione della bont� di tali strategie e, nell�ultima parte, viene presentato un confronto tra le due 
soluzioni. 
Il capitolo 1 introduce al settore della ricerca sul co-design e analizza le caratteristiche pi� 
significative dell�ambiente TOSCA e presenta il linguaggio di specifica OCCAM, utilizzato per la 
descrizione dei moduli che costituiscono il sistema dedicato, evidenziando le restrizioni e le 
estensioni apportate per un migliore utilizzo nell�ambiente di sviluppo. Viene inoltre descritto il 
modello interno adottato per rappresentare le funzionalit� specificate dal progettista. 
I capitoli seguenti costituiscono il contributo originale della tesi. Il capitolo 2 evidenzia gli obiettivi 
del presente lavoro di tesi e descrive l�approccio alla sintesi hardware, specificando il particolare 
livello descrittivo selezionato. 
Introduzione 
 4 
Il capitolo 3 presenta una descrizione delle architetture di riferimento selezionate. Viene inoltre 
descritto il progetto reale utilizzato per confrontare i risultati ottenuti mediante le due metodologie 
di sintesi proposte. 
Nel capitolo 4 vengono descritti gli algoritmi che consentono l�automazione della sintesi che fa 
riferimento all�architettura H.M.A., modulare e gerarchica, evidenziandone pregi e difetti. Il 
capitolo si conclude con la presentazione e validazione dei risultati ottenuti nel caso di studio 
presentato nel precedente capitolo. 
Nel capitolo 5, dopo un�iniziale presentazione dei metodi descritti in letteratura, vengono 
introdotti gli algoritmi proposti per la generazione automatica di un�architettura del secondo tipo 
(F.S.M.D.). Anche il capitolo 5 si conclude con la presentazione e validazione dei risultati ottenuti 
nel caso di studio. 
Il capitolo 6 confronta i risultati ottenuti individuando la strategia F.S.M.D. come la pi� adatta ad 
essere integrata nel flusso di sviluppo dell�ambiente TOSCA. 
Il capitolo 7 conclude il lavoro mettendo in evidenza alcune possibili direzioni di sviluppo. 
 5 
2. Il co-design e l’ambiente TOSCA 
Capitolo 1 
Il co-design e l’ambiente TOSCA 
2.1 Introduzione 
I sistemi embedded costituiti da moduli hardware dedicati e da processori programmabili per 
l�esecuzione di moduli software, sono largamente impiegati in numerosi campi applicativi, dalle 
telecomunicazioni all�elettronica di largo consumo. Le architetture miste hardware/software 
rappresentano in generale un buon compromesso tra la flessibilit� funzionale e i costi di sviluppo e 
realizzazione. La disciplina nascente che si occupa della progettazione di sistemi eterogenei � 
rappresentata dal co-design che ha come obiettivo lo sviluppo concorrente di moduli hardware e 
software. Attualmente la ricerca in tale campo � finalizzata alla realizzazione di strumenti 
automatici che supportino le varie fasi del ciclo di sviluppo della progettazione di sistemi misti. Il 
flusso di progetto tipico di un ambiente di co-design ha inizio con la specifica delle funzionalit� 
dell�intero sistema (co-specifica). Il modello cos� ottenuto costituisce la base per l�esplorazione del 
progetto a livello di sistema che a sua volta consiste nella sperimentazione e nella valutazione di 
diverse soluzioni architetturali che produranno due sottosistemi, uno da realizzare hardware e uno 
software (partizionamento e binding). La fase successiva prevede la sintesi delle parti 
precedentemente individuate (co-sintesi). Tra gli elementi principali da considerare in un 
ambiente di co-design vi sono: 
• la capacit� di stimare, nelle prime fasi del progetto, il risultato finale della sintesi: a tale scopo � 
possibile definire un insieme di metriche che consentono di stimare i costi in termini sia di 
area sia di tempo di esecuzione delle parti hardware e software. Attraverso tale processo si 
Capitolo 1 Il co-design e l'ambiente TOSCA 
 6 
pu� valutare la bont� del partizionamento effettuato e verificare se sono soddisfatte le 
specifiche e i vincoli di progetto senza dover attendere le fasi di sintesi logica per i moduli 
hardware e la compilazione del codice per i moduli software; 
• la possibilit� di effettuare una analisi formale a livello globale e una simulazione dell�intero 
sistema (co-simulazione): terminata la fase di sintesi hw e sw � opportuno simulare il sistema 
nella sua globalit� per verificare il corretto funzionamento delle singole parti che lo 
compongono, nonch� la corretta interazione tra le stesse, attraverso la verifica dei meccanismi 
di comunicazione e di interfacciamento realizzati; 
• la capacit� di valutare varie alternative di progetto: deve essere possibile esaminare diverse 
alternative di partizionamento del sistema per stabilire quale combinazione di moduli hw e sw 
soddisfi al meglio i vincoli e le specifiche indicate dal progettista; 
• la riusabilit� delle varie parti del sistema.  
Al paragrafo 2 verr� presentata una rassegna delle principali ricerche nell�ambito del co-design; per 
ciascun ambiente di sviluppo verr� descritto il flusso di progetto adottato evidenziando in 
particolare gli aspetti relativi alla sintesi hardware, che costituisce l�obiettivo del presente lavoro di 
tesi. 
Al paragrafo 3 verr� illustrato in dettaglio l�ambiente TOSCA, nel cui ambito si inserisce il presente 
lavoro. 
2.2 Ambienti di ricerca nell’ambito del co-design 
Nel presente paragrafo verranno presentati i principali ambienti di sviluppo nell�ambito del co-
design: per ognuno di essi verr� descritto il flusso di progetto e ci si soffermer� in modo 
particolare sugli aspetti della sintesi hardwre. 
2.2.1 Polis 
L�ambiente Polis [Polis], [BaChJu97], sviluppato presso l�Universit� della California, Berkeley, si 
propone come ambiente di co-design per lo sviluppo di sistemi dedicati orientati al controllo. Il 
sistema viene rappresentato attraverso C.F.S.M. (Co-design Finite State Machine) che, rispetto alle 
tradizionali macchine a stati finiti, realizzano le comunicazioni tra i moduli con tempi non nulli e 
non limitati. 
Capitolo 1 Il co-design e l'ambiente TOSCA 
 7 
Formal
Languages
System
Behaviour
Partitioning
SW Sinthesis HW Synthesis
Interface
Synthesis
S-graph
Verification
of the
synthesized
component
OS-Synthesis
C Code
OS-Synthesis
Optimized
Hardware
 
Figura 1: Ambiente di sviluppo di Polis. 
Il flusso di progetto si articola nei seguenti punti (Figura1): 
• Traduzione dei linguaggi di specifica nel modello C.F.S.M. e verifica formale 
I vari linguaggi di specifica adottati per la descrizione del sistema vengono tradotti nel 
formalismo C.F.S.M., il sistema finale sar� composto da una rete C.F.S.M. in cui ogni elemento 
rappresenta un componente del sistema. Il modello C.F.S.M. viene poi verificato riportando 
(attraverso una traduzione automatica) il sistema in un formalismo F.S.M. a cui si applicano 
metodologie di verifica gi� collaudate. 
• Partizionamento 
Ad ogni C.F.S.M. viene assegnata una partizione software o hardware; essendo la 
rappresentazione indipendente dalla realizzazione, risulta agevole il passaggio da una all�altra 
partizione e quindi l�esplorazione dello spazio delle soluzioni. 
 
 
Capitolo 1 Il co-design e l'ambiente TOSCA 
 8 
• Sintesi software 
La realizzazione della componente software � ottenuta associando una procedura ad ogni 
C.F.S.M. marcata software oltre ad una parte di sistema operativo che permetta la gestione del 
sistema. Il sintetizzatore software consente di stimare le caratteristiche di velocit� e di 
occupazione di memoria del codice; ci� permette al progettista di valutare le caratteristiche 
della sintesi e, se i risultati non sono soddisfacenti, di modificare il modello. 
• Sintesi hardware e generazione delle interfacce 
La sottorete di C.F.S.M. che � etichettata hardware viene realizzata e ottimizzata attraverso le 
tecniche di sintesi logica presenti nell�ambiente SIS [SSL+92]. Ogni C.F.S.M., interpretata 
come specifica a livello RT, pu� essere tradotta in BLIF, XNF, VHDL o Verilog, e, attraverso 
gli strumenti di sintesi, il sistema finale viene realizzato su FPGA (XILINX). Inoltre, � stato 
realizzato un sistema per la generazione automatica delle interfacce tra i domini hw e sw. 
• Co-simulazione 
Una volta definite le caratteristiche di partizionamento del sistema � possibile selezionare il 
processore e la modalit� di schedulazione, ed eseguire la co-simulazione dell�intero sistema. 
2.2.2 Ptolemy 
Sviluppato presso l�Universit� della California, Berkeley, Ptolemy rappresenta un ambiente per la 
simulazione e la prototipazione di sistemi dedicati [BHLM92], [Ptolemy]. 
Il sistema � incentrato su una collezione di oggetti che, attraverso differenti formalismi, 
permettono la descrizione del sistema da realizzare. Tali oggetti vengono strutturati 
gerarchicamente e ogni livello gerarchico rappresenta un diverso livello di astrazione del sistema.  
In particolare, ogni livello di astrazione (dominio) riunisce gli oggetti atomici del sistema (stelle) 
che rappresentano le primitive per la descrizione del sistema. La comunicazione tra stelle � di tipo 
punto a punto e fa uso di code; inoltre ogni dominio include uno scheduler che definisce l�ordine 
di esecuzione degli oggetti che contiene. Infine i diversi domini sono raccolti in galassie che 
permettono di strutturare gerarchicamente il sistema. 
In questo modo � possibile raccogliere in un unico formalismo una grande variet� di oggetti 
differenti e applicare ai diversi domini gli strumenti pi� idonei all�implementazione delle varie parti. 
L�acquisizione del sistema avviene attraverso un linguaggio orientato agli oggetti (C++). Terminata 
questa fase, Ptolemy permette di analizzare lo spazio di progetto per determinare il 
partizionamento del sistema: il risultato ottenuto consiste in sottosistemi hardware, software, 
Capitolo 1 Il co-design e l'ambiente TOSCA 
 9 
interfacce, logica di controllo delle parti hw nonch� nel sistema operativo per lo scheduling delle 
parti sw e il controllo dell�intero sistema. 
La fase successiva riguarda la sintesi di tali sottosistemi: per le parti sw viene generato un codice C 
generico, successivamente tradotto nel linguaggio assembler del processore specifico, mentre la 
sintesi hw avviene attraverso la generazione di una descrizione sintetizzabile ed indipendente dalla 
tecnologia, tipicamente in linguaggi come il VHDL, e la successiva sintesi attraverso strumenti 
commerciali. 
La fase di sintesi delle interfacce, della logica di controllo e della parte di sistema operativo sono 
strettamente correlate e coinvolgono l�utilizzo di diversi strumenti. L�obiettivo finale � quello di 
arrivare ad automatizzare la sintesi di questi sottosistemi in modo da ottenere in tempi rapidi tutte 
le parti di supporto e di collegamento alle parti hw e sw. 
In particolare, per quanto concerne le parti hardware, l�approccio seguito in Ptolemy prevede i 
seguenti punti [Ka95]: 
• la rappresentazione iniziale del sistema viene tradotta in un grafo aciclico diretto (DAG) che 
rappresenta le dipendenze tra i dati ed � indipendente dalla particolare implementazione 
(hardware o software); 
• per ogni nodo del DAG marcato hardware viene generato un grafo hardware separato; poich� 
ogni nodo, nella descrizione originaria, poteva essere esploso in una gerarchia di nodi, il grafo 
hardware pu� contenere vari sottonodi; 
• i nodi hardware nel DAG vengono sostituiti da una rappresentazione equivalente, dipendente 
dalla tecnologia; tale rappresentazione, decisa nella fase di partizionamento, pu� essere in 
VHDL o in SILAGE (SILAGE [Hi85], � un linguaggio applicativo che ben si presta alla 
descrizione di sistemi per applicazioni DSP); 
• l�implementazione di ogni nodo viene affidata a uno strumento di sintesi hardware ad alto 
livello, allo scopo di generare datapath e unit� di controllo. In particolare lo strumento 
attualmente usato � HYPER [Rabaey91] che riceve in ingresso una descrizone in SILAGE. �� 
stato inoltre sviluppato un meccanismo automatico di generazione del codice SILAGE a 
partire da un grafo hardware. 
Capitolo 1 Il co-design e l'ambiente TOSCA 
 10 
2.2.3  System-Level Synthesis Group 
Sviluppato presso il Politecnico di Grenoble, SLS si compone di tre moduli principali coordinati 
da un quarto, che insieme costituiscono l�ambiente di co-design [SLSG],[JeOBr92]. 
COSMOS 
Costituisce il modulo di gestione e di coordinamento dell�ambiente di sviluppo; in particolare, 
partendo da una specifica a livello di sistema, COSMOS permette di arrivare alla sintesi delle parti 
hardware e software costituenti. 
Il sistema � costruito attraverso l�unificazione di tre domini differenti (Figura 2): 
• un dominio che produce una rappresentazione VHDL della parte hw; 
• un dominio che produce una rappresentazione C della parte sw; 
• un dominio che produce una rappresentazione intermedia per la comunicazione e 
l�interconnessione dei due domini precedenti. 
COSMOS utilizza i moduli VCI, AMICAL e SOLAR per realizzare tutte le fasi di sviluppo 
richieste. 
VCI 
� un sistema per la generazione automatica delle interfacce tra moduli descritti in VHDL e moduli 
descritti in linguaggio C. Le interfacce si basano sul meccanismo di comunicazione Unix IPC 
(Unix Interrupt Procedure Call). Il sistema genera automaticamente le interfacce VHDL/IPC e 
C/IPC e sfrutta le primitive di In/Out del protocollo IPC per realizzare la comunicazioni tra le 
parti. Una volta generate le interfacce di comunicazione tra le parti, VCI costituisce un ambiente 
idoneo per la cosimulazione in quanto pu� raccogliere e permettere lo scambio dei segnali 
provenienti dal simulatore VHDL, per la parte hw, e dall�esecuzione del programma C, per la parte 
sw. 
AMICAL 
La sintesi hardware avviene attraverso lo strumento interattivo AMICAL; esso consente il 
riutilizzo di componenti preesistenti e permette di affiancare una metodologia di progetto manuale 
ad una automatica. 
La descrizione in ingresso � fornita in VHDL comportamentale: su tale descrizione viene 
effettuata la fase di schedulazione e allocazione, generando una architettura composta da un 
datapath e una unit� di controllo. Il prodotto di tale sintesi viene tradotto automaticamente in 
Capitolo 1 Il co-design e l'ambiente TOSCA 
 11 
VHDL mediante lo strumento PAT (Programmable Architecture Translator) per poi essere passato a 
strumenti di sintesi come Synopsys, Synergy o Autologic, che lavorano a livello RT o logico. La 
descrizione in ingresso prevede l�uso di una libreria esterna di unit� funzionali che contiene 
operatori elementari, memorie, memorie cache, unit� di I/O, ma anche componenti molto 
complessi come DSP, nuclei CPU, periferiche intelligenti. Le operazioni svolte da tali componenti 
vengono referenziate nella descrizione VHDL attraverso funzioni e procedure. 
SOLAR 
SOLAR riceve in ingresso la struttura generata da AMICAL e produce due differenti architetture: 
• una descrizione del modello nel formato VHDL direttamente interpretabile dagli strumenti di 
sintesi commerciali; 
• una struttura (sempre in un linguaggio tipo VHDL) che viene utilizzata per la fase di 
simulazione del sistema. 
System
Description Language
AMICAL
Resources
Allocation
FU
Library
Statistic
Evaluation
Scheduling
Architecture
Interface
Generator
VCI
VHDL
Library
SOLAR
Logic
Synthesis
LAYOUT
Co-simulation
environment
COSMOS
 
Figura 2: L�ambiente di sviluppo SLS. 
2.2.4 Chinook 
Il progetto di ricerca Chinook, [COBo94], [CWBo94], sviluppato presso l�Universit� di 
Washington, Seattle, ha come principale obiettivo la sintesi delle interfacce hw e sw necessarie per 
integrare i componenti di un sistema di controllo dedicato. Il flusso di progetto si articola nel 
seguente modo (Figura3): 
Capitolo 1 Il co-design e l'ambiente TOSCA 
 12 
• Specifica ad alto livello: l�ingresso del sistema � una descrizione in Verilog, costituita da una 
parte strutturale, in cui vengono instanziati il/i processore/i e i dispositivi impiegati nel sistema 
(devices), e da una parte comportamentale, in cui vengono descritte le funzionalit� ad alto livello del 
sistema e possono essere fissati i vincoli temporali. � prevista una libreria di processori e 
componenti in cui sono fornite le specifiche di interfaccia (mediante diagrammi temporali) e i 
modelli di simulazione. 
• Partizionamento: la separazione delle funzionalit� tra hardware e software e tra i processori 
viene effettuata, di default, realizzando in hw i componenti istanziati nella descrizione 
strutturale e in sw le istruzioni presenti nella descrizione comportamentale. Il progettista pu� 
inserire delle etichette nella descrizione ad alto livello per modificare la partizione di default 
indicando quali funzionalit� e/o componenti realizzare secondo una delle due modalit�. 
• Sintesi automatica dei driver per i componenti: le funzionalit� dei dispositivi (devices) 
istanziati nella descrizione strutturale vengono incapsulate nei device drivers, costituiti 
dall�insieme delle istruzioni software per il microcontrollore e dall�hardware di interfaccia tra 
quest�ultimo e i dispositivi stessi. I driver dei dispositivi sono necessari per generare 
l�appropriata sequenza di segnali che consente al microprocessore di interagire correttamente 
con i dispositivi stessi. Chinook consente la sintesi automatica di tali driver, generando le 
procedure software corrispondenti alle operazioni del dispositivo, e la specifica delle macchine 
a stati finiti necessarie per interfacciare il processore al dispositivo e realizzare, mediante 
strutture hardware, le funzionalit� che non possono essere gestite direttamente dal software 
[WaBo94].  
• Allocazione delle porte di I/O e sintesi automatica delle interfacce: Chinook genera 
automaticamente le interfacce che connettono il processore ai dispositivi che esso controlla. 
Se presenti, vengono usate le porte di I/O del processore, aggiungendo dell�hardware per il 
multiplexing se il numero di porte non � sufficiente, altrimenti viene implementato uno 
schema memory mapped aggiornando le procedure dei driver. 
• Scheduling ad alto livello: completato il collegamento delle risorse di sistema, viene 
effettuato lo scheduling necessario per serializzare l�iniziale specifica comportamentale che 
pu� contenere elementi concorrenti, cercando di soddisfare i vincoli temporali. Nel caso in 
cui i vincoli non possano essere soddisfatti, il sistema viene ripartizionato. 
• Prodotto finale del sistema: Chinook fornisce in uscita le netlist dei componenti 
(dispositivi, processore, e logica sintetizzata per le interfacce) e il codice C per il processore.  
Capitolo 1 Il co-design e l'ambiente TOSCA 
 13 
Verilog
Specification
Timing
Constraints
Processor
&
Device
Library
Partitioner
Port
Allocation
&
Interface
Generator
Device
Driver
Generator
Scheduler
Netlist
Generator
And
Interface
Hardware
Generator
Code
Generator
and
Performance
Estimator
(C, Assembly)
input
output
 
Figura 3: Flusso di progetto in Chinook. 
Per quanto concerne la sintesi hardware dei dispositivi, si considerano gi� disponibili in libreria i 
modelli dei componenti hardware da usare, mentre per la sintesi automatica delle parti hardware 
dei driver e delle interfacce vengono realizzate delle macchine a stati finiti (F.S.M.) a partire dalla 
specifica degli eventi sui segnali. I metodi di sintesi impiegati sono quelli classici e vengono scelti 
algoritmi pi� o meno sofisticati a seconda della complessit� e della rigidit� dei vincoli temporali. In 
particolare, in fase di partizionamento, si cerca di minimizzare la dimensione delle macchine a stati 
e il numero di segnali che compaiono nella logica di interfaccia e, al posto di generare una F.S.M. 
dedicata per ogni funzionalit� di un dispositivo, si cerca di unire le F.S.M. in un�unica pi� grande. 
Non viene realizzata la sintesi logica delle F.S.M. poich� si presuppone l�uso di strumenti di sintesi 
commerciali. 
2.2.5  Cosyma 
Il progetto di ricerca Cosyma [BEKSS], [BeHeEr], sviluppato presso il Politecnico di 
Braunschweig, ha come obiettivo la co-sintesi di controllori per sistemi dedicati, di piccole 
dimensioni. Il flusso di progetto si articola nel modo seguente (Figura 4): 
• Specifica ad alto livello: la descrizione del sistema viene fornita in linguaggio C
x
, un superset 
del C, che consente di indicare i vincoli temporali e rappresentare parallelismo e 
comunicazione tra processi. 
Capitolo 1 Il co-design e l'ambiente TOSCA 
 14 
• Compilazione della descrizione, simulazione e profiling del sistema: la descrizione di 
ingresso viene tradotta, attraverso un compilatore C
x
, in un grafo sintattico esteso (ES graph) 
che viene utilizzato per la simulazione della descrizione ad alto livello tenendo conto del 
parallelismo. Il profiling permette di raccogliere le informazioni necessarie per l�analisi 
temporale del sistema. 
• Partizionamento: la descrizione mediante ES graphs viene partizionata a livello di blocchi 
base, utilizzando un algoritmo di simulating annealing basato su una stima della velocit� del 
sistema, del tempo necessario per eseguire la comunicazione tra processi nonch� del carico 
costituito dalle parti hardware. Cosyma cerca inizialmente di attribuire i blocchi base alla 
partizione software e, quando non riesce a soddisfare i vincoli temporali, destina parte della 
descrizione del sistema ad ASICs; tra i vari moduli che possono essere spostati nella partizione 
hardware, la scelta cade su quelli che presentano il costo minore. 
• Sintesi software: i moduli che devono essere realizzati software vengono estesi aggiungendo i 
protocolli di comunicazione e successivamente sono tradotti in linguaggio C e compilati. 
• Sintesi hardware: i moduli hardware sono generati mediante strumenti di sintesi ad alto 
livello; possono essere usati il sistema Olympus, sviluppato all�Universit� di Stanford, che 
prende in ingresso una descrizione in HardwareC o il tool BSS, sviluppato in Cosyma, che 
prende in ingresso dei CDFG. 
• Analisi e verifica dei vincoli: i prodotti delle due sintesi vengono analizzati per stimare 
accuratamente il tempo di esecuzione. Se i vincoli temporali sono rispettati il sistema di sintesi 
hardware genera una netlist a livello logico costituita da una unit� di controllo e da un datapath 
in formato SLIF (Stanford Logic Intermediate Format) o Verilog. 
• Cosimulazione: la co-verifica del sistema ottenuto viene effettuata sviluppando un sistema di 
prototipizzazione hardware dedicato, costituito da tre diverse piastre sincronizzate dal clock di 
sistema. 
L�architettura di riferimento scelta in Cosyma � costituita da un singolo processore (Sparc), da uno 
o pi� coprocessori e da periferiche specificate dall�utente. 
Per quanto riguarda la sintesi hardware, [HEHB95], il partizionamento del grafo determina i 
diversi segmenti di codice da realizzare hardware, che possono essere mappati su differenti 
funzionalit� del medesimo coprocessore. Risulta quindi necessaria una procedura di traduzione che 
assegni ogni chiamata del software alla corrispondente funzione hardware. Sono possibili due 
Capitolo 1 Il co-design e l'ambiente TOSCA 
 15 
strategie di sintesi: la prima fa uso dello strumento di sintesi hardware Olympus che riceve in 
ingresso una descrizione in HardwareC strutturata come un costrutto case; ogni qual volta il 
coprocessore � chiamato dal software viene trasferito un indice, che rappresenta la funzione che 
deve essere eseguita. L�alternativa � rappresentata dal sistema di sintesi per coprocessori dedicati 
BSS (Braunschweig Synthesis System). 
C
x
system
description
C
x
compiler
Compiler
Object code
Run
time
analysis
  HW/SW
partitioning
Prototyping
transformation
CPU
MEM
FPGA
FPGAFPGAFPGA
Logic netlist
HL-Synthesis
(BSS/OLYMPUS)
Logic synthesis
HW
description
SW
description
Communication
protocol
Communication
protocol
to ASIC design
ALU
models
 
Figura 4: Il flusso di progetto in Cosyma. 
Tra i requisiti che Cosyma si propone di soddisfare vi sono: 
• realizzazione del parallelismo oltre l�ambito rappresentato dai cicli (le parti del sistema da 
implementare hardware sono cicli o contengono funzioni con cicli);