****************************************************************************** ****************************************************************************** BIRD ID#: 117.3 ISSUE TITLE: Parameterize A_to_D and D_to_A Converters REQUESTER: Arpad Muranyi, Mentor Graphics DATE SUBMITTED: September 29, 2010 DATE REVISED: October 5, 2010, November 8, 2010, March 23, 2011 DATE ACCEPTED BY IBIS OPEN FORUM: ****************************************************************************** ****************************************************************************** STATEMENT OF THE ISSUE: [External Model]s and [External Circuit]s with analog ports communicate through A_to_D and/or D_to_A converters with the purely digital signals of ** the EDA tool. The current specification only allows hard-coded values as ** arguments for these converters in the IBIS file. There are situations, ** however, when it would be desirable to parameterize the arguments of these ** converters. For example, an IBIS model could be made much more compact ** with parameterized converters than having to use multiple copies of the ** otherwise identical [Model] through [Model Selector]. ****************************************************************************** STATEMENT OF THE RESOLVED SPECIFICATIONS: A new subparameter called "Converter_Parameters" shall be added to the ** [External Model] and [External Circuit] keywords to provide a mechanism ** to declare parameters used as arguments for the A_to_D and/or D_to_A **** converters. The Converter_Parameters of the [External Circuit] keyword **** shall be initialized with a constant numeric literal value. The **** Converter_Parameters of the [External Model] keyword shall be **** initialized with a constant numeric literal value and/or the reserved **** word AMIfile() which references a parameter name declared in the .ami **** parameter file that is named by the [Algorithmic Model] keyword of **** a [Model]. When the constant numeric literal and the reserved word are **** both present in an assignment, the constant numeric literal value shall **** serve as a default value for the assignment in case the assignment using **** the reserved word fails. ** On pg. 105 and 125 replace: | Sub-Params: Language, Corner, Parameters, Ports, D_to_A, A_to_D ** with the following line: |** Sub-Params: Language, Corner, Parameters, Converter_Parameters, Ports, |** D_to_A, A_to_D *** On pg. 107 add the following lines after the "Parameters:" section: | Converter_Parameters: | |** This optional subparameter lists and initializes parameter |** names to be used as arguments in the A_to_D and/or D_to_A |*** converter(s) of the [External Model] keyword under which it |** appears. The list of Converter_Parameters may span several |** lines by using the word Converter_Parameters at the start of |** each line. Any A_to_D or D_to_A argument which is entered |** as a parameter must be declared and initialized with the |** Converter_Parameters subparameter. |** |** Converter_Parameters are locally scoped under each |*** [External Model] keyword, i. e. the same converter parameter |*** under two different [External Model] will have independent |** values. |** |** The Converter_Parameters subparameter may contain one or more |** parameter names, which must be followed by an equal sign and |**** a constant numeric literal and/or the reserved word AMIfile(). |**** The argument of the AMIfile() reserved word must contain the |**** name of an AMI parameter which is in the .ami parameter file |**** that is associated with the same [Model] that contains the |**** [External Model] keyword whose Converter_Parameters are |**** initialized. When the AMIfile() reserved word and the |**** constant numeric literal are both present in an assignment |**** they must be separated by at least one white space. In this |**** case, the EDA tool should attempt to make the assignment using |**** the reserved word AMIfile() first. If that fails (for example |**** due to not finding the .ami parameter file or the parameter |**** name in that file) the constant numeric literal shall be used |**** for the assignment. When multiple converter parameters are |**** listed on a single line with one assignment, all of the |**** parameters on that line will be assigned the same value. |** |** The EDA tool may provide additional means to the user to |*** make assignments to Converter_Parameters. This may include |*** the option to override the values provided in the .ibs file, |*** or to allow the user to make selections for multi-valued |*** parameters in the .ami parameter file. | *** On pg. 126 add the following lines after the "Parameters:" section: | Converter_Parameters: | |** This optional subparameter lists and initializes parameter |** names to be used as arguments in the A_to_D and/or D_to_A |*** converter(s) of the [External Circuit] keyword under which it |** appears. The list of Converter_Parameters may span several |** lines by using the word Converter_Parameters at the start of |** each line. Any A_to_D or D_to_A argument which is entered |** as a parameter must be declared and initialized with the |** Converter_Parameters subparameter. |** |** Converter_Parameters are locally scoped under each |*** [External Circuit] keyword, i. e. the same converter parameter |*** under two different [External Circuit] will have independent |** values. |** |** The Converter_Parameters subparameter may contain one or more |** parameter names, which must be followed by an equal sign and |**** a value. The value must be a constant numeric literal. When |**** multiple converter parameters are listed on a single line with |**** one assignment, all of the parameters on that line will be |**** assigned the same value. |* |*** The EDA tool may provide additional means for the user to |*** make assignments to Converter_Parameters. This may include |*** the option to override the values provided in the .ibs file. | ** On pg. 109 and pg. 127 insert after this paragraph: | The vlow and vhigh entries accept analog voltage values which | must correspond to the digital off and on states, where the | vhigh value must be greater than the vlow value. For example, | a 3.3 V ground-referenced buffer would list vlow as 0 V and | vhigh as 3.3 V. The trise and tfall entries are times, must | be positive and define input ramp rise and fall times between | 0 and 100 percent. the following lines: | |** Any or all of these entries may be defined by parameter names, |** which must be declared and initialized by one or more |** Converter_Parameters subparameter. On pg. 110 and pg. 128 insert after this paragraph: | The vlow and vhigh entries list the low and high analog | threshold voltage values. The reported digital state on | D_receive will be '0' if the measured voltage is lower than | the vlow value, '1' if above the vhigh value, and 'X' | otherwise. the following lines: | |** Any or all of these entries may be defined by parameter names, |** which must be declared and initialized by one or more |** Converter_Parameters subparameter. In the example section(s) give some examples for how this would work. *** Please make sure that the "AMIfile()" syntax is only shown for [External Model] **** examples, and use only constant numeric literals for examples under **** [External Circuit]. | List of converter parameters Converter_Parameters MyVlow = 0.0 Converter_Parameters MyHigh1 = 3.3 Converter_Parameters MyHigh2 = 2.0 **** Converter_Parameters MyTfall = AMIfile(Trf) 1.0p ** Converter_Parameters MyTrise = AMIfile(Trf) | ... ... | | D_to_A d_port port1 port2 vlow vhigh trise tfall corner_name D_to_A D_drive my_drive my_ref MyVlow MyVhigh1 MyTfall MyTrise Typ D_to_A D_enable my_enable A_gcref 0.0 3.3 0.5n 0.3n Typ | | A_to_D d_port port1 port2 vlow vhigh corner_name A_to_D D_receive my_receive my_ref MyVlow MyVhigh2 Typ |** **... **... |** **[Algorithmic Model] **Executable Windows_VisualStudio_32 GenericTx.dll GenericTx.ami **[End Algorithmic Model] ****************************************************************************** ANALYSIS PATH/DATA THAT LED TO SPECIFICATION **** BIRD 117.1 was flawed because it allowed [External Circuit] to reference **** .ami files for parameter assignments with the "AMIfile()" reserved word. *** These references cannot be resolved, 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 [External Circuit] doesn't *** have a way to know what .ami file the "AMIfile()" syntax should read. **** BIRD 117.2 removed the possibility to use the reserved *** word "AMIfile()" for parameter assignments under [External Circuit] to *** eliminate that problem. **** In BIRD 117.3 a slight modification was made to the rules of the **** reserved word AMIfile(). The modification makes provisions for the **** usage of a default value in case the assignment using the reserved **** word fails for some reason. These changes are marked by four asterisks **** at the beginning of each line. ****************************************************************************** ANY OTHER BACKGROUND INFORMATION: ******************************************************************************