b 对象的成员不能在 SystemC 中写入

Member of b object can't write in SystemC

我在 SystemC 上遇到这个错误,我不明白为什么。错误是:


这里我整理了代码

#include<systemc.h>

SC_MODULE(prin) {

    sc_in<bool> a;

    void print() {

        cout << "Hello World\n";
    }

    SC_CTOR(prin) {

        SC_METHOD(print);
        sensitive << a;

    }
};

SC_MODULE(input) {
    prin b;

    void in() {
        b.a.write(false);
        wait();
        b.a.write(true);
        wait();

    }

    SC_CTOR(input) : b("sds"){

        SC_THREAD(in);
    }
};

int sc_main(int argc, char* argv[]) {
    input prin1("pint");
    sc_start();
    return 0;


}

如果错误看起来很混乱,我在这里把我的错误图片放在一起:

端口“a”是输入端口,因此无法写入。如果将其设为输出端口,则可以对其进行写入。此外,端口未绑定,因此您也会收到错误消息,因此我已将信号绑定到它,以便编译。

#include <systemc.h>

SC_MODULE(prin) {

    sc_out<bool> a; //output port
    sc_signal<bool> sig; //something to bind port a to

    void print() {
        cout << "Hello World\n";
    }

    SC_CTOR(prin) {
        SC_METHOD(print);
        sensitive << a;
        a(sig); //bind port a to s signal
    }
};

SC_MODULE(input) {
    prin b;

        void in() {
        b.a.write(false);
        wait();
        b.a.write(true);
        wait();
    }

    SC_CTOR(input) : b("sds"){
        SC_THREAD(in);
    }
};

int sc_main(int argc, char* argv[]) {
    input prin1("pint");
    sc_start();
    return 0;
}

然后

g++ -file.cpp -lsystemc
./a.out

给我输出

    SystemC 2.3.2-Accellera --- Apr 16 2018 00:15:03
    Copyright (c) 1996-2017 by all Contributors,
    ALL RIGHTS RESERVED

Hello World