*****************************************************************************
*****************************************************************************
BIRD ID#: 108.1
ISSUE TITLE: Fixing Algorithmic Modeling API Impulse_matrix Nomenclature
REQUESTER: Bob Ross, Teraspeed Consulting Group
DATE SUBMITTED: April 29, 2008
DATE REVISED: June 6, 2008
DATE ACCEPTED BY IBIS OPEN FORUM: June 6, 2008
*****************************************************************************
*****************************************************************************
STATEMENT OF THE ISSUE:
In the Section, "NOTES ON ALGORITHMIC MODELING INTERFACE AND PROGRAMMING
GUIDE", the paragraphs describing impulse_matrix have inconsistent usuage
of the underbar character. The terms "impulse_matrix" and "impulse matrix"
are used.
The suggestion is to use impulse_matrix when naming the data and other
terms when describing the data or the structure.
*****************************************************************************
Replace this text:
 3 FUNCTION SIGNATURES
 =====================

 3.1 AMI_Init
 ============

 3.1.1 Declaration
 =================

 long AMI_Init (double *impulse_matrix,
 long row_size,
 long aggressors,
 double sample_interval,
 double bit_time,
 char *AMI_parameters_in,
 char **AMI_parameters_out,
 void **AMI_memory_handle,
 char **msg)

 3.1.2 Arguments
 ===============

 3.1.2.1 impulse_matrix
 ======================

 Impulse matrix is the channel impulse response matrix. The impulse values
 are in volts and are uniformly spaced in time. The sample spacing is given
 by the parameter ‘sample_interval’.

 The ‘impulse_matrix’ is stored in a single dimensional array of floating
 point numbers which is formed by concatenating the columns of the impulse
 response matrix, starting with the first column and ending with the last
 column. The matrix elements can be retrieved /identified using

 impulse_matrix[idx] = element (row, col)
 idx = col * number_of_rows + row
 row – row index , ranges from 0 to row_size1
 col – column index, ranges from 0 to aggressors

 The first column of the impulse matrix is the impulse response for the
 primary channel. The rest are the impulse responses from aggressor drivers
 to the victim receiver.


 The AMI_Init function may return a modified impulse response by modifying
 the first column of impulse_matrix. If the impulse response is modified,
 the new impulse response is expected to represent the concatenation of the
 model block with the blocks represented by the input impulse response.

 The aggressor columns of the matrix should not be modified.

 3.1.2.2 row_size
 ================

 The number of rows in the impulse matrix.

 3.1.2.3 aggressors
 ==================

 The number of aggressors in the impulse matrix.

 3.1.2.4 sample_interval:
 ========================

 This is the sampling interval of the impulse matrix. Sample_interval is
 usually a fraction of the highest data rate (lowest bit_time) of the
 device. Example:

 Sample_interval = (lowest_bit_time/64)

 3.1.2.5 bit_time
 ================

 The bit time or unit interval (UI) of the current data, e.g., 100 ps, 200
 ps etc. The shared library may use this information along with the impulse
 matrix to initialize the filter coefficients.


With the following text with changes noted by "*" lines where
"impulse_matrix" is used, and "impulse response matrix" is the descriptive
version of the variable":
 3 FUNCTION SIGNATURES
 =====================

 3.1 AMI_Init
 ============

 3.1.1 Declaration
 =================

 long AMI_Init (double *impulse_matrix,
 long row_size,
 long aggressors,
 double sample_interval,
 double bit_time,
 char *AMI_parameters_in,
 char **AMI_parameters_out,
 void **AMI_memory_handle,
 char **msg)

 3.1.2 Arguments
 ===============

 3.1.2.1 impulse_matrix
 ======================

* 'impulse_matrix' is the channel impulse response matrix. The impulse values
 are in volts and are uniformly spaced in time. The sample spacing is given
 by the parameter ‘sample_interval’.

* The impulse_matrix is stored in a single dimensional array of floating
 point numbers which is formed by concatenating the columns of the impulse
 response matrix, starting with the first column and ending with the last
 column. The matrix elements can be retrieved /identified using

 impulse_matrix[idx] = element (row, col)
 idx = col * number_of_rows + row
 row – row index , ranges from 0 to row_size1
 col – column index, ranges from 0 to aggressors

* The first column of the impulse_matrix is the impulse response for the
 primary channel. The rest are the impulse responses from aggressor drivers
 to the victim receiver.


 The AMI_Init function may return a modified impulse response by modifying
 the first column of impulse_matrix. If the impulse response is modified,
 the new impulse response is expected to represent the concatenation of the
 model block with the blocks represented by the input impulse response.

 The aggressor columns of the matrix should not be modified.

 3.1.2.2 row_size
 ================

* The number of rows in the impulse_matrix.

 3.1.2.3 aggressors
 ==================

* The number of aggressors in the impulse_matrix.

 3.1.2.4 sample_interval:
 ========================

* This is the sampling interval of the impulse_matrix. Sample_interval is
 usually a fraction of the highest data rate (lowest bit_time) of the
 device. Example:

 Sample_interval = (lowest_bit_time/64)

 3.1.2.5 bit_time
 ================

 The bit time or unit interval (UI) of the current data, e.g., 100 ps, 200
* ps etc. The shared library may use this information along with the
* impulse_matrix to initialize the filter coefficients.

*****************************************************************************
ANALYSIS PATH/DATA THAT LED TO SPECIFICATION
This is an editorial correction to use "impulse_matrix" consistently.
BIRD108.1:
The following paragraph under 3.1.2.1:
* 'Impulse_matrix' is the channel impulse response matrix. The impulse values
 are in volts and are uniformly spaced in time. The sample spacing is given
 by the parameter ‘sample_interval’.
was changed to
* 'impulse_matrix' is the channel impulse response matrix. The impulse values
 are in volts and are uniformly spaced in time. The sample spacing is given
 by the parameter ‘sample_interval’.
to preserve the correct capitalization of 'impulse_matrix'
*****************************************************************************
ANY OTHER BACKGROUND INFORMATION:
*****************************************************************************