Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by sonalidutta

  1. Hi, I want to access the unique process id of a SystemC process P inside process P. Can I do that? If yes, what is the API for that? The base class for all sc_process is class sc_process_b. sc_method_process and sc_thread_process are derived from it. sc_process class has a public member variable, called proc_id. This denotes the unique id of a process. My question is how to access this id inside the process itself. For example: Inside process P: std::cout << proc_id << std::endl; does not work! Thanks Sonali
  2. In http://www.cs.rice.edu/CS/Verification/Theses/Archive/dtabakov_dissertation2010.pdf: An assertion is an LTL formula with a set of sampling points that describes a formal property of your SystemC model under verification. In Assertion-based Dynamic Verification of SystemC models, each assertion is converted to a C++ monitor class. A C++ monitor class is just a C++ encoding of a deterministic finite automaton. The transition function of the DFA is encoded as a step() function in the monitor class. Now the question is when and how frequently to execute the step() function of a monitor
  3. Dear Alan, Thanks for you reply. I would like to see some example how to use SCV_EXTENSIONS_BASE_CLASS macro. The scv package or the manual doe not have any example. Also I want to do the following: 1. Define a base class A. 2. Define two classes B, C derived from A. 3. I want to track the value changes of the member variables of class B and C. - So I need to define scv_extensions for them. 4. Now I want to use polymorphism: use base class point A* to point derived class objects new B() and new C(). Also I want to define function f(A* a) that actually receives objects o
  4. Companies like Intel, TI, Cadence, Synopsys are working actively on different SystemC projects, mainly using it to build firmware, hardware system prototypes to develop the software etc. Also SystemC is still in research phase. The best deal is to work on some industrial project or in some research lab. Institutions having interesting SystemC projects to work on are hard to find, especially in India.
  5. This is an empty post. Not able to delete it.
  6. Here is a few general questions about the limitations SCV might have: 1. Hierarchical Types: To use scv_smart_ptr of class A, I need to define SCV_EXTENSIONS(A). Now suppose, class A is a subclass of class B. For example: class B{ public: int attB1; protected: int attB2; ... }; class A: public class B{ public: int attA1; private: std::string attA2; ... }; Now how do I define SCV_EXTENSIONS(A)? Does SCV support this? Do I need to define SCV_EXTENSIONS( B ) too? 2. C++ library types: std::vector, std::list, std::map ... SCV has already defined SCV_EXTE
  7. Dear Alan, Thanks for the quick reply. I want to use SCV to call a callback function f() whenever any member variable of an object "a" of class A will be written a new value. Also f() will use the object "a" inside it. My guess is that I can take any of the following two approaches: Approach 1. - define SCV_EXTENSIONS(A). - instantiate a as: scv_smart_ptr<A> a; - define callback function f() as: void f(scv_extensions_if& a_ext, scv_extensions_if::callback_reason r) { if ( r == scv_extensions_if::VALU
  8. I would suggest you to read the systemC manual A to Z. It is very well-written. It is more like a book than manual. I learned it in that way. Also http://emedia.art.sunysb.edu/debt/downloads/books/System%20Design%20with%20SystemC.pdf is a good book for the initial stage.
  9. SystemC kernel simulates parallel execution of hardware. Processes suspends and resumes. A process can suspend itself and wait for an event to take place. When the event happens, that process resumes its execution. This is the most important power of SystemC. You cannot gain this advantage using flags, even inside the same module.
  10. You cannot use blocking calls in SC_METHOD process. If you really need to use it, use SC_THREAD process instead. SC_THREAD has all the expressive powers that SC_METHOD has.
  11. Dear all, I have some questions about usage of SCV. Is it the right place to post them? Thanks Sonali
  12. Dear Alan, I installed fresh systemc-2.3.0 in /root/Desktop/systemc-2.3.0 [root@localhost systemc-2.3.0]# pwd /root/Desktop/systemc-2.3.0 In Desktop I have created hello_world.cpp Now I run: [root@localhost Desktop]# g++ -I /root/Desktop/systemc2.3.0/include/ -L /root/Desktop/systemc2.3.0/lib-linux64/ -Xlinker -rpath -Xlinker /root/Desktop/systemc2.3.0/lib-linux64/ hello_world.cpp -lsystemc hello_world.cpp:1:21: error: systemc.h: No such file or directory hello_world.cpp:3: error: expected constructor, destructor, or type conversion before ‘(’ token Wierd!!! But my adde
  13. Alan, I changed the name from modified_systemc-2.3.0 to systemc-2.3.0 and reinstalled. But I still has the same issue. As you said I did: ldd addy and here is what I get: [root@localhost adders1]# ldd addy linux-vdso.so.1 => (0x00007fffefb72000) libsystemc-2.3.0.so => not found libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000032b3600000) libm.so.6 => /lib64/libm.so.6 (0x00002b666f186000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000032aee00000) libc.so.6 => /lib64/libc.so.6 (0x00002b666f409000) /lib64/l
  14. Here is my analysis: In you look at systemc-2.3.0/configure: you will see some variables are set in there: PACKAGE=systemc VERSION=2.3.0 And there are many others like this. Search configure file for "systemc" and you will find them. My guess is that these variables are being used to setup default LD_LIBRARY_PATH. Since I have changed the package name from systemc-2.3.0 to modified_systemc-2.3.0, the default path does not work for me anymore. I will run some experiments now to see if I am right. Regards Sonali
  15. Thank you for replying. If you look at the Makefile in my earlier post I do the same thing. This is what I do not want to do. Why do I need to export it explicitly? I do not need to do with systems-2.3.0. I only need it with my modified version modified_systemc-2.3.0.
  16. My guess is that I have both systems-2.3.0 and modified_systemc-2.3.0 in the same path. So the linker by default finds the .so files in systemc-2.3.0/lib-linux64 and it does not complain. But the adder Makefile points to the modified_systemc-2.3.0 and that is when it gives error. Yes. I will try this and let you know Alan. Thanks.
  17. Hi, This was just a toy example. I was going through SystemC manual and had this doubt.
  18. Dear Alan, Thank you for your response. Unmodified systemc-2.3.0 automatically sets LD_LIBRARY_PATH. I did grep -r "systemc-2.3.0" * in uninstalled systemc-2.3.0 package to identify the potential place where I need to modify to set LD_LIBRARY_PATH automatically in my modified version of systemc-2.3.0. Here is the result: [root@localhost systemc-2.3.0]# grep -r "systemc-2.3.0" * examples/tlm/build-msvc/Makefile.config:SYSTEMC = C:\SystemC\systemc-2.3.0\msvc80 examples/tlm/build-msvc/systemc.vsprops: Value="C:\SystemC\systemc-2.3.0\msvc71" examples/tlm/build-msvc/MakefileVC9
  19. Hi, I am working on Assertion Based Dynamic Verification of SystemC models. To expose some states of the kernel to the runtime monitors I am doing some minimal modification to the SystemC-2.3.0 kernel. I added 4 new files: mon_prototype.cpp/h mon_observer.cpp/h I also did some minimal modification(adding callbacks) to: sc_event.cpp/h sc_sim_context.cpp/h sc_object.cpp/h sc_thread_process.h I did the required modification to : systemc-2.3.0/src/systemc. For installation I modified: 1. /systemc-2.3.0/src/sysc/kern
  20. Hi, Let us consider the following example: sc_event a, b; .... SC_CTOR(...){ SC_THREAD(p); sensitive << a << b; } My question is process p here is statically sensitive to (a and b ) OR (a or b )? I went through the relevant parts of 1666-2011_systemc_manual.pdf. But still I did not find the exact answer. If anyone knows the answer, it will be great! Thanks Sonali
  21. Hi Philipp, Yes. I ran ../configure before gmake. Probably you are right! But I will move on since everything is working now. Thanks for your help. I appreciate that you pointed out about the parameters of aclocal specifically -I config. Something I got to learn! So dealing with these nasty errors sometimes gives you valuable knowledge. Not that bad! Thanks Sonali
  22. Hi Philipp, Thanks for the reply. But autoreconf basically does nothing extra than running aclocal, automake and autoconf individually. But as you said, I tried to recreate the error. Here is what I did: 1. I deleted autoconf-1.10 from my system using make distclean 2. I installed autoconf-1.10.1 3. Now I took a fresh systemc-2.3.0(configure.in and /src/sysc/kernel/Makefile.am modified) 4. I ran autoreconf -v -i Here is the output: [root@localhost test]# autoreconf -v -i autoreconf: Entering directory `.' autoreconf: configure.in: not using Gettext autoreconf: running: a
  23. Thanks Alan. It will be really great at least for the beginners like me. I hate to spend time on fixing this kind of issues.
  24. Dear Developer, Here is the solution. For installation I modified: 1. /systemc-2.3.0/src/sysc/kernel/Makefile.am to add the new 4 files I have added to kernel (see above for detail) 2. /systemc-2.3.0/configure.in to add a new flag called -DDEBUG_PRINT_IN_SCHEDULER Now I ran: autoconf: This takes aclocal.m4 and configure.in as input and generates ./configure file as output. automake: This takes configure.in and Makefile.am as input and generates Makefile.in as output. Now I follow the steps in INSTALL file for the rest of the installation process. I must mention he
  • Create New...