Jump to content

SC_CTOR initialization error ???


rayzekus

Recommended Posts

I am a novice at SystemC (some OOP background but not much) ...

I am getting an error for the code below ... ../src/xor2.h:20:31: error: invalid initializer for array member 'nand<2> xor2::nand2 [4]'

I have much more complicated but netted my problem down to this much simpler and smaller example ...

#include "systemc.h"

template <int width>
SC_MODULE(nand) {
    sc_in<bool> A[width];
    sc_out<bool> F;

    void nand_func() {
        F.write(!and_reduce(A));
    }

    SC_CTOR(nand) {
        SC_METHOD(nand_func);
        sensitive << A;
    }
};

#include "systemc.h"

#include "nand.h"

SC_MODULE(xor2) {
    sc_in<bool> A, B;
    sc_out<bool> F;

    nand<2> nand2[4];

    sc_signal<bool> sig1, sig2, sig3;

    SC_CTOR(xor2) : nand2("NAND2") {
        nand2[0].A[0](A);
        nand2[0].A[1](B);
        nand2[0].F(sig1);

        nand2[1].A[0](A);
        nand2[1].A[1](sig1);
        nand2[1].F(sig2);

        nand2[2].A[0](sig1);
        nand2[2].A[1](B);
        nand2[2].F(sig3);

        nand2[3].A[0](sig2);
        nand2[3].A[1](sig3);
        nand2[3].F(F);
    }
};

I would greatly appreciate any help and suggestions of ways to use multiple template'd modules in this way ...

 

xor2.h

nand.h

Link to comment
Share on other sites

Thanks Ralph,

I tried what you suggested and that should be the right answer but I get the following error ...

../src/xor2.h:17:38: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
  sc_vector<nand<2> > nand2{"NAND2", 4};
                                      ^

As I said I am a novice at this ... and my next Q isn't SystemC but maybe you can help me ...

I am using Eclipse and Cygwin gcc ... Can I add the c++11option to fix the error I got?

Link to comment
Share on other sites

Assumes you are using a version of c++ that supports c++11, just add -std=c++11 to fix this problem or move the constructor arguments to the initializer list of your constructor, which will require abandoning the SC_CTOR macro in favor of full C++ constructor syntax. Or you  use the deferred vector construction.

Gcc 4.8 or newer supports c++11 if I recall correctly.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...