Stuart, Bishnupriya, All,
In my opinion, the use of byte enables and streaming width with Debug and the use of the response status with Debug and DMI would both be good features to add to the base protocol. But please be clear that this is not what Jerome is proposing. Because of the need for near-backward compatibility, an interconnect or target is free to ignore byte enables and streaming width for Debug without giving any indication that is has done so, an initiator is similarly free to ignore the response status, and in both cases, however unlikely, there can be no guarantee that the attributes were not set by accident. This is contrary to the spirit of the base protocol as it stands. TLM-2.0 already offers a more robust solution - ignorable extensions.
That said, if we were to get consensus to make these changes, what would we add to the LRM? Jerome's re-wording (with apologies to Jerome - his hands are tied by the need for backward compatibility) effectively says "you can bend the rules of the base protocol, but if you are using any components you did not write yourself, you cannot guarantee the results." To my mind, that's not a good thing to add to the LRM.
Votes please: "yes", add these changes, or "no", don't.
John A
-----Bishnupriya Bhattacharya <bpriya@cadence.com> wrote: -----
To: Stuart Swan <stuart@cadence.com>, "john.aynsley@doulos.com"	<john.aynsley@doulos.com>, Jerome CORNET <jerome.cornet@st.com>
From: Bishnupriya Bhattacharya <bpriya@cadence.com>
Date: 12/06/2010 05:59PM
Cc: "Bart.Vanthournout@synopsys.com" <Bart.Vanthournout@synopsys.com>, P1666 Technical WG <systemc-p1666-technical@eda.org>
Subject: RE: Minor TLM enhancements/fixes
      
I think Stuart has put it very well. I strongly agree with  him. 
  
-Bishnupriya 
  
   
From: Stuart Swan  
Sent: Monday, December 06, 2010 10:34 PM
To:  john.aynsley@doulos.com; Jerome CORNET
Cc:  Bart.Vanthournout@synopsys.com; Bishnupriya Bhattacharya; P1666 Technical  WG
Subject: RE: Minor TLM enhancements/fixes
    
   
   John,    All-
    
   I    think you should put these items up for a vote.
    
   I    vote yes on them.  I’m in agreement with you that these enhancements are    “a good thing”, and I also agree that the argument on both sides are not black    and white.
    
   Where    I differ is in yours and Bart’s rather extreme concerns about backward    compatibility. It seems to me that these concerns are overblown, and that even    if such legacy models existed that exhibited the backward compatibility    issues, we’d all agree that they were poorly written.
    
   Also,    I think we are making a mistake in viewing the OSCI TLM2.0 LRM as “perfect”.    In reality there are remaining HUGE open issues (e.g. endianness handling)    with the OSCI TLM 2.0 LRM and there are all kinds of models being developed    out there that claim TLM2.0 compliance when in fact they are    not.
    
   I    think the kind of reasonable (and very minor) evolution of the standard that    Jerome is proposing makes sense, and I imagine there will be more of it in the    future.
    
   Thanks
   Stuart
    
   
   From:    owner-systemc-p1666-technical@eda.org    [mailto:owner-systemc-p1666-technical@eda.org] On Behalf Of    john.aynsley@doulos.com
Sent: Monday, December 06, 2010 7:42    AM
To: Jerome CORNET
Cc: Bart.Vanthournout@synopsys.com;    Bishnupriya Bhattacharya; john.aynsley@doulos.com; P1666 Technical    WG
Subject: RE: Minor TLM    enhancements/fixes    
   Jerome,    All,
Well said.
The TLM-2.0 LRM says that for DMI and    Debug,
1) a BP initiator is not obliged to initialize any of the attributes    under discussion, and that
2) any BP component is free to totally ignore    the values of those attributes
So as things stand, you can have your BP    components use the byte enables and response status with DMI and debug so long    as you accept that every component is free to totally ignore these attributes.    This is the basis for BP extensions in TLM-2.0 as things stand. 
I    think the enhancements you want to add would be a good thing, and I agree the    argument is not black-and-white, but personally I have to vote "no" at this    point. 
John A
-----Jerome CORNET    <jerome.cornet@st.com> wrote: -----
   
        To:      "john.aynsley@doulos.com" <john.aynsley@doulos.com>
