Jump to content

SystemC 2.3.2 Public Review Now Open


Lynn Garibaldi

Recommended Posts

The Accellera SystemC Language Working Group has released the proposed SystemC 2.3.2 for testing and feedback from the community. This is a maintenance release with some new features including a foundation for C++11/14 enablement, a centralized global name registration enabling CCI naming requirements, new TLM socket and sc_signal base classes, and updated compiler and platform support including Windows DLL support and an experimental CMake build system. There are also many bug-fixes and general clean-up. Licensed under Apache 2.0, the release package contains the SystemC class library and the regression test suite. It can be downloaded here.

The review period is open until May 31, 2017. Feedback is welcome and can be submitted either by email to review-systemc@lists.accellera.org or via this forum.

Link to comment
Share on other sites

Hello Everyone,

I tried building the SystemC-2.3.2 draft release.

The first failure I hit was the built-in make check tests failing under newer build environment.

This problem has already been discussed in the forum:

One possible solution(which is a temporary fix) has been discussed:

Better solution would be to rename the examples folders under(It would also require some changes in the autotools config files):

<SystemC Source>/examples/sysc/2.1 and <SystemC Source>/examples/sysc/2.3
  
  to
  
<SystemC Source>/examples/sysc/SC2.1 and <SystemC Source>/examples/sysc/SC2.3
  
repectively.

I will try to send a patch for fixing the build.

P.S:  On the side note:

  • Would it be possible to have an official publicly hosted repository? (Something on the lines of Github/Bitbucket, where one can provide patches or fixes to the issues).
    • Provide faster turn around time to fix issues than waiting for an official release or comments.
    • Better than polluting the forums with build issues, partial workarounds and patches floating around.
    • Also it would not lead to spamming of the  review-systemc@lists.accellera.org list with people facing similar issues or bug reports.

It would be better that people discuss technically on SystemC usage and other issues or possible help/suggestions on the forum.

 

I would love to hear from senior members of the forum on the same.

 

Best Regards,

Ameya Vikram Singh

Link to comment
Share on other sites

Hello,

Also hit a build issue when mixing different compiler standard compiler flags:

The build error:

SystemC review error: when building example using c++11 option and compiler supports: C++14 also.

CMakeFiles/systemc.run.dir/src/main.cpp.o: In function `__static_initialization_and_destruction_0':
/home/ameya/sysc2.3.2_rew/include/sysc/kernel/sc_ver.h:179: undefined reference to `sc_core::sc_api_version_2_3_2_cxx201103L<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_2_cxx201103L(sc_core::sc_writer_policy)'

Compiler used g++ 6.3

Using same compiler to build systemc-2.3.1a results in no issues, also when mixing C++ standard compiler flags to build SystemC models.

While building the SystemC_2.3.2_draft one has to maintain the C++ standard compiler flags(-std=c++11 or -std=c++14), that is supported by the g++ compiler by default and any project using overridden standard compiler flags also needed to be updated to to default compiler standard flags.

Here are the differences in the symbols generated by the same compiler over different versions of systemc:

SystemC-2.3.1a: (Using g++ 6.3.0)

000000000000023e T sc_core::sc_api_version_2_3_1<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_1(sc_core::sc_writer_policy)
000000000000023e T sc_core::sc_api_version_2_3_1<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_1(sc_core::sc_writer_policy)
000000000000002c b sc_core::sc_api_version_2_3_1<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_1(sc_core::sc_writer_policy)::default_writer_policy_config
000000000000002a b sc_core::sc_api_version_2_3_1<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_1(sc_core::sc_writer_policy)::default_writer_policy_config_seen

SystemC-2.3.2-draft review:(Using g++ 6.3.0)

00000000000007d0 T sc_core::sc_api_version_2_3_2_cxx201402L<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_2_cxx201402L(sc_core::sc_writer_policy)
00000000000007d0 T sc_core::sc_api_version_2_3_2_cxx201402L<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_2_cxx201402L(sc_core::sc_writer_policy)
0000000000000028 b sc_core::sc_api_version_2_3_2_cxx201402L<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_2_cxx201402L(sc_core::sc_writer_policy)::default_writer_policy_config
000000000000002c b sc_core::sc_api_version_2_3_2_cxx201402L<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_2_cxx201402L(sc_core::sc_writer_policy)::default_writer_policy_config_seen

Can anyone comment why C++ standard specific API specs are required?

For now I can circumvent the issue while setting either no compiler standard flags, or commenting out the compiler standard is passed into the build system.

