Thread Links Date Links
Thread Prev Thread Next Thread Index Date Prev Date Next Date Index

[BP] how to evaluate signaling method follow up




guys,

    Here is the next step after the proposal i sent out August 23.

    This includes:

    1.  A simulation file for NRZ simulation.

    2.  A transmitter subcircuit file for NRZ simulation.

    3.  A simulation file for PAM4 simulation.

    4.  A transmitter subcircuit file for PAM4 simulation.

    5.  a zip file with the PRBS pwl files i used.

    You can look at the files to see the structure of the simulation or
use them to do simulations yourself.  If you want to do simulations
you will need:

    1.  A receiver subcircuit file named "rx.inc".  I am treating
        receivers as proprietary.

    2.  Package model subcircuit files for the transmitter called:
        "TxPackage.inc" and for the receiver called: "RxPackage.inc"

    3.  A touchstone file describing the channel.  You may need to
        change the name of the file in the simulation file.

     You may want to change the parameter values in the simulation file.
The tap values i have included give fairly good EYEs with Steve
Anderson's thru6 channel and the stresses nearly or just re-close the
EYE.

    The over all structure of the simulation deck for either is:

    The simulation file includes:

      1.  Parameter values, which are in 3 kinds:
        A.  Transmitter definition parameter:
            i.   baud, baud rate:  10.3125G for NRZ or 5.15625G for PAM4
            ii.  Amp, the nominal peak to peak differential amplitude
            iii. Trf, the trapezoidal rise and fall time in UI
        B.  Transmitter peaking parameters:
            i.   1 Precursor and 1 postcursor tap value for NRZ
            ii.  2 Postcursor tap values for PAM4
        C.  Stress parameters:
            i.   XtalkAmp, interference amplitude (half peak to peak)
            ii.  XtalkFratio, ratio of interference frequency to
                 baud rate.
            iii. TJ, total jitter in UI
            iv.  dutyCycle_over_TJ, fraction of total jitter which is
                 at half baud rate
    2.  Transmitter sub circuit.  The transmitter sub circuit implements
        a 3 tap equalizer and includes parameterized jitter.
    3.  Package models.  I am going to ask that someone else find a
        suitable model.
    4.  The channel.
    5.  Receiver load (the Tx load is included in the subcircuit)
    6.  Interference injection sources.
    7.  An instance of the receiver sub circuit.  Someone else should
        provide the receiver model.  It may be encrypted.  The Out
        port or the MSB and LSB ports should be considered the
        final measurement point.

     If we decide to proceed with this approach the following will need
to be done before going too much farther:

     1.  Define standard values for Transmitter definition parameters
         and targets for Stress parameters.  These may be different for
         the 3 (or more) signaling schemes.
     2.  Find a  set of channels to simulate over.
     3.  Write scripts for analyzing the output including finding
         EYE size if that is relevant and checking for correct data.
     4.  Write scripts which pre-code PRBS data for duo-binary or
         write output analysis script to post-decode the data.
     5.  Generate longer data files for more through testing.  The
         included scripts should be good enough for finding the right
         equalizer settings etc. but we will want longer more complex
         patterns for final evaluation.
     6.  Separate out all the parts of the simulation file which are
         design values (like tap values) from the specified parts, and
         put them in an include file.
     7.  Fix the various problems which the ad-hoc will discover for
         me.

                      charles



|--------------------------------------------------------------------|
|       Charles Moore
|       Agilent Technologies
|       ASIC Products Division
|       charles_moore@agilent.com
|       (970) 288-4561
|--------------------------------------------------------------------|
test a 3 tap peaked transmitter into a IEEE802.3ap channel
.options list node post
.param baud=10.3125g
.param XtalkAmp=10m  XtalkFratio="2*(1+1/(3.7*127))" XtalkF=baud/XtalkFratio

Vxtalk  Xtalk  0  sin(0.0  XtalkAmp XtalkF)

Xtx  Tx_T  Tx_C  0  Tx baud=baud Amp=.8 Trf=.2 pre=.035 post=.38 \
                       TJ=300m  dutyCycle_over_TJ=.1

XtxPack  Tx_T  Tx_C  TP1_T  TP1_C  0  TxPackage



