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
Top Related