Está en la página 1de 53

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos . Implementacin de un Modulo.

Modelado y Simulacin de Circuitos Computacionales por medio de la biblioteca <systemc.h>

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

SystemC
SystemC es una poderosa herramienta de programacin que nos permite describir o modelar sistemas a nivel de comportamiento.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

SystemC
SystemC es una poderosa herramienta de programacin que nos permite describir o modelar sistemas a nivel de comportamiento.

NO es un nuevo lenguaje de programacin !! , es simplemente una biblioteca del lenguaje C++.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

SystemC
SystemC es una poderosa herramienta de programacin que nos permite describir o modelar sistemas a nivel de comportamiento.

NO es un nuevo lenguaje de programacin !! , es simplemente una biblioteca del lenguaje C++.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Ventajas de SystemC
Simplicidad de manejo.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Ventajas de SystemC
Simplicidad de manejo. Costo de Modelado.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Ventajas de SystemC
Simplicidad de manejo. Costo de Modelado. Tiempo de Simulacin.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Ventajas de SystemC
Simplicidad de manejo. Costo de Modelado. Tiempo de Simulacin.

Nocin de acontecimientos ordenados por tiempo.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Ventajas de SystemC
Simplicidad de manejo. Costo de Modelado. Tiempo de Simulacin.

Nocin de acontecimientos ordenados por tiempo.


Modelado de hardware y software simultneamente.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Ventajas de SystemC
Simplicidad de manejo. Costo de Modelado. Tiempo de Simulacin.

Nocin de acontecimientos ordenados por tiempo.


Modelado de hardware y software simultneamente. Altos niveles de abstraccin. Cesar Leonardo Vielma Pernia SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Modulos(Modules)
Los mdulos representan la unidad mas elemental del diseo con systemC, son en todo caso , contenedores de datos y procesos.

Para declararlos podemos usar algunas de estas formas


struct NombreDelModulo : public sc_module{};

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Modulos(Modules)
Los mdulos representan la unidad mas elemental del diseo con systemC, son en todo caso , contenedores de datos y procesos.

Para declararlos podemos usar algunas de estas formas


struct NombreDelModulo : public sc_module{}; class NombreDelModulo : public sc_module{};

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Modulos(Modules)
Los mdulos representan la unidad mas elemental del diseo con systemC, son en todo caso , contenedores de datos y procesos.

Para declararlos podemos usar algunas de estas formas


struct NombreDelModulo : public sc_module{}; class NombreDelModulo : public sc_module{}; SC_MODULE (NombreDelModulo); Cesar Leonardo Vielma Pernia SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Puertos (Ports)
Son la comunicacin entre los mdulos y su entorno.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Puertos (Ports)
Son la comunicacin entre los mdulos y su entorno. Transfieren la informacin necesarios para la ejecucin de procesos.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Puertos (Ports)
Son la comunicacin entre los mdulos y su entorno. Transfieren la informacin necesarios para la ejecucin de procesos. Cada puerto solo puede transportar un tipo de dato especifico y en una definida direccin (entrada , salida , entrada-salida).

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Puertos (Ports)
Son la comunicacin entre los mdulos y su entorno. Transfieren la informacin necesarios para la ejecucin de procesos. Cada puerto solo puede transportar un tipo de dato especifico y en una definida direccin (entrada , salida , entrada-salida). Es posible conectar puertos de mdulos padre a puertos de mdulos hijos(de mdulos a sub-mdulos) directamente.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Puertos (Ports)
Su declaracin se realiza de la siguiente manera:

sc_in

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Puertos (Ports)
Su declaracin se realiza de la siguiente manera:

sc_in<TipoDeDato>

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Puertos (Ports)
Su declaracin se realiza de la siguiente manera:

sc_in<TipoDeDato> NombreDelPuerto;

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Puertos (Ports)
Su declaracin se realiza de la siguiente manera:

sc_in<TipoDeDato> NombreDelPuerto;

Puerto de Entrada

