SystemC: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
tradotte altre parti, sincronizzata con voce in lingua inglese |
Recupero di 1 fonte/i e segnalazione di 0 link interrotto/i.) #IABot (v2.0.9.5 |
||
(24 versioni intermedie di 19 utenti non mostrate) | |||
Riga 1:
'''SystemC''' è un tipo di [[linguaggio di descrizione hardware]], simile al [[VHDL]] o al [[Verilog]], utilizzato nella 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.
== Storia ==▼
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.▼
*
*
*
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
A giugno del 2000 venne formato un gruppo di standardizzazione denominato
== 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
▲== Storia ==
▲* [[27 settembre]] [[1999]]: annunciata ''Open SystemC Initiative''
▲* [[1 marzo]] [[2000]]: rilasciato SystemC v0.91
▲* [[28 marzo]] [[2000]]: rilasciato SystemC v1.0
▲* [[1 febbraio]] [[2001]]: rilasciate specifiche del SystemC v2.0 ed il [[codice sorgente]] della v1.2 Beta
▲* [[3 giugno]] [[2003]]: rilasciato SystemC 2.0.1 LRM (''language reference manual'')
▲* [[6 giugno]] [[2005]]: rilasciato SystemC 2.1 LRM and TLM 1.0 (''transaction-level modeling'')
▲* [[12 dicembre]] [[2005]]: [[Institute of Electrical and Electronics Engineers|IEEE]] approva lo [[standard]] IEEE 1666-2005 per il SystemC
▲* [[13 aprile]] [[2007]]: rilasciato SystemC v2.2
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.
▲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à di Irvine, California, e da alcune compagnie giapponesi.
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''.
▲A giugno del 2000 venne formato un gruppo di standardizzazione denominato "Open SystemC Initiative" con il compito di organizzare le attività e permettere ai concorrenti di Synopsys, Cadence e Mentor Graphics, di avere voce nello sviluppo.
▲A luglio 2004 Synopsys terminò il proprio coinvolgimento in SystemC.
== Caratteristiche ==
=== Moduli ===
I moduli costituiscono i blocchi base di un progetto SystemC. Un modello di solito consiste in diversi moduli che comunicano attraverso le porte. I moduli possono essere pensati come i blocchi costruttivi del linguaggio.
Riga 55 ⟶ 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 93 ⟶ 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]]
|