Instalar librería SystemC

Preámbulo

A la hora de utilizar un lenguaje HDL (Verilog, VHDL) para el diseño de sistemas digitales y su implementación en dispositivos electrónicos tales como CPLD's o FPGA's, debe realizarse una verificación funcional continua del diseño con el que se trabaja. Hacerlo normalmente implicaría considerar de forma manual todas las situaciones dentro de las cuales sería utilizado/manipulado el dispositivo por parte del usuario. Para ello existen herramientas tales como Spec# o SystemC; librerías de extensión del lenguaje C con las cuales se puede hacer también descripción de hardware y generar bancos de pruebas o benchmarks que abarquen la mayoría de las posibles configuraciones y corregir así cualquier error de diseño a tiempo. Estas librerías permiten manejar multithreading y especificaciones temporales en la programación de alto nivel.
Además, utilizando estas librerías y sus recursos, es posible utilizar las bondades de la programación de alto nivel en el desarrollo de ambientes para la verificación funcional de circuitos integrados.


Para instalar la librería SystemC en Kubuntu 9.04, deben seguirse los siguientes pasos:


1) Descargar el archivo systemc-2.2.0.tgz y desempaquetar

El paquete puede descargarse del sitio oficial
Nota: Es necesario pasar por un proceso de registro antes de acceder al paquete en este sitio.


2) Crear directorio temporal para la instalación

Dentro de la carpeta /.../systemc-2.2.0 crear el directorio temporal tmpdir

user@user-laptop:/.../systemc-2.2.0$ mkdir tmpdir

Luego se crea un enlace:

user@user-laptop:/.../systemc-2.2.0$ cd tmpdir
user@user-laptop:/.../systemc-2.2.0/tmpdir$ set CXX=g++
user@user-laptop:/.../systemc-2.2.0/tmpdir$ export CXX

3) Configurar, compilar e instalar

Para configurar el paquete:

user@user-laptop:/.../systemc-2.2.0/tmpdir$ ../configure

Para la compilación:

user@user-laptop:/.../systemc-2.2.0/tmpdir$ make

IMPORTANTE: Si este paso genera errores como los que se muestran a continuación:

sc_utils_ids.cpp: In function ‘int
sc_core::initialize()’:
sc_utils_ids.cpp:110: error: ‘getenv’ no es un miembro de ‘std’
sc_utils_ids.cpp:111: error: ‘strcmp’ no se declaró en este ámbito
sc_utils_ids.cpp: At global scope:
sc_utils_ids.cpp:119: aviso: se definió ‘sc_core::forty_two’ pero no se usa
make[3]: *** [sc_utils_ids.o] Error 1
make[3]: se sale del directorio `/.../systemc-2.2.0/src/sysc/utils'
make[2]: *** [all-recursive] Error 1
make[2]: se sale del directorio `/.../systemc-2.2.0/src/sysc'
make[1]: *** [all-recursive] Error 1
make[1]: se sale del directorio `/.../systemc-2.2.0/src'
make: *** [all-recursive] Error 1

Debe realizarse lo siguiente:

user@user-laptop:/.../systemc-2.2.0/tmpdir$ cd /.../systemc-2.2.0/objdir/src/sysc/utils
user@user-laptop:/.../systemc-2.2.0/tmpdir/src/sysc/utils$ kdesudo kate sc_utils_ids.cpp

Vamos a editar el archivo de código C sc_utils_ids.cpp, para forzar a la instalación a utilizar unas librerías que generalmente no emplea en este proceso. Si el archivo estuviera en blanco no hay inconveniente. Agregamos en el encabezado las librerías:

#include <cstdio>
#include <cstdlib>
#include <cstring>

Guardamos los cambios y cerramos. Se regresa al directorio donde estamos haciendo la compilación:

user@user-laptop:/.../systemc-2.2.0/tmpdir/src/sysc/utils$ cd /.../systemc-2.2.0/tmpdir

Y se vuelve a compilar:

user@user-laptop:/.../systemc-2.2.0/tmpdir$ make

Esta vez debería hacerlo sin problemas.
La instalación se realiza por medio del comando:

user@user-laptop:/.../systemc-2.2.0/tmpdir$ sudo make install

Referencia
http://svenand.blogdrive.com/archive/95.html