Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


NickIlieskou last won the day on May 8 2014

NickIlieskou had the most liked content!

About NickIlieskou

  • Birthday 04/11/1989

Profile Information

  • Gender
  • Location
    Eindhoven, Then Netherlands

Contact Methods

  • Skype

NickIlieskou's Achievements


Member (1/2)



  1. Thank you for your elaborate response. Though I still have to ask a question regarding schedulers. I have a system with n independent DE clusters and one TDF cluster. The latter cluster is implemented inside an hierarchical SystemC module. This module is feeding the TDF cluster with values through DE->TDF input ports. Let's assume that at a time instant all the clusters (DE and TDF) have to execute. I noticed that the TDF cluster is executing first. Even before the SystemC hierarchical module gives an input. In other words the TDF cluster will execute with the old input values because the SystemC hierarhical module will run after the TDF modules. For this scenario can I assume that even if I had more than one TDF cluster, they would all execute before the DE clusters? Thank you in advance.
  2. Hello everybody, I would like to know if AMS and SystemC have two different schedulers. If yes then how do they interact? Moreover i would like to ask how many extensions does SystemC has? Thanks in advance
  3. @Alan I have one more naive question. I should use a channel if and only if I want to simulate the medium of data transmission. In case of an ideal medium, where no data are lost or I have no extra delays in the transmission there is no reason for a channel right?
  4. @Martin 1) I understand your point. However in my case it is important to know or to be able to manipulate the order of execution. That is because the TDF cluster and the the SystemC modules at some point they operate on the same global variables. I understand that this is out of the scope of SystemC however it would be really nice if I could change the execution order by using a functionality of SystemC like wait. In other words if I define a TDF cluster and an isolated SystemC module with the same time step the execution order will be as you said implementation defined. Can I do something to change this order? For instance use events or wait statements. Unfortunately I know that I cannot use wait statements with TDF modules but I ask just to be sure that I do not have any alternatives. 2) That was a very clear answer. Thanks for answering my questions @Alan I have thought about implementing a pure C++ communication in some parts of my system. However I haven't thought of making my own channels with immediate notify, which sounds a really nice idea. Thanks for sharing your thoughts.
  5. @Martin Barnasconi First of all thank you for your answer. Though I still have some questions: 1) Let's suppose I have three TDF modules connected to each other with a timestep=10ms. So module A is giving input to module B and module B output is module C input. Apart these modules I have 2 more isolated SystemC modules that are sensitive to a clock with a Period equal of 10ms as well. In such an example the SystemC scheduler will always execute the TDF modules first and then the two SystemC modules. I guess I cannot change this order of execution. For instance can I do something so that the SystemC modules are executed first and then the TDF modules? 2) I know that TDF modules update the values of their signals instantly. For instance if I have a TDF module A giving input to another TDF module B, then if A changes its output at time instant t then module B will see this change in time X. On the other hand in simple SystemC modules this is not the case. More specifically if A and B were SystemC modules, B would see the change in the signal at the time instant t+1. What can I do to make the SystemC signals behave like the AMS signals, except using zero_time notifications? @dakupoto, Martin Barnasconi I apologize for the insufficient description of my problem in my previous post. It is quite difficult to explain exactly what I am trying to do. Probably it would take some A4 pages to explain, so maybe it is much better if I try to ask precise questions. Thanks both of you for posting an answer.
  6. I have a question which probably is quite stupid. I developed a Software in the Loop framework in SytemC. This framework is supposed to call in specific discrete time instants some modules to execute. For instance suppose we have module A and B. Module A has to be executed every 10 ms and Module B every 20 ms. The execution order has to be first A and then B when both modules have to be executed. I am able to do that by having a coordinator module triggered by a clock of 10 ms. Every module ( module A, B and scheduler) are related with an event. Module A and B they look like this: while(1){ Wait(ev_mod_i) { ... trigger_ev_coordinator }} The coordinator which knows the frequency of each module will notify the correct event to trigger the corresponding module. So for instance for t=10ms the coordinator will be triggered by the clock and it will trigger event_mod_A. Then for t=20ms it will trigger event_mod_A, after module A is finished coordinator will trigger event_mod_B. After module B is also finished, the coordinator will wait for the next clock tick e.t.c Now i would like to insert an AMS model into my system. The desired MoC is continuous TDF. However I can't use statements like event.notify(zerotime) or wait(ev_i) in TDF according to the AMS manual. Moreover TDF modules include a time step by which they are executed. This is something that is not fully desired because i can't find a way to control the TDF modules. Could you please give me any ideas on how I can embed a TDF model into a SystemC framework and at the same time to be able to control when the model has to be executed for a specific clock tick? Probably by doing this I am ruining the whole concept of continuous TDF MoC. If this is right do you have any alternative ideas? Thanks in advance.
  7. Hello to everyone, I would like to ask if it is possible to give a static order for a number of processes in the SystemC Scheduler. Suppose we have 4 processes a,b,c and d. I would like for each clock tick to trigger the processes in the following way: clock tick=1 a,b,c,a,b,c,a,b,c,d,d,d clock tick=2 a,b,c,a,b,c,a,b,c,d,d,d clock tick=3 a,b,c,a,b,c,a,b,c,d,d,d clock tick=4 a,b,c,a,b,c,a,b,c,d,d,d .... Thank you in advance
  8. Hello everyone, I have a folder with many modules. I want to create a configuration file specifying which of those modules to use in my simulation. In the sc_main.cpp, before the simulation starts I would like to open my configuration file, read which modules I would like to open and then create instances, connect their ports etc The configuration file contains all the necessary information as number of ports, type of each port , name of the module, name of the file etc. I can easily create the signals I need but I don't know how I can create the module instance. example of configuration file .... ex_name_module porta ; input ; double portb ; output ; double ...... In the sc_main I will read the file. I will create 2 signals of type double. But then i should do something like ex_name_module EX_NAME_MODULE("EX_NAME_MODULE"); EX_NAME_MODULE.input(sig1); EX_NAME_MODULE.output(sig2); One idea that I tried but it didn't work, was to create a .cpp file for each module. This file has a function containing the instance creation of the respective module. The arguments of the function were the signals created in sc_main. So any ideas of how I can create such an instance? Thank you in advance
  9. Hello everyone, I was wondering if I could run in parallel a number of processes from different modules using multi-threading in SystemC. Take into account that these processes make use of SystemC elements like signal.read etc, from the SystemC library . That means SystemC library should be multi-threading safe. The reason why i want to use multi-threading is to decrease the simulation time, i.e. increase the performance of the simulation. I found this link: http://www.accellera.org/activities/committees/systemc-language/ that states about recent activities on SystemC 2.3.0: " In addition, an improved simulation API and a new thread safety mechanism will allow much better interaction with external tools and support for multi-threading." Does it mean, I can parallelize the execution of processes? and if yes how can I do it? Thanks in advance Nick
  10. Thank you again for your answer Alan. Your idea about using events is nice. I hope it will work in my case. I can't put the whole code in a single module. I am trying to develop a simulation framework for different software applications. So in my application I have several dlls which have to execute at the same time depending on the scheduler, which I am trying to implement with SystemC. The problem is that I might need to execute dll n.1 first and then dll n.2 etc because these dlls they will change values of variables in the SystemC framework that will be read from other dlls at the same simulation time. However the order is not fixed. Thank you again!!! regards Nick
  11. Sorry for asking again, but I would like to know if there is any way for module 2 to read the latest value of the signal that module1 has written at the same time ( let's say at the same positive edge).
  12. Thank you for your answer. It's nice that you specify the difference between the signal and the variable. So if I want to be sure that module2 will read the latest value of something I should make sure that this will be a signal and not a global variable. Thank you again Alan.
  • Create New...