Installer SystemC et TLM : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Positionner les variables d'environnement)
(Sur les machines de l'Ensimag)
 
(30 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 ==
+
== Installer SystemC 2.3 ==
  
depuis la page http://www-verimag.imag.fr/~moy/cours/tlm/systemc/,
+
En principe, il suffit de télécharger l'archive et d'appliquer le bon vieux <code>configure/make/make install</code>.
récupérer systemc-2.2.0.tgz et le patch (pour éliminer des warnings génants de GCC) systemc-2.2.0.patch, puis :
+
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>
tar xzvf systemc-2.2.0.tgz
+
sudo mkdir -p /opt/systemc-2.3.3
patch -p0 < systemc-2.2.0.patch
+
# On rend l'utilisateur courant propriétaire du répertoire
cd systemc-2.2.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>
  
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> :
+
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>
#include <cstdlib>
+
petrot@tilleul[:|✔]% ls /opt/systemc-2.3.3/include
#include <string.h>
+
sysc  systemc  systemc.h tlm  tlm_core  tlm.h  tlm_utils
#include "sysc/utils/sc_report.h"
+
petrot@tilleul[:|✔]% ls /opt/systemc-2.3.3/lib-*
using namespace std;
+
libsystemc-2.3.3.so  libsystemc.a  libsystemc.la  libsystemc.so  pkgconfig
 
</pre>
 
</pre>
  
(cette modification est incluse dans le patch, donc en principe, tout est déjà fait pour vous)
+
== Configuration ==
  
Vérifiez :
+
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.
  
<pre>
+
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.
$ ls lib-linux64/    # ou juste lib-linux, selon la machine.
+
libsystemc.a
+
$ ls include/
+
sysc  systemc  systemc.h
+
</pre>
+
 
+
== Installer TLM ==
+
 
+
<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]]

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.