I ran into a problem on the JTAG boundary scan and after hours of googling and probing with my oscilloscope, I finally came across a solution.
Firstly I should say that if you are having a JTAG problem with this board, make sure that your DIP switch settings are right. There are two DIP switches (SW11 and SW4) that should be set correctly for your particular JTAG setup. If you are using a USB cable plugged into the slot labelled “JTAG” on the faceplate of the ZC706, you should use the settings 00000 for SW11 and 01 for SW4. If you are using a Platform USB programmer connected to J3, you need to use 00000 for SW11 and 10 for SW4.
So I was going through the getting started guide until it came to downloading and running the BIST, when I get this error:
C:\zc706_bist\ready_for_download>xmd -tcl download_bit.tcl system.bit Xilinx Microprocessor Debugger (XMD) Engine Xilinx EDK 14.5 Build EDK_P.58f Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved. Executing user script : download_bit.tcl Error:No devices detected while scanning the JTAG chain Error Executing User Script : download_bit.tcl Error :: ERROR: Connection to Board Failed Failed to Scan JTAG Chain Unknown Error C:\zc706_bist\ready_for_download>xmd -tcl download_elf.tcl bist_app.elf Xilinx Microprocessor Debugger (XMD) Engine Xilinx EDK 14.5 Build EDK_P.58f Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved. Executing user script : download_elf.tcl Error:No devices detected while scanning the JTAG chain Error Executing User Script : download_elf.tcl Error :: ERROR: Failed to Scan JTAG Chain Unknown Error
So I try doing a boundary scan from iMPACT and that fails too. I get this error message:
"*********************************************" "Downloading Bitstream onto the target board" "*********************************************" impact -batch etc/download.cmd Release 14.5 - iMPACT P.58f (nt64) Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved. Preference Table Name Setting StartupClock Auto_Correction AutoSignature False KeepSVF False ConcurrentMode False UseHighz False ConfigOnFailure Stop UserLevel Novice MessageLevel Detailed svfUseTime false SpiByteSwap Auto_Correction AutoInfer false SvfPlayDisplayComments false INFO:iMPACT - Connecting to TCF agent... INFO:iMPACT - Digilent Plugin: Plugin Version: 2.4.4 INFO:iMPACT - Digilent Plugin: found 1 device(s). INFO:iMPACT - Digilent Plugin: opening device: "JtagSmt2", SN:210251841232 INFO:iMPACT - Digilent Plugin: User Name: JtagSmt2 INFO:iMPACT - Digilent Plugin: Product Name: Digilent JTAG-SMT2 INFO:iMPACT - Digilent Plugin: Serial Number: 210251841232 INFO:iMPACT - Digilent Plugin: Product ID: 31000154 INFO:iMPACT - Digilent Plugin: Firmware Version: 0105 INFO:iMPACT - Digilent Plugin: JTAG Port Number: 0 INFO:iMPACT - Digilent Plugin: JTAG Clock Frequency: 10000000 Hz Identifying chain contents...'0': : Manufacturer's ID = Xilinx xc7z045, Version : 2 INFO:iMPACT:1777 - Reading C:/Xilinx/14.5/ISE_DS/ISE/zynq/data/xc7z045.bsd... ---------------------------------------------------------------------- ---------------------------------------------------------------------- '1': : Manufacturer's ID = Unknown INFO:iMPACT - Using CseAdapterBSDevice INFO:iMPACT:501 - '1': Added Device xc7z045 successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- '2': : Manufacturer's ID = Unknown INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- '3': : Manufacturer's ID = Unknown INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- '4': : Manufacturer's ID = Unknown INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- . . . . ---------------------------------------------------------------------- ---------------------------------------------------------------------- '28': : Manufacturer's ID = Unknown INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- '29': : Manufacturer's ID = Unknown INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- '30': : Manufacturer's ID = Unknown INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully. ---------------------------------------------------------------------- ---------------------------------------------------------------------- ---------------------------------------------------------------------- ---------------------------------------------------------------------- ---------------------------------------------------------------------- ---------------------------------------------------------------------- ---------------------------------------------------------------------- Elapsed time = 4 sec. Elapsed time = 0 sec. INFO:iMPACT:501 - '1': Added Device UNKNOWN successfully. INFO:iMPACT - iMPACT quit the Identify Chain because it detects there are at least 30 'UNKNOWN' type devices on the chain. Please check the hardware settings and retry! ERROR:iMPACT:589 - No devices on chain, can't assign file make: *** [download] Error 1 Done!
When you google this type of error message, you find a lot of unresolved forum posts, I guess because it must happen for many kinds of reasons like a broken JTAG chain, wrong jumper/DIP switch configurations, bad cables, there was even a guy saying that he traced it down to noise on a power supply. Anyway, so I got out my oscilloscope and traced through the JTAG chain and it seemed completely fine, everything looking like it was supposed to. I checked all my jumpers and DIP switches, everything seemed fine (except jumper J53 which was not in the “default” position, according to the user guide, but in the photo
you find in the getting started guide, it would seem that the user guide is wrong).
Eventually I started trying everything I could, I tried all the SW11 configurations, I tried my Platform USB II programmer, and then I tried using the reset buttons – and that’s when I got it to work! So I had to press the POR (Power on Reset) pushbutton after I powered up the board in order to get the JTAG boundary scan to work. So the problem would seem to be that the Zynq isn’t being reset correctly by the reset circuitry on power-up. Maybe this is a problem with my board, or maybe it’s a problem with all the ZC706 boards. I’ll look into a bit later – for now, I’m just glad that I got the BIST running and all is working fine.
So if you’re having JTAG problems with the ZC706, try pressing the POR pushbutton just after powering up the board. Let me know if you have this problem with your board.