Is the SystemC library will be following this trend to build different version supporting different compiler standard flags?

  • Note: As per cursory look into the source code I don't see any other API dependency to have information about the C++ standard being used to build and compile the SystemC library and the SystemC models.

 

Would like to hear community members thoughts on this?

Best Regards,

Ameya Vikram Singh

Link to comment
Share on other sites

  • 1 month later...

Hi Ameya,

thanks for testing the 2.3.2 public review release!  You mentioned, that you saw 15 errors when running the regressions on your platform?  Would it be possible to share the list of failing tests and your platform/compiler versions?

As you may have seen, I have opened a new topic about your C++ standard question here:

On 3/1/2017 at 8:09 AM, AmeyaVS said:

The first failure I hit was the built-in make check tests failing under newer build environment.

Thanks for the analysis and the reporting of the issue.  I have prepared a fix for the 2.3.2 final release which avoids the need for the synthesis of the ..._FILTER variable in test script. Instead, the optional filter is substituted directly from within the Makefile and GNU make supports variables starting with a digit.

 

On 3/1/2017 at 8:09 AM, AmeyaVS said:

Would it be possible to have an official publicly hosted repository? (Something on the lines of Github/Bitbucket, where one can provide patches or fixes to the issues).

This topic is under discussion since quite some time both inside and outside of Accellera.  The best option to contribute patches/fixes to the SystemC proof-of-concept implementations is of course to join the corresponding Accellera Working Groups. If this is not an option, let's continue to use this community forum for public discussions around SystemC and its proof-of-concept implementation. 

Greetings from Duisburg,
  Philipp

Link to comment
Share on other sites

  • 9 months later...

Hi,

While running a custom  library under SystemC 2.3.2, I am getting the following error.

In function `__static_initialization_and_destruction_0':
/sc_ver.h:179: undefined reference to `sc_core::sc_api_version_2_3_2_cxx201103L<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_2_cxx201103L(sc_core::sc_writer_policy)´

I looked into this problem and it seems like it is related to the C++ standard.

before build SystemC 2.3.2 I configured it:  ../configure --prefix=/users/systemc-2.3.2 

In make file I am using CXXFLAGS="-DSC_CPLUSPLUS=201103L" for c++11 standard but the error is still the same.

Link to comment
Share on other sites

Hello @shanh,

When you are linking your application/library to SystemC library you need to specify the C++ standard flags:

// For G++ C++11
g++ -std=c++11

// For G++ C++14
g++ -std=c++14

You add these options to the build system configuration options for your application/library build.

Regards,

Ameya Vikram Singh

 

Link to comment
Share on other sites

  • 1 month later...

Hi @shanh

I got the same error when trying to update my compiler from gcc 4.4 to gcc 7.3. 

I think it depends on what standard library version you used to build systemC, and when you build your application, you have to use the same c++ version.

You can check the version of

 `sc_core::sc_api_version_2_3_2_cxx201103L<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_2_cxx201103L(sc_core::sc_writer_policy)´

by using 'nm libsystemc-2.3.2.so', and find 'sc_api_version...' in the output.

In my case, I got something like this:

'00000000000bbf10 T _ZN7sc_core31sc_api_version_2_3_2_cxx201402LIXadL_ZNS_34SC_DISABLE_VIRTUAL_BIND_UNDEFINED_EEEEC1ENS_16sc_writer_policyE'

So, after I added '-std=c++14' to the Makefile of my application, it seems to work.

Hope it helps.

Link to comment
Share on other sites

  • 2 years later...
On 3/30/2018 at 2:11 PM, mli said:

Hi @shanh

I got the same error when trying to update my compiler from gcc 4.4 to gcc 7.3. 

I think it depends on what standard library version you used to build systemC, and when you build your application, you have to use the same c++ version.

You can check the version of

 `sc_core::sc_api_version_2_3_2_cxx201103L<&sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_>::sc_api_version_2_3_2_cxx201103L(sc_core::sc_writer_policy)´

by using 'nm libsystemc-2.3.2.so', and find 'sc_api_version...' in the output.

In my case, I got something like this:

'00000000000bbf10 T _ZN7sc_core31sc_api_version_2_3_2_cxx201402LIXadL_ZNS_34SC_DISABLE_VIRTUAL_BIND_UNDEFINED_EEEEC1ENS_16sc_writer_policyE'

So, after I added '-std=c++14' to the Makefile of my application, it seems to work.

Hope it helps.

Exact! Setting the makefile with c++14 sort everything out! 

Thanks! 

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