Metodi di Specifica e Linguaggi HDL - Intranet...

43
10/27/2004 Cristina Silvano - Politecnico di Milano 1 Metodi di Specifica e Linguaggi HDL Prof. Cristina SILVANO Politecnico di Milano Dipartimento di Elettronica e Informazione P.za L. Da Vinci 32, I-20133 Milano (Italy) Ph.: +39-02-2399-3692 e-mail: [email protected] Web site: http://www.elet.polimi.it/~silvano 10/27/2004 Cristina Silvano - Politecnico di Milano 2 Sommario Introduzione Evoluzione tecnologica Livelli di astrazione e domini di rappresentazione Flusso di progetto Modellizzazione dell’hardware Linguaggi di descrizione hardware (HDL): VHDL, Verilog, Linguaggi basati su C/C++ (SystemC) Modelli astratti dell’hardware: Data Flow Graph (DFG), Control Flow Graph (CFG)

Transcript of Metodi di Specifica e Linguaggi HDL - Intranet...

10/27/2004 Cristina Silvano - Politecnico di Milano 1

Metodi di Specifica e

Linguaggi HDL

Prof. Cristina SILVANO

Politecnico di MilanoDipartimento di Elettronica e Informazione P.za L. Da Vinci 32, I-20133 Milano (Italy)

Ph.: +39-02-2399-3692 e-mail: [email protected]

Web site: http://www.elet.polimi.it/~silvano

10/27/2004 Cristina Silvano - Politecnico di Milano 2

Sommario

• Introduzione

• Evoluzione tecnologica

• Livelli di astrazione e domini di rappresentazione

• Flusso di progetto

• Modellizzazione dell’hardware

• Linguaggi di descrizione hardware (HDL):• VHDL, Verilog, Linguaggi basati su C/C++ (SystemC)

• Modelli astratti dell’hardware:• Data Flow Graph (DFG), Control Flow Graph (CFG)

10/27/2004 Cristina Silvano - Politecnico di Milano 3

Introduzione

• La tecnologia microelettronica, basata sull’utilizzo dei semiconduttori, ha subito un’enorme evoluzione negli ultimi decenni.

• I circuiti VLSI (Very Large Scale Integration)realizzati con tecnologia CMOS (ComplementaryMetal Oxide Semiconductor) costituiscono la tecnologia strategica per lo sviluppo dei sistemi digitali.

• Il continuo incremento del livello di integrazione dei dispositivi microelettronici ha permesso la realizzazione di sistemi di complessità crescente.

10/27/2004 Cristina Silvano - Politecnico di Milano 4

Principali requisiti del mercato

• Livello di integrazione• Complessità progettuale• Prestazioni (ciclo di clock, ritardo o latenza, throughput) • Dissipazione di potenza• Affidabilità • Testabilità• Time-to-market• Costi

⇒ Importanza strategica delle metodologie e dei tool CAD (Computer Aided Design) o EDA (Electronic Design Automation) per raggiungere gli obiettivi di progetto nel rispetto dei tempi di sviluppo.

10/27/2004 Cristina Silvano - Politecnico di Milano 5

Circuiti VLSI verso l’approccio System-On-Chip

Satellite (DVB) VideoBroadcasting

Multimedia GameSystem

Wireless GSM Pocket Communicator

• Evoluzioni della tecnologia microelettronica, della metodologia di progetto e dei tool EDA permettono l’approccio System-On-Chip (SOC)

10/27/2004 Cristina Silvano - Politecnico di Milano 6

System-On-Chip

10/27/2004 Cristina Silvano - Politecnico di Milano 7

Approccio System-On-Chip

• L’avvento dell’approccio SOC ha aperto nuove prospettive per la sintesi ad alto livello e per superare i limiti dei linguaggi HDL.

• In ambito HW/SW co-design rivestono interesse la stesura di specifiche e la modellizzazione di sistema attraverso l’impiego di linguaggi che supportino descrizioni miste HW e SW.

• Integrazione di blocchi off-the-shelf come core processor e riuso di blocchi e celle proprietarie di tipo IP (Intellectual Property).

10/27/2004 Cristina Silvano - Politecnico di Milano 8

HW/SW Co-Design

• Scopo: raggiungere gli obiettivi di progetto a livello sistema sfruttando la sinergia delle parti hardware e software attraverso la loro progettazione concorrente.

• Principali vantaggi:• Esplorazione di diverse alternative di progetto.• Possibilità di analisi trade-off costi/prestazioni• Riduzione dei tempi di progetto del sistema.• Supporto della specifica a livello sistema.• Facilita il riutilizzo di sotto-parti hardware e software.• Fornisce un ambiente integrato per la sintesi e la

validazione delle componenti hardware e software.

10/27/2004 Cristina Silvano - Politecnico di Milano 9

Principali Fasi del Processo di Co-Design

• Analisi dei requisiti

• Modellizzazione del sistema (specifica funzionale)

• Gestione della concorrenza tra task

• Traformazioni ad alto livello

• Esplorazione dello spazio architetturale

• Partizionamento HW/SW

• Compilazione e Scheduling

• Co-sintesi

• Co-simulazione e co-validazione

10/27/2004 Cristina Silvano - Politecnico di Milano 10

HW/SW Co-Design

C/C++

a.out

C/C++

Progetto Architetturale Progetto Funzionale

Integrazione HW/SW

+

10/27/2004 Cristina Silvano - Politecnico di Milano 11

Progettazione Blocchi e Integrazione di Sistema

Specifica Funzionale di Sistema(HW, SW, ambiente) in C/C++

ProgettoBlocchi HW

DigitaliProgetto

Blocchi SW

Progetto Blocchi HW

Analogicie Misti

Architettura di Sistema

Ver

ifica

Ete

roge

nea

Mul

tiliv

ello

10/27/2004 Cristina Silvano - Politecnico di Milano 12

Progettazione HW/SW a Livello di Sistema

Syst

emR

TL

Phys

ical

HWImplementation

Verification &Analysis

Soft IP

SWImplementation

SystemLevel IP

Hard IP

RTL to GDS IISynthesis Flow

C CompilerAssembler

Link Editor(IDE)

System Level Design

10/27/2004 Cristina Silvano - Politecnico di Milano 13

Eterogeneità

• Livelli di astrazione• Livelli di astrazione legati ai domini specifici• Diversi livelli di dettaglio della descrizione

• Linguaggi• Diversi linguaggi• Tool dedicati

• Gruppi di progetto• Diversi gruppi (fisicamente distribuiti)• Diversi background

10/27/2004 Cristina Silvano - Politecnico di Milano 14

Necessità di un Linguaggio HW/SW Comune

Algoritmi Architettura Applicazione

• Utilizzo C/C++ • Linguaggi Proprietari• Estensioni C Proprietarie• Librerie di Classi C++

• Utilizzo C/C++

• Linguaggio comune basato su C/C++ per:• Modellare/scambiare celle IP di livello sistema• Progettare un framework di tool inter-operabili

10/27/2004 Cristina Silvano - Politecnico di Milano 15

Flusso di Progetto di Sistema

Algoritmi Architettura Applicazione

ApplicationRTOS, ProtocolsDevice Drivers

Specifica Eseguibile e Implementabile

SintesiHardware

SintesiSoftware

10/27/2004 Cristina Silvano - Politecnico di Milano 16

Livelli di Astrazione

Definiscono i livelli di dettaglio della descrizione del modello di un circuito o sistema digitale.

• Livello Sistema

• Livello Comportamentale o Behavioral

• Livello Architetturale o RT (Register Transfer)

• Livello Logico

• Livello Geometrico o Layout

10/27/2004 Cristina Silvano - Politecnico di Milano 17

Fasi di Sviluppo di un Circuito VLSI

• Progettazione:• Modellizzazione• Sintesi e ottimizzazione• Validazione

• Fabbricazione:• Fabbricazione delle maschere• Fabbricazione dei wafer

• Testing

• Packaging• Slicing del wafer• Packaging

10/27/2004 Cristina Silvano - Politecnico di Milano 18

Metodologia di progetto top-down

• Realizzata attraverso un metodo di progetto incrementale.

• Un flusso di operazioni viene ripetutamente applicato ad un progetto fino a raggiungere il più basso livello di astrazione

Modello meno dettagliato

Modello più dettagliato

Raffinamento del modello