Ssa  TP1_T TP4_T  TP1_C TP4_C  0  MNAME=Sanderson
.MODEL Sanderson S  N=4  TSTONEFILE=thru6.s4p  TYPE=s

XrxPack  Rx_T  Rx_C  TP4_T  TP4_C  0  RxPackage
Rlt Rx_T  0   50
Rlc Rx_C  0   50
*crx Rx_T  Rx_C  205f

Extt Rx_T   Rxx_T  VCVS Xtalk 0 0.5
Extc Rx_C   Rxx_C  VCVS 0 Xtalk 0.5
Xrx  Rxx_T  Rxx_C  out  0  Rx

.include "TxNRZ3tap.inc"
.include "TxPackage.inc"
.include "RxPackage.inc"
.include rx.inc
.tran ".1/baud"  "600/baud"
.end

*  model NRZ transmitter with 3 taps
*  jitter added at 2 frequencies,
*  one at half the baud rate and the other
*  at a lower frequency
*  Parameters which can be passed are:
*
*  baud  =   the baud rate (bit rate for NRZ)
*  Apm   =   peak to peak differential amplitude into a perfect load
*  Trf   =   Rise and fall time in UI
*  pre   =   precursor tap weight,  total tap weight = 1.0
*  post  =   postcursor tap weight,  total tap weight = 1.0
*  TJ    =   total jitter peak to peak in UI
*  dutyCycle_over_TJ  = the fraction of jitter provided by half baud jitter
*
*  data in PRBS7_N.pwl  is a repeating 127 bit pattern with hooks for jitter
*  in each version N represents data advancement, so PRBS7_3.pwl dat is
*  one bit time later than PRBS7_4 etc.

.subckt  Tx  Tx_T  Tx_C  GND \
  baud=10.3125g  Amp=1 Trf=.2  pre=.05  post=.25 \
  TJ=300m  dutyCycle_over_TJ=.2

.param  period="1/baud"  tr="Trf*period" low="-.5*amp" hig=".5*amp"
.param  jt="period*TJ/2"
.param  pj="dutyCycle_over_TJ*jt"  rj="jt-pj"  rjr=".098"
.param  main="post+pre-1"
.param twopi="8*atan(1)"
.param  edge(n)="max(0,period*n+pj*cos(.5*twopi*n)+rj*sin(rjr*n*twopi))"

.include  "PRBS7_3.pwl"
.include  "PRBS7_4.pwl"
.include  "PRBS7_5.pwl"

G1   Tx_T   Tx_C  poly(2) PRBS7_5  0  init  0  0  0 0  0 "pre/50"  0
G2   Tx_T   Tx_C  poly(2) PRBS7_4   0  init  0  0  0 0  0 "main/50" 0
G3   Tx_T   Tx_C  poly(2) PRBS7_3 0  init  0  0  0 0  0 "post/50" 0
vinit init  0   pwl(0  0  1p  1)

Rt   Tx_T   GND   50
Rc   Tx_C   GND   50

G1D   dummy  0     poly(2) PRBS7_5  0  init  0  0  0 0  0 "pre/100"  0
G2D   dummy  0     poly(2) PRBS7_4   0  init  0  0  0 0  0 "main/100" 0
G3D   dummy  0     poly(2) PRBS7_3 0  init  0  0  0 0  0 "post/100" 0
Rd    dummy  0    50

.ends Tx
test a 3 tap peaked transmitter into a IEEE802.3ap channel
.options list node post
.param baud=5.15625g
.param XtalkAmp=10m  XtalkFratio="2*(1+1/(3.7*127))" XtalkF=baud/XtalkFratio

Vxtalk  Xtalk  0  sin(0.0  XtalkAmp XtalkF)

Xtx  Tx_T  Tx_C  0  Tx baud=baud Amp=.8 Trf=.2 post1=.32 post2=-.02 \
                       TJ=200m  dutyCycle_over_TJ=.1

XtxPack  Tx_T  Tx_C  TP1_T  TP1_C  0  TxPackage



Ssa  TP1_T TP4_T  TP1_C TP4_C  0  MNAME=Sanderson
.MODEL Sanderson S  N=4  TSTONEFILE=thru6.s4p  TYPE=s

