SystemC
| SystemC | |
|---|---|
| Tip de | biblioteca (programare) |
| Dezvoltator | Inițiativa Sistem deschis C |
| Scris in | C++ |
| Sistem de operare | Platformă transversală |
| ultima versiune | 2.3 |
| Licență | Licență Apache 2.0 [1] |
| Site-ul web | systemc.org |
SystemC este un limbaj de proiectare și verificare a modelului la nivel de sistem, implementat ca o bibliotecă C++ open source . [2] Biblioteca include un motor de modelare a evenimentelor care vă permite să obțineți un model de dispozitiv executabil. Limbajul este folosit pentru a construi modele tranzacționale și comportamentale, precum și pentru sinteza la nivel înalt.
Limbajul SystemC folosește o serie de concepte similare cu cele ale limbajelor de descriere hardware VHDL și Verilog : interfețe, procese, semnale, evenimente, ierarhia modulelor. Standardul SystemC nu impune restricții privind utilizarea limbajului C++ atunci când descrie modelele de sistem.
A fost dezvoltat un proiect de standard pentru sinteza SystemC , al cărui scop este de a defini un subset al limbajelor C++ și SystemC potrivite pentru sinteza comportamentală și RTL. [3]
Standarde
- IEEE Std. 1666-2005 IEEE Standard System C Language Reference Manual [4]
Exemplu
Exemplu de descriere a modelului de adunator :
#include "systemc.h" // inclusiv fișierul antet al bibliotecii SystemC
SC_MODULE ( adăugător ) // declarație modul (clasă) {
sc_in < int > a , b ; // porturi sc_out < int > suma ;
void do_add () // proces {
suma = a + b ;
}
SC_CTOR ( adăugător ) // constructor {
SC_METHOD ( do_add ); // înregistrarea procesului do_add în motorul de modelare sensibil << a << b ; // lista de sensibilitate proces do_add }
};
Caracteristicile limbii
Module (modul)
Modulele sunt blocurile de bază în SystemC. Un model din SystemC constă de obicei din mai multe module care comunică prin porturi.
Semnale
Semnalele din SystemC sunt echivalentul cu trimiterea printr-un fir.
Porturi
Prin porturi, modulul comunică cu lumea exterioară (de obicei cu alte module).
Procese
Procesele sunt principalele elemente de calcul. Procesele rulează în paralel .
Canale
Elementele comunică prin canale în SystemC. Canalele pot fi fire simple sau mecanisme complexe de conectare, cum ar fi cozi FIFO sau autobuze .
Canale de bază:
- semnal
- tampon
- fifo
- mutex
- semafor
Interfețe
Porturile folosesc interfețe pentru a comunica prin canale.
Evenimente
Trebuie declarat în timpul inițializării. Permiteți sincronizarea proceselor.
Tipuri de date
SystemC conține mai multe tipuri de date care acceptă modelarea hardware.
Extinderea tipurilor standard:
- sc_int<> întreg semnat pe 64 de biți
- sc_uint<> întreg fără semn pe 64 de biți
- sc_bigint<> întreg cu semn de bitness arbitrar
- sc_biguint<> întreg nesemnat de bitness arbitrar
Tipuri booleene:
- sc_bit bit cu 2 cifre
- sc_logic bit din 4 cifre
- vector sc_bv<> (matrice unidimensională) al sc_bit
- sc_lv<> sc_logic vector
Tipuri de puncte fixe:
- sc_fixed<> șablon semnat punct fix
- sc_ufixed<> șablon punct fix nesemnat
- sc_fix punct fix semnat fără șablon
- sc_ufix punct fix nesemnat fără șablon
Lista aplicațiilor care acceptă SystemC
- Aldec Active-HDL , Riviera [5] , co-simulare.
- Cadence Design Systems C-to-Silicon Compiler [6] , sinteză.
- Synopsys System Studio [7] , modelare, analiză, verificare.
- Mentor Graphics Catapult C Synthesis [8] , sinteza.
- Cinthesizer Forte Design Systems [9] , sinteza.
- Calypto SLEC System [10] , analiza codului.
- Jeda Validation Tools Suite [11] , analiza codului.
- SystemCrafter SystemCrafter SC [12] , sinteza.
Note
- ↑ https://github.com/accellera-official/systemc/blob/master/LICENSE
- ↑ Despre SystemC (ing.) (downlink) . - o scurtă descriere a limbajului SystemC. Data accesului: 13 august 2009. Arhivat din original la 28 octombrie 2007.
- ↑ OSCI Drafts Under Public Review (engleză) (link nu este disponibil) . - o listă de proiecte de standarde OSCI. Preluat la 13 august 2009. Arhivat din original la 21 martie 2012.
- ↑ IEEE-SA GetIEEE 1666 Termeni de utilizare (downlink) . Consultat la 16 noiembrie 2008. Arhivat din original pe 18 mai 2008.
- ↑ Aldec - Technologies - SystemC Arhivat 22 martie 2009.
- ↑ Cadence C-to-Silicon Compiler . Consultat la 28 noiembrie 2008. Arhivat din original pe 19 septembrie 2011.
- ↑ System Studio . Consultat la 2 iunie 2011. Arhivat din original pe 4 iunie 2011.
- ↑ Sinteză Catapult C - Corect după construcție, RTL de înaltă calitate, de 10-100 de ori mai rapidă - Mentor Graphics . Consultat la 28 noiembrie 2008. Arhivat din original pe 6 decembrie 2008.
- ↑ Cynthesizer Closes the ESL-to-Silicon Gap (link nu este disponibil) . Consultat la 28 noiembrie 2008. Arhivat din original la 12 mai 2008.
- ↑ Calypto | Sistemul SLEC . Consultat la 28 noiembrie 2008. Arhivat din original pe 21 decembrie 2008.
- ↑ Produse JEDA | Automatizare de validare a modelului ESL . Consultat la 28 noiembrie 2008. Arhivat din original pe 4 mai 2006.
- ↑ SystemCrafter-Produse . Consultat la 28 noiembrie 2008. Arhivat din original la 1 decembrie 2008.
Literatură
- Alekhin V.A. SystemC. Modelarea sistemelor electronice. - M . : Hot line - Telecom , 2018. - 320 p. - 500 de exemplare. - ISBN 978-5-9912-0722-5 .