Installer SystemC et TLM : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(maj pour SystemC 2.3)
(Sur les machines de l'Ensimag)
 
(16 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
Pour installer SystemC et TLM, vous pouvez les télécharger sur http://systemc.org, mais il est sans doute plus pratique de les télécharger ici : http://www-verimag.imag.fr/~moy/cours/tlm/systemc/
+
Pour installer SystemC 2.3.2 (version la plus récente), vous pouvez les télécharger sur http://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.2.tar.gz
  
== Sur ensisun ==
+
== Sur les machines de l'Ensimag ==
  
SystemC et TLM sont installés dans <code>~moy/tlm</code>.
+
SystemC et les bibliothèques Ensimag pour le support de TLM sont installés dans <code>/matieres/5MMMTSP/</code>.
  
 
== Installer SystemC 2.3 ==
 
== Installer SystemC 2.3 ==
Ligne 10 : Ligne 10 :
  
 
<pre>
 
<pre>
curl -O http://www-verimag.imag.fr/~moy/cours/tlm/systemc/systemc-2.2.0.tgz
+
sudo mkdir /opt/systemc-2.3.2
tar xzvf systemc-2.2.0.tgz  
+
sudo chmod `id -un` /opt/systemc-2.3.2
cd systemc-2.2.0
+
sudo chgrp `id -gn` /opt/systemc-2.3.2
mkdir obj
+
wget http://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.2.tar.gz
cd obj
+
tar xzvf systemc-2.3.2.tgz  
../configure
+
cd systemc-2.3.2
 +
# Il faut absolument compiler avec le standard c++11 pour que l'édition de liens se passe bien
 +
# On définit pour ce faire la variable CXXFLAGS
 +
CXXFLAGS='-O3 -g -Wall -Wextra -Winvalid-pch -Wno-unused-parameter --std=gnu++11'
 +
./configure --prefix=/opt/systemc-2.3.2
 
make
 
make
 
make install
 
make install
 
</pre>
 
</pre>
  
on peut vérifier que tout s'est bien passé :
+
On peut vérifier que tout s'est bien passé en regardant ce qui a été installé effectivement.
 +
On doit trouver les fichiers d'en-tête dans include/, et les bibliothèques dans lib-*/ (le nom du répertoire dépend de la plateforme sur laquelle on compile) :
  
 
<pre>
 
<pre>
cd ..
+
petrot@tilleul[:|✔]% ls /opt/systemc-2.3.2/include
ls include
+
sysc  systemc  systemc.h  tlm  tlm_core  tlm.h  tlm_utils
ls lib-*/
+
petrot@tilleul[:|✔]% ls /opt/systemc-2.3.2/lib-*
 +
libsystemc-2.3.2.so  libsystemc.a  libsystemc.la  libsystemc.so  pkgconfig
 
</pre>
 
</pre>
  
On doit trouver les fichiers d'en-tête dans include, et les bibliothèques dans lib-* (le nom du répertoire dépend de la plateforme sur laquelle on compile).
+
== Configuration ==
  
== Installer SystemC 2.2 (ancienne version) ==
+
Pour utiliser les Makefiles des TPs et exemples, il vous reste à positionner la variable d'environnement $SYSTEMCROOT, qui doit pointer sur votre installation de SystemC.
  
=== Téléchargement ===
+
Le plus simple est de se baser sur le fichier <code>setup-ensimag.sh</code> fourni dans l'archive git en adaptant les chemins à votre configuration.
depuis la page http://www-verimag.imag.fr/~moy/cours/tlm/systemc/,
+
récupérer systemc-2.2.0.tgz et le patch (pour éliminer des warnings et erreurs génants de GCC) systemc-2.2.0.patch, par exemple avec
+
 
+
<pre>
+
curl -O http://www-verimag.imag.fr/~moy/cours/tlm/systemc/systemc-2.2.0.tgz
+
curl -O http://www-verimag.imag.fr/~moy/cours/tlm/systemc/systemc-2.2.0.patch
+
curl -O http://www-verimag.imag.fr/~moy/cours/tlm/systemc/systemc-2.2.0-macosx.patch
+
</pre>
+
 
+
=== Compilation et installation ===
+
 
+
On extrait l'archive, on applique les patchs, et on compile :
+
 
+
<pre>
+
tar xzvf systemc-2.2.0.tgz
+
patch -p0 < systemc-2.2.0.patch
+
patch -p0 < systemc-2.2.0-macosx.patch
+
cd systemc-2.2.0
+
 
+
rm -f config/config.guess config/config.sub config/missing
+
autoreconf --install
+
 
+
mkdir obj
+
cd obj
+
../configure
+
make
+
make install
+
</pre>
+
 
+
Le téléchargement et l'application de <code>systemc-2.2.0-macosx.patch</code> ne sont bien entendu nécessaires que sous Mac OS X.
+
 
+
Les lignes « <code>rm -f config/config.guess config/config.sub config/missing; autoreconf -f --install</code> » permettent de mettre à jour certains fichiers nécessaires à la compilation. Elle élimine quelques warnings sous Linux, et est nécessaire sous Mac OS X.
+
 
+
=== Vérification ===
+
 
+
Vous devriez obtenir ceci :
+
 
+
<pre>
+
$ ls lib-linux64/    # ou juste lib-linux, ou lib-macosx selon la machine.
+
libsystemc.a
+
$ ls include/
+
sysc  systemc  systemc.h
+
</pre>
+
 
+
=== Erreurs à l'installation ===
+
 
+
Si vous obtenez une erreur « <code>sc_utils_ids.cpp:109: error: ‘getenv’ is not a member of ‘std’</code> », modifiez le début de <code>sc_utils_ids.cpp</code> :
+
 
+
<pre>
+
#include <cstdlib>
+
#include <string.h>
+
#include "sysc/utils/sc_report.h"
+
using namespace std;
+
</pre>
+
 
+
Si vous obtenez une erreur « <code>sc_cor_qt.cpp:97: error: ‘caddr_t’ was not declared in this scope</code> », ajoutez cette ligne au début de <code>src/sysc/kernel/sc_cor_qt.cpp</code> :
+
 
+
<pre>
+
#include <sys/types.h>
+
</pre>
+
 
+
(ces modifications sont incluses dans les patchs, donc en principe, tout est déjà fait pour vous)
+
 
+
== Installer TLM (ancienne version, plus nécessaire depuis SystemC 2.3) ==
+
 
+
On télécharge :
+
 
+
<pre>
+
curl -O http://www-verimag.imag.fr/~moy/cours/tlm/systemc/TLM-2.0.1.tgz
+
curl -O http://www-verimag.imag.fr/~moy/cours/tlm/systemc/tlm-2.0.1.patch
+
</pre>
+
 
+
et on applique le patch pour éliminer des warnings :
+
 
+
<pre>
+
tar xzvf TLM-2.0.1.tgz
+
patch -p0 < tlm-2.0.1.patch
+
</pre>
+
 
+
... c'est tout, rien à compiler ! (TLM-2.0 est constitué uniquement de templates, et C++ impose que tout soit défini dans les fichiers d'en-tête dans ces cas là)
+
 
+
== Positionner les variables d'environnement ==
+
 
+
Pour utiliser les Makefiles des TPs et exemples, il vous reste à faire positionner les variables $SYSTEMCROOT, $TLMOSCI, $TLM_ENSITLM et $SC_SIGNAL_WRITE_CHECK.
+
 
+
Le plus simple est de se baser sur le fichier setup-ensisun.sh fourni dans l'archive Git en adaptant les chemins à votre configuration.
+
 
+
{{Github|user=moy|project=cours-tlm|file=TPs/setup-ensisun.sh|lang=bash}}
+
  
 
[[Catégorie:Modélisation TLM en SystemC]]
 
[[Catégorie:Modélisation TLM en SystemC]]

Version actuelle en date du 13 septembre 2018 à 16:03

Pour installer SystemC 2.3.2 (version la plus récente), vous pouvez les télécharger sur http://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.2.tar.gz

Sur les machines de l'Ensimag

SystemC et les bibliothèques Ensimag pour le support de TLM sont installés dans /matieres/5MMMTSP/.

Installer SystemC 2.3

En principe, il suffit de télécharger l'archive et d'appliquer le bon vieux configure/make/make install

sudo mkdir /opt/systemc-2.3.2
sudo chmod `id -un` /opt/systemc-2.3.2
sudo chgrp `id -gn` /opt/systemc-2.3.2
wget http://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.2.tar.gz
tar xzvf systemc-2.3.2.tgz 
cd systemc-2.3.2
# Il faut absolument compiler avec le standard c++11 pour que l'édition de liens se passe bien
# On définit pour ce faire la variable CXXFLAGS
CXXFLAGS='-O3 -g -Wall -Wextra -Winvalid-pch -Wno-unused-parameter --std=gnu++11'
./configure --prefix=/opt/systemc-2.3.2
make
make install

On peut vérifier que tout s'est bien passé en regardant ce qui a été installé effectivement. On doit trouver les fichiers d'en-tête dans include/, et les bibliothèques dans lib-*/ (le nom du répertoire dépend de la plateforme sur laquelle on compile) :

petrot@tilleul[:|✔]% ls /opt/systemc-2.3.2/include
sysc  systemc  systemc.h  tlm  tlm_core  tlm.h  tlm_utils
petrot@tilleul[:|✔]% ls /opt/systemc-2.3.2/lib-*
libsystemc-2.3.2.so  libsystemc.a  libsystemc.la  libsystemc.so  pkgconfig

Configuration

Pour utiliser les Makefiles des TPs et exemples, il vous reste à positionner la variable d'environnement $SYSTEMCROOT, qui doit pointer sur votre installation de SystemC.

Le plus simple est de se baser sur le fichier setup-ensimag.sh fourni dans l'archive git en adaptant les chemins à votre configuration.