10/27/2004 Cristina Silvano - Politecnico di Milano 19

Metodologia di progetto top-down

• Applicata attraverso l’iterazione di fasi di simulazione e sintesi a partire da una descrizione funzionale o specifica del sistema.

• Validazione della correttezza e completezza del modello iniziale ad alto livello.

• Dopo la validazione del modello ad alto livello, la descrizione subisce un processo di raffinamento (aggiunti maggiori dettagli al modello) e ottimizzazione.

• Validazione delle consistenza dei modelli sviluppati durante le successive fasi di progetto.

10/27/2004 Cristina Silvano - Politecnico di Milano 20

Metodologia di progetto top-down

Partitioning = Refinement

Simulation

Connected Components

Design by connecting components Synthesis

Simulation/Timing Verification

Synthesis

YES

NO

NO

YES

YES

YES

NO NO

Satisfied?

10/27/2004 Cristina Silvano - Politecnico di Milano 21

Metodi di specifica di sistema

• Linguaggi di programmazione tradizionali (C, C++, Pascal, Ada, Prolog, …)

• Linguaggi per la descrizione dell’hardware (HDL) (VHDL, Verilog, Hardware C, ISPS, DSL, MIMOLA, SILAGE, …)

• Modelli astratti e formalismi grafici(Data Flow Graph, Control Flow Graph, Reti di Petri, Statecharts, SpecCharts, State Transition Graph, …).

10/27/2004 Cristina Silvano - Politecnico di Milano 22

Modellizzazione dell’hardware

• Modelli HDL: • VHDL • Verilog• SystemC• Superlog• ….

• Modelli astratti (modelli basati su grafi): • Data Flow Graph• Control Flow Graph • Sequencing Graph• ….

10/27/2004 Cristina Silvano - Politecnico di Milano 23

Linguaggi di Descrizione dell’Hardware (HDLs)

• Linguaggi specializzati per il supporto delle caratteristiche del progetto hardware

• Supportano descrizione della funzionalità a diversi livelli di astrazione (esempi: livello comportamentale, livello RT , livello logico)

• Supportano diverse viste o domini di rappresentazione (esempi: vista funzionale o comportamentale, strutturale, fisica)

• Supporto alle fasi di sintesi

• Supporto alle fasi di simulazione

10/27/2004 Cristina Silvano - Politecnico di Milano 24

Linguaggi di Programmazione SW

• Possono modellare il comportamento funzionale (Esempio: modelli di processori)

• Supportano marginalmente le fasi di progetto e sintesi

• Necessarie estensioni ai linguaggi per supportare le peculiarità delle descrizioni hardware (esempio: SystemC)

• Hardware e software adottano diversi paradigmi concettuali ⇒ Evoluzione forzata a colmare il gap esistente tra i linguaggi di programmazione software e i linguaggi HDL

10/27/2004 Cristina Silvano - Politecnico di Milano 25

Modelli Hardware vs Modelli Software

• Modelli Hardware• Esecuzione concorrente• Interfacce di I/O• Descrizione strutturale• Descrizione gerarchica a partire da blocchi base• Temporizzazione esatta degli eventi • MVL (Multi-Valued Logic)

• Modelli Software• Esecuzione sequenziale (generalmente)• Informazioni strutturali rivestono minore importanza • Temporizzazione esatta degli eventi riveste minore

importanza

10/27/2004 Cristina Silvano - Politecnico di Milano 26

Linguaggi HDL: Concetti Base • Concorrenza: le strutture hardware sono

intrinsecamente concorrenti e composte dall’interconnessione di blocchi base.• Il concetto di concorrenza supportato sia dai modelli

strutturali sia dal concetto di processi multipli concorrenti tra loro.

• Gerarchia: data la complessità progettuale occorre organizzare il progetto su diversi livelli gerarchici, che possono essere descritti a diversi livelli di astrazione.

• Supportano istruzioni sequenziali all’interno di un processo.

• Temporizzazioni: necessità di modellare l’andamento temporale dei segnali attraverso la descrizione di forme d’onda.

10/27/2004 Cristina Silvano - Politecnico di Milano 27

Concorrenza

• Le strutture hardware sono intrinsecamente concorrenti e composte dall’interconnessione di blocchi base o moduli.

