[ibis-editorial] A suggestion regarding the [* Reference] keywords

  • From: "Mirmak, Michael" <michael.mirmak@xxxxxxxxx>
  • To: "ibis-editorial@xxxxxxxxxxxxx" <ibis-editorial@xxxxxxxxxxxxx>
  • Date: Fri, 1 Apr 2016 17:48:54 +0000

Thanks to Mike LaBonte for his very complete listing of referencing issues in 
IBIS today.  I'd like to state a few facts related to slide 9 of that 
presentation.



In contrast to the keyword [Voltage Range], I suggest that the keywords [Pullup 
Reference], [Pulldown Reference], [POWER Clamp Reference], and [GND Clamp 
Reference] are incorrectly named.  The names themselves cause confusion and are 
likely the source of many of the problems with referencing we are trying to 
resolve.



These keywords define (and the specification mentions) the physical supply 
"rails" or nodes to which the buffers are connected.



Unfortunately, the arguments to these keywords are voltage *values* or 
measurements, with respect to an unnamed physical reference point.  The 
arguments are not themselves "references".



It is true that the [* Reference] keyword arguments - the voltages - are used 
for calculations involving the I-V tables.  However, these calculations are 
used to *translate* voltage values in raw I-V data generated using the common 
(unnamed) reference to voltage values for the I-V tables with respect to the 
individual supply rails.  It is utterly incorrect to state, as [Pulldown 
Reference] does, that I-V table data points "are referenced to 0 V."



[Pin Mapping] gets the concept nearly correct, in that rails are defined to 
which buffers are connected, but the term used there is "reference" and not 
"rail" (though "bus" is used correctly).  The C_comp_* text is also fairly 
clear that these keywords define rails and that the individual C_comp_* 
elements are connected between these rails and the I/O node.



I believe that Walter's "DUT" proposal would address this, at least in part, 
but only if the specification is very carefully re-written to describe a single 
reference node that is used for all voltage measurements, including the values 
in the [* Reference] keywords.



Ideally, the [Pin Mapping] keyword would replace "reference" with "rail", and 
"_ref" with "_rail" (as in, "pulldown_rail").  In addition, [Pullup Reference], 
etc. would be called [Pullup Rail Voltage], etc., and would use a description 
resembling the following:



Defines a voltage rail other than that defined by the [Voltage Range] keyword 
as the reference rail for the [Pullup] I-V data.  The voltage value provided is 
with respect to the IBIS measurement reference node.



[Pulldown Rail Voltage] would use a description like:



Defines a voltage rail other than the IBIS measurement reference node as the 
reference rail for the [Pulldown] I-V data. If this keyword is not present, the 
voltage data points in the [Pulldown] I-V table are referenced to the IBIS 
measurement reference node.



We could optionally add a keyword which would define whether the "IBIS 
measurement reference node" is synonymous with a defined pin, a defined rail, 
or is a completely independent node.  If a defined rail were used (e.g., 
[Pulldown Rail Voltage]) as the "IBIS measurement reference node", any non-zero 
voltage argument used for that rail definition keyword would be ignored, as it 
would be meaningless if not contradictory.  This could be strictly checked by 
the parser.  While complex, this would be a complete and unambiguous approach.



If it helps, think about the "IBIS measurement reference node" as "the point 
where the reference wire on my probe is connected when I make voltage 
measurements."



I believe this is consistent with Walter's earlier C_comp analysis.



Thoughts?



-          MM





Other related posts: