-1
我是新來的systemC它可能看起來很愚蠢,但我會感謝幫助。 在下面的代碼SystemC:讀取()和寫入()到端口不工作
- 在主要功能:寫(),以
aa
和bb
示出了值0使用aa.read()
和bb.read()
這應該是10和20 - 同時,我認爲它應該進入方法閱讀時
do_add()
在加法器模塊中,因爲它對a
和b
和b
和a
,b
敏感,所以它們被綁定到aa
和bb
信號,但它不會調用方法do_add()
。它是如何工作的,代碼中是否有錯誤?
編譯代碼:
g++ -I. -I$SYSTEMC_HOME/include -L. -L$SYSTEMC_HOME/lib-linux64 -Wl,-rpath=$SYSTEMC_HOME/lib-linux64 -o out adder.cpp -lsystemc -lm
./out
#include "systemc.h"
#define WIDTH 32
SC_MODULE(adder) {
sc_in<sc_uint<WIDTH> > a, b;
sc_out<sc_uint<WIDTH> > sum;
void do_add() {
// cout<<"hello"<<endl;
// cout<<a.read()<<b.read()<<"\n";
sum.write(a.read() + b.read());
// cout<<sum.read()<<endl;
}
SC_CTOR(adder) {
SC_METHOD(do_add);
sensitive << a << b;
}
};
int sc_main(int argc, char* argv[]) {
sc_signal<sc_uint<WIDTH> >aa,bb;
adder add("Adder");
add.a(aa);
add.b(bb);
aa.write(10);
bb.write(20);
cout<<aa.read()<<bb.read()<<"\n";
}
用戶指南非常有幫助謝謝你的建議 – programmer