From: Jerome      CORNET <jerome.cornet@st.com>
Date: 12/06/2010 10:34AM
Cc:      "Bart.Vanthournout@synopsys.com" <Bart.Vanthournout@synopsys.com>,      "bpriya@cadence.com" <bpriya@cadence.com>, P1666 Technical WG      <systemc-p1666-technical@eda.org>
Subject: RE: Minor TLM      enhancements/fixes
     John,
      
     thanks      for this nice summary. I think we are converging.
      
     See      additional comments below.
      
     
     From:      john.aynsley@doulos.com [mailto:john.aynsley@doulos.com] 
Sent:      Sunday, December 05, 2010 7:58 PM
To: Jerome CORNET
Cc:      Bart.Vanthournout@synopsys.com; bpriya@cadence.com; john.aynsley@doulos.com;      P1666 Technical WG
Subject: RE: Minor TLM      enhancements/fixes     
>>Re. if we allow the response status to      be used with DMI, the trouble is that there is no guarantee that the      response status has
     >>been      initialized (see below), nor that other components will not use it too for      their own devious purposes. An initiator can
     >>check the DMI      response status, but it cannot absolutely rely on the value it sees, with or      without Jerome's proposal. 
     
     I      think we cannot argue solely on the base of &may/may not8 in the standard      (and that is not what I did previously, see my latest email about      initialization of payload attributes). Else we lose connection to      reality...
     
     You      say: there is no guarantee that the initiator initializes the response      status. Indeed I was wrong on this point, this is possible in theory (see my      answer below). But in my proposal, which component will indeed use the      response status to provide enhanced information about an error, if it      occurs? The initiator. Which component is responsible for the      initialization? The initiator. So I guess that an initiator that wants      enhanced information about the reason why a target rejected a DMI request or      did not copy all the bytes in a debug request will indeed initialize the      response status...
     
     Now,      about the target. With your argument, a target may set the response status      to any value it want for &devious purpose8. What such devious purpose? For      which reason? No one knows...
     The      only logical devious reason for using the response status is indeed.... to      clarify the reason why something wrong happened. And we are just talking      about standardizing its optional use.
     
     Finally,      let,s imagine that, as you said, the target set the response status to      something completely random. And that the initiator exploit it. What will      happen? The otherwise unknown reason for DMI rejection or debug request fail      will be unknown (case of TLM_OK_RESPONSE) or just wrong. It is worse than      having no information at all in the &compliant8 case? I don,t think      so.
>>With debug, Jerome proposes that an      initiator MAY set other attributes (i.e. byte enable and streaming width)      and that the >>target SHALL set      the response status to OK if it has honored them. In practice, this should      be fine most of the time. BUT >>Bart's point is valid: legacy      initiators may leave byte enables set by accident. Jerome quotes rule 15.7.a      as saying that every >>GP      attribute must be initialized. But this needs to be qualified by 15.6 l)      which says the modifiability rules only apply to the >>appropriate attributes. (The LRM could      be improved here)
     
     That,s      right. I was wrong on 15.7.a. But that does not predate my other arguments,      as others pointed out, that this is bad practice.
     As      Bart said, such situation may occur when using a pool of transactions that      can be sent to whatever interface (transport, debug,      DMI).
     I      again ask why on earth would someone not initialize all the attribute      (Simulation speed?). Whereas it is widely recognized at a general bad      programming practice and that you and your customer will lose time when      debugging issues with the transaction?
     
     John,      I disagree with your proposal that whatever the case, an extension is always      required.
     
     I      think we should be more balanced in the approach we are taking. For      sure, the extension allows &bullet-proof8 detection
     of      the enhancement even in bad practice cases or hypothetical situations. But      standardizing an extension has a price:
     The      improvement is delayed for an unspecified time (and we do not have any      process setup to discuss extensions
     at      this point) and therefore therer will still be an interoperability      problem,
     This      will need to restart discussions and take additional time that could      otherwise be spent on all the TLM stuff
     that      is still not yet standardized and that needs to.
-      This will require customers to add dependencies for features that are      closely related to the built-in attributes of the      generic
     payload.
     
     I      think we have reached a point where we have finished digging with the      technicalities and that the consequences
     of      the various choices are clear for everyone. 
     Let      us let the participants review this and do their      choice...
     
     I      would vote for separating:
     on      one hand the issue of enhancing error reasons for DMI and      Debug
     on      the other hand, the proposal to use extended attributes (streaming width,      byte enable) with the debug interface.
     
     Best      regards,
     
     Jerome
     
        
-- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.Received on Mon Dec 6 18:58:08 2010
This archive was generated by hypermail 2.1.8 : Mon Dec 06 2010 - 18:58:09 PST