****************************************************************************** ****************************************************************************** BIRD ID#: 118.1 ISSUE TITLE: Analog Parameter Assignments REQUESTER: Arpad Muranyi, Mentor Graphics DATE SUBMITTED: October 5, 2010 DATE REVISED: November 8, 2010 DATE ACCEPTED BY IBIS OPEN FORUM: ****************************************************************************** ****************************************************************************** STATEMENT OF THE ISSUE: The "Parameters" subparameter of the [External Model] and [External Circuit] keywords contains a simple listing of the parameters of [External Model]s and [External Circuit]s without the capabilities of assigning any values to them. The expectation was that the EDA tool would provide a mechanism to the user to make the actual value assignments for these parameters. There are situations, however, when assigning values to these parameters from within the .ibs file would be highly desirable so that the assignments could be defined and/or kept together with the model. ****************************************************************************** STATEMENT OF THE RESOLVED SPECIFICATIONS: This BIRD is designed to be a close relative of BIRD 117. The assignment features described in this BIRD for the parameters listed under the Parameters subparameter are consistent with the assignment features described in BIRD 117 for the Converter_Parameters, except that assignments for Parameters are optional while the assignments for Converter_Parameters are required. The Parameters subparameter under [External Model] and [External Circuit] shall have an optional assignment capability using the equal sign ("=") ** followed by a literal value. For [External Model] this assignment may ** optionally reference a parameter name declared in the .ami parameter ** file instead of using a constant literal value. The AMI parameter shall ** be referenced by a reserved word called AMIfile() where the parentheses ** contains the name of a parameter that exists in the .ami parameter file ** named by the [Algorithmic Model] keyword of a [Model]. Multiple [External Model] or [External Circuit] Parameters may be listed on the same line with one equal sign and value, in which case all of the parameters on that line will be assigned the same value. If no assignments are made on the [External Model] or [External Circuit] Parameters line, the parameters will take on their default values as defined in the external model file referenced by [External Model] or [External Circuit] declarations. The EDA tool is expected to provide a mechanism for the user to make selections for multi-valued AMI parameters through GUI features. On pg. 107 replace the following lines: | 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 and | VHDL-A(MS) parameters are supported using "generic" names, and | Verilog-AMS and Verilog-A(MS) parameters are supported using | "parameter" names. with these lines: | Parameters: | | Lists names of parameters that can be passed into an external |* model file. Each Parameters entry 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 and | VHDL-A(MS) parameters are supported using "generic" names, and | Verilog-AMS and Verilog-A(MS) parameters are supported using |* "parameter" names. ISS parameters are supported for all ISS |* parameters which are defined on the subcircuit definition |* line. |* |** Parameters are locally scoped under each [External Model] |* keyword, i. e. the same parameter under two different |** [External Model] will have independent values. |* |* The parameter(s) listed under the Parameters subparameter |* may optionally be followed by a single equal sign and a value. |* The value may be a numeric or string literal or the name |* of an AMI parameter which must be in the .ami parameter |* file that is associated with the same [Model] that contains |** the [External Model] keyword whose Parameters are initialized. |* The AMI parameter must be enclosed in the parentheses of |* the reserved word AMIfile(AMIparameterName). When multiple |* parameters are listed on a single line with one equal sign |* and a value, all of the parameters on that line will be |* assigned the same value. String literals must be enclosed |* in double quotes. |* |* The EDA tool may provide additional means to the user to |** assign values to Parameters. This may include the option |** to override the values provided in the .ibs file, to allow |** the user to make selections for multi-valued parameters in |** the .ami parameter file, or to provide values for |** uninitialized Parameters. On pg. 126 replace the following lines: | 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 and | VHDL-A(MS) parameters are supported using "generic" names, and | Verilog-AMS and Verilog-A(MS) parameters are supported using | "parameter" names. with these lines: | Parameters: | | Lists names of parameters that can be passed into an external |* model file. Each Parameters entry 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 and | VHDL-A(MS) parameters are supported using "generic" names, and | Verilog-AMS and Verilog-A(MS) parameters are supported using |* "parameter" names. ISS parameters are supported for all ISS |* parameters which are defined on the subcircuit definition |* line. |* |* Parameters are locally scoped under each [External Circuit] |* keyword, i. e. the same parameter under two different |* [External Circuit] will have independent values. |* |* The parameter(s) listed under the Parameters subparameter |* may optionally be followed by a single equal sign and a value. |** The value may be a numeric or string literal. When multiple |* parameters are listed on a single line with one equal sign |* and a value, all of the parameters on that line will be |* assigned the same value. String literals must be enclosed |* in double quotes. |* |* The EDA tool may provide additional means to the user to |** assign values to Parameters. This may include the option |** to override the values provided in the .ibs file, or to |** provide values for uninitialized Parameters. ****************************************************************************** ANALYSIS PATH/DATA THAT LED TO SPECIFICATION The following example illustrates the concept. Given that a [Model] in an .ibs file contains an [Algorithmic Model] keyword: [Algorithmic Model] Executable Windows_VisualStudio_32 GenericTx.dll GenericTx.ami [End Algorithmic Model] and that the "GenericTx.ami" parameter file contains the following declarations: (Rterm (Usage Info)(Value 50.0)(Type Float) (Description "Termination resistance") ) (Rdiff (Usage Info)(Value 100.0)(Type Float) (Description "Differential output resistance") ) (Cdiff (Usage Info)(Value 1.5e-12)(Type Float) (Description "Differential Output Capacitance") ) the Parameters under the [External Model] keyword may be assigned with the values in the GenericTx.ami parameter file the following way: [External Model] Language IBIS-ISS | | Corner corner_name file_name circuit_name (.subckt name) Corner Typ AMIdriver.cir AMI_drv | | List of parameters Parameters Rt_direct Rt_invert = AMIfile(Rterm) Parameters Rdiff = AMIfile(Rdiff) Parameters Ccomp_diff = AMIfile(Cdiff) Parameters MyParam1 MyParam2 = 1.234 Parameters MyParam3 MyParam4 In this example, Rt_direct and Rt_invert are both assigned the value 50, Rdiff is assigned 100 as defined in the .ami parameter file. Myparam1 and Myparam2 are assigned 1.234, and MyParam3 and MyParam4 are left unassigned which means that they will assume their default values as defined in the declaration of the [External Model]. If an .ami parameter is defined as a multi-valued parameter (Range, List, etc...) which must be resolved to a single value by a selection, the EDA ** tool may provide a GUI mechanism to the user to make a selection, or ** the default value of the .ami parameter shall be used for the simulation. The EDA tool may also provide mechanisms to make assignments to unassigned Parameters, or to override hard-coded assignments, or single valued .ami parameter assignments. ** Please note that the reserved word "AMIfile()" may only be used in the ** [External Model]'s Parameters and Converter_Parameters (see BIRD 117) ** subparameters to reference .ami file parameters because such .ami file ** references cannot be resolved from the [External Circuit] keywords. ** This is because [External Circuit] is on the same scoping level as ** [Model] and therefore it is not associated with any [Algorithmic Model] ** keywords which reside under the [Model] keyword. For this reason the ** "AMIfile()" syntax has no way to know what file to read when it is ** located under the [External Circuit] keyword. ** ** The previous version of this BIRD is flawed because it allows the usage ** of the "AMIfile()" syntax under [External Circuit] to reference .ami ** file parameters. This version of the BIRD removes the possibility to ** use the reserved word "AMIfile()" under [External Circuit] to eliminate ** that problem. ***************************************************************************** ANY OTHER BACKGROUND INFORMATION: ******************************************************************************