Linguaggi di Specifica - Intranet...

26
1 Pag. 1 Linguaggi di Specifica Linguaggi di Specifica Modello e Linguaggio Modello e Linguaggio Classificazione dei linguaggi formali Classificazione dei linguaggi formali Linguaggi Grafici Linguaggi Grafici Linguaggi Testuali Linguaggi Testuali Versione del 20/05/04 Versione del 20/05/04 Prof. F. Bruschi Prof. F. Bruschi -2- Obiettivo Obiettivo Il Progetto di un sistema digitale inizia dalla raccolta dei requisiti e dal loro successivo raffinamento Il passo successivo è la costruzione del modello: formalizzazione Processo di trasformazione di una descrizione, tipicamente in linguaggio naturale (semi-formale), in un’altra che utilizza un linguaggio di descrizione formale Questo passo è quello che porta alla realizzazione di un modello simbolico Nota: i modelli a cui ci riferiamo sono modelli simbolici rappresentazione formale delle conoscenze relative ad un fenomeno

Transcript of Linguaggi di Specifica - Intranet...

1

Pag. 1

Linguaggi di SpecificaLinguaggi di Specifica

Modello e LinguaggioModello e LinguaggioClassificazione dei linguaggi formaliClassificazione dei linguaggi formali

Linguaggi GraficiLinguaggi GraficiLinguaggi TestualiLinguaggi Testuali

Versione del 20/05/04Versione del 20/05/04Prof. F. BruschiProf. F. Bruschi

-- 22 --

ObiettivoObiettivo

Il Progetto di un sistema digitale inizia dalla raccolta dei requisiti e dal loro successivo raffinamentoIl passo successivo è la costruzione del modello: formalizzazione

– Processo di trasformazione di una descrizione, tipicamente in linguaggio naturale (semi-formale), in un’altra che utilizza un linguaggio di descrizione formale

– Questo passo è quello che porta alla realizzazione di un modellosimbolico

• Nota: i modelli a cui ci riferiamo sono modelli simbolici– rappresentazione formale delle conoscenze relative ad un fenomeno

2

Pag. 2

-- 33 --

SommarioSommario

Modello e LinguaggioClassificazione dei linguaggi formaliLinguaggi Grafici

– Schematic Entry– Timing Diagrams

Linguaggi Testuali– VHDL– SystemC

-- 44 --

Modello e LinguaggioModello e Linguaggio

Un modello (simbolico/matematico) è la rappresentazione formale di idee e conoscenze relative ad un fenomeno finalizzate al raggiungimento di un obiettivo.La rappresentazione di un modello simbolico è espressa tramite un linguaggio formale.Un linguaggio è formale quando non ammette una interpretazione arbitraria. – Un linguaggio di programmazione è un linguaggio formale– Il linguaggio naturale è semi-formale

• Mescolare l’impasto con il cucchiaio– “con il cucchiaio” si riferisce a “mescolare”

• Mescolare l’impasto con la panna – “con la panna” si riferisce a “impasto”

3

Pag. 3

-- 55 --

Classificazione dei linguaggi formaliClassificazione dei linguaggi formali

Grafico– Ingegneria del software

• Statecharts, UML, …– Ingegneria dell’hardware

• Timing Diagrams, SE (Schematic Entry), HHL (HeterogeneousHardware Logic), …

– Ingegneria di sistema• LSC (Live Sequence Charts)

Testuale– Linguaggi basati su linguaggi di programmazione

• SystemC, HarwareC, Esterel, Java, …– Linguaggi orientati alla descrizione dell’hardware

• VHDL, VERILOG

-- 66 --

SchematicSchematic EntryEntry

Consente di specificare un progetto graficamente– Istanziando componenti di libreria– Collegando gli elementi mediante BUS o fili (wire)

• Consentendo anche il passaggio da BUS a filo e vice versa

– Gestendo della gerarchia• Specificando i connettori tra i livelli

– Inclusi i connettori (speciali) di I/O la cui istanza richiede, nella maggior parte dei casi un successivo inserimento di buffer

• Navigando nella gerarchia

4

Pag. 4

-- 77 --

SchematicSchematic EntryEntry

Istanza di componenti di libreria

Collegamento wire e BUS

-- 88 --

SchematicSchematic EntryEntry

Esempio (Gerarchia)

5

Pag. 5

-- 99 --

SchematicSchematic EntryEntry

