RE: [tlmwg] Revisit of the TLM2.0 phases rules

From: Bart Vanthournout <Bart.Vanthournout@synopsys.com>
Date: Thu Jan 06 2011 - 06:54:48 PST


I guess my messages weren’t getting through because of the full reply-to approach I took…
Another attempt below…

Bart

From: Bart Vanthournout
Sent: Thursday, January 06, 2011 3:35 PM
To: Veller, Yossi; john.aynsley@doulos.com; robert.guenzel@greensocs.com
Cc: P1666 Technical WG; tlmwg@lists.systemc.org
Subject: RE: [tlmwg] Revisit of the TLM2.0 phases rules


Yossi,

I just started reading through this chain of mails so sorry but I want to get back to the example, I think you treat the protocol as an end-to-end protocol while the rules only apply per socket.

t= t1 I1 sends GP1(BEGIN_REQ) to B
                                B passes the GP1(BEGIN_REQ) to T
                                T computes that the written data takes 310 NS (because of rule 16.2.6 b) and waits.
                                I2 sends GP2(BEGIN_REQ) to B, B queues it in a PEQ (because of the BEGIN_REQ rule 16.2.6 e).
t= t1+310 NS T sends GP1(END_REQ) and B passes it to I1 then B takes GP2(BEGIN_REQ) from the PEQ and calls T.
                                T returns TLM_UPDATED and changes the phase to END_REQ and B sends GP2(END_REQ) to I2.
t= t1+319 NS T sends GP2(BEGIN_RESP) and B passes it to I2.
                                I2 computes that the read data takes 311 NS (because of rule 16.2.6 c) and waits.
t= t1+320 NS T sends GP1(BEGIN_RESP) and B pushes it into the PEQ (because of the BEGIN_RESP rule16.2.6 f).
t= t1+640 NS I2 sends GP2(END_RESP) and B passes it to T (and the read finishes)
                                B sends the GP1(BEG_RESP) to I1 which replies with TLM_COMPLETED
                                B sends the GP1(END_RESP) to T (and the write finishes)

Rule 16.2.6.f) says: For the base protocol, a target or interconnect component shall not respond to a new transaction
through a given socket with phase BEGIN_RESP until it has received END_RESP from the upstream component for the immediately preceding transaction or until a component has completed the previous transaction over that hop by returning TLM_COMPLETED. This is known as the response exclusion rule.


To me that means that the example is wrong at t = t1+320 NS, the target cannot send GP2( BEGIN_RESP) over its TLM2 socket since it did not receive an END_RESP for GP1.
In order to accomplish what you are looking for (I think) the bus to respond with a END_RESP for GP1 at time t =t1+319NS and pass the BEGIN_RESP to I1. This allows the target to continue with an BEGIN_RESP for GP2 and the bus can also forward to initiator I2 since the response exclusion rule applies per socket.

So I see the following happening:

t= t1 I1 sends GP1(BEGIN_REQ) to B
                                B passes the GP1(BEGIN_REQ) to T
                                T computes that the written data takes 310 NS (because of rule 16.2.6 b) and waits.
                                I2 sends GP2(BEGIN_REQ) to B, B queues it in a PEQ (because of the BEGIN_REQ rule 16.2.6 e).
t= t1+310 NS T sends GP1(END_REQ) and B passes it to I1 then B takes GP2(BEGIN_REQ) from the PEQ and calls T.
                                T returns TLM_UPDATED and changes the phase to END_REQ and B sends GP2(END_REQ) to I2.
t= t1+319 NS T sends GP2(BEGIN_RESP) and B returns GP2(END_RESP) to T, to allow it to continue
B passes GP2(BEGIN_RESP) to I2.
                                I2 computes that the read data takes 311 NS (because of rule 16.2.6 c) and waits.
t= t1+320 NS T sends GP1(BEGIN_RESP) and B returns GP2(END_RESP) to T, to allow it to continue
                                B passes GP1(BEGIN_RESP) to I1 which replies with TLM_COMPLETED
t= t1+640 NS I2 sends GP2(END_RESP) to B (and the read finishes)


At least this is my reading of the standard….

Bart

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Thu Jan 6 06:55:15 2011

This archive was generated by hypermail 2.1.8 : Thu Jan 06 2011 - 06:55:16 PST