• Le attività sono svolte in parallelo dai diversi blocchi base o moduli.

10/27/2004 Cristina Silvano - Politecnico di Milano 28

Gerarchia• Data la complessità progettuale occorre

organizzare il progetto su diversi livelli gerarchici.

• I singoli moduli di livello gerarchico inferiore possono essere descritti a diversi livelli di astrazione.

cin

half_adder

a

b

sum

couthalf_adder

a

b

sum

cout

or2b

a

z

a

b

cout

sum

temp_sum

temp_carry_2

temp_carry_1full adder

10/27/2004 Cristina Silvano - Politecnico di Milano 29

Istruzioni Concorrenti e Sequenziali

• Un modello HDL è costituito da un insieme di:

• ISTRUZIONI CONCORRENTI

• ISTRUZIONI SEQUENZIALI.

• Concetto di PROCESSO: Le istruzioni SEQUENZIALI sono contenute nei PROCESSI che interagiscono tra loro in parallelo e che si scambiano informazioni tramite i segnali ⇒ CONCORRENZA TRA PROCESSI.

10/27/2004 Cristina Silvano - Politecnico di Milano 30

Istruzioni Sequenziali

• I linguaggi HDL supportano istruzioni sequenziali all’interno di un processo.

10/27/2004 Cristina Silvano - Politecnico di Milano 31

Concorrenza tra Processi

• I linguaggi HDL supportano il concetto di concorrenza anche attraverso il concetto di processi multipli concorrenti tra loro.

10/27/2004 Cristina Silvano - Politecnico di Milano 32

• All’interno di un’architettura possono essere presenti processi multipli concorrenti e istruzioni concorrenti:

ARCHITECTURE a OF entity IS

BEGIN

-- concurrent statements

P1: PROCESS (sensitivity list of signals)

BEGIN

-- sequential statements;

END PROCESS P1;

-- concurrent statements

P2: PROCESS (sensitivity list of signals)

BEGIN

-- sequential statements

END PROCESS P2;

-- concurrent statements

END a;

Processi Multipli

10/27/2004 Cristina Silvano - Politecnico di Milano 33

Istruzioni Concorrenti

• Eseguite in parallelo

• Comportamento indipendente dall’ordine con il quale sono scritte nel codice HDL.

• Esempio VHDL: Istruzioni di assegnamento dei segnali

X <= A + B;

Z <= C + X;

oppure

Z <= C + X;

X <= A + B;

10/27/2004 Cristina Silvano - Politecnico di Milano 34

• Eseguite in sequenza

• Comportamento dipende dall’ordine con il quale sono state scritte nel codice HDL

• Esempio VHDL di processo contenente istruzioni sequenziali (IF, CASE, …):MUX: PROCESS (a, b, sel)

BEGIN

IF sel = '1' THEN

z <= a;

ELSE

z <= b;

END IF;

END PROCESS MUX;

Istruzioni Sequenziali

10/27/2004 Cristina Silvano - Politecnico di Milano 35

Temporizzazioni

• Temporizzazioni o forme d’onda: necessità di modellare l’andamento temporale dei segnali attraverso la descrizione di forme d’onda cioè di segnali il cui valore logico evolve nel tempo.

tempo

10/27/2004 Cristina Silvano - Politecnico di Milano 36

Multi-Valued Logic

• Rappresentazione di diversi stati logici:

• Esempi: • Logic ‘0’• Logic ‘1’• Don’t care ‘-’• Uninitialized ‘U’• Unknown ‘X’• ...

10/27/2004 Cristina Silvano - Politecnico di Milano 37

Esempio: MVL9 in VHDL

• Rappresentazione basata su nove stati logici:

-- Part of std_ulogic_1164 ----------------------

TYPE std_ulogic IS ( 'U', -- Uninitialized state - Used as default value

'X', -- Forcing Unknown - Bus Contention, error cond., etc.'0', -- Forcing 0 - Transistor driven to GND'1', -- Forcing 1 - Transistor driven to VCC'Z', -- High Impedance - 3-state buffer outputs'W', -- Weak Unknown - Bus terminators'L', -- Weak 0 - Pull down resistors'H', -- Weak 1 - Pull up resistors'-' -- Don't care

);-------------------------------------------------