Strumenti commerciali– Moltissimi strumenti commerciali EDA includono uno Schematic

Entry o Editor– CADENCE– Synopsys– Mentor– Xilinx– Altera– …

-- 1010 --

Timing Timing DiagramsDiagrams

Descrivono la relazione tra segnali il tempo– Tipicamente indicati per lo sviluppo di interfacce

Gli oggetti generalmente trattati sono:– Forma d’onda

• Segnale, BUS, Clock

– Fronte• Cambiamento di stato di una forma d’onda

– Dipendenza• Descrive come un fronte ne condiziona un’altro

– Annotazione

6

Pag. 6

-- 1111 --

Timing Timing DiagramsDiagrams

Forma d’onda– Segnale

• Attributi– Valore iniziale: 0, 1, X (indefinito), Z (tri state), H e L

– BUS• Attributi

– Valore iniziale: Z (tri state), V (Valido), X (non valido)– Direzione: Ingresso, Uscita, Ingresso/uscita– Dimensione: Numero di bit

– Clock• Attributi

– Frequenza, periodo, offset, duty-cycle– Valore iniziale (0 o 1)

-- 1212 --

Timing Timing DiagramsDiagrams

Fronte– Proprietà nel tempo

• Definizione del tempo di accadimento per gli eventi certi• Definizione dell’intervallo di tempo di validità per gli eventi incerti• Definizione delle proprietà “lock”

– tempo di accadimento inalterabile

– Proprietà nello stato• Per i segnali: 0, 1, X (indefinito), Z (tri state), H e L• Per i BUS: Z (tri state), V (valido), X (non valido)

7

Pag. 7

-- 1313 --

Timing Timing DiagramsDiagrams

Esempio

-- 1414 --

Timing Timing DiagramsDiagrams

Relazioni– Ritardo (Delay)

• Specifica il tempo (max o min) tra due fronti • Quando un fronte è spostato, il fronte vincolato di sposta a sua

volta per mantenere il ritardo specificato• I ritardi indicano solo le dipendenze che influenzano il tempo del

fronte a valle

– Set-up• Specifica di quanto (max o min) un fronte deve precedere un altro

– Hold• Specifica di quanto (max o min) un fronte deve seguire un altro

8

Pag. 8

-- 1515 --

Timing Timing DiagramsDiagrams

Relazioni– Garantita

• Specifica che il tempo tra due fronti sarà sempre compreso tra un minimo ed un massimo.

– Vincolata• Specifica che il tempo tra i due fronti è fissato (min o max).

-- 1616 --

Timing Timing DiagramsDiagrams

Esempio (Ritardo)– Td: min=20 max=40; condiziona i due fronti, sia quello a te (il più in anticipo)

sia tl (il più in ritardo) del segnale controllato. • È disegnato tra i due fronti del segnale target

– Td1; non ha parametri (non condizionante). – Td2: min=50; impone solo il valore minimo e condiziona solo te del fronte

controllato• È disegnato sul fronte più in anticipo del segnale controllato

– Td3: max=40; impone solo il valore massimo e condiziona solo tl del fronte controllato

• È disegnato su tl.

9

Pag. 9

-- 1717 --

Timing Timing DiagramsDiagrams

Esempio (Set-up e Hold):– Ts: min=100; Th: min=50;

Esempio (Garantita)

Indica una violazione

-- 1818 --

Timing Timing DiagramsDiagrams

Dai Timing Diagrams è possibile estrarre– Il codice VHDL dell’applicazione– Il codice VHDL del test bench

I Timing Diagrams possono essere manipolati automaticamente per

– Eliminare le violazioni– Ottimizzare i percorsi critici

Strumenti commerciali – TimingTool (TimingTool)– TimingDiagrammer Pro (SynaptiCAD)– TimingDesigners (FORTE System Design)

10

Pag. 10

-- 1919 --

SystemCSystemC

SystemC è un linguaggio basato su C++– C++ arricchito di una libreria di classi

L’obiettivo di SystemC è di facilitare il passaggio dalla fase di concettualizzazione a quella di progettazione

– Ridurre il “divario produttivo”

SystemC Supporta– Comunicazioni hardware– Modello del tempo– Concorrenza– Tipi di dati per l’hardware

La specifica è eseguibile– Kernel di simulazione integrato con la specifica

-- 2020 --

SystemCSystemC: : WhyWhy do do wewe needneed a new design a new design languagelanguage?!?!

Verilog and VHDL work very well for HW implementation flows,but…Systems are becoming more complex, pushing us to design and verifyat higher levels of abstraction

– Enables early exploration of system level design tradeoffs– Enables early verification of the entire system, reducing risk– Enables much higher speed verification

Software is playing an increasing role in system design– Essential that new design flows support early software development,

integration with existing C/C++ code, and HW/SW codesign

New system level flows require a design language that supportssystem level IP delivery and integration

11

Pag. 11

-- 2121 --

SystemCSystemC: : What are the requirements forthe new language?

Don’t invent a new language! Build on C/C++ so that:– Extensive C/C++ infrastructure (compilers, debuggers, language

standards, books, etc.) can be re-used.– Users’ existing knowledge of C/C++ can be leveraged– Integration with existing C/C++ code is easy

The language must have best-in-class performance.It must provide a very general set of modeling constructs to cleanlysupport the wide range of abstraction levels and models ofcomputation used in system design.It must support specification and refinement to detailed implementation of both software and hardware.It must support verification through all stages of the design process

-- 2222 --

So what is SystemC?

The “de facto” industry standard language (implementedas a C++ class library) providing both system level and HDL modeling capabilities.SystemC is controlled by a board & steering group thatincludes 10 companies: ARM, Cadence, CoWare, Fujitsu, Mentor, Motorola, NEC, Sony, ST, Synopsys,...The SystemC reference simulator can be downloadedfree from www.systemc.org.Many EDA companies are starting to offer tools and libraries that support the SystemC standard.Major electronics companies are using SystemC now and are also planning to extend their use.

12

Pag. 12

-- 2323 --

SystemC: History & Organization

SystemC History– Early development done at Synopsys, CoWare/IMEC, UC Irvine– Open SystemC Initiative (OSCI) formed in 2000, many new members

joined.– OSCI LWG developed SystemC 2.0 specification and implementation in

2000-2001, greatly extending the language capabilitiesSystemC Organization Today

– Open SystemC Initiative (OSCI) is incorporated as a California non-profit organization with formal bylaws, a significant budget, etc.

– Licensing model is Open Community Licensing. (Unlike GNU, it is OK to build proprietary products from SystemC code.)

– Well-organized public relations efforts for SystemC are on-going (e.g.SystemC Tech Forum at DAC 2002).

– Website and source code maintenance for reference implementationsare located on SourceForge, and key developers from differentcompanies can access/modify code.

-- 2424 --

SystemCSystemC: : Alternative Languages

Raw C/C++– In wide use, but it’s very difficult to build everything yourself.– IP exchange is difficult.

SpecC– Not much activity apparent in organization. No RTL modeling. Is neither

C nor C++.Superlog, SystemVerilog

– A wide range of extensions to Verilog; many focused on improving RTL designer productivity, some focused on system design & verification. A large amount of work remains for language definition & standardization. For SW design and verification, it is becoming more like C/C++, but it isstill not C/C++.

Accelera System Level Languages Group– Not much apparent progress.

Possibly others: UML, SDL, Vera, Verisity’s ‘e’, etc.

13

Pag. 13

-- 2525 --

SystemCSystemC

SystemC 1.0– Modella l’hardware (RTL e Comportamentale)

SystemC 2.0– Estende la modellazione a livello di sistema

• UTF (untimed functional level) - Modello funzionali – Specifica eseguibile senza caratteristiche di tempo

• TLM – Modello transazionale (TLM)– Progetto di piattaforme e co-verifica Hw/Sw

• RTL - Modello architetturale di alto livello (pin-level)– Progetto e verifica di sistemi hardware a livello sia RTL sia

comportamentale

RTL RTL

RTL RTLTLM

TLM TLMUTF UTF

UTFUTF TLM

-- 2626 --

Models of Computation in SystemC 2.0

A model of computation is broadly defined by:– Model of time (real, integer, untimed) and event ordering

constraints (globally ordered, partially ordered, etc.)– Methods of communication between processes– Rules for process activation

Flexible communication and synchronization capabilitiesin SystemC 2.0 enable a wide range of MOCs to be naturally modeled.

– Examples: RTL, Process Networks, Static Dataflow, TransactionLevel Models, Discrete Event

14

Pag. 14

-- 2727 --

RTL Model of Computation in SystemC

