SystemC

SystemC jest często mylony z językiem opisu sprzętu, takim jak VHDL lub Verilog . W rzeczywistości SystemC jest językiem opisu wyższego poziomu, ponieważ umożliwia modelowanie systemów na poziomie behawioralnym. SystemC nie jest pełnoprawnym językiem, ale zbiorem klas C ++ , które wprowadzają pojęcia niezbędne do modelowania sprzętu (na przykład pojęcie współbieżnych procesów). Zachowując funkcjonalności C ++ , nadal można opisać funkcje czysto programowe. Dlatego SystemC umożliwia modelowanie sprzętu, oprogramowania, systemów mieszanych lub nawet niepartycjonowanych. Dlatego jest szczególnie odpowiedni do projektowania układów typu SoC .

SystemC integruje również możliwość symulacji zaprojektowanego modelu, a następnie, poprzez kolejne udoskonalenia, w celu uzyskania możliwej do implementacji reprezentacji.

SystemC został opracowany wspólnie przez kilka firm. W tym celu utworzono OSCI (Open SystemC Initiative), odpowiedzialną za rozpowszechnianie, promowanie i pisanie specyfikacji SystemC. Wgrudzień 2005, SystemC jest znormalizowany w IEEE jako IEEE 1666-2005.

W 2011 roku opublikowano znaczącą ewolucję SystemC w wersji 2.3 biblioteki odpowiadającej standardowi IEEE 1666-2011. Od tego czasu rozwój i dystrybucja standardu są kontrolowane przez Accellera .

Przykłady

#include "systemc.h" SC_MODULE(and3) { sc_in<bool> e1; sc_in<bool> e2; sc_in<bool> e3; sc_out<bool> s; void compute_and() { s = e1 & e2 & e3; }; SC_CTOR(and3) { SC_METHOD(compute_and); sensitive << e1; sensitive << e2; sensitive << e3; } }
  • Przykład logiki sekwencyjnej:
#include "systemc.h" SC_MODULE(counter) { sc_in<bool> clk; sc_in<bool> nrst; sc_out<sc_uint<8> > q; void count() { if(nrst == false) q = 0; else q = q + 1; }; SC_CTOR(and3) { SC_METHOD(count); sensitive << clk.pos(); } }

Historyczny

Poniżej różne wersje SystemC:

  • Wersja 0.9 firmy Synopsys w 1999 roku
  • Wersja 1.0 autorstwa Frontier Design
  • Wersja 1.1 firmy CoWare w 2001 roku
  • Utworzenie OSCI (Open SystemC Initiative) w 2001 roku
  • Wersja 2.0 firmy OSCI
  • Standaryzacja przez IEEE IEEE1666-2005 w 2005 roku.
  • Wersja 2.2 jest zgodna ze standardem IEEE z 2007 roku
  • Wersja 2.3 z rewizją standardu IEEE1666-2011 w 2011 roku, w tym włączenie TLM 2 do standardu.

W czerwiec 2011ogłoszono sojusz między Accellera i OSCI.

W listopad 2016, Accellera ogłasza, że ​​biblioteka jest teraz rozpowszechniana na warunkach licencji Apache 2.0. Z tej okazji rozprowadzana jest wersja 2.3.1.

  • Wersja 2.3.2 to najnowsza dostępna wersja. Zapewnia głównie kompatybilność z najnowszymi wersjami C ++ i niektórymi kompilatorami.

Od lipiec 2019, Accellera oferuje oficjalne publiczne repozytorium git (hostowane na GitHub), aby uzyskać dostęp do kodu źródłowego biblioteki, a także do rozwijanych wersji.

Bibliografia

  1. https://www.accellera.org/downloads/standards/systemc
  2. http://hdl.telecom-paristech.fr/sc_intro.html
  3. http://www.ee.ryerson.ca/~courses/coe718/Data-Sheets/systemc/System-Level-Design.pdf
  4. http://www-verimag.imag.fr/~maraninx/IMG/pdf/masterthesisfunchalgiovanni.pdf
  5. http://www.accellera.org/downloads/standards/systemc
  6. http://www.gabeoneda.com/edge-on-eda/accellera-and-open-systemc-initiative-osci-get-engaged
  7. (in) "  Accellera - OSCI Union: New Synergy for EDA Standards?  » , Na cadence.com (dostęp 8 października 2020 r . ) .
  8. http://www.accellera.org/news/press-releases/227-accellera-announces-relicensing-of-systemc-reference-implementation-under-the-apache-2-0-license
  9. https://www.accellera.org/news/press-releases/281-accellera-announces-public-source-code-repository
  10. (w) „  Accellera-official / SystemC  ” na GitHub (dostęp: 8 października 2020 ) .

Linki zewnętrzne