Installer SystemC et TLM : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Installer SystemC 2.3)
(Sur les machines de l'Ensimag)
 
(21 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.3 (version la plus récente), vous pouvez les télécharger sur http://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.3.tar.gz
  
== Sur ensisun ==
+
== Sur les machines de l'Ensimag ==
  
SystemC et TLM sont installés dans <code>~moy/tlm</code>.
+
SystemC est installé dans <code>/matieres/5MMMTSP/cours-tlm/systemc-2.3.3</code>.
 +
On compile également une petite bibliothèque pour le support des bus, qui se trouve dans <code>TPs/ensitlm</code>.
 +
Cette bibliothèque, ainsi que le reste des TP, utilise un Makefile unique <code>TPs/Makefile.common</code> qui contient en particulier les bons flags pour <code>g++</code>.
  
 
== Installer SystemC 2.3 ==
 
== Installer SystemC 2.3 ==
  
En principe, il suffit de télécharger l'archive et d'appliquer le bon vieux <code>configure/make/make install</code>
+
En principe, il suffit de télécharger l'archive et d'appliquer le bon vieux <code>configure/make/make install</code>.
 +
Il faut juste s'assurer que le standard c++ utilisé pour compiler SystemC et les exemples sont biens les mêmes, sinon ça foire lors de l'édition de liens, et on se tire des balles.
 +
Dans la suite on utilise la version 2017 du standard, car c'est ce que j'ai utilisé dans les Makefiles des exemples.
  
 
<pre>
 
<pre>
curl -O http://www-verimag.imag.fr/~moy/cours/tlm/systemc/systemc-2.3.0.tgz
+
sudo mkdir -p /opt/systemc-2.3.3
tar xzvf systemc-2.3.0.tgz
+
# On rend l'utilisateur courant propriétaire du répertoire
cd systemc-2.3.0
+
sudo chown $(id -un):$(id -gn) /opt/systemc-2.3.3
mkdir obj
+
mkdir devel && cd devel
cd obj
+
wget http://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.3.tar.gz
../configure
+
tar xzvf systemc-2.3.3.tar.gz
make
+
cd systemc-2.3.3
 +
mkdir build
 +
cd build
 +
CXXFLAGS=-std=c++17 ../configure --prefix=/opt/systemc-2.3.3
 +
make -j $(nproc)
 
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.3/include
ls include/
+
sysc  systemc  systemc.h  tlm  tlm_core  tlm.h  tlm_utils
ls lib-*/
+
petrot@tilleul[:|✔]% ls /opt/systemc-2.3.3/lib-*
 +
libsystemc-2.3.3.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 ==
  
== Positionner les variables d'environnement ==
+
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.
  
Pour utiliser les Makefiles des TPs et exemples, il vous reste à faire positionner les variables $SYSTEMCROOT et $TLM_ENSITLM.
+
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.
 
+
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}}
+
 
+
== Installer SystemC 2.2 (ancienne version) ==
+
 
+
=== Téléchargement ===
+
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à)
+
  
 
[[Catégorie:Modélisation TLM en SystemC]]
 
[[Catégorie:Modélisation TLM en SystemC]]

Version actuelle en date du 16 octobre 2020 à 16:08

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

Sur les machines de l'Ensimag

SystemC est installé dans /matieres/5MMMTSP/cours-tlm/systemc-2.3.3. On compile également une petite bibliothèque pour le support des bus, qui se trouve dans TPs/ensitlm. Cette bibliothèque, ainsi que le reste des TP, utilise un Makefile unique TPs/Makefile.common qui contient en particulier les bons flags pour g++.

Installer SystemC 2.3

En principe, il suffit de télécharger l'archive et d'appliquer le bon vieux configure/make/make install. Il faut juste s'assurer que le standard c++ utilisé pour compiler SystemC et les exemples sont biens les mêmes, sinon ça foire lors de l'édition de liens, et on se tire des balles. Dans la suite on utilise la version 2017 du standard, car c'est ce que j'ai utilisé dans les Makefiles des exemples.

sudo mkdir -p /opt/systemc-2.3.3
# On rend l'utilisateur courant propriétaire du répertoire
sudo chown $(id -un):$(id -gn) /opt/systemc-2.3.3
mkdir devel && cd devel
wget http://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.3.tar.gz
tar xzvf systemc-2.3.3.tar.gz
cd systemc-2.3.3
mkdir build
cd build
CXXFLAGS=-std=c++17 ../configure --prefix=/opt/systemc-2.3.3
make -j $(nproc)
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.3/include
sysc  systemc  systemc.h  tlm  tlm_core  tlm.h  tlm_utils
petrot@tilleul[:|✔]% ls /opt/systemc-2.3.3/lib-*
libsystemc-2.3.3.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.