XrxPack  Rx_T  Rx_C  TP4_T  TP4_C  0  RxPackage
Rlt Rx_T  0   50
Rlc Rx_C  0   50

Extt Rx_T   Rxx_T  VCVS Xtalk 0 0.5
Extc Rx_C   Rxx_C  VCVS 0 Xtalk 0.5
Xrx  Rxx_T  Rxx_C  MSB LSB  0  Rx bitrate=baud

.include "TxPAM4_3tap.inc"
.include "TxPackage.inc"
.include "RxPackage.inc"
.include rx.inc
.tran ".1/baud"  "600/baud"
.end

*  model PAM transmitter with 3 taps
*  jitter added at 2 frequencies,
*  one at half the baud rate and the other
*  at a lower frequency
*  Parameters which can be passed are:
*
*  baud  =   the baud rate (hald bit rate for PAM4)
*  Apm   =   peak to peak differential amplitude into a perfect load
*  Trf   =   Rise and fall time in UI
*  post1 =   first postcursor tap weight,  total tap weight = 1.0
*  post2 =   second postcursor tap weight,  total tap weight = 1.0
*  TJ    =   total jitter peak to peak in UI
*  dutyCycle_over_TJ  = the fraction of jitter provided by half baud jitter
*
*  data in PRBS7_N.pwl  is a repeating 127 bit pattern with hooks for jitter
*  in each version N represents data advancement, so PRBS7_3.pwl dat is
*  one bit time later than PRBS7_4 etc.

.subckt  Tx  Tx_T  Tx_C  GND \
  baud=5.15625g  Amp=1 Trf=.2 post1=.25  post2=.05 \
  TJ=300m  dutyCycle_over_TJ=.2

.param  period="1/baud"  tr="Trf*period" low="-.5*amp" hig=".5*amp"
.param  jt="period*TJ/2"
.param  pj="dutyCycle_over_TJ*jt"  rj="jt-pj"  rjr=".098"
.param  main="abs(post1)+abs(post2)-1"
.param twopi="8*atan(1)"
.param  edge(n)="max(0,period*n+pj*cos(.5*twopi*n)+rj*sin(rjr*n*twopi))"

.include  "PRBS7_3.pwl"
.include  "PRBS7_4.pwl"
.include  "PRBS7_5.pwl"
.include  "PRBS6_3.pwl"
.include  "PRBS6_4.pwl"
.include  "PRBS6_5.pwl"

G1   Tx_T   Tx_C  poly(2) PRBS7_5  0  init  0  0  0 0  0 "main/75"  0
G2   Tx_T   Tx_C  poly(2) PRBS7_4   0  init  0  0  0 0  0 "post1/75" 0
G3   Tx_T   Tx_C  poly(2) PRBS7_3 0  init  0  0  0 0  0 "post2/75" 0
G4   Tx_T   Tx_C  poly(2) PRBS6_5  0  init  0  0  0 0  0 "main/150"  0
G5   Tx_T   Tx_C  poly(2) PRBS6_4   0  init  0  0  0 0  0 "post1/150" 0
G6   Tx_T   Tx_C  poly(2) PRBS6_3 0  init  0  0  0 0  0 "post2/150" 0
vinit init  0   pwl(0  0  1p  1)

Rt   Tx_T   GND   50
Rc   Tx_C   GND   50

G1D   dummy  0     poly(2) PRBS7_5  0  init  0  0  0 0  0 "main/100"  0
G2D   dummy  0     poly(2) PRBS7_4   0  init  0  0  0 0  0 "post1/100" 0
G3D   dummy  0     poly(2) PRBS7_3 0  init  0  0  0 0  0 "post2/100" 0
G4D   dummy  0     poly(2) PRBS6_5  0  init  0  0  0 0  0 "main/100"  0
G5D   dummy  0     poly(2) PRBS6_4   0  init  0  0  0 0  0 "post1/100" 0
G6D   dummy  0     poly(2) PRBS6_3 0  init  0  0  0 0  0 "post2/100" 0
Rd    dummy  0    50

.ends Tx

prbs.zip