SystemC: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Thijs!bot (discussione | contributi)
m Bot: Aggiungo: ru:SystemC
tradotte altre parti, sincronizzata con voce in lingua inglese
Riga 1:
{{T|lingua=inglese|argomento=informatica|data=luglio 2007}}
Spesso si pensa al '''SystemC''' viene spesso pensato come ad un [[linguaggio di descrizione hardware]], simile al [[VHDL]] o al [[Verilog]], ma più precisamente è un linguaggio di descrizione dei sistemi, poiché mostra la sua potenza di funzionamento nei modelli a transizione di livelli e comportamentali.
 
Il SystemC è un setinsieme 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 segnalidato cheofferti offre ildal C++, edinsieme ad altri offerti dalle librerie SystemC, oltre a quelli definiti dal programmatoredall'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.
 
The language thus offered has semantical similarities to [[VHDL]] and [[Verilog]], but may be said to have a syntactical overhead compared to these. On the other hand, greater freedom of expressiveness is offered in return, like [[Object-oriented programming | object oriented design partitioning]], template classes and [[dynamic memory allocation]]. Which is more: SystemC is ''both'' a description language ''and'' a simulation kernel. The code written will compile together with the library's simulation kernel to give an executable that behaves like the described model when it is run. The performance of this simulation kernel is not to be compared with that of commercial VHDL/Verilog simulators at the present.
-->
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&agrave; espressiva, come [[programmazione orientata agli oggetti]] e classi [[template]]. Pi&ugrave; in generale, SystemC &egrave; 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 ==
* [[27 settembre]] [[1999]]: annunciata ''Open SystemC Initiative''
* [[1 marzo]] [[2000]]: rilasciatarilasciato SystemC v0.91
* [[28 marzo]] [[2000]]: rilasciatarilasciato 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 released
 
<!--
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&agrave; di Irvine, California, e da alcune compagnie giapponesi.
SystemC was originally developed by Synopsys, Inc., an Electronic Design Automation (EDA) company, to act as the modeling foundation for forthcoming system simulation and synthesis tools. A number of Synopsys' end-users suggested that the only way a modeling environment like SystemC would be adopted broadly, would be as an open source project. Synopsys teamed with a number of large electronics companies, ARM Ltd. and CoWare to launch SystemC in 1999. The chief competitor at the time was another C++ based open source package offered by a small startup called CynApps which later became Forte Design Automation. In June 2000, a standards group know as the Open SystemC Initiative was formed to provide an industry neutral organization to host SystemC activities and to allow Synopsys' largest competitors, Cadence and Mentor Graphics, democratic representation in SystemC development.
 
-->
A giugno del 2000 venne formato un gruppo di standardizzazione denominato "Open SystemC Initiative" con il compito di organizzare le attivit&agrave; e permettere ai concorrenti di Synopsys, Cadence e Mentor Graphics, di avere voce nello sviluppo.
 
A luglio 2004 Synopsys termin&ograve; 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.
 
=== Porte ===
Le porte permettono la comunicazione fra l'interno del modulo e l'esterno, di solito verso altri moduli.
 
=== Processi ===
I Processiprocessi sono i componenti principali che realizzano l'elaborazione. Sono ad esecuzione concorrente.
 
=== Canali ===
I canali sono gli elementi che permettono la comunicazione nel SystemC. Possono essere sia semplici caviconnessione o complessi sistemi di comunicazione complessi, come code [[FIFO]] o [[bus (informatica)|bus]]
 
Canali elementari:
Riga 49 ⟶ 52:
 
=== Tipi di dati ===
Il SystemC introduce alcunivari tipi di dati che supportano deila modellimodellazione dell'hardware.
 
Tipi standard estesi:
* sc_int<> 64-bit signedintero integercon segno
* sc_uint<> 64-bit unsignedintero integersenza segno
* sc_bigint<> arbitraryintero precisiona signedprecisione integerarbitraria con segno
* sc_biguint<> arbitraryintero precisiona unsignedprecisione integerarbitraria senza segno
 
Tipi logici:
* sc_bit 2-valued singlesingolo bit a 2 valori
* sc_logic 4-valued singlesingolo bit a 4 valori
* sc_bv<> vectorvettore ofdi sc_bit
* sc_lv<> vectorvettore ofdi sc_logic
 
Tipi in virgola fissa:
Fixed point types:
* sc_fixed<> templatedtemplate signedin fixedvirgola pointfissa con segno
* sc_ufixed<> templatedtemplate unsignedin fixedvirgola pointfissa senza segno
* sc_fix untemplatedtipo signedin fixedvirgola pointfissa con segno
* sc_ufix untemplatedtipo unsignedin fixedvirgola pointfissa senza segno
 
== Esempio ==
Riga 74 ⟶ 77:
#include "systemc.h"
 
SC_MODULE(adder) // moduledichiarazione di modulo (classclasse) declaration
{
sc_in<int> a, b; // portsporte
sc_out<int> sum;
 
void do_add() // processprocesso
{
sum = a + b;
}
 
SC_CTOR(adder) // constructorcostruttore
{
SC_METHOD(do_add); // register do_add to kernel