sc_out<TipoDeDato> NombreDelPuerto;

Puerto de Salida

sc_inout<TipoDeDato> NombreDelPuerto;

Puerto de Entrada y Salida

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Seales (Signals)
Transfieren la data entre submdulo-submdulo o entre procesos de un mismo modulo.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Seales (Signals)
Transfieren la data entre submdulo-submdulo o entre procesos de un mismo modulo.

Cada seal solo puede transportar un tipo de dato especifico y su direccin doble.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Diferencia entre Puertos y Seales


Ejemplificando a grandes rasgos, digamos que los puertos son el tomacorriente de una habitacin, mientras que las seales son los cables que transportaran la corriente. Estos tomacorrientes tienen la habilidad de poder proporcionar corriente a algn aparato(sub- mdulos) dentro de la habitacin sin usar ningn cable.(Conexin directa padre-hijo) No obstante , si quisiramos conectar dos aparatos (sub- mdulos) obligatoriamente deberemos usar un cable (seal).

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Tipos de Datos
Qu tipos de datos podemos implementar?

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Tipos de Datos
Qu tipos de datos podemos implementar? Todos los tipos de datos que nos ofrece C++. int , float , double , bool

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Tipos de Datos
Qu tipos de datos podemos implementar? Todos los tipos de datos que nos ofrece C++. int , float , double , bool Ademas de los nuevos tipos de datos que nos ofrece la biblioteca systemc.h

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Tipos de Datos
Qu tipos de datos podemos implementar? Todos los tipos de datos que nos ofrece C++. int , float , double , bool Ademas de los nuevos tipos de datos que nos ofrece la biblioteca systemc.h

Algunos que usaremos mas frecuentemente: sc_int sc_uint sc_logic

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Procesos
Los procesos son el corazn de cada modulo en la programacion en systemC, ya que es en ellos donde los datos son procesados. Sus caractersticas bsicas son:

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Procesos
Los procesos son el corazn de cada modulo en la programacion en systemC, ya que es en ellos donde los datos son procesados. Sus caractersticas bsicas son:

Describen la funcionalidad del mdulo.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Procesos
Los procesos son el corazn de cada modulo en la programacion en systemC, ya que es en ellos donde los datos son procesados. Sus caractersticas bsicas son:

Describen la funcionalidad del mdulo.


No toman argumentos ni retornan nada.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Procesos
Los procesos son el corazn de cada modulo en la programacion en systemC, ya que es en ellos donde los datos son procesados. Sus caractersticas bsicas son:

Describen la funcionalidad del mdulo.


No toman argumentos ni retornan nada. Pueden hacerse sensibles a ciertos puertos o seales, de forma que cuando los valores de estos cambien, el proceso sea invocado.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Tipos de Procesos
SystemC soporta 3 distintos tipos de procesos:

SC_METHOD(nombreDelProceso);

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Tipos de Procesos
SC_METHOD: Son funciones de los mdulos que se ejecutan si algn elemento de su lista de sensibilidad cambia su valor y que luego de terminar sus operaciones , regresa a la parte del simulador donde se invoco.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Tipos de Procesos
SystemC soporta 3 distintos tipos de procesos:

SC_METHOD(nombreDelProceso);

SC_THREAD(nombreDelProceso);

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Tipos de Procesos
SC_THREAD: Son funciones de tipo hilo , es decir , tienen una secuencia de ejecucin. Su puesta en marcha la realiza el planificador de SysctemC pero al igual que los SC_METHOD se activan o re-activan si algn elemento de su lista de sensibilidad cambia su valor. Para detener un SC_THREAD momentneamente se usa la declaracin wait(), mientras que para finalizar este proceso se usa la declaracin sc_stop().

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Tipos de Procesos
SystemC soporta 3 distintos tipos de procesos:

SC_METHOD(nombreDelProceso);

SC_THREAD(nombreDelProceso);

SC_CTHREAD(nombreDelProceso,flancoDeReloj); Cesar Leonardo Vielma Pernia SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Tipos de Procesos
SC_CTHREAD: Tienen relativamente las mismas caractersticas que un SC_THREAD(), sin embargo , su puesta en marcha viene dada exclusivamente por los flancos(subida o bajada) del reloj.

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Complementos de los Procesos


Lista de sensibilidad: Es una lista que contiene los eventos , puertos o seales a los cual un SC_THREAD o un SC_METHOD esta sujeto. Su implementacin ira justo debajo de la declaracin del proceso. SC_THREAD(nombreDelProceso); sensitive<< event1,event2,,eventN;

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Complementos de los Procesos


Funcin dont_initialize(): La implementacin de esta funcin permite que en el constructor no sea invocado cada proceso perteneciente al modulo, mayormente usados en los SC_THREADS. Estar ubicado luego de la lista de sensibilidad. SC_THREAD(nombreDelProceso); sensitive<< event1,event2,,eventN; dont_initialize();

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Implementacin de un Modulo
Para la implementacin de un modulo usando el lenguaje C++ y la biblioteca systemc.h , seguiremos los siguientes 3 pasos:

Diseo y codificacin de el modulo

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Implementacin de un Modulo

moduloPrueba

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Implementacin de un Modulo
Entradas del Modulo

datoA

moduloPrueba

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Implementacin de un Modulo
Entradas del Modulo Salidas del Modulo

datoA

moduloPrueba

datoB

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Implementacin de un Modulo
moduloPrueba.h #ifndef MODULOPRUEBA_H #define MODULOPRUEBA_H #include <systemc.h> #include <CualquierOtraBibliotecaNecesaria> class moduloPrueba: public sc_module{ public: sc_in<tipoDeDato> datoA_in; sc_out<tipoDeDato> datoB_out; SC_CTOR(moduloPrueba){ SC_METHOD(prueba); sensitive<<datoA_in; } private: void prueba(); }; #endif

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Implementacin de un Modulo
moduloPrueba.cpp void moduloPrueba::prueba(){ // implementacin de la funcin }

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Implementacin de un Modulo
Para la implementacin de un modulo usando el lenguaje C++ y la biblioteca systemc.h , seguiremos los siguientes 3 pasos:

Diseo y codificacin de el modulo


Diseo y codificacin de el testBench

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Implementacin de un Modulo
clock_in datoA_in moduloPrueba datoB_out datoX_in testBench datoY_out

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Implementacin de un Modulo
testBench.h #ifndef TESTBENCH_H #define TESTBENCH_H #include <systemc.h> #include <CualquierOtraBibliotecaNecesaria> class testBench: public sc_module{ public: sc_in<bool> clock_in; sc_in<tipoDeDato> datoX_in; sc_out<tipoDeDato> datoY_out; SC_CTOR(moduloPrueba){ SC_THREAD(test); sensitive<<clock_in.pos(); } private: void test(); }; #endif

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Implementacin de un Modulo
testBench.cpp void testBench::test(){ // implementacin de la funcin }

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Implementacin de un Modulo
Para la implementacin de un modulo usando el lenguaje C++ y la biblioteca systemc.h , seguiremos los siguientes 3 pasos:

Diseo y codificacin de el modulo


Diseo y codificacin de el testBench

Unificacin del modulo y el testBench en un sc_main

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Implementacin de un Modulo
Main clock datoBtoX_sg datoB_out moduloPrueba datoX_in testBench datoY_out clock_in

datoA_in

datoYtoA_sg

Cesar Leonardo Vielma Pernia

SystemC

Arquitectura de Computadores. Introduccin a SystemC.

SystemC. Ventajas de SystemC. Mdulos. Puertos y seales. Tipos de Datos. Procesos. Implementacin de un Modulo.

Bibliografa
http://www.systemc.org http://www.wikipedia.com/systemc
http://www.doulos.com/knowhow/systemc/

Cesar Leonardo Vielma Pernia

SystemC