SystemC: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
ValterVBot (discussione | contributi)
m Esempio: tag source deprecati, replaced: <source lang= → <syntaxhighlight lang=, </source> → </syntaxhighlight>
 
(10 versioni intermedie di 9 utenti non mostrate)
Riga 1:
'''SystemC''' vieneè spessoun pensatotipo come undi [[linguaggio di descrizione hardware]], simile al [[VHDL]] o al [[Verilog]], mautilizzato più precisamente è un linguaggio dinella descrizione dei [[Sistema|sistemi]], poiché mostra la sua potenza di funzionamento con [[Modello (scienza)|modelli]] a livello transazionale e comportamentali, nei quali il grado di dettaglio dell'andamento nel tempo dei segnali di uscita viene tralasciato in favore di una più concisa rappresentazione della descrizione della funzione richiesta.
 
Il SystemC è un insieme di [[Libreria software|librerie]] e [[Macro (informatica)|macro]] scritte in [[C++]] con cui è possibile simulare processi concorrenti, ovvero che avvengono nello stesso momento, ognuno descritto attraverso la sintassi C++. Nell'ambiente di lavoro del SystemC, gli oggetti descritti possono comunicare in un contesto simulato ''[[real-time]]'' usando segnali di tutti i tipi di dato offerti dal C++, insieme ad altri offerti dalle librerie SystemC, oltre a quelli definiti dall'utilizzatore.
 
<!--
The behaviours (processes) defined may be instantiated any number of times, and provisions are made for processes defined by hierarchies of other processes, as one would expect.
-->
Il linguaggio offre una [[semantica]] simile a quella di [[VHDL]] e [[Verilog]], ma al costo di un aggravamento sintattico rispetto a questi. D'altro canto, permette un maggiore libertà espressiva, come [[programmazione orientata agli oggetti]] e [[Classe (informatica)|classi]] [[template]]. Più in generale, SystemC è sia un linguaggio di descrizione sia un sistema di simulazione che permette di generare un eseguibile che si comporta come il modello descritto al momento dell'esecuzione. Le prestazioni del sistema di simulazione sono difficilmente paragonabili a quelle dei simulatori VHDL/Verilog commercializzati attualmente, specialmente per via delle differenze di ambito applicativo. Mentre Verilog e VHDL sono stati pensati, originariamente proposti e nel tempo sviluppati per la progettazione a ''livello di trasferimento tra registri'' ([[Register transfer level|RTL]]), il SystemC, nei suoi primi anni di vita, ha veicolato una forte spinta verso la progettazione a livelli di astrazione superiore, con produzione di strumenti per la Sintesi di Alto livello e successivi sviluppi del paradigma transazionale, nel quale la comunicazione tramite segnali digitali viene sostituita con un più generico passaggio di messaggi.
 
Nei fatti, tuttavia, l'iniziale spinta innovativa non ha trovato riscontro nei risultati prodotti; il costo di mantenimento della coerenza della rappresentazione è rimasta in larga misura sulle spalle dell'utilizzatore, data la mancanza di strumenti di controllo semantico sufficientemente robusti, più di quanto non capiti con altri linguaggi di descrizione dell'hardware, e nel frattempo l'introduzione, nel 2005, del SystemVerilog, variante orientata agli oggetti del Verilog, ha di fatto pressoché annullato i vantaggi che la natura di libreria di classi C++ del SystemC aveva dato a questo inizialmente.
 
La parte che aveva destato più interesse nella fase di sviluppo vivace della modellazione transazionale, ovvero la formalizzazione dei concetti di connessione tramite port/export, canali, e socket, è stata riproposta in SystemVerilog, organizzata secondo i dettami della programmazione a [[Design pattern|pattern]], all'interno della libreria di classi [http://accellera.org/downloads/standards/uvm UVM], che attualmente rappresenta l'elemento di maggior successo nell'ambito della progettazione di ambienti e componenti di verifica per la progettazione di dispositivi digitali e ''mixed signal''.
 
== Storia ==
Line 19 ⟶ 8:
* 3 giugno [[2003]]: distribuito SystemC 2.0.1 LRM (''language reference manual'')
* 6 giugno [[2005]]: distribuito SystemC 2.1 LRM and TLM 1.0 (''transaction-level modeling'')
* 12 dicembre [[2005]]: [[Institute of Electrical and Electronics Engineers|IEEE]] approva lo [[norma tecnica|standard]] IEEE 1666-2005 per il SystemC
* 13 aprile [[2007]]: distribuito SystemC v2.2
 
Line 27 ⟶ 16:
 
A luglio 2004 Synopsys terminò il proprio coinvolgimento in SystemC.
 
== Descrizione ==
 
