                ICM Issue Resolution Document  (IIRD)


IIRD ID:       4.1
ISSUE TITLE:   Removal of Extraneous Argument for [End ICM Section] Keyword
REQUESTOR:     Kelly Green
DATE SUBMITTED:                       August 17, 2004 
DATE REVISED:                         August 28, 2004
DATE ACCEPTED BY IBIS OPEN FORUM:     October 29, 2004 

****************************************************************************
****************************************************************************

STATEMENT OF THE ISSUE:

      The keyword [End ICM Section] presently requires an argument that
      presumably matches the Section name given for the corresponding 
      [Begin ICM Section].

      No other keyword pairing requires that the corresponding End Keyword
      use any argument, much less a matching one.  Furthermore, no 
      example of the use of the [End ICM Section] keyword has an argument,
      contradicting the definition of the keyword.

      Thus, there is a consistency issue with the present ICM specification.


****************************************************************************

STATEMENT OF THE RESOLVED SPECIFICATIONS:


Current wording of the specification:


=============================================================================
     Keyword: [End ICM Section]
    Required: Yes
    Argument: Text String
     Used By: [Begin ICM Section]
 Description: Indicates the end of [Begin ICM Section].  This keyword is 
              after the [Derivation Method], [Resistance Matrix], 
              [Inductance Matrix], [Conductance Matrix], [Capacitance Matrix], 
              [Bandwidth], [Row], [ICM S-parameter].
 Usage Rules: Every [Begin ICM Section] keyword must have a corresponding
              [End ICM Section] keyword, which must be the last keyword of an 
              ICM Section description.
-----------------------------------------------------------------------------



Proposed wording of the specification: (remove "Argument")


=============================================================================
     Keyword: [End ICM Section]
    Required: Yes
     Used By: [Begin ICM Section]
 Description: Indicates the end of [Begin ICM Section].  This keyword is 
              after the [Derivation Method], [Resistance Matrix], 
              [Inductance Matrix], [Conductance Matrix], [Capacitance Matrix], 
              [Bandwidth], [Row], [ICM S-parameter].
 Usage Rules: Every [Begin ICM Section] keyword must have a corresponding
              [End ICM Section] keyword, which must be the last keyword of an 
              ICM Section description.


-----------------------------------------------------------------------------
[End ICM Section]






****************************************************************************

ANALYSIS PATH/DATA THAT LED TO SPECIFICATION:



       It's likely that the presence of the argument was an error resulting
       form the incomplete removal of text describing it and it's intended
       use from early drafts of the ICM specification.

       The v1.0 golden parser inherited this oddity as well, since the 
       argument continued to be called out in the definition of the keyword,
       and the only reasonable value was a match with the [Begin ICM Section].

       The issue now is to reconcile the specification with it's examples,
       and to correct the original error in the v1.0 specification


****************************************************************************

ANY OTHER BACKGROUND INFORMATION:

       The 4.1 revision of this IIRD captures debate around the initial
       draft.  In particular, it is more important to correct the document
       that perpetuate the original error in an attempt to maintain 'upward 
       compatibility'.

       The keyword argument is simply removed for ICM v1.1.  This action
       introduces a known incompatibility between v1.0 .icm files, and the
       v1.1 parser.

       Extensive debate on the subject of version numbers led to the
       conclusion that the icmchk parser always applies the highest
       available level of the icm specification, and in doing so 
       disregards the stated [ICM Ver] keyword's version within the
       .icm document being parsed.

       Thus, a v1.1 parser, when parsing a v1.0 .icm file which has the 
       erroneous [End ICM Section] argument value, will in fact report 
       a parse error.  The parser by default is expected to disregard 
       the embedded '[ICM Ver] 1.0' keyword, rather than honoring it 
       and thereby successfully parsing a v1.0 file according to the 
       outdated v1.0 rules.

       As a side note, the work-in-progress v1.1 icmchk parser does 
       implement both v1.0 and v1.1 rulsets.  It is a trivial matter to 
       provide any desired behavior with respect to the '[ICM Ver]' 
       keyword.
       


****************************************************************************



