SystemC

Cet article est une ébauche concernant l’informatique et les télécommunications.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

SystemC
Format
LogicielVoir et modifier les données sur Wikidata
Site web
systemc.orgVoir et modifier les données sur Wikidata

modifier - modifier le code - modifier WikidataDocumentation du modèle

SystemC est un langage de programmation compatible avec C++, pour la conception, la modélisation et la vérification au niveau système d'un circuit logique. Ce n'est pas un langage de description de matériel (HDL), mais un complément au niveau supérieur pour sa simulation.

Son standard est standardisé et ratifié par lOpen SystemC Initiative (OSCI) aet Accellera Systems Initiative sous la norme IEEE Std. 1666-2011[1].

Description

SystemC est souvent confondu avec un langage de description de matériel (HDL), tel que VHDL ou Verilog. En fait, SystemC est un langage de description de plus haut niveau, puisqu'il permet une modélisation de systèmes au niveau comportemental. SystemC n'est pas un langage à part entière mais un ensemble de classes C++ qui introduisent les concepts nécessaires à la modélisation du matériel (par exemple la notion de processus concurrents). Conservant les fonctionnalités du C++, il reste possible de décrire des fonctions purement logicielles. SystemC permet donc de modéliser des systèmes matériels, logiciels, mixtes ou même non-partitionnés. Il est donc particulièrement approprié à la conception de systèmes de type SoC[1].

SystemC intègre également la possibilité de simuler le modèle conçu, puis, par raffinements successifs, d'aboutir à une représentation implémentable.

SystemC a été développé en commun par plusieurs entreprises. À cette fin, l'OSCI (Open SystemC Initiative) a été créé, chargé de diffuser, promouvoir et rédiger les spécifications de SystemC. En , SystemC est standardisé auprès de l'IEEE sous le nom de IEEE 1666-2005.

En 2011, une évolution majeure de SystemC est publiée avec la version 2.3 de la bibliothèque correspondant au standard IEEE 1666-2011. Depuis, le développement et la diffusion du standard sont contrôlés par Accellera[2].

Exemples

  • Exemple de logique combinatoire:
#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;
  }
}
  • Exemple de logique séquentielle:
#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();
  }
}

Historique

Ci-dessous, les différentes versions de SystemC[3] :

  • Version 0.9 par Synopsys en 1999[4],[5]
  • Version 1.0 par Frontier Design
  • Version 1.1 par CoWare en 2001
  • Création de L'OSCI (Open SystemC Initiative) en 2001
  • Version 2.0 par L'OSCI
  • Standardisation par l'IEEE IEEE1666-2005 en 2005.
  • Version 2.2 conforme au standard IEEE en 2007[2]
  • Version 2.3 avec révision du standard IEEE1666-2011 en 2011, avec notamment l'inclusion de TLM 2 au standard.

En une alliance entre Accellera et l'OSCI est annoncée[6],[7].

En , Accellera annonce que la bibliothèque est dorénavant distribuée sous les termes de la licence Apache 2.0[8]. À cette occasion la version 2.3.1 est distribuée.

  • Version 2.3.2 est la dernière version disponible. Elle apporte principalement la compatibilité avec les versions récentes de C++ et de certains compilateurs.

Depuis [9], Accellera propose un dépôt git officiel public (hébergé sur GitHub[10]) pour accéder au code source de la bibliothèque ainsi qu'aux versions en cours de développement.

Références

  1. a et b (en) « SystemC The language for System-level design, modeling and verification », sur SystemC.org
  2. a et b (en) « SystemC », sur Accellera
  3. « Cours en ligne : les HDL », sur telecom-paristech.fr (consulté le ).
  4. Joachim Gerlach et Wolfgang Rosenstiel, System Level Design Using the SystemC Modeling Platform, Université de Tübingen
  5. http://www-verimag.imag.fr/~maraninx/IMG/pdf/masterthesisfunchalgiovanni.pdf
  6. (en) Mike Demler, « EDA Standards Groups Accellera and Open SystemC Initiative will merge », sur EEDailyNews,
  7. (en) « Accellera – OSCI Union : New Synergy for EDA Standards? », sur cadence.com (consulté le ).
  8. (en) « Accellera Announces Relicensing of SystemC Reference Implementation under the Apache 2.0 License », sur Accellera.org
  9. (en) « Accellera Announces Public Source Code Repository », sur Accellera.org,
  10. (en) « Accellera-official/systemc », sur GitHub (consulté le ).

Bibliographie

  • (en) IEEE 1666-2011 - IEEE Standard for Standard SystemC Language Reference Manual, IEEE, (présentation en ligne)
  • « Cours en ligne SystemC », sur Telecom Paristech
  • (en) Kim Bjerge, Guide for getting started with SystemC development, Danish Technological Institute (da), (lire en ligne)

Liens externes

  • (en) Site officiel
  • (en) « SystemC », sur Accellera.org
v · m
Logiciel d'électronique
Logiciel libre
Conception
Simulation
Analyse
Logiciel propriétaire
Format de fichiers
Langage de description de matériel (HDL) et langage de vérification de matériel (HVL)
Langages
Simulateurs
Synthèse logique
  • GHDL
  • Nextpnr
  • OpenLane
  • OpenROAD
  • SymbiYosys
  • Workcraft
  • Yosys
programmation/flashage
  • OpenFPGAloader
  • icône décorative Portail de la programmation informatique
  • icône décorative Portail de l’électricité et de l’électronique