Член объекта b не может писать в Systemc - PullRequest
0 голосов
/ 21 июня 2020

Привет, друг, я получил эту ошибку в системе c, и я не понимаю, почему. Ошибка

  • 'write': не является членом 'sc_core :: sc_in' ConsoleApplication1
  • 'write': не является членом 'sc_core :: sc_in'
  • класса «sc_core :: sc_in» не имеет члена «write»
  • класс «sc_core :: sc_in» не имеет члена «write»

Здесь я собрал код.

#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;


}

Если ошибка кажется сбивающей с толку, я собрал изображение моей ошибки Экран печати ошибки

1 Ответ

0 голосов
/ 21 июня 2020

Порт «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;
}

Then

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
...