Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by AmeyaVS

  1. AmeyaVS

    Scope of SC_HAS_PROCESS

    Hello @Hook, The "systemc.h" header file actually include the "systemc" header, if you look at the source. Note: Reproduced below a section of the systemc.h header from SystemC release 2.3.3 202 using std::memset; 203 using std::strerror; 204 using std::strlen; 205 206 // deprecated strstream support 207 #if defined( SC_INCLUDE_STRSTREAM ) 208 #include <strstream> 209 210 using std::strstream; 211 using std::strstreambuf; 212 using std::istrstream; 213 using std::ostrstream; 214 215 #endif // SC_INCLUDE_STRSTREAM 216 217 // INCLUDE SYSTEMC DEFINITIONS for sc_dt AND sc_core NAMESPACES: 218 219 #include "systemc" 220 221 // USINGS FOR THE sc_dt NAMESPACE: 222 223 using sc_dt::SC_BIN; 224 using sc_dt::SC_BIN_SM; 225 using sc_dt::SC_BIN_US; But it also exports the symbols from the SystemC sc_core and sc_dt namespace in the global scope(as evident from the above snippet). You can find relevant discussion here: https://stackoverflow.com/questions/10269012/global-scope-vs-global-namespace https://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice It is generally considered a bad C++ coding guideline to export everything in the global scope. Hope it helps. Regards, Ameya Vikram Singh
  2. AmeyaVS

    What is SystemC library special in?

    Hello @Elvis Shera, The G++ Compiler 7.3.0 by default enables C++14, and your SystemC library is build using C++14 standard. You can change the line in your CMakeLists.txt to be: set(CMAKE_CXX_STANDARD 14) # enable C++14 standard and it should work now. Hope this helps. Regards, Ameya Vikram Singh
  3. AmeyaVS

    What is SystemC library special in?

    Hello @Elvis Shera, It seems your SystemC library has been build with different C++ standard flag. Can you post the output of following commands?: # Compiler version you are using g++ -v # Library Properties: nm -C $SYSTEMC_HOME/lib-linux64/libsystemc.so | grep api_version Regards, Ameya Vikram Singh
  4. AmeyaVS

    What is SystemC library special in?

    Hello @Elvis Shera, It seems the following line seems suspicious: The compiler flag -c is only required by gcc to create object files from translation units. Here's a quote from gcc documentation: For example, the -c option says not to run the linker. Then the output consists of object files output by the assembler. Try removing the option -c and try again. CMake would already handle the scenario internally. Hope this helps. Regards, Ameya Vikram Singh
  5. AmeyaVS

    What is SystemC library special in?

    Hello @Elvis Shera, Can you post the CMakeLists.txt you have for your example? It would be easier to suggest a solution. But If you want to take a look at minimal example of using CMake throughout for SystemC library, as well as building models you can have a look here: https://github.com/AmeyaVS/SystemC_ramblings/tree/master/src/01_SystemCTest Though to be honest it has been sometime since I have updated these, but basic concept are same. Hope it helps. Regards, Ameya Vikram Singh
  6. Hello @kallooran, Try setting the environment variable LD_LIBRARY_PATH as mentioned below: export LD_LIBRARY_PATH=$SYSTEMC_HOME/lib-linux64 # or this if the library containing the libsystemc.so is under $SYSTEMC_HOME/lib # export LD_LIBRARY_PATH=$SYSTEMC_HOME/lib Also what is the command line used to build the project? (Example as mentioned below) # e.g.: # Compilation $ g++ -Wall -g -I$SYSTEMC_HOME/include -c main.cpp # Linking $ g++ main.o -L$SYSTEMC_HOME/lib-linux64 -o sim -lsystemc Hope it helps. Regards, Ameya Vikram Singh
  7. Hello @kallooran, Can you post the command line you are using to build your models with? Also, if possible share the following environment variable also: echo $SYSTEMC_HOME echo $LD_LIBRARY_PATH Currently with the title above is not enough to provide an educated guess about the environment you are using. Regards, Ameya Vikram Singh
  8. Hello @kallooran, What version of SystemC library are you using? This issue has been fixed in the release of SystemC-2.3.2. You can find the latest release of SystemC-2.3.3 here: http://accellera.org/downloads/standards/systemc Hope it helps. Regards, Ameya Vikram Singh
  9. AmeyaVS

    Sensitive List

    Hello @Aaron Yang, The sc_fixed is a datatype, which is evident from the error message you are getting: sc_dt::sc_fixed<16, 2> ^ | This denotes the sc_fixed is from the sc_datatype namespace. As @Roman Popov has mentioned in his answer you cannot make the process sensitive to a non-channel variable. Changing the line: sc_vector<sc_fixed<din_size, din_int>> in_val{"in_val", din_num_samples}; To: sc_vector<sc_signal<sc_fixed<din_size, din_int> > > in_val{"in_val", din_num_samples}; // or this // since it is not clear where the fir_main thread exists. sc_vector<sc_in<sc_fixed<din_size, din_int> > > in_val{"in_val", din_num_samples}; //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // For this you will need to bind it with sc_vector of sc_signals of the datatype // sc_fixed< > type at the parent level module. At the core of the implementation the SystemC sensitive only takes in only sc_events. As for the overload it is better to create a utility header for development purposes which you can include in your project for development purposes. Better not to disturb the systemc.h header file inadvertently making it unusable due to bad edits. Hope this helps. Regards, Ameya Vikram Singh
  10. AmeyaVS

    Behavioral XOR Gate with Delay

    Hello @re1418ma, You can look at this example: http://forums.accellera.org/topic/5678-clock-to-q-propagation-delay/?do=findComment&comment=13657 Or this one which shows how to add delay in full adder: http://forums.accellera.org/topic/5715-delaying-simulated-execution/?do=findComment&comment=13844 Hope it helps. Regards, Ameya Vikram Singh
  11. AmeyaVS

    Behavioral XOR Gate with Delay

    Hello @re1418ma, This has been already discussed before here: http://forums.accellera.org/topic/5715-delaying-simulated-execution/ Hope it helps and if you have further questions please feel to ask. Regards, Ameya Vikram Singh
  12. Hello @Philipp A Hartmann, It seems to be an issue with this test scenario.(systemc/1666-2011-compliance/living_dead_bug) I tried running the regression test suite on another system and except for this test, all the other tests passes. Regards, Ameya Vikram Singh
  13. Hello everyone, Has anyone faced issues with Linux Build for SystemC 2.3.2 configured with PThreads as the threading library backend? I have configured the SystemC library using the following command: cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$HOME/apps/systemc-2.3.2 -DCMAKE_CXX_STANDARD=11 -DCMAKE_CXX_EXTENSIONS=OFF -DENABLE_PTHREADS=ON -DENABLE_PHASE_CALLBACKS=ON .. # Then followed by make # make check # and make install I having issues with the SystemC kernel getting stuck in deadlock. I am currently working on Ubuntu 18.04 using g++: g++ (Ubuntu 7.3.0-16ubuntu3) 7.3.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Though I do not experience such issues with the QuickThreads back-end, but for now I need SystemC kernel with PThreads support. I have attached the back-trace of a minimal example/regression test from the test-suite which triggers this behavior:(systemc-regressions-2.3.2) TEST : systemc/1666-2011-compliance/living_dead_bug/living_dead_bug.cpp (11/871) Note: This behavior is also observed with SystemC 2.3.1a release. Best Regards, Ameya Vikram Singh SystemC.RaceCondition.GDB.BackTrace.txt
  14. Hello @Philipp A Hartmann, I have probably seen this behavior in other regression tests also. But currently I do not recall all of them, this one was the first one to deadlock. I will try to run the regression test-suite with individual tests and post the results whenever I get a chance. Thanks and Regards, Ameya Vikram Singh
  15. Hello @Philipp A Hartmann, Thank you for your reply. Unfortunately even after applying the changes the issue still persists. In-case you need more inputs do let me know. Thanks and Regards, Ameya Vikram Singh
  16. Hello @Roman Popov, It seems the issue is consistent with multiple different Linux OS with recent versions of GLIBC. From what I could figure out was the internal implementation for pthread mutex and condition variables have been updated. I will try to find the discussion on the same, but for now I think it would be better if someone from working group could also provide some insight into the issue. Regards, Ameya Vikram Singh
  17. AmeyaVS

    SystemC 2.3.2 on Ubuntu 18 and Eclipse

    Hello @RaviS, You can download the Latest Eclipse package from their website which does work on Ubuntu 18.04. Eclipse CDT download the package most pertinent to your system.(e.g. Ubuntu 64-bit download the Linux 64-Bit package.) The Eclipse IDE is very well supported on latest Linux Environments. Regards, Ameya Vikram Singh
  18. Hello @Roman Popov, I did try it on Ubuntu 16.04 with GCC 5.4.0, and currently I do not observe this behavior. Probably some regression in the base system, I will try to narrow it down once I get some time. I just wanted to give a heads-up in-case there is an issue with the SystemC kernel. Since, most of the application packaged on these Linux systems do get some form of regression testing. Regards, Ameya Vikram Singh
  19. AmeyaVS

    Build error with 2.3.2

    Hello @katang, Did you set the CXX_STANDARD in CMakeLists.txt? Here is an example: https://github.com/AmeyaVS/SystemC_ramblings/blob/master/src/01_SystemCTest/CMakeLists.txt Also while building SystemC 2.3.2 did you configure it with -DCMAKE_CXX_STANDARD=11? Hope it helps. Regards, Ameya Vikram Singh
  20. AmeyaVS

    Build error with 2.3.2

    Hello @katang, It seems you have mixed C++ standard in your build system. Please have a look here: Hope it helps. Ameya Vikram Singh
  21. AmeyaVS

    SystemC code running with testbench

    Hello @ssingh.codesupport, There are multiple issues here. It would really good if you can go through the following discussions and develop an understanding about the SystemC simulation workflow. In-case you still have questions you can post you queries here. Hope it helps. Regards, Ameya Vikram Singh
  22. AmeyaVS

    A void value confusion

    Hello @katang, The compiler message is quite right as mentioned by @Eyck. The Compiler sees the code something like this: void Dendrit_Set(int index, int value) { *(mNeuron->dendrit[index].write(value)); } Basically the operator precedence is at play here(refer here for more details). Compiler sees that you are trying to dereference a void type, since the write method of the sc_signal returns void. Hope it helps. Best Regards, Ameya Vikram Singh
  23. AmeyaVS

    A SystemC installl problem on Ubuntu

    Hello @katang, Is there a specific reason for using SystemC 2.3.1 release? This issue has already been fixed in the SystemC 2.3.2 release as mentioned by @maehne. Best Regards, Ameya Vikram Singh
  24. AmeyaVS

    VCD dump with Hierarchy systemc-2.3.2

    Hello @kjhyland, While adding signals using sc_trace did you provide the hierarchical names of the signals? Best Regards, Ameya Vikram Singh
  25. AmeyaVS

    make check return fail

    Hello @LookBad, Sorry, I don't have a macOS environment readily available with me. Maybe someone else might be able to help you with that, or better would be if you could use a Linux VM for exploration. Regards, Ameya Vikram Singh