Modélisation TLM en SystemC
De Ensiwiki.
Sommaire |
Sur le Kiosk
- http://intranet.ensimag.fr/KIOSK/Telecom/3A/ACE/SystemC/ : la page du Kiosk sur SystemC/TLM
Ressources sur le web
- http://www.systemc.org : le site de SystemC et TLM
- http://www.doulos.com/knowhow/systemc/tlm2/ : tutorial abordable sur TLM-2
- http://standards.ieee.org/getieee/1666/download/1666-2005.pdf : Le standard IEEE pour SystemC
FAQ sur l'utilisation de TLM/SystemC
Installer SystemC et TLM sur sa machine personnelle
Cf. la page Installer SystemC et TLM.
Utilisation de SystemC et TLM sur ensisun
Les bibliothèques SystemC et TLM sont installées dans ~moy/tlm/. Pour les utiliser, faites simplement :
source ~moy/tlm/setup-ensisun.sh
ceci définiera deux variables $SYSTEMCROOT et $TLMOSCI qui pointent sur les répertoires où SystemC et TLM sont installés. Ces variables sont utilisées dans les Makefiles fournis pour les TPs et les exemples. Par exemple, pour compiler le petit exemple de rendez-vous :
wget 'http://www-verimag.imag.fr/~moy/cours/tlm/code-rendezvous.tar.gz' tar xzvf code-rendezvous.tar.gz cd code/rendezvous/ source ~moy/tlm/setup-ensisun.sh make ./run.x
Messages d'erreur de G++
- error: `sc_time' has not been declared
- error: expected class-name before ',' token
- error: expected class-name before ‘{’ token
Vous vouliez probablement dire sc_core::sc_time ou sc_core::sc_module(ou bien utiliser "using namespace sc_core;")
- target_socket.h:66: error: ‘struct Memory’ has no member named ‘read’
Vous avez probablement déclaré la méthode read du mauvais type (attention, le moindre const compte !)
- error: ‘SC_CURRENT_USER_MODULE’ has not been declared
Il manque la macro SC_HAS_PROCESS(nom-du-module) dans la déclaration du module.
- autre
Voir la page Les Erreurs de GCC. N'hésitez pas à ajouter d'autres messages ici.
Erreurs à l'exécution
Error: (E115) sc_signal<T> cannot have more than one driver: signal `IRQ' (sc_signal) first driver `Generator1.compute' (sc_thread_process) second driver `LCDC.compute' (sc_thread_process)
Notre manière d'utiliser sc_signal n'est pas compatible avec les vérifications faites par SystemC en version 2.2, il faut faire export SC_SIGNAL_WRITE_CHECK=DISABLE pour la désactiver.
<systemc.h> ou <systemc> ?
Certains programme utilisent
#include <systemc.h>
d'autres
#include <systemc>
En fait, systemc.h est la forme obsolète, qui fait à peu près la même chose que systemc-sans-le-point-h, mais aussi des using namespace ...; qui facilitent la vie, mais qui sont reconnus universellement comme étant une mauvaise pratique dans les fichiers .h.
