I am trying to implement the Xilinx iBERT IP to accept PRBS data from the Talise (ADVR9008) chip and enable me to look at the eye diagram.
Initially I tried taking the ZCU102 reference design and deleting the talise_tmc block and all associated IP; replacing it with the Xilinx JESD_PHY and iBERT IP. The idea was, with a bit of editing of the device tree in peta-linux environment, I would be able to remove keep just the SPI driver to set-up the Talise chip and I could use iio to set the BIST PRBS mode or the framer. Unfortunately I encountered the knock on effect of losing comms with the device over SPI and not having the iio commands available.
My next thought was to go back to the original reference design and see if I could just instantiate the iBERT IP and plumb it into the existing ADI IP. It looks like most of the ports required come up to the top of the util_adxcvr block as the "up_*" signals, then go off to the axi_adxcvr IP block. I am reluctant to blindly try reconnecting and editing this design as I suspect it will all stop working again!
Any suggestions on the best way for me to proceed to try and get the eye diagram working to test the link from the Talise to the FPGA transceiver (uni-directional no loopback)?
As part of our default reference design we have: https://wiki.analog.com/resources/tools-software/linux-software/jesd_eye_scan
Have you tried using it ?
Thanks for your reply.
I have seen this page but not tried using the reference design because I didn't think it sounded like it could do what I required; please correct me if I'm wrong.
Does it allow me to run the eye scan for one way traffic using PRBS or similar from the ADRV9008 to the FPGA transceiver?
The eye-scan module itself is a sub-module of the GT macro. What both Xilinx's In-System IBERT core or our solution offers is to read out the data generated by the Eye-Scan module through a DRP interface and plot it into a UI.
I highly recommend to try out our 'out of the box' solution, and if it's not what you want, I can give you a patch for the util_adxcvr, which adds support for Xilinx's IBERT core.
I'm not in the office for a couple of days, but I'll have a look at this when I can and let you know if I need additional help or the patch you mention.
So I have now had a chance to play with the JESD204B Eye Scan software, and think it will do what I want, but it's not working!
I am running the software remotely from an ubuntu VM to the ZCU102 dev board using sshfs as instructed in the wiki.
I have tried with our own firmware build which has all the ADI ADRV9008/9 IP copied in to it from the reference design. I have also tried with the actual ADI reference design for ADRV9008-1.
In both cases the eye scan gui opens up and reports the status information and ILAS Lane Information, but when I try and run the actual scan then it fails to read any data.
With our design the gui Info window reports: "get_eye_dat:552read failed"
With reference design, the UART output reports:
[ 135.387709] axi_adxcvr 84a60000.axi-adxcvr-rx: xilinx_xcvr_drp_read: Failed to read reg 256-0x63: -110[ 135.418316] axi_adxcvr 84a60000.axi-adxcvr-rx: adxcvr_drp_wait_idle: Timeout![ 135.425381] axi_adxcvr 84a60000.axi-adxcvr-rx: xilinx_xcvr_drp_read: Failed to read reg 256-0x63: -110
Which release are you using? Just tested with 2019_r1 and it works for me.
How to build Linux image and device tree:
Update: the 2018_r2 release is working as well. Did you make any modifications to the reference design?
We downloaded 2018_R2-2019_05_23.img.xz and put on an SD card without making any changes.
What do you think the cause of of my 'failed to read' error may be? I assume the ADRV9008 does not need a valid signal source as the JESD link will still be up and sending empty packets?
When I built the eye scan software I had warnings about deprecated functions, And when I run the gui there are GTK ciritcal warnings about gtk_widget_hide and gtk_toggle_button_set_active commands that have failed. Should I be concerned?