SystemC

SystemC a menudo se confunde con un lenguaje de descripción de hardware, como VHDL o Verilog . De hecho, SystemC es un lenguaje de descripción de nivel superior, ya que permite modelar sistemas a nivel conductual. SystemC no es un lenguaje completo, sino un conjunto de clases de C ++ que introducen los conceptos necesarios para el modelado de hardware (por ejemplo, la noción de procesos concurrentes). Conservando las funcionalidades de C ++ , todavía es posible describir funciones puramente de software. Por lo tanto, SystemC hace posible modelar hardware, software, sistemas mixtos o incluso no particionados. Por tanto, es especialmente adecuado para el diseño de sistemas de tipo SoC .

SystemC también integra la posibilidad de simular el modelo diseñado, luego, mediante sucesivos refinamientos, para llegar a una representación implementable.

SystemC fue desarrollado conjuntamente por varias empresas. Para ello, se creó la OSCI (Open SystemC Initiative), encargada de difundir, promover y redactar las especificaciones de SystemC. Endiciembre de 2005, SystemC está estandarizado con IEEE como IEEE 1666-2005.

En 2011 se publicó una importante evolución de SystemC con la versión 2.3 de la librería correspondiente al estándar IEEE 1666-2011. Desde entonces, Accellera controla el desarrollo y la distribución del estándar .

Ejemplos de

#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; } }
  • Ejemplo de lógica secuencial:
#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(); } }

Histórico

A continuación, las diferentes versiones de SystemC:

  • Versión 0.9 de Synopsys en 1999
  • Versión 1.0 de Frontier Design
  • Versión 1.1 de CoWare en 2001
  • Creación de OSCI (Open SystemC Initiative) en 2001
  • Versión 2.0 de OSCI
  • Estandarización por IEEE IEEE1666-2005 en 2005.
  • La versión 2.2 cumple con el estándar IEEE en 2007
  • Versión 2.3 con revisión del estándar IEEE1666-2011 en 2011, incluida la inclusión de TLM 2 en el estándar.

En junio 2011Se anuncia una alianza entre Accellera y la OSCI.

En noviembre de 2016, Accellera anuncia que la biblioteca ahora se distribuye bajo los términos de la licencia Apache 2.0. En esta ocasión se distribuye la versión 2.3.1.

  • La versión 2.3.2 es la última versión disponible. Principalmente trae compatibilidad con versiones recientes de C ++ y algunos compiladores.

Desde julio 2019, Accellera ofrece un repositorio público oficial de git (alojado en GitHub) para acceder al código fuente de la biblioteca, así como a las versiones en desarrollo.

Referencias

  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?  » , En cadence.com (consultado el 8 de octubre de 2020 ) .
  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. (en) "  Accellera-official / SystemC  " en GitHub (consultado el 8 de octubre de 2020 ) .

enlaces externos