Jump to content


  • Posts

  • Joined

  • Last visited

Everything posted by thundium

  1. Thanks Philipp, yep, by removing the link.exe from Cygwin and rename the directory to MSVC10, it works perfect for me now.
  2. Hi ALl: My working environment is visual studio 2010 express + cygwin64. I followed the READNE_windows.txt in the systemc regression release and did following steps. SystemC unziped at c:\systemc-2.3.0 the regression at: C:\systemc_regressions-2.3.0 1. Opened systemc 2.3.0 msvc80 project and compiled (debug mode). 2. Visual studio command prompt (2010) - c:\cygwin64\Cygwin.bat - export SYSTEMC_HOME=/cygdrive/c/systemc-2.3.0 - export CXX=cl - make a "run" under /cygdrive/c/systemc_regressions-2.3.0 - and do "../scripts/verify.pl -g systemc" under the run 3. the perl script runs well, and I can see the setting prints are fine, like SYSTEMC_ARCH, SYSTEMC_HOME, TLM_HOME.... 4. All test failed and when I check the log, I got cl : Command line warning D9035 : option 'GZ' has been deprecated and will be removed in a future release cl : Command line warning D9036 : use 'RTC1' instead of 'GZ' async_reset.cpp Unknown compiler version - please run the configure tests and report the results LINK: extra operand ‘/NODEFAULTLIB:LIBCD’ Try 'LINK --help' for more information. Anyone have run the regression before and have any idea for the that? One thing I can think of is that the default VS dir is MSVC80 for SystemC while I am using MSVC10, systemc lib link failed? While I tried to compy msvc80 and renamed it to msvc10, still not working
  3. I see, seems the sc_start(xxx ns) will terminate everything without calling sc_stop
  4. Hi All: I got a given SystemC code running without end_of_simulation called. And I know "end_of_simulation" won't be called if sc_stop is not called. I debug into the code and see following situation. Code looks like void thread_a() //it is a sc thread { while(xxx) { wait(sc_time(x,SC_NS)); break 1 cout<<"xxxxx"<<endl; break 2 ---logics---- } sc_stop; } The last time I was stopped at breakpoint 1, then I did step next. Then instead of stopping at breakpoint 2 , I stopped at sc_main after sc_start. So it looks like the entire thread is stopped by others? What else than "sc_stop" can terminate the thread? Since my code in "end_of_simulation" is not triggered, I am sure that there is no other sc_stop in my programme that calling sc_stop. So what can be the backend hand doing that? Thanks a lot for all your help
  5. Hi All: Get to implement a timer module in SytemC-TLM. And it is at LT level. The Time used for interrupt generation is from sc_time_stamp. My current implementation is using TLM payload event queue, which means the timer caculates the expected wait time for the request and do "notify(x ns)" for the payload event queue. Which the drawback is: 1.When I add the cancel function for a ongoing time request, I can't delete the "time request" from the event queue. I do a workaround like saving some tags when the timeout happened to achieve the "cancel" 2.When I add a stop function for the timer, I also need a tag and did lots of workaround in order to fullfil the stop/re-start function. So, is there any foward way to do this? If i do my own queues instead of using Payload event queue(But I guess I still need to use notify(x ns) in some way), may I somehow delete a ongoing requests? Thanks BR
  6. Hi All: I have some modules which do different operations during "start_of_simulation" period. However, it turns that they are scheduled randomly.(?) And I would wish that one specified module to have its "start_of_simulation" always run 1st, is there a way to guarantee this? Thx
  7. Hi Everyone: I have touched SystemC/TLM for more that 1 year. And I did take some basic SystemC/TLM training before. And after gained some experience in this field, I would like to ask if anyone has a good suggestion on the "advanced" SystemC/TLM training? Or more focus on the SystemC kernel? Or there are other field I can strengthen? I checked for the website and find that those companies usually only have the basic training. And it would be nice to hear from any of you for any suggestion if I would like to strengthen my knowledge in SystemC/TLM(LT) field. Thanks a lot BR/Thundium
  8. Hi Philipp: Do you think if it is possible that I write some Code to realize that "try,catch" function with SystemC 2.2 ?
  9. Hi Everyone: An b_transport() can be blcoked for whatever time. Is that possible to abort/terminate an b_transport() call (I am at LT level)? For example I have three modules A,B,C A--> B(Thread) --> C A can send commands to B. B have a thread making operation to C (C can block B for some time). Now if B is blocking by b_transport() call to C, I will A can terminate that b_transport() call with a command. Is that possible? Or is there any good way to work around it? Thank you very much BR/Thundium
  10. If I just modifiy the previous code to following, it will crash and get "*** glibc detected *** " and " double free or corruption (fasttop): 0x081ffd30 ***" BTW: I used the test like: my_sub_m* a; a=new my_sub_m(1); //For my_sc_module, which works a=new my_sub_m("te"); //For sc_module, which breaks class my_sub_m:public sc_core::sc_module { public: my_sub_m(sc_core::sc_module_name na):sc_core::sc_module(na){ new (this)my_sub_m(na,5); } my_sub_m(sc_core::sc_module_name na, int x1):sc_core::sc_module(na) { } };
  11. Hi Philipp: There is some reasons behind which require me to use "constructor call to constructor". And I did get successed with following C++ code. (It should not be C++ 11 in my machine, not exactly sure). I can run it. So if I use sc_module instead of "my_sc_module", why it not works then?Some magaic inside sc_module? class my_sc_module{ public: my_sc_module(int my_sc_module_name){ h=my_sc_module_name; } int h; }; class my_sub_m:public my_sc_module { public: my_sub_m(int my_sc_module_name):my_sc_module(my_sc_module_name){ new (this)my_sub_m(my_sc_module_name,5); cout<<"my_sc_module_name = "<<h<<endl; } my_sub_m(int my_sc_module_name, int x1):my_sc_module(my_sc_module_name) { } };
  12. Hi All: I met a problem and need to use "constructor call to constructor". Can any one point out how shall do that? Since SystemC module inherits from sc_module, I am not sure where I made it wrong. (Maybe it is more about a C++ probelm). For my implementation, I got: Error: (E513) an sc_module_name parameter for your constructor is required And I made the two constructors like: sub_module(sc_core::sc_module_name n,int a,int b,int c) :sc_core::sc_module(n) { cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; cout<<"c = "<<c<<endl; } sub_module(sc_core::sc_module_name n) :sc_core::sc_module(n) { new (this)sub_module(n,t1,t2,t3); } If I delete the " new (this)sub_module(n,t1,t2,t3)", that constructor can be used. Thank you very much for your kind help Best Regards Thundium.
  • Create New...