SystemC

galexie Messages postés 3 Statut Membre -  
 loupius -
Bonjour,
J'ai un souci lors de la compilation de mon programme en systemC: l'erreur est : error C2039: 'entre' : n'est pas membre de 'bascd' sachant que j'ai tout déclaré (entre est un signal d'entrée d'un module bascd)...je vois pas du tout l'erreur...quelqu'un pourra m'aider et merci d'avance

2 réponses

loupius
 
Désolé, je ne connais pas les n° d'erreurs du compilateur.
Tu peux toujours essayer de faire une recherche sur la toile.
Si tu veux qu'on t'aide, il faut au moins un bout de code (en utilisant les balises 'code' (à droite de souligné)), voire le code en entier s'il n'est pas trop long et surtout les premières lignes d'insultes du compilateur.
A suivre.
1
galexie Messages postés 3 Statut Membre
 
Le voilà mon code, il apparait long mais pas du tout je t'ai filé tous les fichiers .h et .cpp, il est tout bete je veux juste décaler un vecteur de 4 bits afin de récupérer tous les bits un par un(j'aurai besoin pour un programme plus compliqué...)
bascd.h
#ifndef __bascd_h
#define __bascd_h
#include "systemc.h"
SC_MODULE(bascd)
{
sc_in<sc_bv<4> > en;
sc_in<bool> clock;
sc_out<sc_bv<4> > titi;
sc_bv<4> to;

void doit();
SC_CTOR(bascd)
{to=en.read();
SC_METHOD(doit);
sensitive_pos<<clock;
}
};
#endif

bascd.cpp
#include "bascd.h"

void bascd::doit()
{
//dout = din;
to.range(3,1)=to.range(2,0);
titi=to;
}
gene_sig.h
#ifndef __gene_sig_h
#define __gene_sig_h

#include "systemc.h"
SC_MODULE(gene_sig)
{ sc_out<sc_bv<4>> entre;
//sc_out<sc_bit> dout;
void gene();
SC_CTOR(gene_sig)
{
SC_THREAD(gene);
}
};
#endif
gene_sig.cpp
#include "gene_sig.h"

void gene_sig::gene(){
while(1) {
entre = "0000";
wait(5,SC_NS);
entre = "0101";
wait(25,SC_NS);
wait();
}
}

main.cpp
#include "bascd.h"
#include "gene_sig.h"
int sc_main(int argc, char* argv[]) {

sc_signal<sc_bv<4>> data1;
sc_signal<sc_bv<4>> tata;

const sc_time periode(10,SC_NS);
sc_clock clk("clk",periode);

gene_sig g1("g1");
g1.entre(data1);


bascd d1("d1");
d1.clock(clk);
d1.en(data1);
d1.titi(tata);

// trace file creation
sc_trace_file *tf = sc_create_vcd_trace_file("SystemC");
// External Signals
sc_trace(tf, clk.signal(), "clk");
sc_trace(tf, data1, "data1");
sc_trace(tf, tata, "tata");
sc_start(100,SC_NS);
sc_close_vcd_trace_file(tf);
return(0);
}
les insultes du compilateur sont les suivants:
1>c:\mes documents\visual studio 2005\projects\essai_systemc\essai_systemc\main.cpp(22) : error C2039: 'en' : n'est pas membre de 'bascd'
1> c:\\mes documents\visual studio 2005\projects\essai_systemc\essai_systemc\bascd.h(3) : voir la déclaration de 'bascd'
1>c:\mes documents\visual studio 2005\projects\essai_systemc\essai_systemc\main.cpp(23) : error C2039: 'titi' : n'est pas membre de 'bascd'
1>c:\mes documents\visual studio 2005\projects\essai_systemc\essai_systemc\bascd.h(3) : voir la déclaration de 'bascd'
et merci beaucoup...j'ai vraiment besoin d'aide...
0
loupius > galexie Messages postés 3 Statut Membre
 
Ben le compilateur est clair: dans le fichier 'bascd.h' lorsqu'il est appellé par 'main', il ne sait pas ce qu'est 'en' et 'titi'; moi non plus car 'en' et 'titi' ne sont pas définis dans ce fichier.
0
galexie Messages postés 3 Statut Membre
 
Mais ils sont déjà déclarés dans le fichier bascd.h :
sc_in<sc_bv<4> > en;
sc_out<sc_bv<4> > titi;
0
loupius
 
Qu'y-a-t-il dans systemc.h qui le fasse tiquer ?
0
galaxie > loupius
 
Je ne comprends pas ta question et moi non plus je comprends pas le souci, c'est vraiment très suspect et je ne vois pas du tout quoi faire sinon!!!!!!!
0
loupius > galaxie
 
Je ne comprends pas ce qu'est systemc.h.
Qu'est ce qu'est: int sc_main(int argc, char* argv[]) ? Je ne vois pas d'où vient ce tour de passe-passe.
Désolé, mais il faut que tu trouves quelqu'un de plus affuté que moi sur ce sujet.
Bonne chance.
0