**************************************************************************** **************************************************************************** BIRD ID#: 130 ISSUE TITLE: Crosstalk Clarification With Respect to AMI REQUESTOR: Ken Willis, Sigrity, Inc. Arpad Muranyi, Mentor Graphics, Inc. DATE SUBMITTED: April 12, 2011 DATE REVISED: DATE ACCEPTED BY IBIS OPEN FORUM: June 24, 2011 **************************************************************************** **************************************************************************** STATEMENT OF THE ISSUE: The description of how crosstalk is to be handled with respect to AMI models is unclear in the 5.0 version of the IBIS spec. **************************************************************************** STATEMENT OF THE RESOLVED SPECIFICATIONS: On pg. 6, 180, and 185 change the section title for section 3.1.2.2 to "number_of_rows" from "row_size". On pg. 185, in section 3.1.1 replace these lines: | long AMI_Init (double *impulse_matrix, | long row_size, with the following lines: | long AMI_Init (double *impulse_matrix, |* long number_of_rows, Replace the following text in Section 3.1.2.1: | 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_size-1 | 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 filtered response. | The number of items in the matrix should remain unchanged. | | The aggressor columns of the matrix should not be modified. With the following text: | 3.1.2.1 impulse_matrix | ====================== | |* 'impulse_matrix' points to a memory location where the collection of |* channel voltage impulse responses, called the "impulse response matrix", |* is stored in the form of a single dimensional array of floating point |* numbers. The impulse response values are uniformly spaced in time. |* The sample spacing is given by the parameter 'sample_interval'. |* |* The first column of the impulse response matrix is the impulse response |* for a through channel, a channel that serves as a communication path |* between a transmitter/receiver pair. The rest of the columns contain the |* impulse responses of crosstalk channels. Crosstalk channels describe |* the paths between aggressor transmitters and victim receiver(s). |* Transmitters which are not part of a through channel between a certain |* transmitter/receiver pair are all considered aggressor transmitters with |* respect to that through channel. The receiver of the through channel in |* consideration is referred to as the victim receiver. The crosstalk |* impulse responses may be placed into the impulse response matrix in any |* order. |* |* The single dimensional array of 'impulse_matrix' is formed by concatenating |* the columns of an impulse response matrix, starting with the first column |* and ending with the last column. The matrix elements can be retrieved or |* identified using the following relationships: | | impulse_matrix[idx] = impulse response matrix element (row, col) |* idx = col * number_of_rows + row |* row: row index ranges from 0 to number_of_rows-1 |* col: column index ranges from 0 to aggressors |* |* Each impulse response in the impulse response matrix must have the same |* sample spacing and the same length. |* |* To include any crosstalk effects in the Reference Flows described in |* this section of this specification, the crosstalk impulse responses |* must be included in the 'impulse_matrix' and passed to the transmitter and |* receiver AMI_Init functions. If present, any filtering in the transmitter |* and/or receiver AMI_Init function(s) must also be applied to the crosstalk |* impulse responses to properly account for the crosstalk effects. |* |* Note that the 'impulse_matrix' will contain a different set of crosstalk |* impulse responses for the transmitter and receiver AMI_Init calls, even for |* a transmitter/receiver pair of the same through channel. A transmitter's |* AMI_Init function operates on those impulse responses which originate from |* that transmitter, including the through channel and crosstalk channel |* impulse responses. A victim receiver's AMI_Init function, on the other |* hand, operates on all of those impulse responses which are received by |* that victim receiver, including the through channel and crosstalk channel |* impulse responses. |* |* As an illustration, consider a crosstalk analysis with five channels |* numbered 1 through 5, where channel 3 in the center is the through |* channel of the transmitter/receiver pair Tx3/Rx3, and Rx3 is the |* victim receiver. In this case channels 1, 2 and 4, 5 are the aggressor |* channels with the aggressor transmitters Tx1, Tx2, Tx4 and Tx5. If the |* five 'impulse_matrix'-es of the five transmitters' AMI_Init functions |* contain the following data: |* |************************************* |* impulse_matrix impulse_matrix |* column 1 column 2 |* |*Tx1 IR1_1 IR1_3 |*Tx2 IR2_2 IR2_3 |*Tx3 IR3_3 |*Tx4 IR4_4 IR4_3 |*Tx5 IR5_5 IR5_3 |************************************* |* |* then the 'impulse_matrix' passed into the victim receiver's (Rx3) AMI_Init |* function will contain the following data: |* |********************************************************************************* |* impulse_matrix impulse_matrix impulse_matrix impulse_matrix impulse_matrix |* column 1 column 2 column 3 column 4 column 5 |* |*Rx3 Tx3Init(IR3_3) Tx1Init(IR1_3) Tx2Init(IR2_3) Tx4Init(IR4_3) Tx5Init(IR5_3) |********************************************************************************* |* |* where "IRi_j" represents the impulse response from the transmitter on |* channel i to the receiver on channel j, Tx1Init() .. Tx5Init() represents |* the output of a transmitter's AMI_Init function which modified the impulse |* response denoted inside the parentheses. Note that while in this example |* the 'impulse_matrix' of each transmitter's AMI_Init function contains at |* most one crosstalk impulse response, the victim receiver's 'impulse_matrix' |* contains four crosstalk impulse responses. Also, using the above notation |* note that the first index number of each impulse response passed to the |* transmitter's AMI_Init function matches the transmitter's channel number, |* and the second index number of each impulse response passed to the |* receiver's AMI_Init function matches the receiver's channel number. |* |* It is the EDA tool's responsibility to rearrange the content of the |* 'impulse_matrix' between the transmitter and receiver AMI_Init calls. |* |* The EDA tool is also responsible to limit the number of crosstalk channel |* impulse responses in 'impulse_matrix' so that they shall not exceed |* 'Max_Init_Aggressors' as specified in the corresponding .ami parameter |* file of the algorithmic model. Consequently, the 'aggressors' parameter |* of the AMI_Init function shall never contain a greater value than the |* value provided in 'Max_Init_Aggressors' of the corresponding .ami parameter |* file. While the allocated memory space for 'impulse_matrix' may be larger, |* it is assumed that there is no meaningful data in that space beyond the |* last column of the impulse response matrix that is stored in it. |* |* The AMI_Init function must not change the size or organization of |* 'impulse_matrix' that it was given in any way. |* **************************************************************************** ANALYSIS PATH/DATA THAT LED TO SPECIFICATION: Discussion within the IBIS-ATM committee provided many important inputs to this BIRD. It was desirable to clarify that the impulse_matrix columns populated by the aggressor channels should include any impulse response modification that is to be made by the respective aggressor transmitters. **************************************************************************** ANY OTHER BACKGROUND INFORMATION: The following documents are provided as supporting material for this BIRD: - "CrossTalk_IRmatrix_02.pdf", provided by Arpad Muranyi of Mentor Graphics http://www.vhdl.org/pub/ibis/macromodel_wip/archive/20110331/arpadmuranyi/impulse_matrix%20and%20cross%20talk%20in%20IBIS-AMI/CrossTalk_IRmatrix_02.pdf - "CrossTalk.pdf", provided by Walter Katz of SiSoft http://www.vhdl.org/pub/ibis/macromodel_wip/archive/20110308/walterkatz/Impulse%20Crosstalk%20Matrix%20Explanation%20Using%20Touchstone%20Example/Crosstalk.pdf The BIRD was unanimously approved at the June 24, 2011 IBIS IOpen Forum teleconference. ****************************************************************************