SystemC

SystemC es frecuentemente descrito como un lenguaje de descripción de hardware como son VHDL y Verilog, pero es más adecuado describirlo como un lenguaje de descripción de sistemas, puesto que es realmente útil cuando se usa para modelar sistemas a nivel de comportamiento.

Descripción

SystemC es un conjunto de bibliotecas y macros implementadas en C++ que hacen posible una simulación de procesos concurrentes con la sintaxis del lenguaje C++ ordinario. Así los objetos descritos pueden comunicarse durante una simulación de tiempo real usando señales de cualquier tipo ofrecido por C++, además algunas otras ofrecidas por las librerías de SystemC y también otras definidas por el usuario.

La metodología de diseño es comenzar con un modelo de alto nivel escrito en C++ y aplicar un proceso iterativo consistente en transformar el código para usar sólo los elementos que tengan su equivalente en un lenguaje de descripción de hardware.

Lenguaje

Módulos

Los módulos (module) son los bloques básicos en el diseño de una jerarquía en SystemC. Un modelo SystemC consta habitualmente de varios módulos que se comunican a través de los puertos.

Puertos

Los puertos (port) permiten la comunicación de un módulo con el exterior, normalmente con otros módulos.

Procesos

Los procesos (processes) son los principales elementos de computación. Son concurrentes.

Canales

Los canales son elementos de comunicación de SystemC. Pueden ser simples cables o complejos mecanismos como sistemas FIFO o buses. Los canales básicos son:

Interfaces

Los puertos usan las interfaces para comunicarse con los canales.

Eventos

Los eventos (events) permiten la sincronización entre procesos.

Tipos de datos

SystemC introduce varios tipos de datos para dar soporte al modelado de hardware.

Tipos extendidos

Tipos lógicos

Tipos de punto fijo

Ejemplo de código

El siguiente ejemplo es un sumador:

#include "systemc.h"

SC_MODULE(adder)         // módulo, declaración de la clase
{
 sc_in<int> a, b;        // puertos
 sc_out<int> sum;

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

 SC_CTOR(adder)          // constructor
 {
   SC_METHOD(do_add);    // registro do_add al kernel
   sensitive << a << b;  // lista de sensibilidad de do_add
 }
};

Alternativas

SystemC usa el código escrito en C como entrada a sus programas de síntesis. Otra opción es transformar una descripción hecha en un lenguaje de programación a un lenguaje de descripción de hardware como VHDL o Verilog, algunas herramientas para ello son:

Véase también

Enlaces externos

This article is issued from Wikipedia - version of the Saturday, November 14, 2015. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.