10/27/2004 Cristina Silvano - Politecnico di Milano 38

Analisi del Linguaggio

• Sintassi:• Visione esterna di un linguaggio• Specificata da una grammatica

• Semantica• Significato di un linguaggio• Diversi modi per specificarla

10/27/2004 Cristina Silvano - Politecnico di Milano 39

Analisi del Linguaggio

• Linguaggi procedurali• Specificano la funzionalità attraverso una sequenza di

passi• Esempi: C, Pascal, VHDL, Verilog

• Linguaggi dichiarativi• Specificano la funzionalità attraverso un insieme di

dichiarazioni• Esempio: Prolog

10/27/2004 Cristina Silvano - Politecnico di Milano 40

Analisi del Linguaggio

• Semantica imperativa• Dipendenza tra gli assegnamenti e i valori che una

variabile può assumere.• Esempi: C, Pascal

• Semantica applicativa• Basata sull’invocazione di funzioni• Esempi: Lisp, Silage

10/27/2004 Cristina Silvano - Politecnico di Milano 41

Linguaggi HDL e Viste

• Vista Fisica• Linguaggi e formati di descrizione del layout fisico

(esempio: GDSII)• Dichiarativi o procedurali

• Vista Strutturale• Linguaggi strutturali (Esempio: Structural VHDL)• Dichiarativi (con alcune caratteristiche procedurali)

• Vista Funzionale o Comportamentale• Linguaggi comportamentali (Esempio: Behavioral VHDL)• Essenzialmente procedurali

10/27/2004 Cristina Silvano - Politecnico di Milano 42

Vista Strutturale

• Composizione di blocchi base o moduli

• Rappresentazione di schematici

• Struttura di incidenza

• Struttura gerarchica basata su istanze di simboli di blocchi base o moduli appartenenti ai livelli gerarchici inferiori

• Esempi HDL: VHDL, Verilog

10/27/2004 Cristina Silvano - Politecnico di Milano 43

Esempio: half adder

a

bsumZ

XOR2

coutZB

AND2

A

half_adder

a

b

sum

cout

A

BZ

10/27/2004 Cristina Silvano - Politecnico di Milano 44

VHDL: Modello Strutturale

entity half_adder isport (a, b : in bit;

sum, cout : out bit);end half_adder;

architecture STRUCT of half_adder iscomponent and2 is

port (A, B: in bit;Z: out bit);

end component;component xor2 is

port (A, B: in bit;Z: out bit);

end component;begin

u1: xor2 port map (a, b, sum );u2: and2 port map (a, b, cout);

end STRUCT;

10/27/2004 Cristina Silvano - Politecnico di Milano 45

Verilog: Modello Strutturale

module half_adder (a, b, sum, cout);

input a, b;

output sum, cout;

xor2 u1 (.Z(sum), .A(a), .B(b));

and2 u2 (.Z(cout), .A(a), .B(b));

endmodule

10/27/2004 Cristina Silvano - Politecnico di Milano 46

Vista Comportamentale: Ling. Procedurali

• Insieme di task ordinati• Livello logico

- Task: funzioni logiche

• Livello architetturale- Task: operazioni generiche

• Rappresentazione indipendente dalle scelte implementative

• Esempi HDL: VHDL, Verilog

10/27/2004 Cristina Silvano - Politecnico di Milano 47

Es. VHDL: Modello di Logica Combinatoria

entity half_adder isport (a, b : in bit;

sum, cout : out bit);end half_adder;

architecture DATA_FLOW of half_adder isbegin

sum <= a xor b ;cout <= a and b ;

end DATA_FLOW;

10/27/2004 Cristina Silvano - Politecnico di Milano 48

Es. Verilog: Modello di Logica Combinatoria

module half_adder (a, b, sum, cout);

input a, b;

output sum, cout;

assign sum = a ^ b;

assign cout = a & b;

endmodule

10/27/2004 Cristina Silvano - Politecnico di Milano 49

Esempio: Modello RT di Logica Sequenziale

A

B

D

Q

CLK

LOGICA COMB.

reg_logicA

CLK

QB

10/27/2004 Cristina Silvano - Politecnico di Milano 50

Es. VHDL: Modello RT

