SistemC

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

SystemC este un tip de limbaj de descriere hardware , similar cu VHDL sau Verilog , utilizat în descrierea sistemelor , deoarece își arată puterea de funcționare cu modelele la nivel tranzacțional și comportamental, în care gradul de detaliere al tendinței în timp semnalele de ieșire sunt lăsate în favoarea unei reprezentări mai concise a descrierii funcției solicitate.

Istorie

  • 27 septembrie 1999 : Anunțarea Open SystemC Initiative
  • 1 martie 2000 : lansat SystemC v0.91
  • 28 martie 2000 : lansat SystemC v1.0
  • 1 februarie 2001 : specificații SystemC v2.0 și cod sursă v1.2 beta distribuite
  • 3 iunie 2003 : SystemC 2.0.1 LRM ( manual de referință lingvistică ) lansat
  • 6 iunie 2005 : lansare SystemC 2.1 LRM și TLM 1.0 ( modelare la nivel de tranzacție )
  • 12 decembrie 2005 : IEEE aprobă standardul IEEE 1666-2005 pentru SystemC
  • 13 aprilie 2007 : lansat SystemC v2.2

ARM Ltd., CoWare, Synopsys și CynApps și-au unit forțele pentru a dezvolta SystemC (ulterior CynApps a devenit Forte Design Systems), publicând prima schiță în 1999. Principalul concurent la acea vreme era SpecC, un alt pachet open source bazat pe C ++, dezvoltat de către membrii Universității din Irvine , California , și unele companii japoneze.

În iunie 2000, a fost format un grup de standardizare numit Inițiativa Open SystemC, cu sarcina de a organiza activități și de a permite concurenților din Synopsys , Cadence și Mentor Graphics , să aibă o voce în dezvoltare.

În iulie 2004 Synopsys și-a încheiat implicarea în SystemC.

Descriere

SystemC este un set de biblioteci și macrocomenzi scrise în C ++ cu care este posibilă simularea proceselor concurente, adică care au loc în același timp, fiecare descris prin sintaxa C ++. În mediul de lucru al SystemC, obiectele descrise pot comunica într-un context de sistem simulat în timp real utilizând semnale ale tuturor tipurilor de date oferite de C ++, împreună cu altele oferite de bibliotecile SystemC, pe lângă cele definite de utilizatorul.

Limbajul oferă o semantică similară cu cea a VHDL și Verilog , dar cu prețul unei agravări sintactice în raport cu acestea. Pe de altă parte, permite o mai mare libertate de exprimare, cum ar fi programarea orientată pe obiecte și clasele de șabloane . Mai general, SystemC este atât un limbaj de descriere, cât și un sistem de simulare care vă permite să generați un executabil care se comportă ca modelul descris la momentul execuției. Performanța sistemului de simulare nu este comparabilă cu cea a simulatoarelor VHDL / Verilog comercializate în prezent, în special datorită diferențelor în domeniul aplicației. În timp ce Verilog și VHDL au fost concepute, propuse inițial și dezvoltate de-a lungul timpului pentru proiectare la nivelul de transfer între registre ( RTL ), SystemC, în primii săi ani de viață, a transmis o puternică împingere către proiectare la niveluri mai ridicate de abstractizare, cu producerea de instrumente pentru sinteza la nivel înalt și dezvoltarea ulterioară a paradigmei tranzacționale, în care comunicarea prin semnale digitale este înlocuită cu un pasaj mai generic de mesaje.

De fapt, însă, inițiativa inovatoare inițială nu s-a reflectat în rezultatele obținute; costul menținerii coerenței reprezentării a rămas în mare măsură pe umerii utilizatorului, dată fiind lipsa unor instrumente de control semantic suficient de robuste, mai mult decât ceea ce se întâmplă cu alte limbaje de descriere hardware și, între timp, introducerea, în 2005, a SystemVerilog , o variantă orientată obiect a Verilogului, a anulat practic avantajele pe care i le-a dat inițial natura bibliotecii de clase C ++ a SystemC.

Partea care a trezit cel mai mult interes în faza de dezvoltare plină de viață a modelării tranzacționale, adică formalizarea conceptelor de conexiune prin port / export, canale și socketuri, a fost re-propusă în SystemVerilog, organizat în conformitate cu dictatele de programare a modelelor , la biblioteca bibliotecii de clasă UVM , care este în prezent cel mai de succes element în proiectarea mediilor de testare și a componentelor pentru proiectarea dispozitivelor de semnal digital și mixt .

Caracteristici

Formulare

Modulele formează blocurile de bază ale unui proiect SystemC. Un model constă de obicei din mai multe module care comunică prin porturi. Modulele pot fi considerate ca elementele de bază ale limbajului.

Ușile

Porturile permit comunicarea între interiorul modulului și exterior, de obicei către alte module.

Procese

Procesele sunt principalele componente care efectuează prelucrarea. Sunt execuții concurente.

Canale

Canalele sunt elementele care permit comunicarea în SystemC. Pot fi conexiuni simple sau sisteme de comunicații complexe, cum ar fi cozile FIFO sau autobuzele

Canalele elementare:

  • semnal
  • tampon
  • fifo
  • mutex
  • semafor

Interfețe

Porturile utilizează interfețe pentru a comunica cu canalele.

Evenimente

Permite sincronizarea între procese.

Tipuri de date

SystemC introduce diferite tipuri de date care acceptă modelarea hardware.

Tipuri standard extinse:

  • sc_int <> număr întreg semnat pe 64 de biți
  • sc_uint <> întreg pe 64 de biți nesemnat
  • sc_bigint <> întreg de precizie arbitrar semnat
  • sc_biguint <> întreg de precizie arbitrară fără semn

Tipuri logice:

  • sc_bit bit unic cu 2 valori
  • sc_logic bit unic cu 4 valori
  • sc_bv <> vectorul sc_bit
  • sc_lv <> vectorul sc_logic

Tipuri de puncte fixe:

  • sc_fixed <> șablon punct semnat semnat
  • sc_ufixed <> șablon de punct fix nesemnat
  • sc_fix tip punct fix cu semn
  • sc_ufix tip de punct fix nesemnat

Exemplu

Exemplu de cod pentru un adder:

 #include "systemc.h"

SC_MODULE ( adder ) // declarație modul (clasă)
{
  sc_in < int > a , b ; // usi
  sc_out < int > sumă ;

  void do_add () // proces
  {
    sumă = a + b ;
  }

  SC_CTOR ( sumator ) // constructor
  {
    SC_METHOD ( do_add ); // înregistrați do_add la kernel
    sensibil << a << b ; // lista de sensibilitate a do_add
  }
};

Bibliografie

linkuri externe