Alfred, The devil in the detail for taps has a simple solution. IBIS AMI has a special tap type of parameter. Here is an example of how this looks in the .ami file: (My_Tx (Reserved_Parameters (.) (Backchannel_Method (List "KR" "PCIe3" "IEEE-25G") (Type String) (Usage InOut) (Description "Backchannel Method") ) ) (Model_Specific (Tx_Tap_Register (-1 (Increment 0 0 15 1) (Type Tap) (Usage InOut) (Description "Pre-cursor tap register value")) (0 (Increment 63 0 63 1) (Type Tap) (Usage InOut) (Description "Main-cursor tap register value")) (1 (Increment 0 0 31 1) (Type Tap) (Usage InOut) (Description "Post-cursor 1 tap register value")) (2 (Increment 0 0 15 1) (Type Tap) (Usage InOut) (Description "Post-cursor 2 tap register value")) ) (Tx_Tap_Normalized (-1 (Range 0. -.25 .25) (Type Float) (Usage InOut) (Description "Pre-cursor tap normalized value")) (0 (Range 1. 0. 1.) (Type Float) (Usage InOut) (Description "Main-cursor tap normalized value")) (1 (Range 0. -.5 .5) (Type Float) (Usage InOut) (Description "Post-cursor 1 tap normalized value")) (2 (Range 0. -.25 .25) (Type Float) (Usage InOut) (Description "Post-cursor 2 tap normalized value")) ) (Tx_Swing (Range (7 0 7) (Type Integer) (Usage InOut) (Description "Swing settings")) (Tap_Conversion_-1 (Dependency (Labels "My_Tap_Register.-1 In" "My_Tap_Normalized.-1 Out_PWL") (Row1 (List 0 -.25) (Usage Info) (Type Float)) (Row2 (List 15 .25) (Usage Info) (Type Float)) ) ) (.) ) ) The tells the EDA tool (and the Rx) that the Tx has one pre-cursor and two post-cursor taps. The minimum "Register" value of tap -1 (precursor) is 0, max is 15, allowed values are 0, 1, .15, and the default is 0. The minimum "Normalized" value of tap -1 is -.25 and the maximum value is .25. The Tap_Conversion_-1 Dependency table describes the relationship between the register value of the tap and the Normalized or relative tap weights that the buffer actually uses for each tap register settings. I would expect that this group can agree on reserved names for Tx_Tap_Register, Tx_Tap_Normalized, and Tx_Swing, and hopefully we can agree to the same names for the various standards. The Rx AMI file that supports only one post cursor tap might look as follows: (My_Rx (Reserved_Parameters (.) (Backchannel_Method (List "KR") (Type String) (Usage InOut) (Description "Backchannel Method") ) ) (Model_Specific (Tx_Tap_Normalized (-1 (Range 0. -1. 1.) (Type Float) (Usage InOut) (Description "Tx pre-cursor tap normalized value")) (0 (Range 1. 0. 1.) (Type Float) (Usage InOut) (Description "Tx main-cursor tap normalized value")) (1 (Range 0. -1. 1.) (Type Float) (Usage InOut) (Description "Tx post-cursor 1 tap normalized value")) ) (.) ) ) The EDA tool know that although the Tx supports "KR" "PCIe3" "IEEE-25G" and four taps, this particular Rx supports only "KR", and only three taps. It is not clear to me if KR specifies that the Tx Tap Register must have the same allowed values as described above, or if this mapping of the tap register to the normalized tap value can be model/vendor specific. In this example the EDA tool and the Rx knows the Tx has four taps (and their limits), and it knows that it can only optimized the first three. Also, in this case the RX returns updated values of the normalized tap coefficients, which the Tx will then internally convert to register values. This example just demonstrates the capabilities of AMI models to describe themselves to the EDA tool and their mated model. Whether we need to support both normalized and register representations now gets into details of the various specifications that and how the standards groups can agree on methods in AMI that will support interoperability between models from different vendors. Walter From: ibis-serdes-backchan-bounce@xxxxxxxxxxxxx [mailto:ibis-serdes-backchan-bounce@xxxxxxxxxxxxx] On Behalf Of Chong, Alfred Sent: Tuesday, February 15, 2011 9:35 PM To: ibis-serdes-backchan@xxxxxxxxxxxxx Subject: [ibis-serdes-backchan] Re: Feedback now required from Backchannel SerDes Silicon Developers. Walter, If the devil is in the details, I think you are the right candidate to tame the devil. In my previous email, I did not restrict the backchannel parameter to 1 pre and 1 post cursors; it can be expanded to multiple pre and post cursors. Eg, (Tx_Root_backchannel (Pre_cursor1) (Pre_cursor2) . (Pre_Cursor[n]) (Post_cursor1) (Post_cursor2) .(Post_cursor[n])) The above example is merely to illustrate the idea, I will leave the fun of working out the detail of the parameter tree structure to you. I think you also need to work out the detail of determining whether one vendor TX.dll can run with another vendor RX.dll in backchannel. Here is an example that I can think of on the fly, Vendor A has three parameters for optimization in its TX.dll. (Tx_Root_backchannel (Pre_cursor1) (Post_cursor1) (Swing)) Vendor B can only optimize two parameters in its RX.dll (Rx_Root_backchannel (Post_cursor1) (Pre_cursor1)) There are two concerns here. Firstly, the RX pre and post cursors was defined in reverse order of TX, should the order be standardized or EDA tool should take care of it? Secondly, RX searching algorithm from vendor B can only train post and pre cursors and not swing. EDA tool should be smart enough to handle this case. One solution is always return 'hold' for swing to TX from EDA tool, and return the value (inc/dec/hold) for post and pre cursors generated by the RX. Regards, Alfred _____ From: ibis-serdes-backchan-bounce@xxxxxxxxxxxxx [mailto:ibis-serdes-backchan-bounce@xxxxxxxxxxxxx] On Behalf Of Walter Katz Sent: Tuesday, February 15, 2011 5:47 PM To: ibis-serdes-backchan@xxxxxxxxxxxxx Subject: [ibis-serdes-backchan] Re: Feedback now required from Backchannel SerDes Silicon Developers. Alfred, I understand your proposal, and I generally agree, the devil is in the details, but I can work out these details from what you have proposed. I have two specific questions/comments. I understand that the KR and PCIE3 gen specs require that there be at least one pre-cursor and one post-cursor tap. But I believe that they also allow more than one pre-cursor and more than one post-cursor taps as well. We will also need to define a new reserved parameter (e.g. Tx_Stimulus) which would have defined values like PRBS-7, PRBS-15, .). Walter From: ibis-serdes-backchan-bounce@xxxxxxxxxxxxx [mailto:ibis-serdes-backchan-bounce@xxxxxxxxxxxxx] On Behalf Of Chong, Alfred Sent: Tuesday, February 15, 2011 5:09 PM To: ibis-serdes-backchan@xxxxxxxxxxxxx Subject: [ibis-serdes-backchan] Re: Feedback now required from Backchannel SerDes Silicon Developers. Walter, I personally prefer second suggestion with some modification on your proposed parameter structure to avoid over exposing proprietary information as mentioned by Kumar. (Tx_Root_backchannel (Pre_cursor) (Post_Cursor)) In TX ami file, Pre_cursor and Post_Cursor are specified as backchannel parameters that need to be optimized. (RX_Root_Backchannel (Pre_Cursor) (Post_Cursor) (Swing)) The above parameter tree tells the users that RX supports back-channel optimization, it can train three parameters, and the preferred order is Pre_Cursor, Post_Cursor, and followed by Swing. At the start of the back-channel training, TX is set to default pre-cursor and post-cursor settings and RX have no idea what the pre and post cursors settings are. After the simulation, RX dll returns increment, decrement, or hold for (Pre_cursor) and (Post_Cursor) respectively to EDA tool and thus TX dll. Then, TX dll re-acts accordingly and returns max, min, or updated. The back-channel training is complete when RX dll returns hold for both Pre_cursor and Post_cursor. RX does not need to tell TX to increment or decrement the Pre_cursor and Post_Cursor by how much, TX has its own default step size for each of the parameter for back-channel optimization. Finally, TX dll spells out the adapted Pre_cursor and Post cursor settings at the end of the back-channel-optimization. This method is very similar to IEEE auto-negotiation protocol specified in KR or PCIE3, and I think it is appreciated if AMI back-channel optimization follows this practice to avoid the needs for silicon vendors to put in dramatically huge effort to modify existing searching algorithm code to work with AMI EDA tool. I would modify #2 to The Rx tells the EDA tool what pattern needs to be simulated next, and which taps needs to be incremented/decremented/hold. Regards, Alfred _____ From: ibis-serdes-backchan-bounce@xxxxxxxxxxxxx [mailto:ibis-serdes-backchan-bounce@xxxxxxxxxxxxx] On Behalf Of Walter Katz Sent: Monday, February 14, 2011 12:01 PM To: IBIS-BackChannel Subject: [ibis-serdes-backchan] Feedback now required from Backchannel SerDes Silicon Developers. Backchannel SerDes Silicon Developers. We now need feedback from the developers of Backchannel Silicon on the "Layers" of Backchannel Co-Optimization that AMI modeling needs to support. Three possible "Layers" are: 1. Statistical: The Rx tells the EDA Tool and the Tx model what its tap coefficients should be. 2. Time Domain Behavioral: The Rx tells the EDA tool what pattern needs to be simulated next, and which taps needs to be incremented/decremented and by how much. 3. Time Domain Detailed: The Rx communicates the actual binary commands to the Tx models that will be sent to the Tx model, and the Tx model sends the appropriate payload, and adjusts its configuration accordingly. Can the Backchannel SerDes Silicon Developers in this reflector please respond. Walter -----Original Message----- From: ckumar [mailto:ckumar@xxxxxxxxxxx] Sent: Friday, February 11, 2011 1:41 PM To: wkatz@xxxxxxxxxx Cc: IBIS-ATM; ibis-serdes-backchan@xxxxxxxxxxxxx Subject: Re: [ibis-macro] Structural changes to the AMI standard required to support Backchannle Co-optimization I see that this proposal exposes the entire architecture of tx and rx to each other and expects them to interpret each other's parameters. The back channel communication standards are based on minimalist and necessary communication between rx and tx. from rx: 1. rx knows the number of taps in tx 2. rx can only ask tx to increment/decrement the taps. It does not or care to know what the absolute value of tx means from tx: tx communicates to rx whether the the specified taps are adjustable at all or they have reached their min/max limit The mode of communication also depends upon the standard and should be defined in the particular standards file On Fri, 11 Feb 2011 09:00:05 -0500, "Walter Katz" < <mailto:wkatz@xxxxxxxxxx> wkatz@xxxxxxxxxx> wrote: > IBIS-ATM, > > > > This e-mail is being sent to the IBIS ATM (Advanced Technology > Modeling) group to describe the structural changes required to the > IBIS-AMI interface. > The Backchannel Reflector is being cc's as well. > > > > Two changes are required to the IBIS-AMI interface to support backchannel. > The first is to allow the Tx AMI DLL to know what the Rx AMI DLL is telling > it and the Rx AMI DLL needs to know what the Tx AMI DLL is telling it. > Information is currently passed into a DLL as a text string in in a similar > parameter tree format as defined in the .ami file for that model. The roor > of this parameter tree is the root of the parameter tree in the .ami file. > The simple enhancement to the AMI interface is to allow this string to > contain two parameter trees, one with the root of the parameter tree > for the model, and the other tree containing the root of the parameter > tree fo the > model at the other end of the channel. The following example should > make this clearer: > > > > Assume that the parameter tree for the Tx model is: > > > > (Tx_Root (FFE_Tap (-1 -.03) (0 .9) (1 -.07))) > > > > and the parameter tree for the Rx model is: > > > > (Rx_Root (DFE_Tap (1 -.1) (2 -.05) (3 .05) (4 .1) (5 -.01))) > > > > In the current standard the Tx just gets the (Tx_Root .) tree and the > Rx just gets the (Rx_Root .) tree. > > > > The proposed change will allow the Tx model to receive: > > > > (Tx_Root (FFE_Tap (-1 -.03) (0 .9) (1 -.07))) (Rx_Root (DFE_Tap (1 > -.1) (2 > -.05) (3 .05) (4 .1) (5 -.01))) > > > > and the Rx model to receive > > > > > > > > > > Thus, the Rx model can determine the number of Tx pre-cursor and > post-cursor taps, and the values of all of the Tx taps. > > > > > > The DLL's not only receive data in this format, but also output data > in this same format. Thus the Rx model can output these same trees > with updated values of the Tx Taps. > > > > > > As described in previous e-mails, there are three entry points to an > AMI model, AMI_Init, AMI_GetWave, and AMI_Close. The AMI_Init entry > has a parameters_in pointer and a parameters_out pointer. The > AMI_GetWave entry > only has a parameters_out pointer. Since Backchannel will require the > ability to pass a parameter tree inot the AMI_GetWave entry, the AMI > interface standard needs to modified to allow the AMI_GetWave > parameters_out pointer to also serve as a pointer to an input string. > > > > To enable the above changes, we will need to define a new Reserved > Parameter to indicate that this DLL does support multiple parameter > trees in the input parameter tree, and that the AMI_GetWave support > the parameter_out pointer > use as an input as well as an output. > > > > Walter > > > > > > Walter Katz > > Chief Scientist > > Signal Integrity Software, Inc. > > <mailto:wkatz@xxxxxxxxxx> wkatz@xxxxxxxxxx > > 303.449-2308 Walter Katz wkatz@xxxxxxxxxx Phone 303.449-2308 Mobile 303.883-2120