entity REG_LOGIC isport (A, B, CLK : in bit;

Q : out bit);end REG_LOGIC;

architecture RT1 of REG_LOGIC is

beginprocess

begin

wait until (CLK’event and CLK =‘1’);

Q <= A + B ; -- comb. statementsend process,

end RT1;

10/27/2004 Cristina Silvano - Politecnico di Milano 51

Es. VHDL: Modello RT

entity REG_LOGIC isport (A, B, CLK : in bit;

Q : out bit);end REG_LOGIC;

architecture RT2 of REG_LOGIC is

beginprocess (CLK)

begin

if (CLK’event and CLK =‘1’)then

Q <= A + B ; -- comb. statements

end if;

end process,

end RT2;

10/27/2004 Cristina Silvano - Politecnico di Milano 52

Es. Verilog: Modello RT

module reg_logic (A, B, CLK, Q);

input A, B, CLK;

output Q;

reg Q;

initial q = 0;

always

@(posedge CLK) Q = A + B;

endmodule

10/27/2004 Cristina Silvano - Politecnico di Milano 53

Vista Comportamentale: Ling. Dichiarativi

• Circuiti combinatori• Insieme di assegnamenti senza riferimenti temporali• Ogni assegnamento rappresenta una porta logica

virtuale• Molto simili a modelli procedurali

• Circuiti sequenziali• Utilizzano annotazioni temporali per segnali con ritardo• Insieme di assegnamenti per variabili (con ritardo)

10/27/2004 Cristina Silvano - Politecnico di Milano 54

Problemi Legati ai Linguaggi HDL

• Descrizioni miste comportamentali e strutturali• Controllo dei dettagli implementativi

• Elementi primitivi e semantica delle variabili• Problema dell’assegnamento multiplo

• Semantica temporale• Strategie di sintesi

10/27/2004 Cristina Silvano - Politecnico di Milano 55

Descrizione Comportamentale vs. Strutturale

• Descrizioni strutturali esprimono partizionamento del progetto

• Descrizioni puramente comportamentali sono difficili da specificare• Porte di I/O implicano una struttura• Gerarchia può implicare una struttura

• Rappresentazioni ibride

10/27/2004 Cristina Silvano - Politecnico di Milano 56

Primitive Hardware

• Blocchi hardware elementari:• Porte logiche• Registri• Macro-blocchi (esempio: SRAM,…)

• Connessioni

• Porte di ingresso, uscita e bidirezionali

10/27/2004 Cristina Silvano - Politecnico di Milano 57

Semantica delle variabili

• Variabili sono implementate in hardware da:• Registri• Wire

• Hardware può memorizzare informazioni o no

• Casi:• Circuiti combinatori• Circuiti sequenziali

10/27/2004 Cristina Silvano - Politecnico di Milano 58

Semantica delle Variabili: Circuiti Combinatori

• Assegnamento multiplo ad una variabile

• Risoluzione dei conflitti• Oring• Ultimo assegnamento

10/27/2004 Cristina Silvano - Politecnico di Milano 59

Semantica delle Variabili: Circuiti Sequenziali

• Assegnamento multiplo ad una variabile

• Variabile mantiene il suo valore fino al riassegnamento

• Problema: • Propagazione delle variabili e osservabilità

10/27/2004 Cristina Silvano - Politecnico di Milano 60

Esempio

• Riassegnamenti multipli:

x = 0; x = 1; x = 0;

• Possibili interpretazioni:• Ogni assegnamento dura un ciclo: impulso• x assume il valore 0• x assume il valore 0 dopo un breve glitch

10/27/2004 Cristina Silvano - Politecnico di Milano 61

Semantica Temporale

• La maggior parte dei linguaggi HDL specificano un ordine parziale tra le operazioni

• Temporizzazione di un’operazione:• Modello a posteriori:

- Annotazione del ritardo

• Modello a priori: - Limiti temporali- Strategie e vincoli per la fase di sintesi

10/27/2004 Cristina Silvano - Politecnico di Milano 62

Semantica Temporale Event-Driven

• Implementazione digitale sincrona

• Un’operazione è sincronizzata con alcuni eventi• Se l’ingresso di un’operazione varia ⇒ l’operazione viene rivalutata

