Jump to content


  • Content Count

  • Joined

  • Last visited

About Khushi

  • Rank
    Advanced Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Thanks David I have few connected questions There are lot of people talk about cycle accurate models to speed up the simulation. What are those cycle accurate models? Are those written in SystemC ? If not can you explain a bit on this. Can we connect an untimed tlm model to a rtl block and simulate it seamlessly. Do we need to take care few things in untimed tlm model to make it work in a cosimu environment? I remember someone implementing a SystemC model with individual axi pins as sc_bv/sc_lv types instead of using the tlm2 socket. What are the usage of such models? Suppose I connect a tlm2 socket to a rtl axi interface using some adapter eg tlm2axi, in this case do we need cycle accurate or approximate model on tlm side for a smooth operation. Thank khushi
  2. Does SystemC SC_CTHREAD( clocked thread) has something to do with cycle accurate modeling? If no, then what is the use of SC_CTHREAD?
  3. Hi i am trying to understand how we can insert timings in an untimed model any example will be a great help thanks khushi
  4. Hi how to develop a cycle accurate model using systemc. any example or pointers will be a great help thanks khushi
  5. Hi Philipp I don't think it is fixed in either 2.3.2 or 2.3.3. The example below is still gives the error "Error: (E126) sc_export instance already bound: top_inst.middle_export_0" with both 2.3.2 and 2.3.3 #include "systemc.h" #include "tlm_utils/multi_passthrough_initiator_socket.h" #include "tlm_utils/simple_target_socket.h" struct top : sc_module { tlm_utils::multi_passthrough_initiator_socket<top> leaf{"leaf"}; tlm_utils::multi_passthrough_initiator_socket<top> middle{"middle"}; tlm_utils::simple_target_socket<top> target{"target"}; top(sc_module_name){ //leaf.bind(target); //middle.bind(leaf); } protected: void before_end_of_elaboration(){ middle.bind(leaf); leaf.bind(target); } }; int sc_main(int argc, char** argv){ top top_inst("top_inst"); sc_start(); return 0; } Thanks Khushi
  6. Hello All I am trying to list out all the ports, sockets in a given SystemC platform. For that I am traversing the hierarchy using sc_get_top_level_object/get_child_object and able to list out all the ports and sockets. But for TLM 2 sockets I get two entries there for example - top_inst.init_inst.initiator_socket - top_inst.init_inst.initiator_socket_export_0 and - top_inst.memory_inst.target_socket - top_inst.memory_inst.target_socket_port_0 It is obvious because each TLM2 socket internally have one port and one sc_export. Is there a way that I get only those sockets which are visible in SystemC model header file for example I want to have only the following - top_inst.init_inst.initiator_socket - top_inst.memory_inst.target_socket Thanks Khushi
  7. Hello All I am trying to understand the hierarchical events and for this I created a SystemC class which contains a sc_event object. - How I can control an event to make it hierarchical or non-hierarchical ? -What is the example use case or hierarchical events. Can anyone help me on this ? Thanks Khushi
  8. hi guys In TLM2 the tlm::tlm_global_quantum class is a singleton so it does not allow us to have different global quantum for different instances. Is it a way to have different instances have different global quantums ? For example instance1 sync at each 500 ns and instance 2 sync at each 1000 ns ? Thanks Khushi
  9. Hello All I have a confusion regarding the BUSWIDTH template with TLM2 sockets. In TLM sockets e.g. tlm_initiator_socket/simple_target_socket, why we have BUSWIDTH template and what is the need for this. If I want to transfer 256 bit data from an initiator (with tlm_initiator_socket port on it) to a target (with tlm_target_socket port on it), I can do it in one go by setting the data length and data pointer payload fields appropriately irrespective of the BUSWIDTH template. Whether I use BUSWIDTH 1 or 8 or 16 or 32 and so on, I can still call the b_transport and transfer the data in one go. So what is the significance of this BUSWIDTH template parameter. Where it is actually makes a difference. Thanks Khushi
  10. Hi How can I count the number of SC_THREAD/SC_METHOD in a given simulation of a SystemC platform ? Is it possible ? Thanks Khushi
  11. Khushi

    Array of ports

    Thanks Eyck. Appreciated your quick help. Thanks again, Khushi
  12. Hi Guys I have a scenario where I have to connect sc_in<uint32_t> in_port to an sc_out<bool> out[32] out_ports. i.e. the xth bit in in_port need to be connected to out[x] Is there a way to connect these ? Thanks Khushi
  13. Many thanks Roman. You suggestion works. Thanks again - Khushi
  14. Hi Guys Is it possible to connect sc_in<bool> hierarchically to another sc_in<bool> (same for sc_out<bool> as well) ? I tried the attached exmples ex1.cpp Error: (E109) complete binding failed: port not bound: port 'target.target_h.in' (sc_in) ex2.cpp : Error: (E109) complete binding failed: 2 binds exceeds maximum of 1 allowed: port 'target.in_h' (sc_in) Can you please help me ? Thanks Khushi ex1.cpp ex2.cpp
  15. Hi I found it is overloaded in sc_module class. Sorry for the inconvenience Thanks