I think the example and the text are actually correct. We really do have two
different mechanisms whereby AMI models calculate and return values that
depend on other values. Both AMI_Resolve and AMI_Init do that, but the
results are used at different times by the EDA tool.
Usage Dep is only for AMI_Resolve, which is called before AMI_Init to help
the EDA tool make some adjustments before producing the analog channel
impulse response. This is why my_file in the example determines which s4p
file to use.
Usage Out for Rx_Receiver_Sensitivity means the value must be calculated in
time for the EDA tool to do bit stream recovery. In this example, AMI_Init
determines and outputs Rx_Receiver_Sensitivity, and that determination is
based on other inputs like corner. Hence it "depends" on input parameters,
but it is not the same as a Dep parameter that AMI_Resolve calculates. I
haven't seen anything precluding the possibility that
Rx_Receiver_Sensitivity could change over time, with AMI_GetWave outputting
it for the simulator to adapt bit recovery during simulation. But I don't
know if any serdes do that, and the example doesn't need to mention that
detail anyway.
The use of "dependency" and "resolve" in the sentence about AMI_Init seems
unfortunate. That sentence might be changed to:
Rx_Receiver_Sensitivity is of usage type Out, and its value is calculated
and output by AMI_Init, based on the Model_Name, my_corner, OP_mode and
bit_time inputs.
Mike
From: ibis-macro-bounce@xxxxxxxxxxxxx <ibis-macro-bounce@xxxxxxxxxxxxx> On
Behalf Of Mirmak, Michael
Sent: Friday, November 2, 2018 2:45 PM
To: IBIS-ATM (ibis-macro@xxxxxxxxxxxxx) <ibis-macro@xxxxxxxxxxxxx>
Subject: [ibis-macro] Potential technical errors in Dependency examples
(this is a modified version of a mail sent earlier this month to the
Editorial Task Group)
Pages 192-193 of the current IBIS 7.0 draft (page 179-180 of IBIS 6.1)
contain a few strange problems with the dependency text and example. In the
text below, a grammatical error has been corrected, but a technical issue
may remain.
In particular, shouldn't the "Rx_Receiver_Sensitivity" be Usage Dep, not
Usage Out? The explanatory text states that Rx_Receiver_Sensitivity is
dependent on OP_mode, and though the last sentence mentions that
Rx_Receiver_Sensitivity is determined by AMI_Init, it's not clear why this
case has Usage Out if Usage Dep is permitted (and involved). Is there an
example of where Usage Dep for Rx_Receiver_Sensitivity would be used (it is
a legal option)?
A diagram would very much help here, but I doubt we have the time to include
one.
* MM
Relevant text
Example:
(Rx_model
(Reserved_Parameters
(AMI_Version (Usage Info) (Type String) (Value "7.0")
(Description "This is a v7.0 AMI file."))
(Resolve_Exists (Usage Info) (Type Boolean) (Value True)
(Description "Indicates whether the executable model implements
AMI_Resolve."))
(Model_Name (Usage In) (Type String) (Value "ignore_me")
(Description "IBIS model name"))
(Rx_Receiver_Sensitivity (Usage Out) (Type Float) (Range 0.0 0.0 0.01)
(Description "Value depends on OP_mode and data rate"))
(Init_Returns_Impulse (Usage Info) (Type Boolean) (Default True)
(Description "Impulse response is returned"))
(GetWave_Exists (Usage Info) (Type Boolean) (Default True)
(Description "GetWave Exists"))
)
(Model_Specific
(my_file (Usage Dep) (Type String) (Value "ignore_me.s4p")
(Description "Rx analog model. Value depends on OP_mode"))
(my_corner (Usage In) (Type String) (Corner "Typ" "Min" "Max")
(Description "Informs the executable model what corner is selected by
user"))
(OP_mode (Usage In) (Type Integer) (List 0 1 2 3)
(Description "Operation mode"))
.
)
)
In this example, the Rx analog model is represented with a 4-port Touchstone
file specified by parameter my_file. Both Rx_Receiver_Sensitivity and
my_file depend on the legacy IBIS model name, parameter my_corner, and
parameter OP_mode, which specifies the device operation mode.
Rx_Receiver_Sensitivity also depends on bit_time. Parameters Model_Name,
my_corner and OP_mode, having usage type In, are included in both input
parameter strings to AMI_Resolve and AMI_Init. my_file is of usage type Dep,
and its dependency on Model_Name, my_corner and OP_mode is resolved in
AMI_Resolve, which returns the value of my_file. Rx_Receiver_Sensitivity is
of usage type Out, and its dependency on Model_Name, my_corner, OP_mode and
bit_time is resolved in AMI_Init, which returns the value of
Rx_Receiver_Sensitivity.