Models combinational logic and sequential logic triggered by clocks.Very similar to RTL modeling in Verilog & VHDL.Signals modeled using sc_signal<>, sc_signal_rv<>Ports modeled using sc_in<>, sc_out<>, sc_inout<>

Q

QSET

CLR

D

u1

x2

x1

f(x1 ...xn )

Q

QSET

CLR

S

R

u1

x 2

x 1

f(x1...xn)

u1

x2

x1

f( x1...xn)

u1

x2

x1

f(x1 ...xn )dato1

clk

Out1

-- 2828 --

SystemC: Kahn Process Network MOC

Very useful for high level system modelingModules communicate via FIFOs (sc_fifo<T>) that suspend readersand writers as needed to reliably deliver data items.Easy to use and guaranteed to be deterministicPure KPN has no concept of timeWith annotated time delays, becomes timed functional model or performance model

a11

a22

b15

a11

a22

b15

a11

b1

b2

5

6

15

Pag. 15

-- 2929 --

SystemCSystemC: : Static Dataflow MOC

A proper subset of the KPN MOCEach module reads and writes a fixed number of data items eachtime it is activated. Sample delays modeled by writing data items into FIFOs before simulation starts.Simulators and implementation tools can determine static schedulefor system at compile-time, enabling high performance simulationand implementation.Commonly used in DSP systems, especially along with SystemC’s fixed point types (sc_fixed<>, sc_fix).

a11

a22

b15

a11

a22

b15

a11

b1

b2

5

6

1

21

10

10

1

1

1

2

-- 3030 --

SystemCSystemC: : TransactionTransaction LevelLevel ModellingModelling

Il livello di astrazione Transaction Level aiuta il System Level Design:

1) separando la modellizzazione del comportamento delle “unità funzionali” (moduli) dalla loro comunicazione

2) fornendo un unico formalismo per descrivere la comunicazione a più livelli di dettaglio

3) consentendo di modellizzare molti modelli di computazione diversi

16

Pag. 16

-- 3131 --

SystemCSystemC: : TransactionTransaction LevelLevel ModellingModellingCos’è una Cos’è una transactiontransaction??

Possiamo definire una “transaction” come un qualsiasi passaggio di dati tra due unità funzionali del nostro modello:

– il trasferimento di un risultato intermedio tra stadi di una pipeline (livello microarchitetturale);

– il passaggio di una parola da un processore ad una memoria (livello architetturale);

– il passaggio di una struttura dati complessa tra due fasi di un’elaborazione dati (livello algoritmico) (es: la trasformata di Fourier di un segnale da un filtro ad un altro);

-- 3232 --

SystemCSystemC: : TransactionTransaction LevelLevel ModellingModelling Cosa Cosa vs. Comevs. Come

Concettualmente, la modellizzazione di una “transaction” avviene rispondendo a due domande:1) quale dato viene trasferito? (tipo, valore);

Es: il processore legge una parola dalla memoria all’indirizzo “0x00ef00ef”; il valore restituito è “0xaabbaabb”

2) come avviene il trasferimento? (mezzo di comunicazione, protocollo)Es: il processore fornisce l’indirizzo, asserisce il comando di lettura, aspetta l’acknowledge etc.

La risposta alla prima domanda è necessaria per ottenere un modello funzionale, la seconda no!

17

Pag. 17

-- 3333 --

SystemCSystemC: : TransactionTransaction LevelLevel ModellingModellingCome vs. ComeCome vs. Come

Nel Transaction Level Modelling, la comunicazione può essere descritta a molti livelli di dettaglio temporale, come ad esempio:

– untimed functional: viene modellizzato solo il passaggio di dati tra le unità; le transizioni avvengono in tempo nullo;

– bus cycle accurate: la granularità corrisponde a transizioni (anche burst) di dati su un bus; si possono comunquemodellizzare transizioni bloccanti;

– cycle accurate: accuratezza al ciclo di clock;

-- 3434 --

SystemCSystemC: : TransactionTransaction LevelLevel ModellingModellingTransactionTransaction LevelLevel vs. pin vs. pin levellevel

Master Slavedata_out=data

req=‘1’ack=‘1’req=‘0’

Master outport.write(data)Slave

write

Pin accurate

Transaction Level

Channel

write

18

Pag. 18

-- 3535 --

SystemCSystemC: : TransactionTransaction LevelLevel ModellingModellingConfronto fra le tecniche di modellazioneConfronto fra le tecniche di modellazione

AltoAltissimoMedioBasso Costo

