Products > Test Equipment

Agilent n5306a PCIe protocol analyzer

(1/2) > >>

toshas:
Hello,

I'm looking for the inexpensive PCIe protocol analyzer for educational needs.
There are two cases which I plan to investigate:
A) Periodically link training issues of PCIe development kit with an FPGA.
B) Unexpected time delays during heavy duty DMA transfers between PC and FPGA.

I found that Agilent / Keysight N5306A (PCIe gen1/2) was replaced with new model U4301B (PCIe gen3).
So there is opportunity to get one for a good price.

But I have a couple questions about n5306a:
1) How about software licenses? Are they included in n5306a hardware or should I order it separately?
2) What things additional module n5322a do? It's not clear from the documentation ("The N5322A extended interface module should be used in conjunction with the N5306A analyzer I / O module for Extended analysis capabilities. ")
What kind of analysis does it add to n5306a? Is it useful for my tasks listed above?

Thanks a lot!

P.S. I know that n5306a nowadays is quite old and has "buggy" software, but any help will be appreciated.

alex.forencich:
1) The licenses are stored on the cards.  There should be a sticker on the card with which license is enabled.  I don't know what the process is for changing them (upgrading "gen 2 ready" to gen 2 or getting more lanes).  There are 8 different licenses possible, 1, 4, 8, and 16 lane and gen 2 (A) or gen 1 "gen 2 ready" (U).  The card should have a marking on it somewhere, A08, A16, U04, etc. indicating the installed license.  Presuming the analyzer cards you get have the necessary licenses, you shouldn't have to buy anything else from Keysight.  A few more notes about the licenses: they can be used for a lower number of lanes, and 16 lane analysis requires 2 cards in the same chassis, each with a 16 lane license. 

2) I believe the extended interface module is used primarily for debugging fast power state changes (active state power management, ASPM).  It appears to insert some sort of fast CDR/retimer component between the DUT and the analyzer card.  I'm not sure if it does anything else. 

Some more notes:

The analyzer cards rather thick boards with an FR4 or similar core and some sort of white RF substrate on the top and bottom layers, making the board a very light green color.  Underneath the gigantic heatsink is a Virtex 4 FPGA and several RAM modules.  Behind the heatsink are a bunch of switching power supply modules and a single board computer that's responsible for configuration and communication.  The single board computer must be network booted (PXE) to bring up the cards.  The cards and mainframe are intended to be mated with a dedicated control computer. 

The software for these things is a steaming pile of ????.  The software bundles not only the analyzer software itself, but also a DHCP server and slightly shady FTP server.  These, along with a dedicated wired NIC, are required to successfully boot up connected analyzer cards via PXE.  I recommend procuring a USB Ethernet adapter and a VM that supports USB device forwarding.  Install Windows 7 in the VM and forward the USB Ethernet adapter to the VM.  You'll need to set a static IP on the USB ethernet interface and configure the DHCP server correspondingly.  I'll need to look up what config file needs to be edited.  Noe of this appears to be documented anywhere, by the way. 

When you boot up the system, make sure the host is powered on first, then turn on the mainframes holding the cards.  The cards will sit in a loop waiting for a response from the DHCP server, then they will download the firmware via TFTP and start up.  Once the cards are booted up, start up the analyzer software.  If you are using an N5315A interposer card, make sure the card is powered on with the external 18 volt supply before turning on the system under test so that the PCIe link will come up correctly.  When the analyzer software crashes, it may sometimes be necessary to reboot the analyzer cards.  Just turn the mainframe off and on again and wait for the cards to boot up. 

The N5315A interposer cards are probably the best option for probing a PCIe bus.  They are quite simple, just a passthrough with what appears to be resistive splitters and amplifiers to pick off the signals and forward them to the analyzer card(s).  The only difference between cards with different lane counts is how much of the edge connector they route off.  Like the analyzer cards, the interposer cards are also made from a stackup with an FR4 core and white RF substrates on the outer layers.  The cards also contain a DC to DC converter to power the amplifiers, which requires an external 18 volt supply.  There is also a small LED display on the card, but I don't think this is ever used (at least, I have never seen anything appear on it while in use).  If you get an interposer card, you have to make sure to get the right cables.  They are some sort of custom samtec cable assembly.

John_ITIC:
Hi, you will have a hard time finding a good PCIe analyzer on Ebay since most are incomplete and without probes or licenses. I do sell brand new ITIC 2500A PCIe Analyzers for $5995, which is less than half the price of the lowest cost alternative. If interested, please check it out at http://www.internationaltestinstruments.com/products/100-itic-2500a-x4-25-gbps-pci-express-protocol-analyzer.aspx. There is a long 1 hour video that explains all features, including hardware and software demos.

/John.

toshas:

--- Quote from: alex.forencich on May 03, 2017, 05:46:00 am ---
--- End quote ---

Hello,

Thanks for such detailed answer!

Could you recommend any USB Ethernet adapter ?

alex.forencich:
It really doesn't make much difference which one you use.  It just needs to run at 100 Mbit, so you don't even need one of the newer USB 3 units that support gigabit.  I have a rocketfish one that gets the job done just fine.  Also, the mainframes have two network ports on the back.  One is normal, the other is wired with the TX and RX pairs swapped to eliminate the need for a crossover cable.  It is possible to daisy-chain multiple mainframes by connecting the ports together, MDI to MDI-X, with a connection to the controller on one end of the chain.  If you get a good quality adapter, it should support auto MDI-X, so it should not matter which port you connect it to as it will figure out the proper configuration. 

