Proposed extension to Section 6b.
Allowing IBIS models as external files.

1) Could rename section to "External Model File Extensions".
2) IBIS Model as external file:
	What file extension (not .ibs, .mod, .buf, .mr1)?
	No change in requirements for declared keywords and subparameters.
	Additional values allowed for some keywords and subparameters.

|
|=============================================================================
|=============================================================================
|
|                                 Section 6b
|
|       M U L T I - L I N G U A L   M O D E L   E X T E N S I O N S
|
|=============================================================================
|=============================================================================
|
| LANGUAGES SUPPORTED:
|
| IBIS files can reference other files which are written using the
|** IBIS model,
| SPICE,
| VHDL-AMS, or Verilog-AMS languages.  In this document, these languages are
| defined as follows:
|
|** IBIS model refers to a [Model] section in IBIS 4.0 syntax.
| "SPICE" refers to SPICE 3, Version 3F5 developed by the University of
| California at Berkeley, California.  Many vendor-specific EDA tools are
| compatible with most or all of this version.
|
|.....
|
| GENERAL ASSUMPTIONS:
|
|
| Ports under [Model]s:
|
| The use of ports under native IBIS must be understood before the multi-
| lingual extensions can be correctly applied.  The [Model] keyword assumes, 
| but does not explicitly require naming ports on circuits.  These ports are 
| automatically connected by IBIS-compliant tools without action by the user.  
| For example, the [Voltage Reference] keyword implies the existence of power 
| supply rails which are connected to the power supply ports of the circuit 
| described by the [Model] keyword.
|
|** If the external model file is an iBIS [Model], then the model is
|** connected in the same way as when the [Model] is within an IBIS file.
|** Ports are not explicitly declared.
|
| ...

|
|=============================================================================
|
| KEYWORD DEFINITIONS:
|
|=============================================================================
|    Keywords:  [External Model], [End External Model]
|    Required:  No
| Description:  Used to reference an external file written in one of the
|               supported languages containing an arbitrary circuit
|               definition, but having ports that are compatible with the
|               [Model] keyword, or having ports that are compatible with the
|               [Model] keyword plus an additional signal port for true
|               differential buffers.
| 
|  Sub-Params:  Language, Corner, Parameters, Ports, D_to_A, A_to_D
| Usage Rules:  The [External Model] keyword must be positioned within a
|               [Model] section and it may only appear once for each [Model]
|               keyword in a .ibs file.  It is not permitted under the
|               [Submodel] keyword.
|
|               [Circuit Call] may not be used to connect an [External Model].
|
|               A native IBIS [Model]'s data may be incomplete if the [Model] 
|               correctly references an [External Model].  Any native IBIS 
|               keywords that are used in such a case must contain
|               syntactically correct data and subparameters according to
|               native IBIS rules.  In all cases, [Model]s which reference
|               [External Model]s must include the following keywords and
|               subparameters:
|
|                  Model_type 
|                  Vinh, Vinl (as appropriate to Model_type)           
|                  [Voltage Range] and/or [Pullup Reference], 
|                    [Pulldown Reference], [POWER Clamp Reference], 
|                    [GND Clamp Reference], [External Reference]
|                  [Ramp]
|
|               In models without the [External Model] keyword, data for
|               [Ramp] should be measured using a load that conforms to the 
|               recommendations in Section 9: Notes on Data Derivation Method.  
|               However, when used within the scope of [External Model], the 
|               [Ramp] keyword is intended strictly to provide EDA tools with
|               a quick first-order estimate of driver switching  
|               characteristics.  When using [External Model], therefore, data
|               for [Ramp] may be measured using a different load, if it
|               results in data that better represent the driver's behavior in
|               standard operation.  Also in this case, the R_load
|               subparameter is optional, regardless of its value, and will be
|               ignored by EDA simulators.  For example, the 20% to 80%
|               voltage and time intervals for a  differential buffer may be
|               measured using the typical differential operating load
|               appropriate to that buffer's technology.  Note that voltage
|               and time intervals must always be recorded explicitly rather
|               than as a reduced fraction, in accordance with [Ramp] usage
|               rules.
|
|               The following keywords and subparameters may be omitted,
|               regardless of Model_type, from a [Model] using [External
|               Model]:
|
|                  C_comp, C_comp_pullup, C_comp_pulldown, C_comp_power_clamp, 
|                    C_comp_gnd_clamp
|                  [Pulldown], [Pullup], [POWER Clamp], [GND Clamp]
|
|
|               Subparameter Definitions:
|
|
|               Language:
|
|**             Accepts "IBIS", "SPICE", "VHDL-AMS", or "Verilog-AMS" as arguments.
|               The Language subparameter is required and must appear only
|               once.
|
|
|               Corner:
|
|               Three entries follow the Corner subparameter on each line:
|
|                  corner_name file_name circuit_name
|
|               The corner_name entry is "Typ", "Min", or "Max".  The
|               file_name entry points to the referenced file in the same
|               directory as the .ibs file.
|
|               Up to three Corner lines are permitted.  A "Typ" line is
|               required.  If "Min" and/or "Max" data is missing, the tool may
|               use "Typ" data in its place.  However, the tool should notify
|               the user of this action.
|
|**             For an external IBIS model file, the three corners can be
|**             entered in the usual typ/min/max column style, or a separate file
|**             can be used for each corner.
|
|               The circuit_name entry provides the name of the circuit to be
|               simulated within the referenced file.  
|**             For IBIS files, this is normally the model name.
|               For SPICE files, this
|               is normally a ".subckt" name.  For VHDL-AMS files, this is
|               normally an "entity(architecture)" name pair.  For Verilog-AMS
|               files, this is normally a "module" name.
|
|               No character limits, case-sensitivity limits or extension
|               conventions are required or enforced for file_name and
|               circuit_name entries.  However, the total number of characters
|               in each Corner line must comply with the rules in Section 3.
|               Furthermore, lower-case file_name entries are recommended to
|               avoid possible conflicts with file naming conventions under
|               different operating systems.  Case differences between
|               otherwise identical file_name entries or circuit_name entries
|               should be avoided.  External languages may not support
|               case-sensitive distinctions. 
|
|
|               Parameters:
|
|               Lists names of parameters that can be passed into an external
|               model file.  Each Parameters assignment must match a name or
|               keyword in the external file or language.  The list of
|               Parameters may span several lines by using the word Parameters
|               at the start of each line.  The Parameters subparameter is
|               optional, and the external model must operate with default
|               settings without any Parameters assignments.
|
|               Parameter passing is not supported in SPICE.  VHDL-AMS
|               parameters are supported using "generic" names, and
|               Verilog-AMS parameters are supported using "parameter" names.
|
|
|               Ports:
|
|               Ports are interfaces to the [External Model] which are
|               available to the user and tool at the IBIS level. They are
|               used to connect the [External Model] to die pads.  The Ports
|               parameter is used to identify the ports of the [External
|               Model] to the simulation tool.  The port assignment is by
|               position and the port names do not have to match exactly the
|               names inside the external file.  The list of port names may
|               span several lines if the word Ports is used at the start of
|**             each line.  Port assignment is automatic for IBIS models,
|**             and must be explicitly declared for all other model types.
|
|...
               