• Usata dai simulatori per ragioni di efficienza.

10/27/2004 Cristina Silvano - Politecnico di Milano 63

Implementazione Sincrona

• Operazioni sincronizzate da un clock attraverso un comando wait oppure @

• Comandi wait e @ delimitano i confini del clock

• Il clock è un parametro del modello:• Il modello è aggiornato ad ogni ciclo di clock

10/27/2004 Cristina Silvano - Politecnico di Milano 64

Modelli Astratti

• Modelli basati su grafi

• Utili per elaborazione a livello di sistema e per l’analisi delle proprietà

• Derivati dai modelli di linguaggi attraverso la compilazione.

10/27/2004 Cristina Silvano - Politecnico di Milano 65

Esempi di Modelli Astratti

• Netlist: Vista strutturale

• Reti logiche: Viste miste strutturali / comportamentali

• Diagrammi degli stati: Vista comportamentale di modelli logici sequenziali

• Data Flow e Sequencing Graph: Astrazioni dei modelli comportamentali

10/27/2004 Cristina Silvano - Politecnico di Milano 66

Modelli Astratti

• Modelli orientati al flusso dati (Data-Flow)• Focalizzati sull’elaborazione dei dati• Basati su Data-Flow Graph e derivati

• Modelli orientati al flusso di controllo (Control-Flow)• Focalizzati sul controllo• Basati su modelli di Macchine a Stati Finiti (FSM) e

derivati

• DF e CF modellano aspetti complementari di un sistema

10/27/2004 Cristina Silvano - Politecnico di Milano 67

Data Flow Graph (DFG)

• Vista comportamentale di modelli architetturali

• Utili per rappresentare il flusso dati (data-path)

• Grafi composti da:• Vertici per rappresentare le operazioni• Lati per rappresentare le dipendenze

10/27/2004 Cristina Silvano - Politecnico di Milano 68

Esempio di DFG

x1= x + dx

u1 = u - ( 3 * x * u * dx) - (3 * y * dx)

y1 = y + u * dx

c = x1 < a

10/27/2004 Cristina Silvano - Politecnico di Milano 69

Esempio

*

3 x

*

u dx

*

u dx

+

x dx

*

*

3 y

*

dx

<

a

x1

-

u

-

+

y

y1 c

u1

1 2 6 8 10

3 7 9

4

5

11

10/27/2004 Cristina Silvano - Politecnico di Milano 70

Sequencing Graph

• Vista comportamentale di modelli architetturali

• Utili per rappresentare controllo e data-path

• Dataflow Graph estesi per rappresentare:• Serializzazione delle operazioni• Gerarchia• Comandi di controllo di flusso (esempio: branch e

iterazioni)• Polarità: sorgente e pozzo

10/27/2004 Cristina Silvano - Politecnico di Milano 71

Esempio

* * * +

*

*

* <

-

-

+

1 2 6 8 10

3 7 9

4

5

11

NOP

NOP

0

n

10/27/2004 Cristina Silvano - Politecnico di Milano 72

Esempio di Gerarchia

+*

*

NOPa.0

NOP

CALL

a.1

a.3

a.2

a.4

a.n*+

NOP b.0

b.1 b.2

NOP b.n

10/27/2004 Cristina Silvano - Politecnico di Milano 73

Esempio di branching

10/27/2004 Cristina Silvano - Politecnico di Milano 74

Esempio di iterazione

diffeq {read (x, y, u, dx, a);repeat {

x1 = x + dx;u1 = u - (3*x*u*dx) - (3*y*dx);y1 = y + u * dx;c = x1 < a;x = x1; u = u1; y = y1;}

until ( c );write (y);}

10/27/2004 Cristina Silvano - Politecnico di Milano 75

Esempio di iterazione

10/27/2004 Cristina Silvano - Politecnico di Milano 76

Proprietà dei Sequencing Graph

• Calcolate visitando bottom-up la gerarchia.

• Stima dell’area:• Somma degli attributi in area di tutti i vertici.• Caso pessimo – no condivisione

• Stima del ritardo (latenza)• Grafi con etichette sulla latenza• Lunghezza del percorso più lungo.

10/27/2004 Cristina Silvano - Politecnico di Milano 77

Modelli basati su FSM

• FSM descritte attraverso State Transition Graph (STG) equivalenti a State Transition Table (STT)• Grafo diretto• Vertici ⇔ Stati• Lati ⇔ Transizioni

• Altri formalismi grafici:• FSM gerarchiche, FSM concorrenti• StateCharts• Program-State Machine• SpecCharts

• Formalismi basati su espressioni regolari (esempio: Control-Flow Expression)

• Linguaggi sincroni (esempio: Esterel, SDL, …)

10/27/2004 Cristina Silvano - Politecnico di Milano 78

Utilizzo di C/C++

Linguaggi C/C++ non supportano:• Concorrenza: Hardware e livello sistema sono

intrinsecamente concorrenti.

• Reattività: Hardware e livello sistema sono intrinsecamente reattivi: rispondono agli stimoli e sono in costante interazione con l’ambiente (esempio: gestione delle eccezioni).

• Tipi di dati hardware: tipo bit, tipo bit_vector, tipo Multi-Valued Logic, …

• Stile di comunicazione hardware: segnali, protocolli, …

• Temporizzazioni: esempio nozione di segnale che evolve nel tempo

10/27/2004 Cristina Silvano - Politecnico di Milano 79

Approccio Basato su Libreria di Classi C++

• Creare una libreria di classi C++ per fornire gli elementi mancanti al linguaggio C++ per il supporto alla modellizzazione hardware e di sistema.

• Non estendere i linguaggi C/C++ con costrutti proprietari del linguaggio.

• Supportare l’uso di un compilatore C++ compatibile ANSI.

⇒ SystemC

10/27/2004 Cristina Silvano - Politecnico di Milano 80

SystemC

• Una libreria di classi C++:• Processi (per concorrenza)• Clock (per temporizzazioni)• Tipi di dati hardware (bit vector, 4-valued logic, tipi in

virgola fissa, interi con precisione arbitraria)• Costrutti waiting e watching (per reattività)• Moduli, porte, segnali (per gerarchia)

• Un kernel di simulazione ‘light-weight’

10/27/2004 Cristina Silvano - Politecnico di Milano 81

SystemC non rappresenta

• Un rimpiazzo per Verilog e VHDL e per i tool di sintesi e simulazione associati

• Un rimpiazzo per tool adatti a domini specifici come COSSAP

• Un ambiente efficiente di simulazione e debugging per progetti basati su C++• Un simulatore compilato con il proprio debugger

costituisce un ambiente migliore

10/27/2004 Cristina Silvano - Politecnico di Milano 82

SystemC utile per:

• Modellizzazione di architettura di sistema• Senza temporizzazioni• Transaction-accurate• Cycle-accurate

• Modellizzazione hardware (processori, periferiche, ASSP, ASIC)• Livello algoritmico• Livello comportamentale• Livello RT

• Modellizzazione software

10/27/2004 Cristina Silvano - Politecnico di Milano 83

SystemC non utile per:

• Modellizzazione sistemi di tipo flusso dati (data-flow) • Utilizzabile, ma non efficiente

• Modellizzazione di sistemi RF e analogici• Utilizzabile, ma non accurato

• Modellizzazione MEMS (Micro Electro-Mechanical Systems)• Attualmente non utilizzabile

10/27/2004 Cristina Silvano - Politecnico di Milano 84

Open SystemC Initiative

• Standard ‘de-facto’ • Leader per la sintesi e co-design

• Interoperabilità• Infrastruttura open fornisce codice sorgente• Community Source Models

• Stakeholder Control (Steering Group)• Iniziativa responsabile della definizione di evoluzioni e

direttive tecniche per SystemC• ARM, CoWare, Cygnus, Ericsson, Fujitsu, Infineon,

Lucent, Sony, STM, Synopsys, TI

10/27/2004 Cristina Silvano - Politecnico di Milano 85

Open SystemC Kit e Licenze

• Goal della politica delle licenze: interoperabilità

• Modifiche al codice sorgente • Membri della comunità incoraggiati a condividere le

modifiche• Licenze commerciali richieste per ri-distribuire il codice

Open SystemCTM Kit• Open Source Code• Execute/debug with

standard ANSI C++ tools• Reference Manual• Tutorial & Examples• www.SystemC.org