Ambrish, The propose of this e-mail was to understand the difference between your approach and my approach. The example .ami files in this e-mail is essentially you approach. I move the Reserved Parameters in the .bci file into the Rx .ami file. The Model Specific parameters in the .bci file describes the "black box" communication between the Rx and the Tx. The contents of this black box is the key element that has to be agreed upon for a .bci standard since both the Tx and Rx DLL need to be able to read and write it. You define this black box in the .bci file, I just said the contents of the black box need to defined by the protocol and just put it in the Backchannel Message. I will remind you that these AMI models are not intended to be an alternative implementation of your proposal, just a better way of describing your proposal. As to who and how protocols are developed, published and approved, that is a problem. In my opinion, BIRD 147 should not be approved until there is a PCIe Gen3 and 802.3 protocol that gets approved at the same time. As for private training, a Tx model writer and an Rx model writer can do anything they want as long as there is a mechanism in the standard for the EDA tool can move their agreed upon message back and forth between the Tx and Rx. No I am not abandoning my belief that a Tx should be protocol agnostic. It is clear that a principle point of BIRD 147 is that communications between the Tx and Rx are a black box and therefor the Tx cannot be protocol agnostic. Note that the first line of my e-mail was "I think I can now do a better job of explaining the BIRD 147 way of communicating between the Tx and Rx." As to the .ami files that I presented last week, see my comments below: Walter From: ibis-macro-bounce@xxxxxxxxxxxxx [mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Ambrish Varma Sent: Wednesday, April 30, 2014 5:08 PM To: IBIS-ATM Subject: [ibis-macro] Re: I think I can now do a better job of explaining the BIRD 147 way of communicating ... Hi Walter, Could you please help clarify these issues with your proposal: 1) You mention in the description for 'Backchannel_Message' 'The contents of this message is agreed upon in the 802.3KR protocol.' Can you elaborate how and who agrees to this content - with a) published protocols - and b) with 'private' protocols that the designers of Tx and Rx have agreed upon. 2) It is not clear if this method supports multiple protocols in the Tx and Rx AMI Models - can you please elaborate on that? 3) With the 'Backchannel_Protocol' parameter in the 802.3KR_Tx file below - are you now abandoning your 'Protocol agnostic' Tx AMI model concept? I also have a question about the .ami files that you discussed in the ATM last couple of weeks: 4) In PCIe3_Rx.ami, you have a Reserved Parameter 'Tx_Tap_Coefficient_Ranges', Usage In, where you mention that the EDA tool sets this after reading the 'Tx_Tap_Coefficient_Ranges'. This is not a dynamic parameter (being reserved - and set by the tool once). How does a Tx help the Rx in reducing the range dynamically, thereby 'honing' in on a coefficient value over the backchannel process. WMK> This is equivalent to BIRD 147_Draft8 1.5.2 i) on page 11: Example for the string created by the Tx AMI_Init and a brief description are included below: i) "(BCI (taps (-1 -0.25 0)(0 1)(1 -0.3 0.3)))" : The main tap is specified by the tap number 0 with a value of 1. The pre tap (-1) cannot be lower than -0.25 and higher than 0 (-0.25 <= value <= 0). The post tap (1) can have a value between -0.3 and 0.3 (-0.3 <= value <= 0.3). You have chosen to overload the .bci Model specific parameter taps to sometime convey tap values, sometimes tap limits and sometimes tap increments. I chose to create a specific Tx Reserved Parameter in table format to publish the limits of the tap coefficients, and a separate Tx reserved parameter to publish the limits of the tap indexes. The Tx never has a need to reduce the range, it simply publishes what the limits are. 5) Could you explain how 'Tx_Tap_Increment_Parameter' and 'Rx_Tap_Increment_Parameter' work in the 802.3KR_Tx.ami and 802.3KR_Rx.ami respectively? WMK> The point here is that all a Tx needs is a model specific tap increment parameter, and it can be any name the Tx model maker chooses. Similarly the Rx can have a parameters for incrementing the Tx taps. The 'Tx_Tap_Increment_Parameter' and 'Rx_Tap_Increment_Parameter' are the reserved parameters that the Tx and Rx publish the name of their Model Specific parameters that are used to increment and decrement the Tx taps. Rx GetWave in **parameters_out outputs the Tx tap increments in its model specific parameter of the name specified by 'Rx_Tap_Increment_Parameter'. The EDA tool know to populate the Tx Model specific tap parameter with the name specified by the value of 'Tx_Tap_Increment_Parameter'. This is a little more work for the EDA tool then just copying the Rx GetWave output string and putting it into the Tx GetWave input string, this is the little bit of overhead the EDA tool needs to do because the communication between the Rx and Tx is not a black box. 6) In 802.3KR_Rx.ami in the Model_Specific parameters, you have a parameter 'This_Tap_Increment' which says 'EDA tool sets Tx_Tap_Increment_Parameter to/from these values'. Could you please explain how the EDA tool gets access to the Model_Specific parameters and know what to do with them? WMK> Explained in the answer to 5) above. The Rx Reserved parameter 'Rx_Tap_Increment_Parameter', and the Tx reserved parameter publish to the EDA tool the Rx and Tx model specific parameters that contain the tap increment information that needs to be passed back and forth between the Tx and Rx. There are similar parameters that publish the Rx and Tx model specific parameters that contain the Tap coefficients and tap indexes. Thanks, Ambrish. From: ibis-macro-bounce@xxxxxxxxxxxxx [mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Walter Katz Sent: Tuesday, April 29, 2014 11:03 PM To: IBIS-ATM Subject: [ibis-macro] I think I can now do a better job of explaining the BIRD 147 way of communicating ... All, I think I can now do a better job of explaining the BIRD 147 way of communicating between the Tx and Rx. One does not need a .bci file for this as suggested in the following example Tx. One does need a parameter that advertises the Backchannel_Protocol "802.KR" and a placeholder to contain messages between the Tx and Rx AMI_Init and AMI_GetWave functions. (802.3KR_Tx (Description "802.3KR transmitter model") || Revision 1.0 -- 4/15/2014 (Reserved_Parameters (AMI_Version (Usage Info) (Type String) (Value "7.0") (Description "AMI Version 7.0.")) (Ignore_Bits (Usage Info) (Type Integer) (Value 3) (Description "Ignore three bits to fill up tapped delay line.")) (Max_Init_Aggressors (Usage Info) (Type Integer) (Value 25) (Description "Number of aggressors is actually unlimited.")) (Init_Returns_Impulse (Usage Info) (Type Boolean) (Value True) (Description "Impulse response is returned.")) (GetWave_Exists (Usage Info) (Type Boolean) (Value True) (Description "GetWave is well and truly provided in the module.")) | New Reserved Parameters (Backchannel_Protocol (Value "802.KR")(Type String)(Usage In) (Description "This model supports the 802.3KR protocol")) (Backchannel_Message (Value "NA")(Type String)(Usage InOut) (Description "The contents of this message is agreed upon in the 802.3KR protocol. The Tx AMI_Init call may out put this message which gets passed Into the Rx AMI_Init input. The output of Rx AMI_Init input may output a message in as agreed upon in the 802.3KR protocol. This message can be input to the Tx AMI_Init function or calls to Tx AMI_GetWave, and so forth.")) ) | End Reserved_Parameters (Model Specific | . ) | End Model_Specific ) Similarly, the Rx model might look like the following. This is equivalent to having a .bci file as in BIRD 147, both the Tx and Rx point to the same protocol name (not a file as in BIRD 147), and the training information is all in the Backchannel_Message, and this message is defined in the (Backchannel_Protocol "802.KR") specification. I am not trying to do BIRD 147 in a different way just to be different, I think that this example does a better job of explaining how BIRD 147 works. The key in BIRD 147 is that both Tx and Rx models need to agree on the contents of the Backchannel_Message, and this message can truly be a black box. Ultimately, the choice is do we proceed with the statement that all Tx's are essentially the same and they have Tap indexes and/or Tap coefficients and therefore can be protocol agnostic, requiring that the EDA tool translate what the Rx wants the Tx to do into terms the Tx understands, or does the DLL have to agree to the contents of a Message that gets passed back and forth between the DLL's. (802.3KR_Rx (Description "PCIe3 receiver model") || Revision 1.0 -- 3/15/2014 (Reserved_Parameters (AMI_Version (Usage Info) (String Integer) (Value "7.0") (Description "AMI Version 7.0.")) (Ignore_Bits (Usage Info) (Type Integer) (Value 10000) (Description "DFE may take a 10,000 bits to settle.")) (Max_Init_Aggressors (Usage Info) (Type Integer) (Value 25) (Description "Number of aggressors is actually unlimited.")) (Init_Returns_Impulse (Usage Info) (Type Boolean) (Value False) (Description "Impulse response is not returned, statistical simulation is not supported.")) (GetWave_Exists (Usage Info) (Type Boolean) (Value True) (Description "GetWave is well and truly provided in the module.")) (Rx_Receiver_Sensitivity (Usage Info)(Value 0.20) (Type Float) (Description "The receiver sensitivity.")) | New Reserved Parameters (Backchannel_Protocol (Value "802.KR")(Type String)(Usage In) (Description "This model supports the 802.3KR protocol")) (Backchannel_Message (Value "NA")(Type String)(Usage InOut) (Description "The contents of this message is agreed upon in the 802.3KR protocol. The Tx AMI_Init call may out put this message which gets passed Into the Rx AMI_Init input. The output of Rx AMI_Init input may output a message in as agreed upon in the 802.3KR protocol. This message can be input to the Tx AMI_Init function or calls to Tx AMI_GetWave, and so forth.")) (Training (Usage InOut) (Type Boolean) (List True False) (Description "As In, True tells Rx GetWave to continue training as Out, False Rx GetWave tells EDA tool to stop training")) (Max_Training_Bits (Usage Info) (Type Integer) (Value 100000) (Description "Stop training after 100,000 bits.")) (Pre_Amble (Description "Bit pattern to start training.") (Pattern_Type (Usage Info)(Value "b") (Type String) (Description "Pattern is string of 0's and 1's.")) (Bit_Pattern (Usage Info)(Value "0000000001111111111") (Type String) (Description "Pre-amble pattern"))) (Training_Pattern (Description "Training pattern.") (Pattern_Type (Usage Info)(Value "LSFR") (Type String) (Description "Pattern is LSFT.")) (LSFR_Seed (Usage Info)(Value "10110011101") (Type String) (Description "LSFR Seed"))) (LSFR_Taps (Usage Info)(Description "LSFR Taps")(Type Integer) (Table (Labels "First tap" "Second tap" "Thirs tap") (1 9 11)))) (Post_Amble (Description "Bit pattern to end training.") (Pattern_Type (Usage Info)(Value "b") (Type String) (Description "Pattern is string of 0's and 1's.")) (Bit_Pattern (Usage Info)(Value "000000000000000000000") (Type String) (Description "Post-amble pattern"))) ) | End Reserved_Parameters (Model_Specific | . ) | End Model_Specific ) Walter Katz wkatz@xxxxxxxxxx Phone 303.449-2308 Mobile 303.335-6156