[ibis-macro] Re: Suspect example for branches

  • From: Walter Katz <wkatz@xxxxxxxxxx>
  • To: <michael.mirmak@xxxxxxxxx>, "IBIS-ATM" <ibis-macro@xxxxxxxxxxxxx>
  • Date: Tue, 15 Nov 2016 22:03:58 -0500 (EST)

MM,

 

In this example Poles and Zeros are tables that are input into the DLL in
their entirety. The parameter CTLE has two possible value that the user
choses. A better description of CTLE might be 

  (Description "The value of CTLE(Row selects a row in the Poles and Zeros
table"))

 

Note that CTLE(Row in InOut. The Rx model may chose a different Row as
part if its internal optimization method.

 

The statement "A user could theoretically select Row to be 0 and then
Poles and Zeros to be each 1, without any issue being flagged by the tool
(the executable model file may report something)." is erroneous. The user
cannot select CTLE(Poles and CTLE(Zeros, just CTLE(Row. Again, CTLE(Poles
and CTLE(Zeros are read in in their entirety.

 

Walter

 

 

From: ibis-macro-bounce@xxxxxxxxxxxxx
[mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Mirmak, Michael
Sent: Tuesday, November 15, 2016 9:01 PM
To: IBIS-ATM (ibis-macro@xxxxxxxxxxxxx) <ibis-macro@xxxxxxxxxxxxx>
Subject: [ibis-macro] Suspect example for branches

 

On page 209 of the current 6.1 IBIS document, under "Model Specific
Parameters", the following example is shown:

 

(Model_Specific
   (CTLE
      (Description "CTLE consists of two selectable sets of Poles and
Zeros")
      (Row (Range 0 0 1) (Type Integer) (Usage InOut) (Description "Two
CTLEs"))
      (Poles (Usage In) (Description "CTLE Poles")
         (Type Integer Float Float Float Float Float Float)
         (Table
         (Labels "Row" "Real_1" "Imag_1" "Real_2" "Imag_2" "Real_3"
"Imag_3")
                  (0   -3.06e+9  9.94e+9 -2.91e+9 5.94e+9  -1.36e+9  0.0)
                  (1   -1.03e+10 0.0     -4.21e+9 5.42e+9   0.0      0.0)
         )
      )
      (Zeros (Usage In) (Description "CTLE Zeros")
         (Type Integer Float Float Float Float)
         (Table
         (Labels "Row" "Real_1" "Imag_1" "Real_2" "Imag_2")
                  (0  -3.62e+9    0.0    -2.33e+9  6.68e+9)
                  (1  -2.93e+9    1.10e+9 0.0      0.0)
         )
      )
   )
)

 

This example is curious.  It shows how branches may be created that
include sub-branches that define Model Specific Parameters (e.g., "CTLE"
is a branch, with sub-branches "Row", "Poles", and "Zeros").

 

Unfortunately, I believe this example is highly misleading.  The
description implies that the subparameter Row, acting as an input, selects
which specific Table rows from sub-parameters Poles and Zeros should be
used in a given simulation.  In other words, Row is not a reserved word
and is implied to control in some way which specific rows for Poles and
Zeros the EDA tool selects: if Row is 0, then row 0 of Poles and row 0 of
Zeros should be automatically selected.

 

However, these are inputs from the user to the tool and eventually to the
executable model file.  How would an EDA tool "know" that the setting of
Row controls the row to use for the Tables Poles and/or Zeros?  From what
I can tell, the EDA tool will read in Row, Poles and Zeros as independent
model-specific parameters at the same hierarchy level.  A user could
theoretically select Row to be 0 and then Poles and Zeros to be each 1,
without any issue being flagged by the tool (the executable model file may
report something).

 

This example have been an early attempt to express dependent parameters
before Usage Dep was added.  If that's the case, then this example should
be updated to use Usage Dep.  If not, then this example still needs
scrubbing to clarify how the relationship between Row, Poles and Zeros is
controlled.

 

Am I missing something here?

 

-          MM

Other related posts: