Está en la página 1de 22

Introduccin a SystemC

Ronald Antonio Sulbarn Universidad de los Andes

Systemc
SystemC est pensado para hacer frente a hardware y software, y permitir modelar y/o simular grandes sistemas. SystemC unifica la descripci n hardware y software de un sistema embebido tomando como base el lengua!e de programaci n C"" con su paradigma de programaci n orientada a ob!etos. Sobre esta base se construye una librer#a estndar y un entorno de simulaci n orientado a eventos por parte de la organi$aci n OSCI. %s importante destacar &ue systemc no es un lenguaje de programacin, sino una biblioteca de C"". 'os m dulos(las clases) son los blo&ues bsicos usados en systemc en el dise*o de una !erar&u#a. 'os m dulos para comunicarse(normalmente con otros m dulos) con el e+terior, hacen uso de puertos(sc,in,sc,out,...) y canales(en nuestro caso usaremos solo los sc,signal)

Por qu SystemC?
C"" aun cuando cumple un desempe*o bastante satisfactorio en el modelado de software, resulta ser inadecuado para el modelado de -.. /or tal ra$ n ha surgido la idea de reali$ar una librer#a &ue permita el me!or modelado de -.. A continuaci n se detallaran algunas situaciones en las cuales C"" no cumple satisfactoriamente0 Nocin de Tiempo: C"" no apoya la noci n de acontecimientos ordenados. 1o hay noci n del tiempo. Concurrencia0 C"" no apoya la idea de la concurrencia. 'os sistemas del hardware son intr#nsecamente concurrentes. 2uncionan en paralelo. Tipos de datos de ard!are: 'os tipos de datos nativos de C"" son inadecuados para modelar el hardware. /or e!emplo no hay tipo de datos &ue podr#a ser usados para describir un valor de triple estado de la l gica ($) (tri 3state logic value) 4odos estos inconvenientes son suplidos gracias a la aparici n de SystemC, el cual es concebido para la soluci n de estos problemas espec#ficos y muchos ms.

Sistema de SystemC

Un sistema de SystemC consiste en un con!unto de m dulos. 'os m dulos contienen procesos concurrentes. 'os procesos describen funcionalidad y se comunican con otros procesos a trav5s de canales o eventos. 'a comunicaci n entre m dulos es a trav5s de canales. 'os m dulos se utili$an para crear !erar&u#a.

"structura #$sica de modelado

Un m dulo puede representar un sistema, un blo&ue, un tablero, un chip y as# sucesivamente. 'os puertos representan una interfa$, pins, etc., dependiendo de lo &ue representa el m dulo. Cone+iones 6padre hi!o6 de m dulos son reali$ados puerto a puerto. 'os procesos se comunican a trav5s de los canales o eventos. 'a estructura bsica de la comunicaci n incluye interfaces, los canales y los puertos.

%odelo del tiempo

%l tipo de datos utili$ado para tiempo es un n7mero entero 89:bit sin signo. 'a unidades de tiempo se designan de la siguiente manera0 SC,2S, SC,/S, SC,1S,SC,US, SC,;S, SC,S%C. %l tipo sc,time se proporciona para especificar valores del tiempo. Sinta&is0 sc,time nombre(valor,del,tiempo, unidad,de,tiempo)< =arias funciones se proporcionan para las simulaciones &ue controlan y reportan la a informaci n del tiempo. %ntre ellas se encuentran 0 sc,stop< sc,time,stamp< sc,simulation,time().

Plani'icador de SystemC

'a simulaci n es basada en eventos. Se e!ecutan los procesos y sus salidas son actuali$adas (updated) basados en la ocurrencia de dichos eventos. 'a biblioteca de SystemC incluye un planificador (Scheduler) &ue mane!a todos los eventos y actuali$aciones del canal. Se planifica la e!ecuci n de los procesos basados en su lista de sensibilidad.

Tipos de datos en SystemC(


%n SystemC e+isten distintos tipos de datos los cuales son mas adecuados para el modelamiento de hardware, por e!emplo es necesario &ue e+istan tipos &ue cumplen con 2i+ed precision integres, Arbitrary precision integres, 9:valued logic type, entre otros. A continuaci n se e+plicarn brevemente algunos de los distintos tipos e+istentes0 sc,uint>?, sc,int>? 0 se utili$an para definir enteros de precisi n fi!a con y sin signo. Son representados como un arreglo de bits. Sinta&is0 sc,int>length? variable@ variableA, ...< sc,uint>length? variable,name, variable,name, ...< en donde lenght depende del tama*o del arreglo. sc,logic 0 representa la l gica de 9 valores. %l valor se interpreta como variable de un solo bit, no como n7mero. %s 7til para modelar l gica de triple estado. Sinta&is0 sc,logic variable,name, variable,name, . . . < sc,fi+ed>?, sc,ufi+ed>?0 'os modelos de un nivel ms elevado pueden utili$ar n7meros de punto flotante para modelar operaciones aritm5ticas. %stos n7meros se convierten a menudo a los tipos de datos de punto fi!o para la puesta en prctica de hardware. %stos tipos son precisi n arbitraria y tienen argumentos estticos. Sinta+is0 sc,fi+ed>wl, iwl, &,mode, o,mode, n,bits? ob!ect,name, ob!ect,name, ... < sc,ufi+ed>wl, iwl, &,mode, o,mode, n,bits? ob!ect,name, ob!ect,name, ... <

Canales
'os canales se utili$an para la comunicaci n entre los procesos dentro de los m dulos y entre los m dulos. Bentro de un m dulo un proceso puede tener acceso directamente a un canal si este esta conectado con un puerto de un modulo. -ay dos clasificaciones de canales, primitivo y !err&uico. 'os canales primitivos no tienen ninguna estructura visible y no pueden tener acceso directamente a otros canales primitivos. -ay varios tipos de canal primitivos proporcionados en SystemC0 sc,signal, sc,signal,rv , sc,fifo , sc,mute+, sc,semaphore, sc,buffer. 'os canales !err&uicos son m dulos, este tipo de canales pueden contener los procesos, otros m dulos etc. Ademas una caracter#stica importante de este tipo de canales es &ue pueden tener acceso directamente a otros canales !err&uicos. A continuaci n, por la e+tensi n del tema, se detallaran brevemente solo alguno de estos 0 sc,signal 0implementa la interfa$ sc,signal,inout,if. Se utili$a tanto para comunicaciones punto a punto o multipunto Sinta+is0 sc,signal>4? signal,name, signal,name, ... < Bonde 4 representa el tipo de dato, por e!emplo int, char, sc,int>@C?

Canales

sc,fifo0 implementa las interfaces sc,fifo,in,if y sc,fifo,out,if. Un canal sc,fifo implementa una 2D2E. %s una cone+i n punto a punto y puede ser conectado solamente con un entrada y un puerto de salida al conectar entre los m dulos. Sinta&is0 sc,fifo>4? channel,name, channel,name, ... < sc,mute+0 implementa la interfa$ sc,mute+,if . Se utili$a para el acceso seguro a un recurso compartido Sinta&is0 sc,mute+ mute+,name, mute+,name, . . . <

%dulos

Un m dulo es un container. Cada modulo se describe usando un header file (nombre,modulo.h) y un archivo de implementaci n (nombre,modulo.cpp). Un m dulo puede contener procesos e instancias de otros m dulos Sinta+is0 class 1ombre,del,modulo0public sc,module () F // body of module G<

Constructor

Ha &ue un m dulo es una clase de C"" tiene un constructor. %l constructor es una funci n del mismo nombre &ue la clase, sin el tipo de retorno. Se utili$a para crear y para iniciali$ar un caso de un m dulo y para crear las estructuras de datos internas &ue se utili$an en el m dulo y para iniciali$ar estas estructuras de datos a los valores conocidos. Se registran los procesos y los m dulos instanciados dentro del constructor. SystemC proporciona una macro especial (SC,C4ER) para el constructor. Sinta&is0 SC,C4ER(1E;IR%,;EBU'E)F //cone+iones entre puertos hi!os o puertos padres //iniciali$aci n de las variables a valores conocidos o necesarios //declaracion de los procesos G

Procesos
. %n los procesos se describe la funcionalidad. 1o es posible llamar a procesos directamente en un c digo, de hecho un proceso es invocado por el Jernel basado en la lista de sensibilidad (estticas o dinmicas). 'os procesos son muy similar a los m5todos de C"" y las funciones, salvo algunas e+cepciones. Algunos procesos se e!ecutan cuando son llamados y retornan al mecanismo &ue los llamo (se comportan como una funci n), en cambios otros procesos son llamados una ve$ y luego se pueden suspender ellos mismo y reanudar su e!ecuci n luego (como los hilos). 'os procesos no son !err&uicos, es decir, no es posible tener procesos dentro de otros procesos. /ara comunicarse con otros procesos se utili$an, como ya se mencion los canales y/o eventos. SystemC soporta K distintos tipos de procesos0 L /rocesos -ilos (SC,4-R%AB) L;etodos (SC,;%4-EB) LClocJed 4hreads (SC,C4-R%ABS) (no muy usado, por tal motivo no se detallar).

Procesos )ilos
Un proceso hilo puede ser activado o reactivado a trav5s de una lista de sensibilidad esttica o dinmica y deben ser iniciali$ado durante el comien$o de la simulaci n. Una ve$ &ue un proceso hilo es (re)activado, las declaraciones se e!ecutan hasta &ue se encuentra una declaraci n del wait(). %n la declaraci n del wait(), se suspende la e!ecuci n de proceso. %n la reactivaci n siguiente, la e!ecuci n de proceso empie$a con la declaraci n &ue sigue el wait(). 'os procesos hilos se caracteri$an, como su nombre lo indica, en &ue poseen su propio hilo de e!ecuci n, corren solamente cuando son empe$ado por el planificador de SystemC, son implementados con loop infinito (con el fin de asegurar &ue los procesos puedan ser repetidamente reactivados y permitir su suspensi n y reactivaci n en cual&uier parte del c digo) y poseen su propio stacJ de e!ecuci n en donde las variables locales son guardadas. /ara la creaci n de un proceso se deben seguir los siguientes pasos0 @.: Beclaraci n0 Se declaran dentro de un modulo como una funci n &ue no tomo ning7n argumento y retorna vac#o. A.: Befinici n0 %s recomendable colocar la definici n en un archivo de implementaci n separado llamado nombre,modulo.cpp K.: Registro0 'a funci n se registra dentro del constructor usando la macro SC,4-R%AB( ). %sta macro toma un argumento el cual es el nombre de la funci n a ser registrada en el Mernel 9.: Beclaraci n de la Sensibilidad %sttica (opcional)0 'a lista de sensibilidad no cambia durante la e!ecuci n. SystemC provee la funci n sensitive( ) para agregar eventos a la lista de sensibilidad esttica de un proceso hilo.

%etodos * %et)od Processes+

Son similares a un proceso hilo e+cepto &ue los m5todos no pueden ser suspendido, es decir, se invocan cuando su lista de sensibilidad cambia, pero todo el cuerpo debe ser e!ecutado y adems, a diferencia de los hilos, una ve$ ya e!ecutados retorna al simulador. Al igual &ue los hilos para crear un m5todo es necesario reali$ar los siguientes 9 pasos0 @.: Beclaraci n0 Se declaran como una funci n dentro de un m dulo como una funci n &ue no tomo ning7n argumento y retorna vac#o. A.: Befinici n0 Al igual &ue los hilos es recomendable colocar la definici n en un archivo de implementaci n separado llamado nombre,modulo.cpp. K.: Registro0 'a funci n se registra dentro del constructor usando la macro SC,;%4-EB( ). %sta macro toma un argumento el cual es el nombre de la funci n a ser registrada en el Mernel. 9.: Beclaraci n de la Sensibilidad %sttica (opcional)0 'a declaraci n se reali$a e+actamente igual a los hilos.

,a 'uncin sc-main*+

SystemC no re&uiere un m dulo de nivel superior. %n cambio utili$a la funci n especial sc,main. %sta funci n se encuentra en un archivo nombrado main.cpp o main.cc, la funci n es llamada por SystemC y es por a&u# por donde entra el c digo Sinta+is0 int sc,main (int argc, char Nargv O P ) F // body of function return C < G %sta funci n retorna un valor entero, C en el caso &ue no hubo error. 'os argumentos se envian al igual &ue en C""

Canales en el sc-main

'o primero dentro del sc,main( ) es t#picamente la creaci n de los canales para conectar los m dulos iniciados dentro de sc,main(). %sto es solamente necesario si hay ms de un m dulo iniciado

.elojes

Un evento en SystemC, &ue significa &ue la e!ecuci n de declaraci nes puede ocurrir en cual&uier tiempo de la simulaci n. %l tipo sc,clocJ se puede utili$ar para generar un relo!. -ay tambi5n otras maneras de generar una se*al relo!, por e!emplo accionando la palanca de un sc,signal>bool ? o peri dicamente notificando un acontecimiento. Un relo! tiene0 per#odo, duraci n del ciclo< ciclo de traba!o, fracci n del periodo &ue la se*al es alta< canto de subida, cuando el valor del relo! pasa de C a @< canto de ba!ada, cuando el valor del relo! pasa de @ a C. Sinta+is0 sc,clocJ clocJ,name (6name6, period, duty,cycle, start,time, positive,first ) <

sc-start*+

Al final de la funci n sc,main( ) y antes de la declaraci n de vuelta, est la funci n del sc,start(). 'a e!ecuci n de esta declaraci n marca &ue la etapa de la elaboraci n termin y da comien$o a la simulaci n. %l sc,start(arg) tiene un argumento opcional, el argumento especifica el n7mero de las unidades del tiempo para simular. Si es el argumento nulo la simulaci n funcionar por siempre.

Puertos
Son los &ue permiten comunicaci n entre los m dulos y su entorno. 4ransfieren la informaci n necesarios para la e!ecuci n de procesos. Cada puerto solo puede transportar un tipo de dato especifico y en una definida direcci n (entrada , salida , entrada:salida). %s posible conectar puertos de m dulos QpadreR a puertos de m dulos Qhi!osR(de m dulos a sub:m dulos) directamente. Sinta+is0 sc,in>tipo,de,dato,&ue,mane!a? sc,out>tipo,de,dato,&ue,mane!a? sc,inout>tipo,de,dato,&ue,mane!a? salida nombre< //puertos de entrada nombre< //puertos de salida nombre< //puertos de entrada y

Contiene los eventos, puertos o se*ales a los cual un SC,4-R%AB o un SC,;%4-EB esta su!eto, es decir las entradas &ue afectan la e!ecuci n del proceso. Su implementaci n ira !usto deba!o de la declaraci n del proceso. SC,4-R%AB(nombreBel/roceso)< sensitive>> event@,eventA,S,event1<

dont-initiali/e*+:

/ermite &ue en el constructor no sea invocado cada proceso perteneciente al modulo, mayormente usados en los SC,4-R%ABS. %star ubicado luego de la lista de sensibilidad. SC,4-R%AB(nombreBel/roceso)< sensitive>> event@,eventA,S,event1< dont,initiali$e()<

También podría gustarte