|
|-----------------------------------------------------------------------------
| Example [External Model] using IBIS:
|--------------------------------------
[Model] ExBufferIBIS_1    | one external file for the three corners
Model_type I/O
Vinh = 2.0
Vinl = 0.8
|
| Other model subparameters are optional
|
|                 typ     min    max
[Voltage Range]   3.3     3.0    3.6
|
[Ramp]
dV/dt_r        1.57/0.36n   1.44/0.57n   1.73/0.28n
dV/dt_f        1.57/0.35n   1.46/0.44n   1.68/0.28n
|
[External Model]
Language IBIS
|
| Corner corner_name file_name       circuit_name ([Model] name within external file)
Corner    Typ         buffer_3.xxx   buffer_io     | reads TYP column
Corner    Min         buffer_3.xxx   buffer_io     | reads MIN column
Corner    Max         buffer_3.xxx   buffer_io     | reads MAX column
|
|** Parameters - Not supported in IBIS
|
|** Ports List of port names (not used for IBIS model)
|
|
[Model] ExBufferIBIS_3    | three external files for the three corners
Model_type I/O
Vinh = 2.0
Vinl = 0.8
|
| Other model subparameters are optional
|
|                 typ     min    max
[Voltage Range]   3.3     3.0    3.6
|
[Ramp]
dV/dt_r        1.57/0.36n   1.44/0.57n   1.73/0.28n
dV/dt_f        1.57/0.35n   1.46/0.44n   1.68/0.28n
|
[External Model]
Language IBIS
|
| Corner corner_name file_name       circuit_name ([Model] name within external file)
Corner    Typ         buffer_typ.xxx  buffer_io_typ     | reads TYP column
Corner    Min         buffer_min.xxx  buffer_io_min     | reads MIN or TYP column
Corner    Max         buffer_max.xxx  buffer_io_max     | reads MAX or TYP column
|
|** Parameters - Not supported in IBIS
|
|** Ports List of port names (not used for IBIS model)
|
