Introduccion a SystemC
-
Upload
anthony-davila -
Category
Documents
-
view
38 -
download
0
Transcript of Introduccion a SystemC
Arquitectura de Computadores.
Introducción a SystemC.
•SystemC.•Ventajas de SystemC.•Módulos.•Puertos y señales.•Tipos de Datos.•Procesos .•Implementación de un Modulo.
Modelado y Simulación de Circuitos Computacionales por medio de la biblioteca
<systemc.h>
Cesar Leonardo Vielma Pernia SystemC
Arquitectura de Computadores.
Introducción a SystemC.
SystemC
Cesar Leonardo Vielma Pernia SystemC
SystemC es una poderosa herramienta de programación que nos permite describir o modelar sistemas a nivel de comportamiento.
•SystemC.•Ventajas de SystemC.•Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
SystemC
Cesar Leonardo Vielma Pernia SystemC
SystemC es una poderosa herramienta de programación que nos permite describir o modelar sistemas a nivel de comportamiento.
NO es un nuevo lenguaje de programación !! , es simplemente una biblioteca del lenguaje C++.
•SystemC.•Ventajas de SystemC.•Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
SystemC
Cesar Leonardo Vielma Pernia SystemC
SystemC es una poderosa herramienta de programación que nos permite describir o modelar sistemas a nivel de comportamiento.
NO es un nuevo lenguaje de programación !! , es simplemente una biblioteca del lenguaje C++.
•SystemC.•Ventajas de SystemC.•Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Ventajas de SystemC
Cesar Leonardo Vielma Pernia SystemC
Simplicidad de manejo.
SystemC.•Ventajas de SystemC.•Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Ventajas de SystemC
Cesar Leonardo Vielma Pernia SystemC
Simplicidad de manejo.
Costo de Modelado.
SystemC.•Ventajas de SystemC.•Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Ventajas de SystemC
Cesar Leonardo Vielma Pernia SystemC
Simplicidad de manejo.
Costo de Modelado.
Tiempo de Simulación.
SystemC.•Ventajas de SystemC.•Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Ventajas de SystemC
Cesar Leonardo Vielma Pernia SystemC
Simplicidad de manejo.
Costo de Modelado.
Tiempo de Simulación.
Noción de acontecimientos ordenados por tiempo.
SystemC.•Ventajas de SystemC.•Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Ventajas de SystemC
Cesar Leonardo Vielma Pernia SystemC
Simplicidad de manejo.
Costo de Modelado.
Tiempo de Simulación.
Noción de acontecimientos ordenados por tiempo.
Modelado de hardware y software simultáneamente.
SystemC.•Ventajas de SystemC.•Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Ventajas de SystemC
Cesar Leonardo Vielma Pernia SystemC
Simplicidad de manejo.
Costo de Modelado.
Tiempo de Simulación.
Noción de acontecimientos ordenados por tiempo.
Modelado de hardware y software simultáneamente.
Altos niveles de abstracción.
SystemC.•Ventajas de SystemC.•Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Modulos(Modules)
Cesar Leonardo Vielma Pernia SystemC
Los módulos representan la unidad mas elemental del diseño con systemC, son en todo caso , contenedores de datos y procesos.
Para declararlos podemos usar algunas de estas formas
SystemC.Ventajas de SystemC.•Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
struct NombreDelModulo : public sc_module{};
Arquitectura de Computadores.
Introducción a SystemC.
Modulos(Modules)
Cesar Leonardo Vielma Pernia SystemC
Los módulos representan la unidad mas elemental del diseño con systemC, son en todo caso , contenedores de datos y procesos.
Para declararlos podemos usar algunas de estas formas
SystemC.Ventajas de SystemC.•Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
class NombreDelModulo : public sc_module{};
struct NombreDelModulo : public sc_module{};
Arquitectura de Computadores.
Introducción a SystemC.
Modulos(Modules)
Cesar Leonardo Vielma Pernia SystemC
Los módulos representan la unidad mas elemental del diseño con systemC, son en todo caso , contenedores de datos y procesos.
Para declararlos podemos usar algunas de estas formas
SystemC.Ventajas de SystemC.•Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
SC_MODULE (NombreDelModulo);
class NombreDelModulo : public sc_module{};
struct NombreDelModulo : public sc_module{};
Arquitectura de Computadores.
Introducción a SystemC.
Puertos (Ports)
Cesar Leonardo Vielma Pernia SystemC
•Son la comunicación entre los módulos y su entorno.
SystemC.Ventajas de SystemC.Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Puertos (Ports)
Cesar Leonardo Vielma Pernia SystemC
•Son la comunicación entre los módulos y su entorno.
•Transfieren la información necesarios para la ejecución de procesos.
SystemC.Ventajas de SystemC.Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Puertos (Ports)
Cesar Leonardo Vielma Pernia SystemC
•Son la comunicación entre los módulos y su entorno.
•Transfieren la información necesarios para la ejecución de procesos.
•Cada puerto solo puede transportar un tipo de dato especifico y en una definida dirección (entrada , salida , entrada-salida).
SystemC.Ventajas de SystemC.Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Puertos (Ports)
Cesar Leonardo Vielma Pernia SystemC
•Son la comunicación entre los módulos y su entorno.
•Transfieren la información necesarios para la ejecución de procesos.
•Cada puerto solo puede transportar un tipo de dato especifico y en una definida dirección (entrada , salida , entrada-salida).
•Es posible conectar puertos de módulos “padre” a puertos de módulos “hijos”(de módulos a sub-módulos) directamente.
SystemC.Ventajas de SystemC.Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Puertos (Ports)
Cesar Leonardo Vielma Pernia SystemC
Su declaración se realiza de la siguiente manera:
sc_in
SystemC.Ventajas de SystemC.Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Puertos (Ports)
Cesar Leonardo Vielma Pernia SystemC
Su declaración se realiza de la siguiente manera:
sc_in<TipoDeDato>
SystemC.Ventajas de SystemC.Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Puertos (Ports)
Cesar Leonardo Vielma Pernia SystemC
Su declaración se realiza de la siguiente manera:
sc_in<TipoDeDato> NombreDelPuerto;
SystemC.Ventajas de SystemC.Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Puertos (Ports)
Cesar Leonardo Vielma Pernia SystemC
Su declaración se realiza de la siguiente manera:
sc_in<TipoDeDato> NombreDelPuerto;
sc_out<TipoDeDato> NombreDelPuerto;
sc_inout<TipoDeDato> NombreDelPuerto;
Puerto de Entrada
Puerto de Salida
Puerto de Entrada y Salida
SystemC.Ventajas de SystemC.Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Señales (Signals)
Cesar Leonardo Vielma Pernia SystemC
•Transfieren la data entre submódulo-submódulo o entre procesos de un mismo modulo.
SystemC.Ventajas de SystemC.Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Señales (Signals)
Cesar Leonardo Vielma Pernia SystemC
•Transfieren la data entre submódulo-submódulo o entre procesos de un mismo modulo.
•Cada señal solo puede transportar un tipo de dato especifico y su dirección doble.
SystemC.Ventajas de SystemC.Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Diferencia entre Puertos y Señales
Cesar Leonardo Vielma Pernia SystemC
Ejemplificando a grandes rasgos, digamos que los puertos son el tomacorriente de una habitación, mientras que las señales son los cables que transportaran la corriente.
Estos tomacorrientes tienen la habilidad de poder proporcionar corriente a algún aparato(sub- módulos) dentro de la habitación sin usar ningún cable.(Conexión directa padre-hijo)
No obstante , si quisiéramos conectar dos aparatos (sub- módulos) obligatoriamente deberemos usar un cable (señal).
SystemC.Ventajas de SystemC.Módulos.•Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Tipos de Datos
Cesar Leonardo Vielma Pernia SystemC
¿Qué tipos de datos podemos implementar?
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Tipos de Datos
Cesar Leonardo Vielma Pernia SystemC
¿Qué tipos de datos podemos implementar?
• Todos los tipos de datos que nos ofrece C++.int , float , double , bool…
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Tipos de Datos
Cesar Leonardo Vielma Pernia SystemC
¿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
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Tipos de Datos
Cesar Leonardo Vielma Pernia SystemC
¿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_intsc_uintsc_logic
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.•Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Procesos
Cesar Leonardo Vielma Pernia SystemC
Los procesos son el corazón de cada modulo en la programacion en systemC, ya que es en ellos donde los datos son procesados. Sus características básicas son:
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Procesos
Cesar Leonardo Vielma Pernia SystemC
Los procesos son el corazón de cada modulo en la programacion en systemC, ya que es en ellos donde los datos son procesados. Sus características básicas son:
Describen la funcionalidad del módulo.
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Procesos
Cesar Leonardo Vielma Pernia SystemC
Los procesos son el corazón de cada modulo en la programacion en systemC, ya que es en ellos donde los datos son procesados. Sus características básicas son:
Describen la funcionalidad del módulo.
No toman argumentos ni retornan nada.
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Procesos
Cesar Leonardo Vielma Pernia SystemC
Los procesos son el corazón de cada modulo en la programacion en systemC, ya que es en ellos donde los datos son procesados. Sus características básicas son:
Describen la funcionalidad del módulo.
No toman argumentos ni retornan nada.
Pueden hacerse sensibles a ciertos puertos o señales, de forma que cuando los valores de estos cambien, el proceso sea invocado.
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.•Procesos.•Implementación de un Modulo.
Arquitectura de Computadores.
Introducción a SystemC.
Tipos de Procesos
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.•Procesos.•Implementación de un Modulo.
SystemC soporta 3 distintos tipos de procesos:
SC_METHOD(nombreDelProceso);
Arquitectura de Computadores.
Introducción a SystemC.
Tipos de Procesos
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.•Procesos.•Implementación de un Modulo.
SC_METHOD:
Son funciones de los módulos que se ejecutan si algún 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.
Arquitectura de Computadores.
Introducción a SystemC.
Tipos de Procesos
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.•Procesos.•Implementación de un Modulo.
SystemC soporta 3 distintos tipos de procesos:
SC_METHOD(nombreDelProceso);
SC_THREAD(nombreDelProceso);
Arquitectura de Computadores.
Introducción a SystemC.
Tipos de Procesos
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.•Procesos.•Implementación de un Modulo.
SC_THREAD:
Son funciones de tipo hilo , es decir , tienen una secuencia de ejecución. Su puesta en marcha la realiza el planificador de SysctemC pero al igual que los SC_METHOD se activan o re-activan si algún elemento de su lista de sensibilidad cambia su valor.
Para detener un SC_THREAD momentáneamente se usa la declaración wait(),mientras que para finalizar este proceso se usa la declaración sc_stop().
Arquitectura de Computadores.
Introducción a SystemC.
Tipos de Procesos
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.•Procesos.•Implementación de un Modulo.
SystemC soporta 3 distintos tipos de procesos:
SC_METHOD(nombreDelProceso);
SC_THREAD(nombreDelProceso);
SC_CTHREAD(nombreDelProceso,flancoDeReloj);
Arquitectura de Computadores.
Introducción a SystemC.
Tipos de Procesos
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.•Procesos.•Implementación de un Modulo.
SC_CTHREAD:
Tienen relativamente las mismas características que un SC_THREAD(), sin embargo , su puesta en marcha viene dada exclusivamente por los flancos(subida o bajada) del reloj.
Arquitectura de Computadores.
Introducción a SystemC.
Complementos de los Procesos
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.•Procesos.•Implementación de un Modulo.
Lista de sensibilidad:
Es una lista que contiene los eventos , puertos o señales a los cual un SC_THREAD o un SC_METHOD esta sujeto. Su implementación ira justo debajo de la declaración del proceso.
SC_THREAD(nombreDelProceso);sensitive<< event1,event2,…,eventN;
Arquitectura de Computadores.
Introducción a SystemC.
Complementos de los Procesos
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.•Procesos.•Implementación de un Modulo.
Función dont_initialize():
La implementación de esta función 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();
Arquitectura de Computadores.
Introducción a SystemC.
Implementación de un Modulo
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.Procesos.•Implementación de un Modulo.
Para la implementación de un modulo usando el lenguaje C++ y la biblioteca systemc.h , seguiremos los siguientes 3 pasos:
Diseño y codificación de el modulo
Arquitectura de Computadores.
Introducción a SystemC.
Implementación de un Modulo
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.Procesos.•Implementación de un Modulo.
moduloPrueba
Arquitectura de Computadores.
Introducción a SystemC.
Implementación de un Modulo
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.Procesos.•Implementación de un Modulo.
moduloPrueba
Entradas del Modulo
datoA
Arquitectura de Computadores.
Introducción a SystemC.
Implementación de un Modulo
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.Procesos.•Implementación de un Modulo.
moduloPrueba
Salidas del ModuloEntradas del Modulo
datoA datoB
Arquitectura de Computadores.
Introducción a SystemC.
Implementación de un Modulo
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.Procesos.•Implementación 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
Arquitectura de Computadores.
Introducción a SystemC.
Implementación de un Modulo
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.Procesos.•Implementación de un Modulo.
moduloPrueba.cpp
void moduloPrueba::prueba(){
// implementación de la función }
Arquitectura de Computadores.
Introducción a SystemC.
Implementación de un Modulo
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.Procesos.•Implementación de un Modulo.
Para la implementación de un modulo usando el lenguaje C++ y la biblioteca systemc.h , seguiremos los siguientes 3 pasos:
Diseño y codificación de el modulo
Diseño y codificación de el testBench
Arquitectura de Computadores.
Introducción a SystemC.
Implementación de un Modulo
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.Procesos.•Implementación de un Modulo.
moduloPrueba testBench
datoA_in datoB_out
datoX_in datoY_out
clock_in
Arquitectura de Computadores.
Introducción a SystemC.
Implementación de un Modulo
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.Procesos.•Implementación 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
Arquitectura de Computadores.
Introducción a SystemC.
Implementación de un Modulo
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.Procesos.•Implementación de un Modulo.
testBench.cpp
void testBench::test(){
// implementación de la función }
Arquitectura de Computadores.
Introducción a SystemC.
Implementación de un Modulo
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.Procesos.•Implementación de un Modulo.
Para la implementación de un modulo usando el lenguaje C++ y la biblioteca systemc.h , seguiremos los siguientes 3 pasos:
Unificación del modulo y el testBench en un sc_main
Diseño y codificación de el modulo
Diseño y codificación de el testBench
Arquitectura de Computadores.
Introducción a SystemC.
Implementación de un Modulo
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.Procesos.•Implementación de un Modulo.
moduloPrueba testBench
datoA_in datoB_out
datoX_in datoY_out
clock_in
Main
datoBtoX_sg
datoYtoA_sg
clock
Arquitectura de Computadores.
Introducción a SystemC.
Bibliografía
Cesar Leonardo Vielma Pernia SystemC
SystemC.Ventajas de SystemC.Módulos.Puertos y señales.Tipos de Datos.Procesos.Implementación de un Modulo.
http://www.systemc.org
http://www.wikipedia.com/systemc
http://www.doulos.com/knowhow/systemc/