Modélisation TLM en SystemC

De Ensiwiki
Révision de 12 novembre 2008 à 11:15 par Moym (discussion | contributions) (Messages d'erreur de G++)

Aller à : navigation, rechercher

Sur le Kiosk

Ressources sur le web

FAQ sur l'utilisation de TLM/SystemC

Messages d'erreur de G++

error: `sc_time' has not been declared
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;")

error: no matching function for call to `tlm_utils::simple_target_socket<...>::register_b_transport(...)'

Vous avez probablement déclaré la méthode b_transport du mauvais type (attention, le moindre const compte !)

simple_target_socket.h:173: error: invalid use of undefined type `struct sc_core::sc_spawn_options'

Avez-vous bien pensé à mettre #define SC_INCLUDE_DYNAMIC_PROCESSES avant toutes les occurences de #include <systemc> ? (si vous utilisez #include <basic.h>, c'est fait pour vous).

autre

Voir la page Les Erreurs de GCC.

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 dépréciée, 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.