NullaBassaBassaAltaCapacità esplorazione

Non applicabile650.000 righe codice

65.000 righe codice6.500 righe codiceComplessità

descrizione

Real-time2MHz10-100Hz100KHzPrestazioni in simulazione

PrototipazioneEmulazione hw/swRTLTLM

-- 3636 --

SystemCSystemC

La specifica è eseguibile– Verifica veloce– Un modello a livello di transazione consente una simulazione

accurata al ciclo di bus • Più di 100.000 cicli/sec

I tre livelli possono convivere in uno stesso modello– Consente un raffinamento graduale dei moduli– Consente di verificare la funzionalità in ogni fase preliminare

dello sviluppo– Non è richiesta l’interazione tra simulatori differenti, uno per

ogni livello di astrazione considerato

19

Pag. 19

-- 3737 --

SystemCSystemC

Elementi del linguaggio– Tipi di dati– Moduli porte e segnali– Processi– Gerarchia

Tipi di dati– Numerico, Booleano, bit– Differenti tipi di dati: da int a float

• Da int a float peggiorano le caratteristiche di velocità della simulazione

– Es: sc_int<5> a; // a è un intero a 5 bit

-- 3838 --

SystemCSystemC

Moduli porte e segnali (cont.)– Struttura di modellazione

Istanzamodulo

Istanzamodulo

< >< >

< >Processo

Altrimetodi

Moduloporte

Segnali che collegano gli elementiDichiarati nel modulo

20

Pag. 20

-- 3939 --

SystemCSystemC

Moduli porte e segnali– Modulo

• È un contenitore costituito da una interfaccia e da una funzionalità• Il modulo interfaccia (.h) ed il modulo funzionalità (.cpp) sono

separati• Un modulo contiene

– Porte, variabili segnali interne, variabili dati interni, processi (diversi tipi), altri metodi, istanze di altri moduli, costruttore

Generatorestimoli

Specifica Monitor

Main.cpp

clk

-- 4040 --

SystemCSystemC

Moduli porte e segnali (cont.)– Porte

• Passano dati da e verso il modulo; sono dichiarate nella sezione di interfaccia

• Tre tipi– input, output, inout

• Il tipo di dato è passato come parametro di riferimento alla porta.

SC_MODULE(nome) {sc_in<int> a;sc_out<bool> b;…

};

21

Pag. 21

-- 4141 --

SystemCSystemC

Moduli porte e segnali (cont.)– Segnali

• Scambio di dati parallelo all’interno del modulo; sono dichiarati nella sezione di interfaccia

• Esiste solo un tipo di segnale• Il tipo di dato è passato come parametro di riferimento al segnale.

SC_MODULE(nome) {// portssc_in<int> a;sc_out<bool> b;// signalssc_signal<sc_int<10> > c;

…};

-- 4242 --

SystemCSystemC

Moduli porte e segnali (cont.)– Per leggere un valore da una porta di utilizza sia il metodo .read() sia l’operatore di assegnamento

– Per scrivere un valore da una porta di utilizza sia il metodo .write() sia l’operatore di assegnamento

– I due metodi sono utilizzati nel modulo funzionalità e agiscono su di un segnale dichiarato nel modulo di interfaccia

• Interfaccia: sc_signal<int> dato;sc_signal<bool> condizione;int a;

• Funzionalità: a=dato.read(); condizione.write(a);

22

Pag. 22

-- 4343 --

SystemCSystemC

Moduli porte e segnali (cont.)– Esempio - Interfaccia

SC_MODULE(encode){

//PORTEsc_in_clk clock; sc_in< bool > reset;sc_in< bool > input; sc_out< sc_bv<3> > output; //VARIABILIsc_bv<8> trellis; sc_bv<3> tmp; sc_bv<8> input1;

//PROTOTIPO FUNZIONEvoid codeGen();

//COSTRUTTORESC_CTOR(encode){

SC_CTHREAD(codeGen,clock.pos());watching(reset.delayed() == true);

}};

-- 4444 --

SystemCSystemC

Moduli porte e segnali (cont.)– Esempio - Funzionalità

#include "encode.h"void encode::codeGen(){

//INIZIALIZZAZIONEtrellis=0x00;wait();

//PROCEDURAwhile(true) {

input1[0]=input.read(); //Lettura ingressotrellis = ((trellis)<<1)|input1; //Inserimento nuovo valore

