Jump to content


  • Posts

  • Joined

  • Last visited

Everything posted by Reza_sh

  1. Thank you Alan. Modeling the producer-consumer problem using AT coding style, when we have 1 producer 1 consumer, we implicitly consider a buffer in the middle since we have concurrency in AT coding style. So, when the producer receives the End_Req, it can initiates a new transaction and send it to the consumer. The consumer puts the payload into its PEQ and consumes it at a certain time. Thus, we can define the size of the buffer by controlling the number of concurrent messages we can have in the system. Using this idea (hopefully it is correct!), I want to model a SysC TLM program when we have 1 producer 2 consumers. However, when the producer receives the response, he does not know whose response that is. In other words, the producer cannot distinguish between the transactions sent by the consumers. Is there any way that the producer can find out who the sender of each transaction is? Thank you, Reza
  2. Thanks David. Consider the following scenario: The producer sends a transaction into the buffer and gets blocked since it is b-transport (correct me if i am wrong here! As I know, in the b-transport, the sender gets blocked to receive the response). None of the consumers consumes the data in the buffer so the producer needs to wait to get a response from the buffer! Thus, the producer can send only one transaction and can send the next transaction only after receiving the response of the first transaction!! Please let me know if my understanding of b-transport interface is correct! Thanks,
  3. Hi, I was wondering if it is possible to model the producer-consumer problem using LT (b-transport) when we have 1 producer and 2 consumers? In this case, I guess, we need a buffer in the middle and the producer needs to put the payload in the buffer first. However, if, after putting the payload in the buffer, the producer gets blocked, there would not be any difference between having 1 consumer and 2 consumers. Is that correct? Also, if I want to model it using AT, how can the producer distinguish between the end-req/end-resp of different payloads? Thanks, Reza
  4. Hi, I am trying to implement XY routing using TLM base protocol in LT coding style. First of all, I am not sure if it is a right assumption to implement a routing protocol using tlm base protocol. Supposing that my assumption is true (please let me know if my assumption is true), I have the following question: - Since each component can be both a sender and receiver, do I need to define two connections between each two components? To clarify my question, lets say we are talking about components A1 and A2. If A1 wants to send a transaction towards A2, the connection is from A1's initiator socket to A2' target socket. Likewise, A2's initiator socket and A1's target socket is used for sending a packet from A2 to A1. Thanks in advance for your help, Reza
  5. If they are the same, what about the delay argument in the last transaction sending by the initiator with phase=end-resp? As I know, in the b-transport, this is the target who finishes the transaction. However, in the nb-transport this is the initiator who finished the transaction by sending end-resp. So if the meanings are the same, what is the meaning of the delay in the last transaction?
  6. I still do not get the difference between delay argument in a b-transport interface and an nb-transport interface! I was wondering if the meanings are the same? For example, in the following line of code, is the meaning of the delay argument in the nb-transport the actual timing point that the begin-req is sent (imagine the phase is begin-req)? socket->nb_transport_fw( *tran, phase, delay ); vs. socket->b_transport( *tran, delay ); Thanks, Reza
  7. Hi, I am not sure if I understand the meaning of delay in b_transport and nb_transport interfaces completely. Imagine, for example, we have the following piece of code in initiator: socket->b_transport( *trans, delay ); wait(delay); What does the "wait(delay)" mean here? Does delay describe the point of time in the future where the communication actually start? What does that mean if we have "wait(delay)" in target? Does the delay returned by the target describe the point in time the communication end? What if we have nb_transport instead of b_transport? For example, assume we have the following piece of code: for (int i = 0; i < 1000; i++) { delay = sc_time(rand_ps(), SC_PS); status = socket->nb_transport_fw( *tran, phase, delay ); if (status == tlm::TLM_UPDATED) { m_peq.notify( *tran, phase, delay );} else if (status == tlm::TLM_COMPLETED) { request_in_progress = 0; check_transaction( *tran ); } wait(sc_time(rand_ps(), SC_PS)); } // end of for wait(100, SC_NS); Thank you, Reza
  8. Hi, I have just started to work with b-transport and nb-transport interfaces and I have a few simple questions: - What is the meaning of time quantum when we have b-transport? As I know, SystemC has a run-to-completion scheduling policy and it should not terminate any processes! - Who manages the time in each time quantum, since the local time is not tracked by the SystemC scheduler? If the scheduler does not track the local time, could an initiator send several transactions (b-transports) in its quantum? - I cannot understand the meaning of the delay parameter in a b-transport! I have read the user manual but it made me more confused! For example, in Figure 5 page 18 of the user manual, in both the forward and return transactions, we have b_transport(t,0ns). What does that mean? If the target waits 40ns, why it sends b_transport(t,0ns)? Thank you, Reza
  9. Thanks Philipp for your reply. However, working with the whole grammar takes lots of time and I don't want to write a parser for the whole language. I want to parse just a SystemC/TLM program. I've seen several tools that work with gcc to parse a SystemC/TLM program, but I could not find the grammar that they use (maybe they are using a C++ grammar). Do you know any reference or resource for just the SystemC/TLM part? Thank you, Reza
  10. Hi, I am trying to write a SystemC/TLM front-end. To do so, I need SystemC grammar (at least the TLM part). Does anybody know how and where I can find it? Thank you, Reza
  • Create New...