Il SystemC è un insieme di [[Libreria software|librerie]] e [[Macro (informatica)|macro]] scritte in [[C++]] con cui è possibile simulare processi concorrenti, ovvero che avvengono nello stesso momento, ognuno descritto attraverso la sintassi C++. Nell'ambiente di lavoro del SystemC, gli oggetti descritti possono comunicare in un contesto simulato ''[[sistema real-time]]'' usando segnali di tutti i tipi di dato offerti dal C++, insieme ad altri offerti dalle librerie SystemC, oltre a quelli definiti dall'utilizzatore.
 
<!--
The behaviours (processes) defined may be instantiated any number of times, and provisions are made for processes defined by hierarchies of other processes, as one would expect.
-->
Il linguaggio offre una [[semantica]] simile a quella di [[VHDL]] e [[Verilog]], ma al costo di un aggravamento sintattico rispetto a questi. D'altro canto, permette un maggiore libertà espressiva, come [[programmazione orientata agli oggetti]] e [[Classe (informatica)|classi]] [[template]]. Più in generale, SystemC è sia un linguaggio di descrizione sia un sistema di simulazione che permette di generare un eseguibile che si comporta come il modello descritto al momento dell'esecuzione. Le prestazioni del sistema di simulazione sono difficilmente paragonabili a quelle dei simulatori VHDL/Verilog commercializzati attualmente, specialmente per via delle differenze di ambito applicativo. Mentre Verilog e VHDL sono stati pensati, originariamente proposti e nel tempo sviluppati per la progettazione a ''livello di trasferimento tra registri'' ([[Register transfer level|RTL]]), il SystemC, nei suoi primi anni di vita, ha veicolato una forte spinta verso la progettazione a livelli di astrazione superiore, con produzione di strumenti per la Sintesi di Alto livello e successivi sviluppi del paradigma transazionale, nel quale la comunicazione tramite segnali digitali viene sostituita con un più generico passaggio di messaggi.
 
Nei fatti, tuttavia, l'iniziale spinta innovativa non ha trovato riscontro nei risultati prodotti; il costo di mantenimento della coerenza della rappresentazione è rimasta in larga misura sulle spalle dell'utilizzatore, data la mancanza di strumenti di controllo semantico sufficientemente robusti, più di quanto non capiti con altri linguaggi di descrizione dell'hardware, e nel frattempo l'introduzione, nel 2005, del SystemVerilog, variante orientata agli oggetti del Verilog, ha di fatto pressoché annullato i vantaggi che la natura di libreria di classi C++ del SystemC aveva dato a questo inizialmente.
 
La parte che aveva destato più interesse nella fase di sviluppo vivace della modellazione transazionale, ovvero la formalizzazione dei concetti di connessione tramite port/export, canali, e socket, è stata riproposta in SystemVerilog, organizzata secondo i dettami della programmazione a [[Design pattern|pattern]], all'interno della libreria di classi [http://accellera.org/downloads/standards/uvm UVM], che attualmente rappresenta l'elemento di maggior successo nell'ambito della progettazione di ambienti e componenti di verifica per la progettazione di dispositivi digitali e ''mixed signal''.
 
== Caratteristiche ==
Line 77 ⟶ 79:
== Esempio ==
Esempio di codice per un sommatore:
<sourcesyntaxhighlight lang="cpp">
#include "systemc.h"
 
Line 96 ⟶ 98:
}
};
</syntaxhighlight>
</source>
 
== Bibliografia ==
* T. Grötker, S. Liao, G. Martin, S. Swan, ''System Design with SystemC''. Springer, 2002. ISBN 1-4020-7072-1
* {{cita web |1=http://sclive.blogsite.org/ |2=A SystemC based Linux Live CD with C++/SystemC tutorial |accesso=16 luglio 2007 |urlarchivio=https://web.archive.org/web/20080820010200/http://sclive.blogsite.org/# |dataarchivio=20 agosto 2008 |urlmorto=sì }}
* J. Bhasker, ''A SystemC Primer'', Second Edition, Star Galaxy Publishing, 2004. ISBN 0-9650391-2-9
* D. C. Black, J. Donovan, ''SystemC: From the Ground Up'', Springer 2005. ISBN 0-387-29240-3
Line 106 ⟶ 108:
 
== Collegamenti esterni ==
* {{cita web|1=http://www.systemc.org/|2=Open SystemC 2.x|lingua=en|accesso=16 luglio 2007|urlarchivio=https://web.archive.org/web/20081006172519/http://systemc.org/#|dataarchivio=6 ottobre 2008|urlmorto=sì}}
* {{cita web|httphttps://sourceforge.net/projects/systemc/|Open SystemC 1.0|lingua=en}}
* {{cita web|url=https://sourceforgegithub.netcom/projectsorcioni/systemc-wms/|titolo=SystemC-WMS Homepage|lingua=en||}}
* {{cita web|http://standards.ieee.org/getieee/1666/|IEEE 1666 Standard System C Language Reference Manual|lingua=en}}
{{Norme IEEE}}
{{Logica programmabile}}
{{portale|elettronica|informatica}}
 
[[Categoria:Librerie software]]