As far as the bootup sequence, the the display cycles through a few states while the unit boots up.  Bxx is the bootloader, and Kxx is the actual software.  It should display CRC, OK, INIT, BHW1, BHW2, BNET, BIP.  At that point, it will try to get an IP address, periodically displaying "Connect Ethernet and enable DHCP".  If that times out, it will reset and display BOOT, CRC, OK, INIT, etc.  After getting an IP, it will display BAPP and load the firmware via PXE.  Sometimes it will take a couple of tries.  Then it will cycle KHW1, KHW2, KNET, KIP, KAPP.  Once the unit is finished booting, each card will display a number - 101, 102, etc. - that you will use to select which card you want to use when you start up the control software. 

Also, now that I have my SPT VM running, here's how to set up networking properly.  You'll need to connect the USB ethernet adapter, forward it to the VM (if applicable) and install the driver, and assign it a static IP.  I picked 192.168.250.1 with subnet mask 255.255.255.0.  Then you need to edit C:\amp-dhcpd\dhcpd.conf to use the right address.  Mine looks like this:


--- Code: ---# @(#) amp-dhcpd.conf 01.04

ddns-update-style none;
ddns-updates off;
deny client-updates;
one-lease-per-client false;
allow bootp;
include "dhcpd-site.conf";
option T150 code 150 = string;

local-address 192.168.250.1;

#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample 
#


option space PXE;

option PXE-encap-opts
  code 175 = encapsulate PXE;

option PXE.bus-id
  code 177 = string;

option PXE.cmd-line
  code 130 = text;

option PXE.bootfilename
    code 67 = string;

option PXE.mtftp-ip
  code 1 = ip-address;
option PXE.mtftp-cport
  code 2 = unsigned integer 16;
option PXE.mtftp-sport
  code 3 = unsigned integer 16;
option PXE.mtftp-tmout
  code 4 = unsigned integer 8;
option PXE.mtftp-delay
  code 5 = unsigned integer 8;
option PXE.discovery-control
  code 6 = unsigned integer 8;
option PXE.discovery-mcast-addr
  code 7 = ip-address;


subnet 192.168.250.0 netmask 255.255.255.0 {

  option subnet-mask 255.255.255.0;
  option resource-location-servers 192.168.250.1;
  option time-offset -3600;
  option time-servers 192.168.250.1;
  server-identifier 192.168.250.1;
  option log-servers 192.168.250.1;

  class "pxe-clients" {
    match if substring (option
      vendor-class-identifier, 0, 9) = "PXEClient";

    option vendor-class-identifier "PXEClient";
    vendor-option-space PXE;

    # At least one of the vendor-specific PXE
    # options must be set in order for the client
    # boot ROMs to realize that this is a PXE-
    # compliant server. We set the MCAST IP address
    # to 0.0.0.0 to tell the boot ROM that we can't
    # provide multicast TFTP.

    option PXE.mtftp-ip 239.255.0.1;
    option PXE.mtftp-cport 21531; #6996 decimal, Intel byte order
    option PXE.mtftp-sport 21531;
    option PXE.mtftp-tmout 1;
    option PXE.mtftp-delay 2;
    option PXE.discovery-control 9;
    option PXE.cmd-line "console=ttyS0,115200n81";
    #option PXE.discovery-mcast-addr 227.0.31.1;

    # This is the name of the file the boot ROMs
    # should download.
    if not exists PXE.bus-id {
      option PXE.mtftp-ip 239.255.0.1;
      option bootfile-name  "undionly.kpxe";
    } else {
      option PXE.mtftp-ip 239.255.0.2;
      filename  "mtftp://192.168.250.1:6997/n2xlinuz64";
    }

    # This is the name of the server they should
    # get it from.
    next-server 192.168.250.1;
  }

  class "n2x-clients" {
    match if (client-port = 7902);
  }

  class "crm-clients" {
    match if (option vendor-class-identifier = "Agilent_Shm") or
      (option vendor-class-identifier = "Agilent-AMP-ShMM");
    option log-servers 192.168.250.1;
    #option vendor-encapsulated-options FD:2F:66:74:70:3a:2f:2f:31:30:2e:30:2e:30:2e:31:2f:63:72:6d:2f:73:69:67:6e:65:64:5f:73:63:72:69:70:74:5f:70:61:63:6b:61:67:65:2e:74:61:72:2e:67:7a;
    if exists dhcp-parameter-request-list {   
        option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,7,2b);
    }
  }

  pool {
    max-lease-time 38880000;
    default-lease-time 38880000;
    range 192.168.250.3 192.168.250.254;

    allow members of "n2x-clients";
    allow members of "pxe-clients";
    allow members of "crm-clients";

    # If you include this, you must provide host
    # entries for every client, optionally associating
    # ethernet MAC addresses with IP addresses.
    #deny unknown clients;
  }

}



--- End code ---

I don't have a copy of the original to tell you exactly what was changed.  Anyway, you should be able to just drop that one in and be good to go.  You'll probably have to restart the DHCP server or the whole VM after editing the file.  After that, you should be good to go. 

Navigation

[0] Message Index

[#] Next page

There was an error while thanking
Thanking...
Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod