<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>0120-6230</journal-id>
<journal-title><![CDATA[Revista Facultad de Ingeniería Universidad de Antioquia]]></journal-title>
<abbrev-journal-title><![CDATA[Rev.fac.ing.univ. Antioquia]]></abbrev-journal-title>
<issn>0120-6230</issn>
<publisher>
<publisher-name><![CDATA[Facultad de Ingeniería, Universidad de Antioquia]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S0120-62302009000200016</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[UML2SC: Herramienta para el diseño de sistemas electrónicos complejos utilizando los lenguajes UML y SystemC]]></article-title>
<article-title xml:lang="en"><![CDATA[UML2SC: A tool for developing complex electronic systems using UML and SystemC]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Correa]]></surname>
<given-names><![CDATA[Blanca Alicia]]></given-names>
</name>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Eusse]]></surname>
<given-names><![CDATA[Juan Fernando]]></given-names>
</name>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Múnera]]></surname>
<given-names><![CDATA[Danny]]></given-names>
</name>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Sepúlveda]]></surname>
<given-names><![CDATA[Silvio]]></given-names>
</name>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Vélez]]></surname>
<given-names><![CDATA[Juan Fernando]]></given-names>
</name>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Aedo]]></surname>
<given-names><![CDATA[José Edinson]]></given-names>
</name>
</contrib>
</contrib-group>
<aff id="A">
<institution><![CDATA[,  ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>06</month>
<year>2009</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>06</month>
<year>2009</year>
</pub-date>
<numero>48</numero>
<fpage>165</fpage>
<lpage>173</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_arttext&amp;pid=S0120-62302009000200016&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_abstract&amp;pid=S0120-62302009000200016&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_pdf&amp;pid=S0120-62302009000200016&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[En este artículo se presenta un proceso para la transformación de sistemas basados en hardware/software descritos mediante UML a código esqueleto SystemC. Se introduce la herramienta UML2SC, basada en librerías de Java, mediante la cual se puede realizar este proceso de transformación. La herramienta UML2SC, permite obtener código esqueleto SystemC a partir de modelos descritos en UML mediante los diagramas de clases y estructura compuesta. Los resultados de la utilización de esta herramienta se presentan mediante un ejemplo, el cual describe el modelo funcional de una CPU RISC de 16 bits.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[In this paper, we propose a transformation process in which SystemC skeleton code is extracted from UML models that describe hardware/software based systems. The tool UML2SC, which is based on Java libraries, is also introduced. This tool allows the transformation of UML class and composite structure diagrams to SystemC skeleton code. An implementation example is given to illustrate the transformation process implemented in the UML2SC tool. The example describes the model of a CPU RISC of 16 bits.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[UML]]></kwd>
<kwd lng="es"><![CDATA[SystemC]]></kwd>
<kwd lng="es"><![CDATA[hardware]]></kwd>
<kwd lng="es"><![CDATA[software]]></kwd>
<kwd lng="es"><![CDATA[diseño a nivel de sistema]]></kwd>
<kwd lng="es"><![CDATA[SoC]]></kwd>
<kwd lng="en"><![CDATA[UML]]></kwd>
<kwd lng="en"><![CDATA[SystemC]]></kwd>
<kwd lng="en"><![CDATA[hardware]]></kwd>
<kwd lng="en"><![CDATA[software]]></kwd>
<kwd lng="en"><![CDATA[system-level design]]></kwd>
<kwd lng="en"><![CDATA[SoC]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="center"><font face="Verdana" size="4"> <b>UML2SC: Herramienta para el dise&ntilde;o de sistemas electr&oacute;nicos complejos utilizando los lenguajes UML y SystemC</b></font></p>     <p align="center"><font face="Verdana" size="4"> <b>UML2SC: A tool for developing complex electronic systems using UML and SystemC</b></font>     <p> <font face="Verdana" size="2"> <i>Blanca Alicia Correa <sup>*</sup>, Juan Fernando Eusse, Danny M&uacute;nera, Silvio Sep&uacute;lveda, Juan Fernando V&eacute;lez, Jos&eacute; Edinson Aedo</i></font></p>     <p> <font face="Verdana" size="2">Grupo de Microelectr&oacute;nica y Control, Facultad de Ingenier&iacute;a, Universidad de Antioquia Calle 67 N<sup>o</sup> 53-108. Medell&iacute;n, Colombia</font></p>     <p><font face="Verdana" size="2">&nbsp;</font></p> <hr noshade size="1">      <p><font face="Verdana" size="3"> <b>Resumen</b></font></p>     <p><font face="Verdana" size="2">En este art&iacute;culo se presenta un proceso para la transformaci&oacute;n de sistemas basados en hardware&#47;software descritos mediante UML a c&oacute;digo esqueleto SystemC. Se introduce la herramienta UML2SC, basada en librer&iacute;as de Java, mediante la cual se puede realizar este proceso de transformaci&oacute;n. La herramienta UML2SC, permite obtener c&oacute;digo esqueleto SystemC a partir de modelos descritos en UML mediante los diagramas de clases y estructura compuesta. Los resultados de la utilizaci&oacute;n de esta herramienta se presentan mediante un ejemplo, el cual describe el modelo funcional de una CPU RISC de 16 bits.</font></p>     <p><font face="Verdana" size="2"><b>Palabras clave:</b> UML, SystemC, hardware, software, dise&ntilde;o a nivel de sistema, SoC</font></p>     <p><font face="Verdana" size="2">&nbsp;</font></p> <hr noshade size="1">     <p><font face="Verdana" size="3"><b>Abstract</b></font></p>     ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2">In this paper, we propose a transformation process in which SystemC skeleton code is extracted from UML models that describe hardware&#47;software based systems. The tool UML2SC, which is based on Java libraries, is also introduced. This tool allows the transformation of UML class and composite structure diagrams to SystemC skeleton code. An implementation example is given to illustrate the transformation process implemented in the UML2SC tool. The example describes the model of a CPU RISC of 16 bits.</font></p>     <p><font face="Verdana" size="2"><b>Keywords:</b> UML, SystemC, hardware, software, system-level design, SoC</font></p>     <p><font face="Verdana" size="2">&nbsp;</font></p> <hr noshade size="1">     <p><font face="Verdana" size="3"><b>Introducci&oacute;n</b></font></p>     <p><font face="Verdana" size="2">Los recientes avances en la tecnolog&iacute;a de semiconductores permiten la implementaci&oacute;n de sistemas electr&oacute;nicos muy complejos en un solo <i><i>chip </i></i>. Esto ha hecho posible el desarrollo de los denominados <i>System-on-<i>chip </i></i> &#40;SoC&#41;, en los cuales componentes de hardware &#40;HW&#41; y software &#40;SW&#41; se integran en un solo <i>chip </i>con el fin de crear un sistema electr&oacute;nico complejo. Por esta raz&oacute;n, recientemente se busca el desarrollo de metodolog&iacute;as y herramientas que permitan el dise&ntilde;o eficiente de sistemas electr&oacute;nicos de gran complejidad [1]. En este contexto, una l&iacute;nea de investigaci&oacute;n propone emplear el Lenguaje de Modelado Unificado &#40;UML&#41; [2], para la especificaci&oacute;n y el dise&ntilde;o inicial de sistemas electr&oacute;nicos complejos tales como los SoC [1], y luego realizar una transformaci&oacute;n al lenguaje SystemC [3], con el fin de validar y verificar estos sistemas. UML es un lenguaje gr&aacute;fico de modelado que emplea diferentes diagramas para la especificaci&oacute;n de los sistemas. Este lenguaje permite que la especificaci&oacute;n de un sistema se realice mediante notaciones est&aacute;ndar sin necesidad de emplear lenguaje natural, lo cual causa errores y ambig&uuml;edad. Por otra parte, SystemC es un lenguaje de programaci&oacute;n compuesto por librer&iacute;as de C++ para la descripci&oacute;n y la simulaci&oacute;n de sistemas constituidos por componentes de HW y SW. Los modelos descritos mediante este lenguaje se pueden simular f&aacute;cilmente, es decir, sin tener que realizar una descripci&oacute;n muy detallada del sistema.</font></p>      <p><font face="Verdana" size="2">Recientemente se han desarrollando estudios que buscan la transformaci&oacute;n de modelos UML a c&oacute;digo SystemC [4-8]. En estos trabajos no se reporta el desarrollo de herramientas de transformaci&oacute;n que incluyan soporte para el diagrama  de estructura compuesta, el cual es un nuevo diagrama de la reciente versi&oacute;n de UML 2.0. El diagrama de estructura compuesta permite la descripci&oacute;n de la estructura interna de una clase, lo cual facilita la representaci&oacute;n de la estructura interna de un m&oacute;dulo en SystemC. En este art&iacute;culo se presenta un proceso de dise&ntilde;o en el cual el sistema a dise&ntilde;ar se especifica inicialmente usando los diagramas de clases y estructura compuesta del lenguaje UML 2.0, y luego mediante la herramienta UML2SC se realiza la transformaci&oacute;n a c&oacute;digo SystemC. En este nivel se lleva a cabo la simulaci&oacute;n y validaci&oacute;n del sistema. La herramienta UML2SC est&aacute; basada en librer&iacute;as de Java. Esta herramienta parte de la especificaci&oacute;n de un sistema en XMI &#40;<i>XML Metadata Interchange</i>&#41; [9] y permite generar c&oacute;digo esqueleto SystemC. La especificaci&oacute;n de un sistema en XMI se obtiene a partir de modelos en UML que son realizados empleando la herramienta <i>Enterprise Architect</i> &#40;EA&#41; [10].</font></p>      <p><font face="Verdana" size="2">Este art&iacute;culo se encuentra estructurado de la siguiente forma: En la secci&oacute;n 2 se describen de forma detallada los diagramas UML seleccionados para el modelado de sistemas HW&#47;SW. En la secci&oacute;n 3 se realiza una breve descripci&oacute;n de los elementos principales de SystemC. En la secci&oacute;n 4 se presenta el proceso de transformaci&oacute;n de UML a SystemC y se describe la herramienta UML2SC. En la secci&oacute;n 5 se presenta un ejemplo en el cual se dise&ntilde;a un procesador RISC de 16 bits con un conjunto de instrucciones reducido con el fin de ilustrar el proceso de dise&ntilde;o. Por &uacute;ltimo, la secci&oacute;n 6, presenta las conclusiones.</font></p>      <p><font face="Verdana" size="2"><b>UML</b></font></p>     <p><font face="Verdana" size="2">UML es un lenguaje gr&aacute;fico de modelado para la especificaci&oacute;n, visualizaci&oacute;n, construcci&oacute;n y documentaci&oacute;n de sistemas [2]. UML permite modelar diferentes vistas de un sistema por medio de diagramas, aportando diferentes perspectivas y niveles de detalle que facilitan su comprensi&oacute;n. Hasta el momento, este lenguaje ha sido empleado com&uacute;nmente para el desarrollo de SW. Sin embargo, la versi&oacute;n m&aacute;s reciente de UML, UML 2.0, incluye notaciones que facilitan el modelado de sistemas basados en HW&#47;SW. En UML 2.0 se definen trece tipos de diagramas, sin embargo en este estudio, se han seleccionado tan s&oacute;lo un subconjunto de diagramas para el modelado de los sistemas basados en HW&#47;SW y la generaci&oacute;n de c&oacute;digo SystemC: el diagrama de clases y el diagrama de estructura compuesta. Estos diagramas permiten describir aspectos estructurales de un sistema. El diagrama de clases permite representar los elementos que conforman el sistema a modelar por medio de clases y las relaciones entre estas. El diagrama de estructura compuesta permite ilustrar la estructura interna de las clases por medio de partes, puertos y conectores. Por otro lado, UML puede ser adaptado para dominios de modelado espec&iacute;ficos mediante la definici&oacute;n de un perfil. Un perfil de UML es un grupo de estereotipos, restricciones y valores etiquetados que adicionan informaci&oacute;n espec&iacute;fica de dominio al UML. Para el proceso de transformaci&oacute;n de UML a SystemC propuesto en este art&iacute;culo se han aplicado los estereotipos que se muestran en la <a href="#Tabla1">tabla 1</a> a los modelos en UML, los cuales se basan en el perfil de UML 2.0 para SystemC presentado en la referencia [11]. En la tabla 1 tambi&eacute;n se ilustran las metaclases relacionadas con los estereotipos.</font></p>     <p><font face="Verdana" size="2"><b>Tabla 1</b> Metaclases relacionadas con los estereotipos</font></p>       ]]></body>
<body><![CDATA[<p align="center"><font face="Verdana" size="2"><img src="/img/revistas/rfiua/n48/n48a16i01.gif" > <a name="Tabla1"></a></p>     <p><font face="Verdana" size="2"><b>SystemC</b></font></p>     <p><font face="Verdana" size="2">SystemC consiste en una colecci&oacute;n de clases codificadas en C++ para el dise&ntilde;o, la simulaci&oacute;n y la verificaci&oacute;n de sistemas basados en HW y SW, e incluye un simulador basado en eventos [3]. SystemC permite modelar y verificar los dise&ntilde;os en un alto nivel de abstracci&oacute;n [12], en las primeras etapas del proceso de dise&ntilde;o para luego refinar estos dise&ntilde;os incorporando detalles de implementaci&oacute;n, lo cual eventualmente conlleva a los prototipos y al dise&ntilde;o completo de un SoC. SystemC separa la computaci&oacute;n de la comunicaci&oacute;n con el fin de ofrecer una soluci&oacute;n simple y modificable a los dise&ntilde;adores que buscan t&eacute;cnicas m&aacute;s eficientes de modelado y simulaci&oacute;n [13]. A continuaci&oacute;n se describen los elementos principales de SystemC:</font></p>     <p><font face="Verdana" size="2"><i>M&oacute;dulo</i>: Un m&oacute;dulo es la unidad b&aacute;sica en un dise&ntilde;o en SystemC. Una aplicaci&oacute;n t&iacute;pica en SystemC consiste normalmente de una jerarqu&iacute;a de m&oacute;dulos.</font></p>     <p><font face="Verdana" size="2"><i>Proceso</i>: Un proceso permite describir funcionalidad y concurrencia, y se encuentra contenido en los m&oacute;dulos como una funci&oacute;n miembro especial. Existen tres tipos de procesos: SC&#95;THREAD, SC&#95;CTHREAD y SC&#95;METHOD.</font></p>     <p><font face="Verdana" size="2"><i>Evento</i>: Un evento define si la ejecuci&oacute;n de un proceso debe dispararse o suspenderse y el momento en que esto debe ocurrir.</font></p>     <p><font face="Verdana" size="2"><i>Puerto</i>: Un puerto permite que los m&oacute;dulos se comuniquen con su ambiente externo.</font></p>     <p><font face="Verdana" size="2"><i>Export</i>: Un export permite que un m&oacute;dulo pueda proveer una interfaz a un m&oacute;dulo de mayor jerarqu&iacute;a mediante la definici&oacute;n de un conjunto de servicios.</font></p>     <p><font face="Verdana" size="2"><i>Interfaz</i>: Una interfaz define un conjunto de operaciones que un canal debe implementar, los cuales son accedidos por los puertos de un m&oacute;dulo.</font></p>     <p><font face="Verdana" size="2"><i>Canal</i>: Los canales permiten el proceso de partici&oacute;n entre comunicaci&oacute;n y computaci&oacute;n en SystemC ya que un canal implementa las interfaces, pero no las define. En SystemC existen dos tipos de canales: primitivos y jer&aacute;rquicos. Un canal primitivo no contiene estructura interna y permite la comunicaci&oacute;n por medio de los m&eacute;todos que hereda. En cambio, un canal jer&aacute;rquico es b&aacute;sicamente un m&oacute;dulo que puede tener estructura y procesos internos.</font></p>      ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2"><b>Proceso de transformaci&oacute;n de UML a SystemC y herramienta UML2SC</b></font></p>     <p><font face="Verdana" size="2">El proceso de transformaci&oacute;n de UML a SystemC se lleva a cabo de la siguiente forma:</font></p>     <p><font face="Verdana" size="2">1. Se modela un sistema empleando la notaci&oacute;n UML usando la herramienta EA.</font></p>     <p><font face="Verdana" size="2">2. Se genera autom&aacute;ticamente el c&oacute;digo XMI correspondiente al modelo descrito en UML, empleando la misma herramienta de modelado para UML.</font></p>     <p><font face="Verdana" size="2">3. Se emplea un <i>parser</i> que permite organizar el c&oacute;digo XMI en una estructura de datos.</font></p>     <p><font face="Verdana" size="2">4. Se combina la estructura de datos obtenida tras el proceso de <i><i>parsing</i></i>, con plantillas de SystemC empleando un motor de plantillas &#40;<i>template engine</i>&#41;.</font></p>      <p><font face="Verdana" size="2">En la <a href="#Figura1">figura 1 </a>se puede apreciar el proceso de transformaci&oacute;n de UML a c&oacute;digo SystemC.</font></p>       <p align="center"><font face="Verdana" size="2"><img src="/img/revistas/rfiua/n48/n48a16i02.gif" > <a name="Figura1"></a></p>      <p><font face="Verdana" size="2"><b>Figura 1 </b>Proceso de transformaci&oacute;n de UML a SystemC</font></p>      <p><font face="Verdana" size="2">A continuaci&oacute;n se explican detalladamente cada uno de los pasos involucrados en este proceso de transformaci&oacute;n.</font></p>      ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2"><b>Proceso de <i>parsing</i></b></font></p>     <p><font face="Verdana" size="2">El proceso de <i>parsing</i> est&aacute; conformado por dos etapas principales como se muestra en la <a href="#Figura2">figura 2</a>, la primera es la aplicaci&oacute;n de una hoja de estilos XSLT mediante el paquete <i>Saxon</i> [14], la segunda parte es la obtenci&oacute;n de la estructura de datos mediante el <i>parser Document Object Model </i>&#40;DOM&#41; [15]. A continuaci&oacute;n se explican estas etapas:</font></p>     <p><font face="Verdana" size="2">1. Aplicaci&oacute;n de una hoja de estilos XSLT: El XSLT &#40;<i>eXtensible Stylesheet Language &#40;XSL&#41; transformations</i>&#41; [16] es usado para transformar un documento XML [17] en otro documento XML, o cualquier otro tipo de documento. Con XSLT se puede adicionar o remover elementos y atributos en el archivo de salida, incluso se pueden cambiar de lugar u ordenar elementos realizando pruebas y tomando decisiones acerca de cada elemento para eliminarlo o adicionarlo en el archivo de salida. Por tanto, en esta etapa del proceso de <i>parsing</i> se toma el documento XMI generado por la herramienta EA a partir del modelo del sistema que se quiere simular y se elimina la informaci&oacute;n irrelevante o redundante de &eacute;ste. Adem&aacute;s se reordenan los datos seleccionados, y se unifican y organizan las etiquetas XML del documento resultante facilitando la creaci&oacute;n de la estructura de datos en la siguiente etapa.</font></p>      <p><font face="Verdana" size="2">Esta etapa del proceso de <i>parsing</i> se basa en la utilizaci&oacute;n del procesador XSLT de c&oacute;digo abierto <i>Saxon-B</i> en su versi&oacute;n para Java. Mediante esta herramienta se aplica una hoja de estilos XSLT al documento obtenido con el EA para obtener al final un documento XMI con la informaci&oacute;n relevante del proceso. </font></p>      <p><font face="Verdana" size="2">2. Obtenci&oacute;n de la estructura de datos: Para la obtenci&oacute;n de la estructura de datos se emplea el parser DOM. Un parser transforma un texto de entrada en una estructura de datos, la cual usualmente es una estructura de tipo &aacute;rbol. Esta estructura de datos captura la jerarqu&iacute;a de la entrada y resulta adecuada para realizar un procesamiento posterior de los datos. El DOM, es una forma de representar los elementos de un documento estructurado &#40;tal como una p&aacute;gina <i>web</i> HTML o un documento XML&#41; como objetos que tienen sus propios m&eacute;todos y propiedades.</font></p>      <p><font face="Verdana" size="2">La parte crucial del proceso de <i>parsing</i> es el <i>Application Programming Interface</i> &#40;API&#41; de Java DOM, el cual permite cargar un documento XML como un objeto en Java con una estructura de &aacute;rbol abstracto. Luego se navega por esta estructura organizando los datos en arreglos de clases predefinidas que sirven como modelo de datos en la siguiente etapa del proceso de transformaci&oacute;n. </font></p>      <p><font face="Verdana" size="2">En esta etapa es de vital importancia definir con precisi&oacute;n cuales son los par&aacute;metros que debe tener cada clase o interfaz definida en el modelo del sistema con el fin de tener la informaci&oacute;n necesaria a la hora de realizar la transformaci&oacute;n a c&oacute;digo SystemC. Los par&aacute;metros que se toman en cuenta para definir un m&oacute;dulo de SystemC son: variables, herencia &#40;tanto de interfaces como de clases&#41;, subm&oacute;dulos definidos, operaciones, puertos y canales. En el caso de las interfaces s&oacute;lo se definen sus m&eacute;todos y su herencia.</font></p>       <p align="center"><font face="Verdana" size="2"><img src="/img/revistas/rfiua/n48/n48a16i03.gif" > <a name="Figura2"></a></p>       <p><font face="Verdana" size="2"><b>Figura 2</b> Etapas en el proceso de <i>parsing</i></font></p>      <p><font face="Verdana" size="2"><i>Motor de plantillas</i></font></p>     ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2">Un motor de plantillas combina una o m&aacute;s plantillas con un modelo de datos para producir uno o m&aacute;s documentos resultantes. El motor de plantillas seleccionado para la herramienta UML2SC es <i>Freemarker</i> [18]. Este motor de plantillas se basa en la idea de realizar transformaciones sobre c&oacute;digo en un lenguaje de programaci&oacute;n determinado, en este caso Java, hacia otros lenguajes como son HTML, XML o incluso texto plano, y se compone de tres partes principales:</font></p>     <p><font face="Verdana" size="2">1. El modelo de datos: Son los datos completamente estructurados dentro del lenguaje de programaci&oacute;n origen que ser&aacute;n luego transformados en la salida del motor de plantillas.</font></p>     <p><font face="Verdana" size="2">2. La plantilla: Es el molde que le permite al motor de plantillas realizar la transformaci&oacute;n del modelo de datos en la salida, de una forma consistente y coherente.</font></p>     <p><font face="Verdana" size="2">3. La salida: Es el resultado del proceso de transformaci&oacute;n que se da al combinar el modelo de datos con la plantilla a trav&eacute;s del motor de plantillas.</font></p>      <p><font face="Verdana" size="2">La herramienta UML2SC puede ser utilizada a trav&eacute;s de la p&aacute;gina <i>web</i> del proyecto [19]. La <a href="#Figura3">figura 3</a> muestra la interfaz <i>web</i> para la generaci&oacute;n de c&oacute;digo:</font></p>       <p align="center"><font face="Verdana" size="2"><img src="/img/revistas/rfiua/n48/n48a16i04.gif" > <a name="Figura3"></a></p>       <p><font face="Verdana" size="2"><b>Figura 3</b> Interfaz <i>web</i> para generaci&oacute;n de c&oacute;digo SystemC</font></p>      <p><font face="Verdana" size="2"><i>Estudio de caso</i></font></p>     <p><font face="Verdana" size="2">Se decide elaborar un estudio de caso real basado en experiencias previas de equipos investigativos en las cuales la falta de verificaci&oacute;n llev&oacute; al no funcionamiento de la implementaci&oacute;n inicial y a la necesidad de un proceso de re-dise&ntilde;o tanto del software como del hardware. Se analiz&oacute; el proceso de desarrollo de una CPU de 16 bits y su integraci&oacute;n a un SoC enfocado hacia aplicaciones agroindustriales [20]. Dentro de [20] se encuentra que adem&aacute;s de no tener una metodolog&iacute;a de validaci&oacute;n funcional del sistema como un todo &#40;HW + SW&#41;, durante la implementaci&oacute;n de la especificaci&oacute;n propuesta para el SoC no se evalu&oacute; el grado de validez conceptual del mismo, incurriendo en un error metodol&oacute;gico fundamental. Seg&uacute;n [20], el <i>datapath</i> de la CPU de 16 bits y el diagrama de bloques del SoC son los mostrados en las <a href="#Figura4">figuras 4</a> y <a href="#Figura5">5</a>:</font></p>        <p align="center"><font face="Verdana" size="2"><img src="/img/revistas/rfiua/n48/n48a16i05.gif" > <a name="Figura4"></a></p>      ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2"><b>Figura 4</b> Datapath para la CPU propuesta por [20]</font></p>       <p align="center"><font face="Verdana" size="2"><img src="/img/revistas/rfiua/n48/n48a16i06.gif" > <a name="Figura5"></a></p>       <p><font face="Verdana" size="2"><b>Figura 5</b> Diagrama de bloques SoC de irrigaci&oacute;n propuesto en [20]</font></p>      <p><font face="Verdana" size="2">Para la aplicaci&oacute;n de nuestra metodolog&iacute;a, se propone un modelado puramente funcional de la CPU utilizando <i>Transaction Level Modeling 2.0</i> &#40;TLM 2.0&#41; [12], y su concepto de <i>socket</i> para modelar la comunicaci&oacute;n entre todos los m&oacute;dulos del SoC en un alto nivel de abstracci&oacute;n. Debido a que el modelo propuesto en este art&iacute;culo es orientado &uacute;nicamente a la verificaci&oacute;n funcional, se elimina la necesidad de la interfaz de mapeo en memoria y se analizan las comunicaciones entre los m&oacute;dulos como punto a punto, esto con el fin de separar el procesamiento de la comunicaci&oacute;n y simplificar la descripci&oacute;n sin perder precisi&oacute;n al modelar el sistema. El diagrama de estructura compuesta para el sistema TLM 2.0 propuesto es el mostrado en la <a href="#Figura6">figura 6</a>:</font></p>       <p align="center"><font face="Verdana" size="2"><img src="/img/revistas/rfiua/n48/n48a16i07.gif" > <a name="Figura6"></a></p>       <p><font face="Verdana" size="2"><b>Figura 6 </b>Diagrama de estructura compuesta propuesto para el modelo</font></p>      <p><font face="Verdana" size="2">De la figura anterior se puede observar que dividimos la CPU para separar procesamiento de comunicaci&oacute;n, separando de ella la unidad de administraci&oacute;n de interrupciones del resto del procesador. Adem&aacute;s se puede observar los <i>sockets</i> TLM2.0 &#40;tanto iniciadores como objetivos&#41;, los cuales pertenecen a la clase tlm::tlm&#95;b&#95;initiator&#95; socket&lt;&gt; y tlm::tlm&#95;b&#95;target&#95;socket&lt;&gt; respectivamente. Luego de plantear el diagrama de bloques del modelo, se procedi&oacute; a realizar el modelado del SoC mediante la herramienta EA, para luego realizar el proceso de traducci&oacute;n del mismo. El modelo UML de la CPU se presenta en la <a href="#Figura7">figura 7</a>, se omiten los modelos de los elementos restantes del SoC por consideraciones de espacio y por este estar disponible en la p&aacute;gina del proyecto [19]. Luego de realizar el modelado en UML del SoC, se procede a la generaci&oacute;n del c&oacute;digo SystemC para el mismo.</font></p>        <p align="center"><font face="Verdana" size="2"><img src="/img/revistas/rfiua/n48/n48a16i08.gif" > <a name="Figura7"></a></p>      <p><font face="Verdana" size="2"><b>Figura 7</b> Diagrama de clases de la CPU</font></p>      <p><font face="Verdana" size="2">A continuaci&oacute;n se muestran fragmentos del c&oacute;digo generado para la CPU, los otros m&oacute;dulos son omitidos.</font></p>       ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2"><img src="/img/revistas/rfiua/n48/n48a16i09.gif" ></font></p>       <p><font face="Verdana" size="2"><img src="/img/revistas/rfiua/n48/n48a16i10.gif" ></font></p>     <p><font face="Verdana" size="2">Luego de la generaci&oacute;n del c&oacute;digo esqueleto del sistema, el equipo de trabajo procedi&oacute; a implementar la funcionalidad del SoC para luego verificarlo mediante la ejecuci&oacute;n de programas de software de adquisici&oacute;n de se&ntilde;ales del conversor A&#47;D hacia memoria, organizaci&oacute;n de matrices y generaci&oacute;n de secuencias. Durante el flujo del proyecto se detect&oacute; que la serie de instrucciones planteada por la especificaci&oacute;n inicial no era apto para el tipo de aplicaci&oacute;n que se pretend&iacute;a desarrollar con el SoC, al carecer de instrucciones de multiplicaci&oacute;n y divisi&oacute;n de enteros. Se comprueba entonces la utilidad de la metodolog&iacute;a para el dise&ntilde;o y validaci&oacute;n de sistemas en silicio.</font></p>      <p><font face="Verdana" size="3"><b>Conclusiones</b></font></p>     <p><font face="Verdana" size="2">En este art&iacute;culo se present&oacute; el proceso para la transformaci&oacute;n de notaciones en UML al lenguaje SystemC soportado por la herramienta UML2SC. La herramienta UML2SC permite la transformaci&oacute;n de diagramas de clases y de estructura compuesta a c&oacute;digo esqueleto SystemC. La selecci&oacute;n del modelo de datos es vital en el proceso de traducci&oacute;n, pues, en caso de que el modelo implementado no sea adecuado, el proceso de traducci&oacute;n ser&aacute; deficiente ya que no contar&aacute; con todos los datos necesarios para el proceso. Al aplicar el proceso de transformaci&oacute;n para el modelado funcional de una CPU RISC de 16 bits se comprob&oacute; que la metodolog&iacute;a es &uacute;til para el dise&ntilde;o y validaci&oacute;n de sistemas On-<i>chip </i>, ya que permite detectar las fallas del proyecto en una etapa temprana del mismo, donde se minimizan los costos de redise&ntilde;ar el sistema y se pueden corregir dichas fallas disminuyendo el impacto sobre el desarrollo del proyecto. Como trabajo futuro se propone la generaci&oacute;n de c&oacute;digo SystemC a partir del diagrama de estados de UML para la descripci&oacute;n del comportamiento de los sistemas y de los diagramas de secuencias y de tiempos para la obtenci&oacute;n de test-benches en SystemC.</font></p>     <p><font face="Verdana" size="3"><b>Referencias</b></font></p>     <!-- ref --><p><font face="Verdana" size="2">1. G. Martin, W. M&uuml;ller. UML for SoC Design. Springer. Netherlands. 2005. pp 17-36.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000079&pid=S0120-6230200900020001600001&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">2. OMG, Unified Modeling Language: Superstructure, version 2.0, formal&#47;07-03-05. Disponible online: <a href="http://www.uml.org" target="_blank">http://www.uml.org</a>. Consultada el 25 de mayo de 2008.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000080&pid=S0120-6230200900020001600002&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">3. SystemC home page. Disponible online: <a href="http://www.systemc.org" target="_blank">http://www.systemc.org</a>. Consultada el 14 de febrero de 2008.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000081&pid=S0120-6230200900020001600003&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">4. V. Sinha, F. Doucet, C. Siska, R. Gupta, S. Liao, A. Ghosh. "YAML: A tool for hardware design visualization and capture". Proc of the 13<sup>th</sup> international symposium on System Synthesis. 2000. pp. 9.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000082&pid=S0120-6230200900020001600004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">5. K. Nguyen, Z. Sun, P. Thiagarajan, W.F. Wong. "Model-driven SoC design via executable UML to SystemC". Proc. of RTSS. 2004. pp. 459.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000083&pid=S0120-6230200900020001600005&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">6. W. Tan, P. Thiagarajan, W. Wong, Y. Zhu, S. Pilakkat. "Synthesizable SystemC code from UML models". International Workshop on UML for SoC Design. 2004. pp. 1-3.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000084&pid=S0120-6230200900020001600006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">7. C. Xi, L. J. Hua, Z. Cheng, S. Y. Hui. "Modeling SystemC design in UML and automatic code generation". Proc. of ASP-DAC. 2005. pp. 932.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000085&pid=S0120-6230200900020001600007&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">8. Y. Wang, X. Zhou, B. Zhou, L. Liang, C. Peng. "A MDA based SoC Modeling Approach using UML and SystemC". Proc. of CIT. 2006. pp. 245.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000086&pid=S0120-6230200900020001600008&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">9. Object Management Group. XML Metadata Interchange &#40;XMI&#41;. Disponible online: <a href="http://www.omg.org/technology/documents/formal/xmi.htm" target="_blank">http://www.omg.org/technology/documents/formal/xmi.htm</a>. Consultada el 18 de julio de 2008.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000087&pid=S0120-6230200900020001600009&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">10. Enterprise Architect. Disponible online: <a href="http://www.sparxsystems.com" target="_blank">http://www.sparxsystems.com</a>. Consultada el 25 de julio de 2008.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000088&pid=S0120-6230200900020001600010&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">11. E. Riccobene, P. Scandurra, A. Rosti, S. Bocchio. "A UML 2.0 Profile for SystemC: Toward High level SoC Design". Proc. of the 5th ACM international conference on Embedded Software &#40;EMSOFT'05&#41;. 2005. pp. 138 - 141.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000089&pid=S0120-6230200900020001600011&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">12. F. Ghenassia, Transaction-Level Modeling with SystemC. Ed. Springer. Netherlands. 2005. pp 10-14.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000090&pid=S0120-6230200900020001600012&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">13. T. Gr&ouml;tker, S. Liao, G. Martin, S. Swan. System Design with SystemC. Ed. Kluwer Academic Publishers. New York. 2004. pp. 1-3.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000091&pid=S0120-6230200900020001600013&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">14. Saxon. Disponible online: <a href="http://saxon.sourceforge.net/" target="_blank">http://saxon.sourceforge.net/</a> Consultada el 20 de junio de 2008.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000092&pid=S0120-6230200900020001600014&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">15. Java DOM. Disponible online: <a href="http://www.jdom.org" target="_blank">http://www.jdom.org</a>.Consultada el 27 de mayo de 2008.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000093&pid=S0120-6230200900020001600015&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">16. XSL Transformations &#40;XSLT&#41;. Disponible online:<a href="http://www.w3.org/TR/xslt" target="_blank">http://www.w3.org/TR/xslt</a> Consultada el 7 de junio de 2008.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000094&pid=S0120-6230200900020001600016&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">17. Extensible Markup Language &#40;XML&#41;. Disponible online: <a href="http://www.w3.org/XML" target="_blank">http://www.w3.org/XML</a>. Consultada el 17 de abril de 2008.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000095&pid=S0120-6230200900020001600017&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">18. FreeMarker. Disponible online: <a href="http://www.freemarker.org" target="_blank">http://www.freemarker.org</a>. Consultada el 12 de junio de 2008.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000096&pid=S0120-6230200900020001600018&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">19. P&aacute;gina Proyecto UML2SC. Disponible online: <a href="http://microe.udea.edu.co.8080/traductor" target="_blank">http://microe.udea.edu.co.8080/traductor</a>. Consultada el 23 de julio de 2008.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000097&pid=S0120-6230200900020001600019&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font face="Verdana" size="2">20. J. Domingues, Implementa&ccedil;ao de um Processador RISC 16-bits CMOS Num Sistema em <i>chip </i>. Tesis de Mastr&iacute;a en Ingenier&iacute;a El&eacute;ctrica. Facultad de Tecnolog&iacute;a. Universidad de Brasilia &#40;UnB&#41;. Brasil. 2004.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000098&pid=S0120-6230200900020001600020&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><p><font face="Verdana" size="2">&#40;Recibido el 1 de Julio de 2008. Aceptado el 12 de marzo de 2009&#41;</font></p>      <p><font face="Verdana" size="2"><sup>*</sup>Autor de correspondencia: tel&eacute;fono: + 57 + 4 + 219 55 67, correo electr&oacute;nico: <a href="mailto:blanca@microe.udea.edu.co">blanca@microe.udea.edu.co</a> &#40;B.A.Correa&#41;</font></p>      ]]></body><back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Martin]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[Müller]]></surname>
<given-names><![CDATA[W]]></given-names>
</name>
</person-group>
<source><![CDATA[UML for SoC Design]]></source>
<year>2005</year>
<page-range>17-36</page-range><publisher-name><![CDATA[Springer]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="">
<collab>OMG</collab>
<source><![CDATA[Unified Modeling Language: Superstructure, version 2.0, formal/07-03-05]]></source>
<year>2008</year>
</nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="">
<collab>SystemC</collab>
<source><![CDATA[]]></source>
<year>2008</year>
</nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Sinha]]></surname>
<given-names><![CDATA[V]]></given-names>
</name>
<name>
<surname><![CDATA[Doucet]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
<name>
<surname><![CDATA[Siska]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[Gupta]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Liao]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Ghosh]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[YAML: A tool for hardware design visualization and capture]]></source>
<year></year>
<conf-name><![CDATA[13 international symposium on System Synthesis]]></conf-name>
<conf-date>2000</conf-date>
<conf-loc> </conf-loc>
<page-range>9</page-range></nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Nguyen]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
<name>
<surname><![CDATA[Sun]]></surname>
<given-names><![CDATA[Z]]></given-names>
</name>
<name>
<surname><![CDATA[Thiagarajan]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[Wong]]></surname>
<given-names><![CDATA[W.F]]></given-names>
</name>
</person-group>
<source><![CDATA[Model-driven SoC design via executable UML to SystemC]]></source>
<year>2004</year>
<page-range>459</page-range><publisher-name><![CDATA[Proc. of RTSS]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Tan]]></surname>
<given-names><![CDATA[W]]></given-names>
</name>
<name>
<surname><![CDATA[Thiagarajan]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[Wong]]></surname>
<given-names><![CDATA[W]]></given-names>
</name>
<name>
<surname><![CDATA[Zhu]]></surname>
<given-names><![CDATA[Y]]></given-names>
</name>
<name>
<surname><![CDATA[Pilakkat]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<source><![CDATA[Synthesizable SystemC code from UML models: International Workshop on UML for SoC Design]]></source>
<year>2004</year>
<page-range>1-3</page-range></nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Xi]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[Hua]]></surname>
<given-names><![CDATA[L. J]]></given-names>
</name>
<name>
<surname><![CDATA[Cheng]]></surname>
<given-names><![CDATA[Z]]></given-names>
</name>
<name>
<surname><![CDATA[Hui]]></surname>
<given-names><![CDATA[S. Y]]></given-names>
</name>
</person-group>
<source><![CDATA[Modeling SystemC design in UML and automatic code generation]]></source>
<year>2005</year>
<page-range>932</page-range><publisher-name><![CDATA[Proc. of ASP-DAC]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Wang]]></surname>
<given-names><![CDATA[Y]]></given-names>
</name>
<name>
<surname><![CDATA[Zhou]]></surname>
<given-names><![CDATA[X]]></given-names>
</name>
<name>
<surname><![CDATA[Zhou]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
<name>
<surname><![CDATA[Liang]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Peng]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<source><![CDATA[A MDA based SoC Modeling Approach using UML and SystemC]]></source>
<year>2006</year>
<page-range>245</page-range><publisher-name><![CDATA[Proc. of CIT]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="">
<collab>Object Management Group</collab>
<source><![CDATA[XML Metadata Interchange (XMI)]]></source>
<year>2008</year>
</nlm-citation>
</ref>
<ref id="B10">
<label>10</label><nlm-citation citation-type="">
<collab>Enterprise Architect</collab>
<source><![CDATA[]]></source>
<year>2008</year>
</nlm-citation>
</ref>
<ref id="B11">
<label>11</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Riccobene]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
<name>
<surname><![CDATA[Scandurra]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[Rosti]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Bocchio]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<source><![CDATA[A UML 2.0 Profile for SystemC: Toward High level SoC Design]]></source>
<year></year>
<conf-name><![CDATA[5 ACM international conference on Embedded Software]]></conf-name>
<conf-date>2005</conf-date>
<conf-loc> </conf-loc>
<page-range>138 - 141</page-range></nlm-citation>
</ref>
<ref id="B12">
<label>12</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ghenassia]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
</person-group>
<source><![CDATA[Transaction-Level Modeling with SystemC]]></source>
<year>2005</year>
<page-range>10-14</page-range><publisher-name><![CDATA[Springer]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B13">
<label>13</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Grötker]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
<name>
<surname><![CDATA[Liao]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Martin]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[Swan]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<source><![CDATA[System Design with SystemC]]></source>
<year>2004</year>
<page-range>1-3</page-range><publisher-loc><![CDATA[New York ]]></publisher-loc>
<publisher-name><![CDATA[Ed. Kluwer Academic Publishers]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B14">
<label>14</label><nlm-citation citation-type="">
<collab>Saxon</collab>
<source><![CDATA[]]></source>
<year>2008</year>
</nlm-citation>
</ref>
<ref id="B15">
<label>15</label><nlm-citation citation-type="">
<collab>Java DOM</collab>
<source><![CDATA[]]></source>
<year>2008</year>
</nlm-citation>
</ref>
<ref id="B16">
<label>16</label><nlm-citation citation-type="">
<source><![CDATA[XSL Transformations (XSLT)]]></source>
<year>2008</year>
</nlm-citation>
</ref>
<ref id="B17">
<label>17</label><nlm-citation citation-type="">
<source><![CDATA[Extensible Markup Language (XML)]]></source>
<year>2008</year>
</nlm-citation>
</ref>
<ref id="B18">
<label>18</label><nlm-citation citation-type="">
<collab>FreeMarker</collab>
<source><![CDATA[]]></source>
<year>2008</year>
</nlm-citation>
</ref>
<ref id="B19">
<label>19</label><nlm-citation citation-type="">
<source><![CDATA[Página Proyecto UML2SC]]></source>
<year>2008</year>
</nlm-citation>
</ref>
<ref id="B20">
<label>20</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Domingues]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[Implementaçao de um Processador RISC 16-bits CMOS Num Sistema em chip]]></source>
<year></year>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
