+1 from my side.
P.
On 07/10/10 18:45, john.aynsley@doulos.com wrote:
> Jerome,
> 
> I am fine with having a macro IEEE_1666_SYSTEMC with a value that is 
> hardcoded in the IEEE 1666-2011 standard (e.g. 201101L) together with a 
> statement in the standard that says it is the intent that future versions 
> of the standard will replace this macro with a numerically greater value.
> 
> I don't think the TLM version macros are useless at all: I think the most 
> likely chain of events is that OSCI will make a point release of TLM-2.0 
> before the next IEEE re-standardization (5 years from now) and that 
> one-by-one EDA vendors will gradually adopt the latest OSCI release with 
> at most minor alterations. The TLM version macros can then be used by 
> applications to detect the version, long before the enhancements find 
> there way into the IEEE. Whatever, since we all agree the TLM version 
> macros are necessary for compatibility, we have nothing left to argue 
> about 8=)
> 
> I disagree with your assumption that the version number of the IEEE 
> standard will have much practical impact. I can't think of many EDA tools 
> that offers 100% support for any IEEE standard, and SystemC is no 
> exception. Vendors always have subsets, enhancements, and bugs. Even the 
> OSCI PoC standard does not support dynamic processes or fixed point types 
> unless you remember to turn them on, and it never has implemented 
> sc_signal correctly out-of-the-box, yet presumably we would want it to 
> define IEEE_1666_SYSTEMC? But again, I don't think we have anything left 
> to argue about.
> 
> I propose we add IEEE_1666_SYSTEMC as defined above together with a full 
> set of SC and TLM-2.0 macros/functions, modified with extern const and 
> removing inline as proposed by Philipp.
> 
> Are we done?
> 
> Cheers,
> 
> John A
> 
> 
> 
> From:
> Jerome CORNET <jerome.cornet@st.com>
> To:
> "john.aynsley@doulos.com" <john.aynsley@doulos.com>, 
> "systemc-p1666-technical@eda.org" <systemc-p1666-technical@eda.org>
> Date:
> 07/10/2010 15:57
> Subject:
> RE: Fw: Version number macros
> 
> 
> 
> John,
>  
> comments below.
>  
> From: john.aynsley@doulos.com [mailto:john.aynsley@doulos.com] 
> Sent: Thursday, October 07, 2010 12:47 PM
> To: Jerome CORNET; systemc-p1666-technical@eda.org
> Subject: RE: Fw: Version number macros
>  
> All, 
> 
> I am okay with adding a macro to 1666 which indicates which version of the 
> standard an implementation is nominally intended to support. But I would 
> like to spell out a few things, just to be sure we are all on the same 
> page. My apologies if this was all obvious to you anyway 8=) 
> 
> * I would prefer the name IEEE_1666_SYSTEMC, but only because that has the 
> same rhythm as the actual title of the standard  (IEEE Standard SystemC® 
> Language Reference Manual) 
> No problem with that.
> 
> * The IEEE standard is set in concrete for a few years. The standard can 
> try to anticipate the future, but cannot specify version numbers for 
> future patches, branches etc. So, exactly what do we mean by defining a 
> standard symbol with a standard value like 201001L? Who is going to 
> control the succession of values (201002L and so forth). It would make 
> sense to me that each IEEE standard specifies a value that identifies 
> itself and itself alone (e.g. 2011L), rather than trying to allow for 
> future increments. Say the IEEE releases a Clarification document 
> alongside 1666-2011 in a few years time. That clarification document would 
> specify its own value, e.g IEEE_1666_SYSTEMC  2013L (with some appropriate 
> constraints on the data type).  But perhaps this is just what you intended 
> all along? In which case 201001L (or whatever we finally choose) is fine, 
> though I might prefer  yyyymmL 
> I have taken a look again at the C++ standard. Indeed it is (mostly) on 
> the same line as you. They basically say ?__cplusplus? is defined the 
> following value xxxxxxx (which is hardcoded). There is
> however a note that says: It is intended that future versions of this 
> standard will replace the value of this macro with a greater value. (which 
> is enough wording for the macro to be useful; i.e.
> it can be tested with a < or > operator).
> Now, I am not sure to understand what you prefer. To clarify my opinion: 
> if we release in 2011 a clarification document,
> and that the implementation wants to indicate that it obeys the 
> clarification, I would choose 201002L as the macro value. That would 
> means: this is ?revision? 2 of the IEEE 1666-2010 norm.
> The 2 or whatever is up to us. In the case of C++, they start their mm at 
> 11 (probably because they made 10 attempts before?). But I would change 
> the ?year? part only every 5 years (at each big norm revision).
> 
> * The presence of this macro does NOT guarantee compliance to any standard 
> or to any version of any standard. It is just an indication of intent. 
> "This implementation is supposed to support IEEE standard version 
> such-and-such". That's another reason I don't see any point in making it 
> fine-grained. It should just be enough to identify a specific version of a 
> specific IEEE standard (and they don't change that often) 
> 
> I am not really convinced by that argument (and your next point seems 
> contradictory with it btw). Anyway we are not writing a lawyer?s document 
> ;-)
> I was just questioning what effective use can be done of the existing 
> TLM_xxxx_VERSION macros in the TLM part (and the only answers I have got 
> revolve around ?this is pretty
> much useless as is?). That said, I prefer keeping / enhancing them and 
> preserve backward compatibility.
> 
> * The OSCI PoC implementations (SystemC and TLM-2.0) have a special 
> status, because OSCI is the "custodian" of SystemC standardization. When 
> OSCI release an updated standard (without necessarily submitting this to 
> the IEEE) then OSCI will increment the version numbers appropriately. Most 
> software vendors would wish to indicate that their products are compatible 
> with certain versions of the OSCI PoC implementations (as well as with 
> certain IEEE standards), so would choose appropriate version numbers 
> (perhaps using the same MAJOR and MINOR numbers but adding their own 
> ORIGINATOR and PATCH). That is their call. We could make stronger 
> recommendations in P1666 though? The point I'm making is that vendors will 
> probably have good commercial reasons for basing their product versions on 
> OSCI PoC versions as well as making a claim to support an IEEE standard. 
> They are unlikely to want to generate SystemC or TLM-2 versions unrelated 
> to the OSCI PoC. 
> I am not sure this way of thinking is not counter-productive with respect 
> to the IEEE norm. We want (at least I) the norm to be the reference in 
> terms of features that can be used or not.
> The prefered way of testing, say the availability of process control 
> extension would be to look for the 2010 version number of the norm, 
> instead of  saying that version 2.3.x of the OSCI PoC implements it
> , everyone is based on it, therefore that the SYSTEM_VERSION macros can be 
> used.
> However, I see the SystemC version macros as useful to test for a 
> particular SystemC implementation, to say implement a workaround or 
> benefit for a particular feature that is not in the norm.
>  
> Regards,
> Jerome
> 
> 
> 
> 
> 
-- Philipp A. Hartmann Hardware/Software Design Methodology Group OFFIS Institute for Information Technology R&D Division Transportation · FuE-Bereich Verkehr Escherweg 2 · 26121 Oldenburg · Germany Phone/Fax: +49-441-9722-420/282 · PGP: 0x9161A5C0 · http://www.offis.de/ -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.Received on Thu Oct 7 10:52:43 2010
This archive was generated by hypermail 2.1.8 : Thu Oct 07 2010 - 10:52:45 PDT