//Calcolo codifica tmp[2]=trellis[7]^trellis[4]^trellis[2]^trellis[0];output.write(tmp); //Scrittura uscitawait();

}}

23

Pag. 23

-- 4545 --

SystemCSystemC

Processi– I processi utilizzano i segnali per comunicare– Tre tipi di processi

• SC_METHOD (funzione asincrona)– È sensibile ad un insieme di segnali

» Sensitivity list: sensitive(segnale1), sensitive<<s1<<s2<<s3, sentitive_pos<<clk, sensitive_neg<<clk

– Ogni volta che viene invocato, l’intera funzionalità è eseguita e le istruzioni che la compongono sono eseguite sequenzialmente in tempo infinitesimo (rispetto al tempo di simulazione)

-- 4646 --

SystemCSystemC

Processi– Tre tipi di processi (cont.)

• SC_THREAD (Thread asincrono)– È sensibile ad un insieme di segnali

» Sensitivity list: sensitive(segnale1), sensitive<<s1<<s2<<s3, sentitive_pos<<clk, sensitive_neg<<clk

– Ogni volta che viene invocato, la funzionalità è eseguita in tempo infinitesimo fino al primo wait(); le istruzioni sono eseguite sequenzialmente.

» Alla successiva riattivazione l’esecuzione ricomincerà da dopo il costrutto wait() su cui si era fermata.

– Le variabili interne preservano il valore– Utilizzato per modellare sia comportamenti asincroni sia

comportamenti sincroni.

24

Pag. 24

-- 4747 --

SystemCSystemC

Processi– Tre tipi di processi (cont.)

• SC_CTHREAD (Thread sincrono)– È sensibile solo ad un fronte di un solo clock– Ogni volta che viene invocato, la funzionalità è eseguita in tempo

infinitesimo fino al primo wait(); le istruzioni sono eseguite sequenzialmente.

» Alla successiva riattivazione, l’esecuzione ricomincerà da dopo il costrutto wait() su cui si era fermata.

– Le variabili interne preservano il valore– Utilizzato per modellare comportamenti sincroni.

while (true) {out=in1+in2;wait;

}

10 53 1513 20

in1

in2

outSystemC 2.0

-- 4848 --

SystemCSystemC

Processi– Funzione WAIT()

• Usata solo in SC_THREAD e SC_CTHREAD• Sospende l’esecuzione del processo fino a quando il processo non

viene invocato nuovamente• SystemC 1.0

– wait() – wait(<var_int>) – attesa per un numero definito di cicli

• SystemC 2.0– wait(event)– wait(e1 | e2 | e3) – attesa del primo degli eventi– wait(e1 & e2 & e3) – attesa di tutti e tre– wait(100, SC_NS, e1 | e2) – attesa con time-out

25

Pag. 25

-- 4949 --

SystemCSystemC

Gerarchia– I moduli possono contenere istanze di altri moduli

• Nell’interfaccia– Si definiscono le variabili di connessione tra i moduli– Si definiscono variabili che sono puntatori alle classi dei moduli per

tutte le istanze– Nel costruttore si creano le istanze con new

– Nel costruttore si leggono i segnali e si realizza il mappaggio

Sub_a Sub_b< >

a_in

b_in

b_out

a_out

in

out

dato

-- 5050 --

SystemCSystemC

Gerarchia– Esempio

SC_MODULE(esempio){ sc_in<int> in; sc_out<int> out;

sc_signal<int> dato;

Sub_a *Istanza1; Sub_b *Istanza2;

SC_CTOR(esempio){

Istanza1= new Sub_a(“istanza1_arbitrario”);Istanza2= new Sub_b(“istanza2_arbitrario”);

(*Istanza1).a_in(in); (*Istanza1).a_out(dato); (*Istanza2).b_in(dato); (*Istanza2).b_out(out);

SC_CTHREAD(codeGen,clock.pos());watching(reset.delayed() == true);

}};

Sub_a Sub_b< >

a_in

b_in

b_out

a_out

in

out

dato

26

Pag. 26

-- 5151 --

BibliografiaBibliografia

Timing Tool, “TimingTool”, manuale applicativo, versione 1.3, Novembre 2003B. Niemann, “An introduction to SysteC 1.0.x”, Appunti del corso, Fraunhofer Institute for Integrated Circuit, 2001AA.VV., “SystemC 2.0 User’s guide update for SystemC2.0.1”, Synopsys, 2002