SystemC: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m r2.7.3) (Bot: Aggiungo ro:SystemC |
Recupero di 1 fonte/i e segnalazione di 0 link interrotto/i.) #IABot (v2.0.9.5 |
||
(21 versioni intermedie di 16 utenti non mostrate) | |||
Riga 1:
'''SystemC'''
Il SystemC è un insieme di [[Libreria software|librerie]] e [[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 in questo modo possono comunicare in un ambiente simulato ''[[real-time]]'' attraverso 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 non sono paragonabili a quelli dei simulatori VHDL/Verilog commercializzati attualmente, pensati per la progettazione a livello [[Register transfer level|RTL]].▼
== Storia ==
*
*
*
*
*
*
*
*
ARM Ltd., CoWare, Synopsys e CynApps unirono le forze per sviluppare SystemC (successivamente CynApps divenne Forte Design Systems), pubblicando la prima bozza nel 1999. Il concorrente principale all'epoca era SpecC, un altro pacchetto ''[[open source]]'' basato sul C++, sviluppato da membri dell'[[Università della California, Irvine|Università di Irvine]], [[California]], e da alcune compagnie giapponesi.
Riga 23 ⟶ 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
▲<!--
▲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
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 ==
Riga 54 ⟶ 60:
Tipi standard estesi:
* sc_int<>
* sc_uint<>
* sc_bigint<>
* sc_biguint<>
Tipi logici:
* sc_bit
* sc_logic
* sc_bv<>
* sc_lv<>
Tipi in virgola fissa:
* sc_fixed<>
* sc_ufixed<>
* sc_fix
* sc_ufix
== Esempio ==
Esempio di codice per un sommatore:
<
#include "systemc.h"
SC_MODULE(adder)
{
sc_in<int> a, b; // porte
Riga 92 ⟶ 98:
}
};
</syntaxhighlight>
== Bibliografia ==
* T. Grötker, S. Liao, G. Martin, S. Swan, ''System Design with SystemC''. Springer, 2002. ISBN
*
* J. Bhasker, ''A SystemC Primer'', Second Edition, Star Galaxy Publishing, 2004. ISBN
* D. C. Black, J. Donovan, ''SystemC: From the Ground Up'', Springer 2005. ISBN
* Frank Ghenassia (Editor), ''Transaction-Level Modeling with Systemc: Tlm Concepts and Applications for Embedded Systems'',
== Collegamenti esterni ==
* {{
* {{
* {{
* {{
{{Norme IEEE}}
{{Logica programmabile}}
{{portale|elettronica|informatica}}
[[Categoria:Librerie software]]
[[Categoria:Linguaggi di descrizione hardware]]
|