All Activity

This stream auto-updates   

  1. Today
  2. My suggestion would be to implement this example and see what happens. In a process you will learn most of TLM-2.0 concepts.
  3. Yes. You can exclude some process from initialization phase by calling dont_initialize() after creating process. For example: SC_METHOD(methodOne) ; sensitive << terminateMethod_ev ; dont_initialize();
  4. Dear Adiga, Thanks for the explanation with a code snippet.. the messages: "Method One Processing....! @ 0 s", "Thread One Processing....! @ 0 s" "Thread Two Processing....! @ 0 s",, are because of Initilaization phase(first phase of simluation cycle) I guess..correct me if I am wrong. Regards darshan
  5. Thank You Roman for the file link.. I read the Simulation chapter and understood how SC_THREAD and SC_METHOD run and how SystemC channels are updated in evaluation and update phases.. Thanks once again:-)
  6. Hello, As Roman Popov rightly pointed out the processes can run in parallel and this is crucial to model the hardware behavior as well. Spec states that at time 0 all processes (SC_METHOD and SC_THREAD) will run in an undefined order until they suspend. The ordering of the processes may not be of much importance here as it has no impact on the overall behavior of the system. However, the ordering may be based on the order in which you define these processes in the constructor. May be experts can throw some lights on this. If you look at the following code and the simulation result, class ThreadOrdering : public sc_module { public: SC_CTOR(ThreadOrdering) { SC_METHOD(methodOne) ; sensitive << terminateMethod_ev ; SC_THREAD(threadOne) ; SC_THREAD(threadTwo) ; } void threadOne() { cout << "Thread One is Running...! @ " << sc_time_stamp() << endl; wait(1.0, SC_NS); cout << " Thread One Processing Done @ " << sc_time_stamp() << endl; } void threadTwo() { cout << "Thread Two is Running...! @ " << sc_time_stamp() << endl; wait(1.0, SC_NS); terminateMethod_ev.notify(); cout << " Thread Two Processing Done @ " << sc_time_stamp() << endl; } void methodOne() { cout << "Method One Processing...!" <<" @ " << sc_time_stamp() << endl ; next_trigger(terminateMethod_ev); } private: sc_event terminateMethod_ev; }; Simulation Result Compile done. Starting run... SystemC 2.3.1-Accellera --- Jun 1 2014 14:49:19 Copyright (c) 1996-2014 by all Contributors, ALL RIGHTS RESERVED Method One Processing...! @ 0 s Thread One is Running...! @ 0 s Thread Two is Running...! @ 0 s Thread One Processing Done @ 1 ns Thread Two Processing Done @ 1 ns Method One Processing...! @ 1 ns Thanks, R.Adiga
  7. Hi @darshanKM, This is a discussion forum, not your homework/assignment discussion platform. It would be better if you could show what you came up with and discuss anything that you are not able to understand. I would recommend exploring the SystemC documentation directory(i.e. docs directory when you would have installed the SystemC library or when you downloaded the SystemC library sources.). Regards, Ameya Vikram Singh
  8. Yesterday
  9. Hello, All the answers can be found in standard: Questions are tricky, so it's hard to guess answers without reading documentation carefully. Especially: Afaik, standard does not prohibit running processes in parallel, in case it is invisible to user. So implementation of standard can run some processes in parallel. But Accellera opensource SystemC implementation is single-threaded.
  10. Hi all, I am studying SystemC as a course in my Master program. I have a qestion on Temporal Decoupling.. I have attached the question directly and please somebody can give a try and it would be of great help.. You can fill in the boxes and upload the file again..:-) Thanks in advance! Regards Ponnanna KM
  11. Hi all, I am new to SystemC and I have a course in my current semester. It would be great if someone answers my below questions: Case1: Consider a SC_MODULE(mod_1) with two SC_THREAD(p1); SC_THREAD(p2); Question1: which thread starts first? Question2: What is the order these two threads run? Do they run parallel or one after the other? Case2: Consider a SC_MODULE(mod_1) with one SC_THREAD(p1); SC_METHOD(p2); Question1: which thread starts first? Question2: What is the order these two threads run? Who starts first? Question3: Does SC_METHOD has priority than SC_THREAD? i.e if suppose SC_THREAD was running and same time SC_METHOD received a sensitivity. Does SC_THREAD pause and SC_THREAD starts execution? My questions are very primitive but it is very much important with exam point of view..:-) Thanks in Advance..
  12. Yes, I do this kind of conversion of TLM-1.0 to TLM-2.0 and vice versa very often, because for synthesis only TLM-1.0 is supported, and for VP TLM-2.0 is commonly used. The converter will be application-specific, because TLM-1.0 has no standard payload (Many TLM-1.0 models even define their own interfaces, instead of using standard put/get ).
  13. Last week
  14. You're correct that PSS is intended for hardware verification -- specifically targeted at the transaction and higher level of abstraction. 4-state modeling typically applies at the signal level, and doesn't propagate up to transaction level and above. I double-checked, and the SystemVerilog LRM specifically restricts randomization to 2-state values: "Constraints support only 2-state values. The 4-state values (X or Z) or 4-state operators (e.g., ===, !== ) are illegal and shall result in an error." Hope this helps!
  15. Hello Thank you for that information George. I understand it is not as straightforward as binding sockets together. Will it be possible to retrieve the data used in the fifo into a structure, and then mapping fields from that structure to appropriate fields in the tlm 2.0 payload? Thanks
  16. As Philip suggests above - both SC_METHODS and SC_THREADS have their advantages; and it also depends on the coding style adopted by the developer. That being said SC_METHOD doesn't pay the context switch penalty that is paid when using SC_THREAD. This can potentially speed up simulation.
  17. I've needed it for test environment modeling purposes, not for synthesis. Delta delay problems (also known as Shoot-thru) are possible in synthesizable SystemC. Common case is when you have a clock gate that inserts a delta delay into a clock signal distribution network. However in SystemC it is solved in a different way: Instead of delaying all assignments, you use immediate notifications inside clock signal, so that processes sensitive to gated clock are executed in the same delta cycle with processes sensitive to ungated clock.
  18. Hi all, I'm pretty ignorant in SystemC and I've started to learn it so be kind. What is the point to use a delay assignment in a SC_METHOD ? If you are using an SC_METHOD, I guess you are interested to synthesize the module.The delay assignments are basically ignored by the synthesizer and in some cases they can lead to some problems in a soc level verification. The only use I can think about in VHDL of the delay is to fix the delta delay problem but I'm not sure if the SystemC is affected to this problem. Cheers, Stefano
  19. Hi. AFAIK, there is nothing like that. In TLM1 communication is based on fifos. In TLM2 it is sockets and transport calls. This is a big difference. TLM2 is conceptually different and not just a slight improvement over TLM1. What you need is a channel that does the conversion from fifo content to payload and transport calls. This is not straightforward and not possible in a generic way. Greetings
  20. I wouldn't say that in this generality. Both process types have their advantages, depending on the use case.
  21. Why sc_method is preferred over sc_thread ?
  22. Earlier
  23. Hello All, I am working on SystemC-UVM based testbench. I have created UVM based testbench using UVM code generator. Here I am using three different agents in UVM generator which I have defined as a part of the configuration file which was further being provided to UVM code generator to generate test bench skeleton. And here, in of the agent driver, the code snippet is as: // Drive the inputs of the DUT UVM_INFO(this->name(),"Driving transaction:",0); req.print(); // TODO put your code here But when I try to read the value in my test-case, then I see an error as: And this error is observed inside print() function, once I comment the line "req.print()" from the above snippet the error is no more observed and my test-case runs fine.
  24. Hello There is an existing model with tlm1.0 sockets - sc_port and sc_export. Is it possible to bind these sockets to tlm2.0 initiator and target sockets? If yes, then what is the conversion procedure involved? I'm new to SystemC, any help/insight on this is appreciated. Thanks.
  25. Hi. Using -isystem is OK to specify includes. But the path you give it should point to your SystemC installation. Are the SystemC header files in the idrectory you specified? libs/systemc-2.3.1a/include This is alocal path relative to the location where you do the compiler call. Greetings Ralph
  26. -isystem libs/systemc-2.3.1a/include This line looks suspicious. Should not it be something like -I/path/to/systemc/include ?
  27. n order to run Network on chip simulator form Github called "noxim" , I am getting a fatal error in the last step (build noxim) when I am trying to type "make" concerning Systemc.h and sincerely don't fully understand: saliha@ubuntu:~/Downloads/noxim-master/bin$ make g++ -O3 -Wall -DSC_NO_WRITE_CHECK --std=c++11 -I../src -isystem libs/systemc-2.3.1a/include -Ilibs/yaml-cpp/include -c ../src/Stats.cpp -o build/Stats.o In file included from ../src/Stats.h:17:0, from ../src/Stats.cpp:11: ../src/DataStructs.h:14:21: fatal error: systemc.h: No such file or directory #include <systemc.h> ^ compilation terminated. Makefile:43: recipe for target 'build/Stats.o' failed make: *** [build/Stats.o] Error 1 I have respected all the steps in INSTALL.txt including C++ compiler installation, YAML installation, SystemC installation until Build noxim. The only difference between noxim guide prerequisites and what I found is the SystemC version "systemc 2.3.1(including in INSTALL.txt) and systemc 2.3.1a (what i found)".
  28. Hello, I want to create a single jar file from the xsd files of ipxact 1685-2009. Can you please elaborate it , how to do it Regards Ravin Shah
  1. Load more activity