diff options
Diffstat (limited to 'fpga/xilinx/programmer')
96 files changed, 26114 insertions, 0 deletions
diff --git a/fpga/xilinx/programmer/bit2svf/LEEME.txt b/fpga/xilinx/programmer/bit2svf/LEEME.txt new file mode 100644 index 0000000..a06e676 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/LEEME.txt @@ -0,0 +1,65 @@ +Copyright (c) 2005 Juan Pablo D. Borgna <jpborgna en inti gov ar> +Copyright (c) 2005 Instituto Nacional de Tecnología Industrial +Copyright (c) 2001, 2002 by David Sullins +Licencia: GPL por bitfile.c + + +jbit: +----- + Esta script es un shortcut para programar un dispositivo usando el + programa GNU JTAG con un archivo .bit. Genera y borra el SVF intermedio. + Se puede usar una configuracion personalizada, leer jbitrc_sample.txt. + +Ejemplo: + +bit2svf$ ./jbit ejemplo_prom.bit XC18V01 + +jbit - bit2svf/jtag short cut - v1.0 +Copyright (c) 2005 Juan Pablo D. Borgna/INTI + +Creando archivo temporario /tmp/bit2svf.tmp + +bit2svf - SVF file generator - v1.0 +Copyright (c) 2005 Juan Pablo D. Borgna/INTI + + +Bit file created on 2004/08/25 at 13:43:18. +Created from file ejemplo.ncd for Xilinx part 2s100pq208. +Bitstream length is 97652 bytes. + +Process finsished sucefully. +Creado ok +Invocando /home/jpablo/usr/bin/jtag +Initializing Xilinx DLC5 JTAG Parallel Cable III on ppdev port /dev/parport0 +IR length: 8 +Chain length: 1 +Device Id: 00000101000000100100000010010011 + Manufacturer: Xilinx + Part: XC18V01-SO20 + Stepping: 1 + Filename: /home/jpablo/usr//share/jtag/xilinx/xc18v01-so20/xc18v01-so20 +Warning svf: checking of TDO not supported for SIR. + This message is only displayed once. +Borrando temporarios.. +Que tenga un buen dia :-) + + + +bit2svf: +-------- + Este programa sirve para generar un archivo SVF con el cual + utilizando el programa JTAG para linux, se puede programar una FPGA o + una PROM. + +Ejemplo: + +bit2svf$ ./bit2svf ejemplo_prom.bit ejemplo_prom.svf XC18V01 + +Bit file created on 2004/08/25 at 13:43:18. +Created from file ejemplo.ncd for Xilinx part 2s100pq208. +Bitstream length is 97652 bytes. + +Process finsished sucefully. + + + diff --git a/fpga/xilinx/programmer/bit2svf/Makefile b/fpga/xilinx/programmer/bit2svf/Makefile new file mode 100644 index 0000000..b5df378 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/Makefile @@ -0,0 +1,41 @@ +CC=gcc +CFLAGS=-Wall -g3 -I$(BIDIR) +BIDIR=bitinfo-0.3 +LDFLAGS=-I$(BIDIR) +PROYECTO=dumpbit bit2svf +VERSION=1.3.1 +PKG=bit2svf-$(VERSION) + +all: $(PROYECTO) $(BIDIR)/bitinfo + +$(BIDIR)/bitfile.o: + $(MAKE) -C $(BIDIR) + +bit2svf: bit2svf.o $(BIDIR)/bitfile.o parts.o commands.o bitshandle.o + +dumpbit: dumpbit.o $(BIDIR)/bitfile.o + +debian/control: debian/packages debian/yada + debian/yada rebuild control + +debian/rules: debian/packages debian/yada + debian/yada rebuild rules + +deb: $(PROYECTO) debian/control debian/rules + fakeroot dpkg-buildpackage -b -uc + +tarball: clean + cp -r ../bit2svf /tmp/$(PKG) + -rm -rf /tmp/$(PKG)/CVS /tmp/$(PKG)/*/CVS /tmp/$(PKG)/*/*/CVS /tmp/$(PKG)/*/*/*/CVS /tmp/$(PKG)/*/*/*/*/CVS /tmp/$(PKG)/*/*/*/*/*/*/CVS /tmp/$(PKG)/*/*/*/*/*/*/CVS 2> /dev/null + -rm -f /tmp/$(PKG)/.cvsignore /tmp/$(PKG)/*/.cvsignore /tmp/$(PKG)/*/*/.cvsignore /tmp/$(PKG)/*/*/*/.cvsignore /tmp/$(PKG)/*/*/*/*/.cvsignore /tmp/$(PKG)/*/*/*/*/*/*/.cvsignore /tmp/$(PKG)/*/*/*/*/*/*/.cvsignore 2> /dev/null + -rm -f /tmp/$(PKG)/*.epr /tmp/$(PKG)/.*.dst /tmp/$(PKG)/Changelog /tmp/$(PKG)/lista 2> /dev/null + cd /tmp ; tar zcvf $(PKG).tar.gz $(PKG) + rm -r /tmp/$(PKG) + mv /tmp/$(PKG).tar.gz . + +clean: + -rm -f *.o $(PROYECTO) .*~ + $(MAKE) -C $(BIDIR) clean + debian/rules clean + + diff --git a/fpga/xilinx/programmer/bit2svf/README.en b/fpga/xilinx/programmer/bit2svf/README.en new file mode 100644 index 0000000..f578451 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/README.en @@ -0,0 +1,52 @@ +Copyright (c) 2005 Juan Pablo D. Borgna <jpborgna en inti gov ar> +Copyright (c) 2001, 2002 by David Sullins [bitinfo code] +Copyright (c) 2006 Salvador E. Tropea <salvador en inti gov ar> +Copyright (c) 2005-2006 Instituto Nacional de Tecnología Industrial + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA + +dumpbit: +------- + Dumpbit its a simple program wich takes a .bit file generated by + Xilinx tools and dumps the binary stream in a file. + +bit2svf: +------- + This program is used for generate a SVF file with the needed + sequence for store the contents of a Xilinx .bit file inside some + PROM or FPGA. + +Working mode: + A template file with instructions for generate the svf file is + used. A different template is used for each different algorithm. + The format specification can be found in a README file inside + the "templates/" dir wich also has two samples. + +bitinfo: +------- + This program was written by Sullins [davesullins@earthlink.net] and is + used for read the header of the Xilinx bit files. + Its internally used by bit2svf and dumpbit. + The full distribution with its documentation can be found inside the + bitinfo-3.0 directory. + +jbit: +---- + This script, using bit2svf, generates a temporal SVF file for the + specified device with the specified bit file and then uses the program + JTAG for transfering it this file. When finish it erases the temp file. + It was created for simplify the process of programming a Xilinx device + with GPL tools. + diff --git a/fpga/xilinx/programmer/bit2svf/README.es b/fpga/xilinx/programmer/bit2svf/README.es new file mode 100644 index 0000000..ce6dcef --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/README.es @@ -0,0 +1,55 @@ +Copyright (c) 2005 Juan Pablo D. Borgna <jpborgna en inti gov ar> +Copyright (c) 2001, 2002 by David Sullins [bitinfo code] +Copyright (c) 2006 Salvador E. Tropea <salvador en inti gov ar> +Copyright (c) 2005-2006 Instituto Nacional de Tecnología Industrial + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA + +dumpbit: +------- + Dumpbit es un simple programa que toma un archivo .bit generado por + herramientas de Xilinx y vuelca el contenido del stream binario en + un archivo. + +bit2svf: +------- + + Este programa se usa para generar un archivo SVF con la secuencia + necesaria para grabar el contenido de un archivo .bit de xilinx en + algun dispositivo PROM o en la misma FPGA. + +Funcionamiento: + Lo que se hace es utilizar un template con instrucciones para + generar el archivo svf. Se necesita un template para cada algoritmo + diferente que se quiera generar. + La explicacion del formato de templates se encunetra en un + archivo README en el directorio "templates/" que trae dos ejemplos. + +bitinfo: +------- + Este es programa escrito por Dave Sullins [davesullins@earthlink.net] + sirve para interpretar el header de los archivos bit de xilinx. + Es usado internamente por bit2svf y dumpbit. + La distribucion completa junto con su documentacion se encuentra en el + directorio bitinfo-3.0. + +jbit: +---- + Esta script, utilizando bit2svf, genera un SVF temporal para el + dispositivo especificado con el archivo bit y luego utiliza el programa + JTAG para transferirle ese archivo. Al terminar borra el temporario. + Fue creada para simplificar el proceso de programar un dispositivo Xilinx + con un archivo bit con herramientas GPL. + diff --git a/fpga/xilinx/programmer/bit2svf/TODO b/fpga/xilinx/programmer/bit2svf/TODO new file mode 100644 index 0000000..4765920 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/TODO @@ -0,0 +1,3 @@ +* Reemplazar la lectura de archivo de origen por un plugin para poder + leer un MCS en lugar de un .bit o cualquier otro tipo de archivo. + diff --git a/fpga/xilinx/programmer/bit2svf/bit2svf.c b/fpga/xilinx/programmer/bit2svf/bit2svf.c new file mode 100644 index 0000000..1bd9ac3 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/bit2svf.c @@ -0,0 +1,297 @@ + /**[txh]******************************************************************** + + Copyright (c) 2005 Juan Pablo D. Borgna <jpborgna en inti gov ar> + Copyright (c) 2006-2007 Salvador E. Tropea <salvador en inti gov ar> + Copyright (c) 2005-2007 Instituto Nacional de Tecnología Industrial + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA + + Description: Generates a SVF file from a xilinx .bit file. + +***************************************************************************/ +/***************************************************************************** + + Target: Any + Language: C + Compiler: gcc 3.3.5 (Debian GNU/Linux) + Text editor: SETEdit 0.5.5 + +*****************************************************************************/ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <getopt.h> +#include "bitfile.h" +#include "parts.h" +#include "commands.h" +#include "global.h" +#include "bitshandle.h" + +#define DEFAULT_RES "/usr/share/bit2svf/" + +static char *theBitFile; +static char *theSVFFile; +static char *thePath=NULL; +static char *theDevice; +static long skip=-1, limit=-1; + +static +struct option longopts[] = +{ + { "help", 0, 0, 'h' }, + { "length", 1, 0, 'l' }, + { "path", 1, 0, 'p' }, + { "skip", 1, 0, 's' }, + { 0, 0, 0, 0 } +}; + +static +void Usage() +{ + #define PrintHelp(a) printf(a) + #define FlushHelp() printf("\n"); fflush(stdout) + PrintHelp("bit2svf [options] infile.bit outfile.svf DEVICE_NAME\n\n"); + PrintHelp("Valid options are:\n"); + PrintHelp("-h, --help displays this text ;-).\n"); + PrintHelp("-l, --length=LIMIT limit the number of bits.\n"); + PrintHelp("-p, --path=PATH is the full path to the directory with DEVICES file\n"); + PrintHelp(" and the templates files to be used.\n"); + PrintHelp("-s, --skip=OFFSET skip OFFSET bits in the bitstream.\n"); + FlushHelp(); + exit(1); +} + +static +void ParseCommandLine(int argc, char *argv[]) +{ + int optc; + + while ((optc=getopt_long(argc,argv,"hl:p:s:",longopts,0))!=EOF) + { + switch (optc) + { + case 'l': + limit=strtol(optarg,NULL,0); + if (limit%8) + { + fprintf(stderr,"The length must be multiple of 8\n"); + exit(2); + } + limit/=8; + break; + + case 'p': + thePath=optarg; + break; + + case 's': + skip=strtol(optarg,NULL,0); + if (skip%8) + { + fprintf(stderr,"The skip must be multiple of 8\n"); + exit(2); + } + skip/=8; + break; + + case 'h': + default: + Usage(); + } + } + if (argc-optind<3) + { + fprintf(stderr,"Error: Missing arguments\n\n"); + Usage(); + } + theBitFile=argv[optind]; + theSVFFile=argv[optind+1]; + theDevice=argv[optind+2]; +} + + +/* main function */ + +int main(int argc, char *argv[]) +{ + struct bithead bh; + FILE *bitfile; + FILE *cfile; + FILE *tplate; + char line[1001]; + part *selected=NULL; + char *res_path=NULL; + char *devices=NULL; + int isBit; + + address=0l; + step=0l; + s_bytes=0l; + s_bits=0l; + stream_s=0l; + cutlines=1; + + id=NULL; + idmask=NULL; + bsize=NULL; + msize=0l; + templ=NULL; + + fprintf(stderr,"\nbit2svf - SVF file generator - v1.3.1\n"); + fprintf(stderr,"Copyright (c) 2005 Juan Pablo D. Borgna/INTI\n"); + fprintf(stderr,"Copyright (c) 2006-2007 Salvador E. Tropea/INTI\n\n"); + + ParseCommandLine(argc,argv); + + if ((bitfile=fopen(theBitFile,"rb"))==NULL) + { + perror("BITFILE"); + return 2; + } + + if (!strcmp(theSVFFile,"-")) + cfile=stdout; + else + { + if ((cfile=fopen(theSVFFile,"wt"))==NULL) + { + perror("SVFFILE"); + return 3; + } + } + + + if (thePath) + res_path=thePath; + else /* If is not a command line parameter */ + if (((res_path=getenv("BIT2SVF_RES"))==NULL) || (strlen(res_path)==0)) + res_path=strdup(DEFAULT_RES); /* if couldnt get it from env, default*/ + + //asprintf(&devices,"%s/DEVICES",res_path); + devices=(char *)malloc(strlen(res_path)+9); + strcpy(devices,res_path); + strcat(devices,"/"); + strcat(devices,"DEVICES"); + + if (select_part_from_file(theDevice,devices,&selected)) return 12; + + fprintf(stderr,"Using DEVICES: %s\n",devices); + + id=strdup(selected->id); + idmask=strdup(selected->idmask); + msize=selected->msize; + bsize=selected->bsize; + + //asprintf(&templ,"%s/%s",res_path,selected->alg_tpl); + templ=(char *)malloc(strlen(res_path)+strlen(selected->alg_tpl)+6); + strcpy(templ,res_path); + strcat(templ,"/"); + strcat(templ,selected->alg_tpl); + strcat(templ,".svft"); + + if ((tplate=fopen(templ,"rt"))==NULL) + { + perror("TEMPLATE"); + return 4; + } + fprintf(stderr,"Using template: %s\n",templ); + + isBit=1; + initbh(&bh); + if (readhead(&bh, bitfile)) + { + fprintf(stderr,"\nInvalid .bit file assuming .bin.\n"); + isBit=0; + fseek(bitfile,0,SEEK_END); + bh.length=ftell(bitfile); + fseek(bitfile,0,SEEK_SET); + } + else + { + fprintf(stderr,"\n"); + fprintf(stderr,"Bit file created on %s at %s.\n", bh.date, bh.time); + fprintf(stderr,"Created from file %s for Xilinx part %s.\n", bh.filename, bh.part); + } + fprintf(stderr,"Bitstream length is %d bytes.\n", bh.length); + if (skip>=0) + { + if (bh.length<skip) + { + fprintf(stderr,"The number of bytes to skip is bigger than the current length.\n"); + return 13; + } + fseek(bitfile,skip,SEEK_CUR); + bh.length-=skip; + fprintf(stderr,"Skipping %ld bytes, new length %d.\n",skip,bh.length); + } + if (limit>=0) + { + if (bh.length<limit) + { + fprintf(stderr,"The specified length is bigger than the current length.\n"); + return 12; + } + bh.length=limit; + fprintf(stderr,"Limiting bitstream length to %d bytes.\n",bh.length); + } + fprintf(stderr,"\n"); + + stream_s=ftell(bitfile); + s_bytes=bh.length; + s_bits=8*s_bytes; + + fgets(line,1001,tplate); + + while(!feof(tplate)) + { + + if (!strncasecmp(line,"--",2)) + { /* block found */ + /* LITERAL */ + if (!strncasecmp(line,"--LITERAL START",15)) + if(repeat(tplate,cfile,bitfile,0)) return 6; + /* end LITERAL */ + /* REPEAT */ + if (!strncasecmp(line,"--REPEAT START",14)) + if (repeat(tplate,cfile,bitfile,-1)) return 7; + /* end REPEAT */ + /* REPEAT UNTIL */ + if (!strncasecmp(line,"--REPEAT UNTIL",14)) + if (repeat(tplate,cfile,bitfile,value_from(line+15))) return 8; + /* end REPEAT UNTIL */ + } + else if (!strncasecmp(line,"$",1)) + { + int col=0; + if(do_command(line,bitfile,cfile,&col)) return 9; + } + else if (strncasecmp(line,"//",2) && (line[0]!='\n')) /* And if its not a comment or a blank line */ + { /* Its a template error */ + fprintf(stderr,"Invalid line outside block in template: %s\n",line); + return 10; + } + + fgets(line,1001,tplate); + } + + fclose(tplate); + fclose(cfile); + fclose(bitfile); + freebh(&bh); + + fprintf(stderr,"Process finsished sucefully.\n"); + return 0; +} diff --git a/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/Bitfileheader b/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/Bitfileheader new file mode 100644 index 0000000..cf579cf --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/Bitfileheader @@ -0,0 +1,101 @@ +05/23/2001 + +Bit file header specification + + +A bit file has two sections. The first section is a variable length header. +The second section is a fixed-length bitstream which is downloaded into the +FPGA. The format of the bitstream can be found in the data book for the +appropriate FPGA, but the format of the header is not anywhere that I have +found in the Xilinx literature. This document describes the structure the +bit file header for the XC4005XL and XC4005E FPGAs. This structure may or +may not be appropriate for headers of bit files for other Xilinx FPGAs. + +Preamble: unknown values + +The bit files generated with xmake for the XC4005XL and XC4005E FPGAs all +begin with the following sequence of 13 bytes (shown here in hexadecimal): +00 09 0F F0 0F F0 0F F0 0F F0 00 00 01 + +Part "a": source file + +Parts a through e follow the same general format. First the part begins +with the ASCII letter of the section followed by a NULL (00h). For example, +part c begins with hexadecimal 63 00, since 63 is ASCII for "c". The next +byte is a length byte, giving the length of the string to follow plus 1. +The length is followed by an ASCII string, and that string is followed by a +NULL (00h). If there is no string at all in the section, then the length +byte is 0 and there is no NULL termination. + +Part a of the header tells the filename used to generate the bit file. For +example, if the file "xc4005.ncd" was used to generate the bit file then the +header will be: +"a" 00 0B "xc4005.ncd" 00 + +Convert the quoted letters into their ASCII representation. + +Part "b": part name + +Part b follows the same format as part a. The string identifies the part +and package of the target device. In my limited tests this string has +always been "4005xlpc84" or "4005epc84". + +Part "c": date + +Part c follows the same format as part a. The string gives the date the bit +file was generated, for example "2001/03/12". + +Part "d": time + +Part d follows the same format as part a. The string gives the time the bit +file was generated, for example "20:43:04". + +Part "e": unknown + +Part e seems to follow the same format as part a. However, in my tests this +part has always been empty. In other words, the entire part is hexadecimal +65 00 00. + +Final part: bitstream length + +The final part of the header gives the length of the bitstream to follow, in +binary. This is two bytes long for the XC4005XL and XC4005E parts, but it +is probable that this length will be more than two bytes long for larger +Xilinx parts. + +For example, the XC4005XL part has a 18995 byte long bitstream. The final +two bytes of the header are hexadecimal 4A33, which is 18995 when converted +to decimal. + +Immediately following the final part of the header, the bitstream begins. +The file ends immediately after the bitstream. + + +05/24/2001 +UPDATE: + +I examined the bit file headers for two more Xilinx parts, a Spartan part +and 1000 gate Virtex part. From this I determined my understanding of the +sections was a little off. The section letters FOLLOW the sections. So the +unknown garbage at the beginning (which was the same for all parts) is +section a, the part name was section b, and so on. The time was section e, +and the 00 following the 65 00 was the beginning of the length. So the +length is actually three bytes long. This gives a maximum bitstream length +of FFFFFFh, or 16,777,215 bytes. + +09/10/2002 +UPDATE: + +I got an email message from "Stephen from Australia" who set me straight on +the format of the bit file header. He pointed me to the online FPGA FAQ, +which gives an alternative view of how the header is laid out. Each section +letter is a single byte. The 00 which follows the section letter is +actually the first byte of a two-byte size. The final four bytes of the +header make up a four-byte size. After considering the difference between +the two specifications, I realized that even if the FAQ is wrong it wouldn't +hurt to parse it that way since the first byte of the length would always be +00. And it seems more aesthetically pleasing to have a four-byte bitstream +length than a three-byte bitstream length. I have altered bitfile.c to +reflect the change in my understanding of the format. + +Thanks for setting me straight, Steve! diff --git a/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/COPYING b/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/COPYING new file mode 100644 index 0000000..5b6e7c6 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/Changelog b/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/Changelog new file mode 100644 index 0000000..958d5d9 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/Changelog @@ -0,0 +1,6 @@ +2002-09-10, version 0.2 + +Updated the way I parse the bitstream length according to information in the +online FPGA FAQ. Special thanks to "Stephen from Australia" for setting me +straight. Started using version numbers. If you have an unnumbered +version of bitinfo, it is version 0.1 and out of date. diff --git a/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/Makefile b/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/Makefile new file mode 100644 index 0000000..12685c9 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/Makefile @@ -0,0 +1,21 @@ +# Makefile for bitfile routines + +CC = gcc +CFLAGS = -c -g -Wall +LDFLAGS = +OBJECTS = bitinfo.o bitfile.o + + +all: bitinfo + +bitinfo.o: bitinfo.c bitfile.h + ${CC} ${CFLAGS} bitinfo.c -o bitinfo.o + +bitfile.o: bitfile.c bitfile.h + ${CC} ${CFLAGS} bitfile.c -o bitfile.o + +bitinfo: bitinfo.o bitfile.o + ${CC} ${LDFLAGS} ${OBJECTS} -o bitinfo + +clean: + rm -f ${OBJECTS} bitinfo diff --git a/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/README b/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/README new file mode 100644 index 0000000..c100126 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/README @@ -0,0 +1,45 @@ + Bitinfo - Parse a Xilinx bit-file header + + + Description + + Bitinfo is a simple utility that parses the header of a Xilinx bit file + and outputs all the information that can be obtained from that header. + This information includes the Xilinx FPGA the bit file was created for, + the NCD file the bit file was created from, the creation date and time, + and the bitstream length. + + I had to reverse-engineer the file format to figure out how to parse all + of this information. So that someone else doesn't have to repeat my work, + I have included my reverse-engineering notes with the source code. + + You may find this program useful if, like me, you often end up with + several bit files lying around, all called "xc4005.bit," and you can't + remember which one is the one you need. The header should at least give + you some clues about the file's contents. Another use for this program is + to prove to a student that the bit file they have brought to lab with them + is not the one from this week's experiment, since the timestamp is from + three weeks ago. + + + Compiling and using bitinfo + + You can download the bitinfo source for free from + http://members.naspa.net/djs/software/bitinfo.tar.gz. It is released under + the GNU Public License. See the COPYING file for more details. + + To compile bitinfo, first edit the Makefile if necessary. If you don't + have gcc installed, you will need to change the first line from "CC=gcc" + to "CC=cc" or whatever your C compiler is called. After editing the + Makefile, type "make" and you're done. Although bitinfo was written for + Unix, it has also been successfully compiled for Windows NT 4.0 using MS + Visual C++. + + To run bitinfo, just type "bitinfo < file.bit". You will probably want to + put bitinfo in some bin directory for convenience. + + + Bugs + + Please report any bugs by emailing me at djs@naspa.net. + diff --git a/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/bitfile.c b/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/bitfile.c new file mode 100644 index 0000000..af4579d --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/bitfile.c @@ -0,0 +1,233 @@ +/* bitfile.c + * + * Library routines for dealing with bit files, version 0.2 + * + * Copyright 2001, 2002 by David Sullins + * + * This file is part of Bitinfo. + * + * Bitinfo is free software; you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, version 2 of the License. + * + * Bitinfo is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * Bitinfo; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place, Suite 330, Boston, MA 02111-1307 USA + * + * You may contact the author at djs@naspa.net. + */ + +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#include "bitfile.h" + +#ifndef uchar +#define uchar unsigned char +#endif + +/* first 13 bytes of a bit file */ +static uchar head13[] = {0, 9, 15, 240, 15, 240, 15, 240, 15, 240, 0, 0, 1}; + +/* initbh + * + * Initialize the bithead struct + */ +void initbh(struct bithead *bh) +{ + bh->filename = NULL; + bh->part = NULL; + bh->date = NULL; + bh->time = NULL; + bh->length = 0; +} + +/* freebh + * + * Free up memory allocated for a bithead struct. + */ +void freebh(struct bithead *bh) +{ + free(bh->filename); + free(bh->part); + free(bh->date); + free(bh->time); + initbh(bh); +} + +/* readhead + * + * Read the entire bit file header. The file pointer will be advanced to + * point to the beginning of the bitstream, and the bitfile header struct + * will be filled with the appropriate data. + * + * Return -1 if an error occurs, 0 otherwise. + */ +int readhead(struct bithead *bh, FILE *f) +{ + int t; + + /* get first 13 bytes */ + t = readhead13(f); + if (t) return t; + + /* get filename */ + t = readsecthead(NULL, f); + if (-1 == t) return -1; + bh->filename = malloc(t); + t = readsection(bh->filename, t, f); + + /* get part name */ + t = readsecthead(NULL, f); + if (-1 == t) return -1; + bh->part = malloc(t); + t = readsection(bh->part, t, f); + + /* get file creation date */ + t = readsecthead(NULL, f); + if (-1 == t) return -1; + bh->date = malloc(t); + t = readsection(bh->date, t, f); + + /* get file creation time */ + t = readsecthead(NULL, f); + if (-1 == t) return -1; + bh->time = malloc(t); + t = readsection(bh->time, t, f); + + /* get bitstream length */ + t = readlength(f); + if (-1 == t) return -1; + bh->length = t; + + return 0; +} + +/* readhead13 + * + * Read the first 13 bytes of the bit file. Discards the 13 bytes but + * verifies that they are correct. + * + * Return -1 if an error occurs, 0 otherwise. + */ +int readhead13 (FILE *f) +{ + int t; + uchar buf[13]; + + /* read header */ + t = fread(buf, 1, 13, f); + if (t != 13) + { + return -1; + } + + /* verify header is correct */ + t = memcmp(buf, head13, 13); + if (t) + { + return -1; + } + + return 0; +} + +/* readsecthead + * + * Read the header of a bit file section. The section letter is placed in + * section buffer "buf" and the length of the following section is + * returned. If buf is NULL, the section letter is discarded. + * + * Return -1 if an error occurs, length of section otherwise. + */ +int readsecthead(char *buf, FILE *f) +{ + int t; + char tbuf = 0; + char lenbuf[2]; + + /* if buf is NULL, use tbuf instead */ + if (NULL == buf) + { + buf = &tbuf; + } + + /* get section letter */ + t = fread(buf, 1, 1, f); + if (t != 1) + { + return -1; + } + + /* read length */ + t = fread(lenbuf, 1, 2, f); + if (t != 2) + { + return -1; + } + + /* convert 2-byte length to an int */ + return (((int)lenbuf[0]) <<8) | lenbuf[1]; +} + + +/* readsection + * + * Read a section of a bit file. The section contents are placed + * in the contents buffer "buf." + * + * Return -1 if an error occurs, 0 otherwise. + */ +int readsection(char *buf, int length, FILE *f) +{ + int t; + + /* get section data */ + t = fread(buf, 1, length, f); + if ((t != length) || (buf[length-1] != 0)) + { + return -1; + } + + return 0; +} + +/* readlength + * + * Read in the bitstream length. The section letter "e" is discarded + * and the length is returned. + * + * Return -1 if an error occurs, length otherwise. + */ +int readlength(FILE *f) +{ + char s = 0; + uchar buf[4]; + int length; + int t; + + /* get section, make sure it's "e" */ + t = fread(&s, 1, 1, f); + if ((t != 1) || (s != 'e')) + { + return -1; + } + + /* get length */ + t = fread(buf, 1, 4, f); + if (t != 4) + { + return -1; + } + + /* convert 4-byte length to an int */ + length = (((int)buf[0]) <<24) | (((int)buf[1]) <<16) + | (((int)buf[2]) <<8) | buf[3]; + + return length; +} diff --git a/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/bitfile.h b/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/bitfile.h new file mode 100644 index 0000000..cb531a8 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/bitfile.h @@ -0,0 +1,99 @@ +/* bitfile.h + * + * Library routines for dealing with bit files, version 0.2 + * + * Copyright 2001, 2002 by David Sullins + * + * This file is part of Bitinfo. + * + * Bitinfo is free software; you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, version 2 of the License. + * + * Bitinfo is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * Bitinfo; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place, Suite 330, Boston, MA 02111-1307 USA + * + * You may contact the author at djs@naspa.net. + */ + +#include <stdio.h> + +/* struct bithead + * + * Stores the information obtained from the bitfile header. Use initbh to + * initialize the struct, and freebh to free memory allocated for the struct. + */ +struct bithead +{ + char* filename; + char* part; + char* date; + char* time; + int length; +}; + +/* initbh + * + * Initialize the bithead struct + */ +void initbh(struct bithead *bh); + +/* freebh + * + * Free up memory allocated for a bithead struct. + */ +void freebh(struct bithead *bh); + +/* readhead + * + * Read the entire bit file header. The file pointer will be advanced to + * point to the beginning of the bitstream, and the bitfile header struct + * will be filled with the appropriate data. + * + * Return -1 if an error occurs, 0 otherwise. + */ +int readhead(struct bithead *bh, FILE *f); + +/* readhead13 + * + * Read the first 13 bytes of the bit file. Discards the 13 bytes but + * verifies that they are correct. + * + * Return -1 if an error occurs, 0 otherwise. + */ +int readhead13 (FILE *f); + +/* readsecthead + * + * Read the header of a bit file section. The section letter is placed in + * section buffer "buf" and the length of the following section is + * returned. If buf is NULL, the section letter is discarded. + * + * Return -1 if an error occurs, length of section otherwise. + */ +int readsecthead(char *buf, FILE *f); + +/* readsection + * + * Read a section of a bit file. The section contents are placed + * in the contents buffer "buf." + * + * Return -1 if an error occurs, 0 otherwise. + */ +int readsection(char *buf, int length, FILE *f); + +/* readlength + * + * Read in the bitstream length. The section letter "e" is discarded + * and the length is returned. + * + * Return -1 if an error occurs, length otherwise. + */ +int readlength(FILE *f); + diff --git a/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/bitinfo.c b/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/bitinfo.c new file mode 100644 index 0000000..1fc1c84 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/bitinfo-0.3/bitinfo.c @@ -0,0 +1,57 @@ +/* bitinfo.c + * + * Main function to parse Xilinx bit file header, version 0.2. + * + * Copyright 2001, 2002 by David Sullins + * + * This file is part of Bitinfo. + * + * Bitinfo is free software; you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, version 2 of the License. + * + * Bitinfo is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * Bitinfo; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place, Suite 330, Boston, MA 02111-1307 USA + * + * You may contact the author at djs@naspa.net. + */ + + +#include <stdio.h> +#include <stdlib.h> +#include "bitfile.h" + +/* read a bit file from stdin */ +int main(void) +{ + int t; + struct bithead bh; + + initbh(&bh); + + /* read header */ + t = readhead(&bh, stdin); + if (t) + { + printf("Invalid bit file header.\n"); + exit(1); + } + + /* output header info */ + printf("\n"); + printf("Bit file created on %s at %s.\n", bh.date, bh.time); + printf("Created from file %s for Xilinx part %s.\n", bh.filename, + bh.part); + printf("Bitstream length is %d bytes.\n", bh.length); + printf("\n"); + + freebh(&bh); + + return 0; +} diff --git a/fpga/xilinx/programmer/bit2svf/bitshandle.c b/fpga/xilinx/programmer/bit2svf/bitshandle.c new file mode 100644 index 0000000..7fb2f40 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/bitshandle.c @@ -0,0 +1,144 @@ + /**[txh]******************************************************************** + + Copyright (c) 2005 Juan Pablo D. Borgna <jpborgna en inti gov ar> + Copyright (c) 2006-2007 Salvador E. Tropea <salvador en inti gov ar> + Copyright (c) 2005-2007 Instituto Nacional de Tecnología Industrial + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA + + Description: Low level functions to output hexadecimal bitstreams. + +***************************************************************************/ +/***************************************************************************** + + Target: Any + Language: C + Compiler: gcc 3.3.5 (Debian GNU/Linux) + Text editor: SETEdit 0.5.5 + +*****************************************************************************/ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "global.h" +#include "bitshandle.h" + +/* This function returns the inverted bits of its argument */ +unsigned char +inv_byte(unsigned char b) +{ + int i; + unsigned char t=0; + + for (i=0;i<7;i++) + { + t|= (b & 0x01); + t = t << 1; + b = b >> 1; + } + t|=b & 0x01; + return t; +} + +/* This function is used to generate a string with the hex value of the + inverted bits of from */ +void +pbi(char *to, char *from,long nbytes) +{ + int i; + int j; + char t[]="ZZ"; + + if (to==NULL) return; + + j=nbytes*2; + + for (i=0;i<nbytes;i++) + { + sprintf(t,"%02x",inv_byte(from[i])); + j-=2; + to[j]=t[0]; + to[j+1]=t[1]; + } +} + +/* This function is used to generate a string with the hex value of the + bits of from */ +void +pb(char *to, char *from,long nbytes) +{ + int i; + int j; + char t[]="ZZ"; + + if (to==NULL) return; + + j=0; + + for (i=0;i<nbytes;i++) + { + sprintf(t,"%02x",from[i]); + j+=2; + to[j]=t[0]; + to[j+1]=t[1]; + } +} + +/*this function writes bytes to a file with a max nuber of + chars per line */ /* it should not be here */ +int +cutputs(char *string, FILE *fp, long block, int *col) +{ + long remaining; + long wrote=0l; + int c=*col; + + remaining=strlen(string); + if (!cutlines) + { + fwrite(string,1,remaining,fp); + col+=remaining; + return 0; + } + if (remaining<block) + block=remaining; + + while (remaining) + { + long to_write=block-c; + if (to_write<0) to_write=0; + if (to_write & 1) to_write++; + wrote=fwrite(string,1,to_write,fp); + if (wrote!=to_write) + { + perror("CUTPUTS"); + return 1; + } + c+=wrote; + string+=wrote; + remaining-=wrote; + if (remaining) + { + fputs("\n",fp); + c=0; + if (remaining<block) + block=remaining; + } + } + *col=c; + return 0; +} + diff --git a/fpga/xilinx/programmer/bit2svf/bitshandle.h b/fpga/xilinx/programmer/bit2svf/bitshandle.h new file mode 100644 index 0000000..a3ea91d --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/bitshandle.h @@ -0,0 +1,5 @@ +unsigned char inv_byte(unsigned char b); +void pbi(char *to, char *from,long nbytes); +void pb(char *to, char *from,long nbytes); +int cutputs(char *string, FILE *fp, long block, int *col); + diff --git a/fpga/xilinx/programmer/bit2svf/commands.c b/fpga/xilinx/programmer/bit2svf/commands.c new file mode 100644 index 0000000..c4a9493 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/commands.c @@ -0,0 +1,556 @@ + /**[txh]******************************************************************** + + Copyright (c) 2005 Juan Pablo D. Borgna <jpborgna en inti gov ar> + Copyright (c) 2006-2007 Salvador E. Tropea <salvador en inti gov ar> + Copyright (c) 2005-2007 Instituto Nacional de Tecnología Industrial + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA + + Description: Commands parser and executor. + +***************************************************************************/ +/***************************************************************************** + + Target: Any + Language: C + Compiler: gcc 3.3.5 (Debian GNU/Linux) + Text editor: SETEdit 0.5.5 + +*****************************************************************************/ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include "global.h" +#include "commands.h" +#include "bitshandle.h" + +#define MAX_WIDTH 246 + +long +value_from(char *varname) +{ + if (!strncasecmp("BSIZEB2",varname,7)) + return strtol(bsize,NULL,0)/4; + if (!strncasecmp("BSIZEB",varname,6)) + return strtol(bsize,NULL,0)/8; + if (!strncasecmp("BSIZE",varname,5)) + return strtol(bsize,NULL,0); + if (!strncasecmp("MSIZE",varname,5)) + return msize; + return strtol(varname,NULL,0); +} + +void +fill(FILE *fp, long c, long t, int *col) +{ + char b[4]="ZZ"; + sprintf(b,"%02x",(unsigned int)c); + int co=*col; + + for (;t>0;t--) + { + co+=fprintf(fp,"%s",b); + if (co>=MAX_WIDTH) + { + co=0; + fprintf(fp,"\n"); + } + } + *col=co; +} + +/* This function executes a $COMMAND$ */ +int +do_command(char *cmd, FILE *dfp, FILE *ofp, int *col) +{ + char *temp; + char *dbuffer; + long nbytes=0l; + long readed=0l; + long value=0l; + long times=0l; + int padded=0; + char *args_pos_s=NULL; + char *args_pos_e=NULL; + char *separator=NULL; + char args[100]; /* I dont think i need more than 100 bytes for + passing args... */ + + /* DATA and DATA_INV command */ + + if (strstr(cmd,"DATA")) + { + /* get the args inside the () */ + args_pos_s=strchr(cmd,'('); + args_pos_e=strchr(cmd,')'); + if( !args_pos_s || !args_pos_e) + { + fprintf(stderr,"Bad argument specification in $DATA_INV(ndatabytes)$\n"); + return 1; + } + memcpy(args,args_pos_s+1,(size_t)(args_pos_e-args_pos_s)); /* Copy te command */ + args[args_pos_e-args_pos_s-1]='\0'; /* Put the null terminator */ + if ((nbytes=value_from(args))==0) /* Bad specification of number of bytes */ + { + fprintf(stderr,"Bad specification of ndatabytes in $DATA_INV(ndatabytes)$\n"); + return 2; + } + if ((nbytes=value_from(args))==-1) /* Want to process the whole stream */ + { + nbytes=s_bytes; + } + if ((temp=(char *)malloc(nbytes*2+1))==NULL) + { + fprintf(stderr,"Cannot asign %li bytes in memory needed for $DATA_INV(ndatabytes)$\n",nbytes*2+1); + return 3; + } + if ((dbuffer=(char *)malloc(nbytes))==NULL) + { + free(temp); + fprintf(stderr,"Cannot asign %li bytes in memory needed for $DATA_INV(ndatabytes)$\n",nbytes); + return 3; + } + if ((readed=fread(dbuffer,1,nbytes,dfp))!=nbytes) + { + if (padded) + { + free(dbuffer); + free(temp); + fprintf(stderr,"Cannot read %li databytes for $DATA_INV(ndatabytes)$ from bitfile\n",nbytes); + return 3; + } + padded=1; + memset(dbuffer+readed,0xff,nbytes-readed); + } + + if (strstr(cmd,"DATA_INV")) + pbi(temp,dbuffer,nbytes); /* Want to inver the bits*/ + else + pb(temp,dbuffer,nbytes); /* Want to use the bits*/ + + + temp[nbytes*2]='\0'; + + if (cutputs(temp,ofp,MAX_WIDTH,col)) + { + fprintf(stderr,"Could not write $DATA to file.\n"); + return 4; + } + + + free(temp); + free(dbuffer); + return 0; + } + /* end DATA and DATA_INV command */ + + /* ADDRESS command */ + if (strstr(cmd,"ADDRESS")) + { + /* get the args inside the () */ + args_pos_s=strchr(cmd,'('); + args_pos_e=strchr(cmd,')'); + if((!args_pos_s && args_pos_e )|| (!args_pos_e && args_pos_s)) + { + fprintf(stderr,"Bad argument specification in $ADDRESS(DIR)$\n"); + return 1; + } + if (!args_pos_s && !args_pos_e) + { /* Want to use the value */ + if (msize<=0x10000) + *col+=fprintf(ofp,"%04x",(unsigned int)address); + else + *col+=fprintf(ofp,"%06x",(unsigned int)address); + return 0; + } + /* Want to SET the value */ + memcpy(args,args_pos_s+1,(size_t)(args_pos_e-args_pos_s)); /* Copy te argument */ + args[args_pos_e-args_pos_s-1]='\0'; /* Put the null terminator */ + value=value_from(args); + address=value; + return 0; + } + /* end ADDRESS command */ + + /* SET: CUTLINES command */ + if (strstr(cmd,"CUTLINES")) + { + /* get the args inside the () */ + args_pos_s=strchr(cmd,'('); + args_pos_e=strchr(cmd,')'); + if((!args_pos_s && args_pos_e )|| (!args_pos_e && args_pos_s)) + { + fprintf(stderr,"Bad argument specification in $CUTLINES(ON)$\n"); + return 1; + } + if (!args_pos_s && !args_pos_e) + { /* Want to use the value */ + *col+=fprintf(ofp,"%04x",(unsigned int)cutlines); + return 0; + } + /* Want to SET the value */ + memcpy(args,args_pos_s+1,(size_t)(args_pos_e-args_pos_s)); /* Copy te argument */ + args[args_pos_e-args_pos_s-1]='\0'; /* Put the null terminator */ + value=value_from(args); + cutlines=value; + return 0; + } + /* end CUTLINES command */ + + /* STEP command */ + if (strstr(cmd,"STEP")) + { + /* get the args inside the () */ + args_pos_s=strchr(cmd,'('); + args_pos_e=strchr(cmd,')'); + if((!args_pos_s && args_pos_e )|| (!args_pos_e && args_pos_s)) + { + fprintf(stderr,"Bad argument specification in $STEP(VAL)$\n"); + return 1; + } + if (!args_pos_s && !args_pos_e) + { /* Want to use the value */ + *col+=fprintf(ofp,"%04x",(unsigned int)step); + return 0; + } + /* Want to SET the value */ + memcpy(args,args_pos_s+1,(size_t)(args_pos_e-args_pos_s)); /* Copy te argument */ + args[args_pos_e-args_pos_s-1]='\0'; /* Put the null terminator */ + value=value_from(args); + step=value; + return 0; + } + /* end STEP command */ + + /* REWIND command */ + if (strstr(cmd,"REWIND")) + { + /* get the args inside the () */ + args_pos_s=strchr(cmd,'('); + args_pos_e=strchr(cmd,')'); + if(args_pos_s || args_pos_e ) + { + fprintf(stderr,"No arguments needed by $REWIND$\n"); + return 1; + } + fseek(dfp,stream_s,0); + return 0; + } + /* end REWIND command */ + + /* SBITS command */ + if (strstr(cmd,"SBITS")) + { + /* get the args inside the () */ + args_pos_s=strchr(cmd,'('); + args_pos_e=strchr(cmd,')'); + if((!args_pos_s && args_pos_e )|| (!args_pos_e && args_pos_s)) + { + fprintf(stderr,"Bad argument specification in $SBITS(VAL)$\n"); + return 1; + } + if (!args_pos_s && !args_pos_e) + { /* Want to use the value */ + *col+=fprintf(ofp,"%d",(unsigned int)s_bits); + return 0; + } + /* Want to SET the value */ + memcpy(args,args_pos_s+1,(size_t)(args_pos_e-args_pos_s)); /* Copy te argument */ + args[args_pos_e-args_pos_s-1]='\0'; /* Put the null terminator */ + value=value_from(args); + s_bits=value; + return 0; + } + /* end SBITS command */ + + /* SBYTES command */ + if (strstr(cmd,"SBYTES")) + { + /* get the args inside the () */ + args_pos_s=strchr(cmd,'('); + args_pos_e=strchr(cmd,')'); + if((!args_pos_s && args_pos_e )|| (!args_pos_e && args_pos_s)) + { + fprintf(stderr,"Bad argument specification in $SBYTES(VAL)$\n"); + return 1; + } + if (!args_pos_s && !args_pos_e) + { /* Want to use the value */ + *col+=fprintf(ofp,"%d",(unsigned int)s_bytes); + return 0; + } + /* Want to SET the value */ + memcpy(args,args_pos_s+1,(size_t)(args_pos_e-args_pos_s)); /* Copy the argument */ + args[args_pos_e-args_pos_s-1]='\0'; /* Put the null terminator */ + value=value_from(args); + s_bytes=value; + return 0; + } + /* end SBYTES command */ + + /* FILL command */ + if (strstr(cmd,"FILL")) + { + /* get the args inside the () */ + args_pos_s=strchr(cmd,'('); + args_pos_e=strchr(cmd,')'); + separator=strchr(cmd,','); + if(!args_pos_s || !args_pos_e || !separator) + { + fprintf(stderr,"Bad argument specification in $FILL(VAL,TIMES)$\n"); + return 1; + } + /* Want to SET the value */ + memcpy(args,args_pos_s+1,4); /* Copy the character */ + args[4]='\0'; /* Put the null terminator */ + value=value_from(args); + memcpy(args,separator+1,(size_t)(args_pos_e-separator)); /* Copy the times */ + times=value_from(args); + if(times==-1) times=s_bytes; + fill(ofp,value,times,col); + return 0; + } + /* end FILL command */ + + /* IDMASK command */ + if (strstr(cmd,"IDMASK")) + { + /* get the args inside the () */ + args_pos_s=strchr(cmd,'('); + args_pos_e=strchr(cmd,')'); + if((!args_pos_s && args_pos_e )|| (!args_pos_e && args_pos_s)) + { + fprintf(stderr,"Bad argument specification in $IDMASK(VAL)$\n"); + return 1; + } + if (!args_pos_s && !args_pos_e) + { /* Want to use the value */ + *col+=fprintf(ofp,"%s",idmask); + return 0; + } + /* Want to SET the value */ + memcpy(args,args_pos_s+1,(size_t)(args_pos_e-args_pos_s)); /* Copy te argument */ + args[args_pos_e-args_pos_s-1]='\0'; /* Put the null terminator */ + if (id) free(id); + if((id=(char *)malloc(strlen(args)))==NULL) + { + fprintf(stderr,"Cannot asign memory needed for $IDMASK$\n"); + return 3; + } + strcpy(id,args); + return 0; + } + /* end IDMASK command */ + + + /* ID command */ + if (strstr(cmd,"ID")) + { + /* get the args inside the () */ + args_pos_s=strchr(cmd,'('); + args_pos_e=strchr(cmd,')'); + if((!args_pos_s && args_pos_e )|| (!args_pos_e && args_pos_s)) + { + fprintf(stderr,"Bad argument specification in $ID(VAL)$\n"); + return 1; + } + if (!args_pos_s && !args_pos_e) + { /* Want to use the value */ + *col+=fprintf(ofp,"%s",id); + return 0; + } + /* Want to SET the value */ + memcpy(args,args_pos_s+1,(size_t)(args_pos_e-args_pos_s)); /* Copy te argument */ + args[args_pos_e-args_pos_s-1]='\0'; /* Put the null terminator */ + if (id) free(id); + if((id=(char *)malloc(strlen(args)))==NULL) + { + fprintf(stderr,"Cannot asign memory needed for $ID$\n"); + return 3; + } + strcpy(id,args); + return 0; + } + /* end ID command */ + + /* BSIZE2 command */ + if (strstr(cmd,"BSIZE2")) + { + /* get the args inside the () */ + args_pos_s=strchr(cmd,'('); + args_pos_e=strchr(cmd,')'); + if (args_pos_s || args_pos_e) + { + fprintf(stderr,"$BSIZE2$ is read only\n"); + return 1; + } + *col+=fprintf(ofp,"%ld",strtol(bsize,NULL,0)*2); + return 0; + } + /* end BSIZE2 command */ + + /* BSIZE command */ + if (strstr(cmd,"BSIZE")) + { + /* get the args inside the () */ + args_pos_s=strchr(cmd,'('); + args_pos_e=strchr(cmd,')'); + if((!args_pos_s && args_pos_e )|| (!args_pos_e && args_pos_s)) + { + fprintf(stderr,"Bad argument specification in $BSIZE(VAL)$\n"); + return 1; + } + if (!args_pos_s && !args_pos_e) + { /* Want to use the value */ + *col+=fprintf(ofp,"%s",bsize); + return 0; + } + /* Want to SET the value */ + memcpy(args,args_pos_s+1,(size_t)(args_pos_e-args_pos_s)); /* Copy te argument */ + args[args_pos_e-args_pos_s-1]='\0'; /* Put the null terminator */ + if (id) free(id); + if((id=(char *)malloc(strlen(args)))==NULL) + { + fprintf(stderr,"Cannot asign memory needed for $BSIZE$\n"); + return 3; + } + strcpy(bsize,args); + return 0; + } + /* end BSIZE command */ + + return 0; +} + + +int +repeat (FILE *ifp, FILE *ofp, FILE *dfp,long limit) +{ + char line[2001]; + char *cmd_pos_s=NULL; + char *cmd_pos_e=NULL; + char cmd[30]; + long entry_point; + long end_address=limit; /*+step; SET: Why?*/ + + /* Sanity check */ + if (limit>0 && address>=end_address) + { + /* SET: Not an error, the PROMs have some "fillers", when we use the full + memory the fillers must be skipped */ + fprintf(stderr,"WARNING: REPEAT UNTIL 0x%lX but current address is 0x%lX\n", + limit,address); + if (fgets(line,2001,ifp)==NULL) return 1; + do + { + if (!strncasecmp(line,"--END",5)) + break; + if (fgets(line,2001,ifp)==NULL) return 1; /* get a new line to parse */ + } + while(1); + return 0; + } + + entry_point=ftell(ifp); + + if (fgets(line,2001,ifp)==NULL) return 1; + + do + { + int col=0; + cmd_pos_e=NULL; /* Ending position of command, also used as flag for a command found or not */ + + if (!strncasecmp(line,"--END",5)) + { + address+=step; + /* Repeat condition */ + /* SET: XCF02S can produce address>end_address */ + if ( (limit==0) || ((limit <0) && feof(dfp)) || ((limit >0) && (address>=end_address))) + break; + if (ftell(dfp)-stream_s>=s_bytes) + { + fprintf(stderr,"INFO: Bitstream limit reached\n"); + //fprintf(stderr,"limit: %ld address %ld end_address %ld\n",limit,address,end_address); + break; + } + /*Sanity check*/ + if ( (0 < limit) && (end_address < address)) + { + fprintf(stderr,"ERROR: REPEAT UNTIL 0x%lX but current address is 0x%lX (2)\n",limit,address); + return 24; + } + fseek(ifp,entry_point,0); + if (fgets(line,2001,ifp)==NULL) + return 1; /* get a new line to parse */ + continue; + } + + while((cmd_pos_s=strchr(line,'$'))) /* $ character found in line */ + { + + if (cmd_pos_e) + { /* There was another command on this line before */ + /* Write intermedia bytes */ + int size=cmd_pos_s-cmd_pos_e-1; + if (fwrite(cmd_pos_e+1,1,size,ofp)!=cmd_pos_s-cmd_pos_e-1) + { + fprintf(stderr,"There was an error writing to svf file.\n"); + return 2; + } + col+=size; + } + else + { /* write from begining of line to the starting $ char to output file */ + size_t size=cmd_pos_s-line; + if (fwrite(line,1,size,ofp)!=(size_t)(cmd_pos_s-line)) + { + fprintf(stderr,"There was an error writing to svf file.\n"); + return 2; + } + col+=size; + } + + /* clear the starting '$' simbol so i can search the next */ + *cmd_pos_s='_'; + if ((cmd_pos_e=strchr(line,'$'))==NULL) + { + fprintf(stderr,"Parse error: Cant find ending '$' while parsing command.\n"); + return 3; + } + *cmd_pos_e='_'; /* clear the ending '$' simbol so i can search the next */ + memcpy(cmd,cmd_pos_s+1,(size_t)(cmd_pos_e-cmd_pos_s-1)); /* Copy the command */ + cmd[cmd_pos_e-cmd_pos_s-1]='\0'; /* Put the null terminator */ + if (do_command(cmd,dfp,ofp,&col)) + return 3; + } + /* No more commands */ + if (cmd_pos_e) + { + if (fputs(cmd_pos_e+1,ofp)==EOF) return 2; /* Write remainig bytes */ + } + else + { + /* There was no command */ + if (fputs(line,ofp)==EOF) return 2; /* Write all the line */ + } + + if (fgets(line,2001,ifp)==NULL) return 1; /* get a new line to parse */ + } + while (1); + + return 0; +} + diff --git a/fpga/xilinx/programmer/bit2svf/commands.h b/fpga/xilinx/programmer/bit2svf/commands.h new file mode 100644 index 0000000..e2060f7 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/commands.h @@ -0,0 +1,5 @@ +long value_from(char *varname); +void fill(FILE *fp, long c, long t, int *col); +int do_command(char *cmd, FILE *dfp, FILE *ofp, int *col); +int repeat (FILE *ifp, FILE *ofp, FILE *dfp,long limit); + diff --git a/fpga/xilinx/programmer/bit2svf/debian/changelog b/fpga/xilinx/programmer/bit2svf/debian/changelog new file mode 100644 index 0000000..37e8cc0 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/debian/changelog @@ -0,0 +1,76 @@ +bit2svf (1.3.1-1) stable; urgency=low + + * Agregado: XCF08P y XC4VLX25. + + -- Salvador E. Tropea <set@ieee.org> Fri, 21 Dec 2007 12:10:31 -0300 + +bit2svf (1.3.0-1) stable; urgency=low + + * Agregado: Soporte para memorias en cascada. + * Agregado: XCF01S y XCF04S. + * Corregido: Temporal no borrado si se definía TEMP. + + -- Salvador E. Tropea <set@ieee.org> Fri, 23 Mar 2007 15:35:29 -0300 + +bit2svf (1.2.2-1) stable; urgency=low + + * Corregido: mktemp incluye un retorno de carro y eso molesta a + algunos shells. + + -- Salvador E. Tropea <set@ieee.org> Thu, 15 Feb 2007 16:28:13 -0300 + +bit2svf (1.2.1-1) stable; urgency=low + + * Corregido: creación de archivos temporarios. + + -- Salvador E. Tropea <set@ieee.org> Tue, 13 Feb 2007 08:52:40 -0300 + +bit2svf (1.2.0-2) stable; urgency=low + + * Nuevo jbit. + + -- Salvador E. Tropea <set@ieee.org> Mon, 18 Dec 2006 15:53:04 -0300 + +bit2svf (1.2.0-1) stable; urgency=low + + * Nueva versión de los templates que usan el algoritmo del Impact 8.2.x. + * Agregado soporte para PROMs XCF02S y Spartan 3. + + -- Salvador E. Tropea <set@ieee.org> Thu, 2 Nov 2006 09:39:04 -0300 + +bit2svf (1.1.0-1) stable; urgency=low + + * Nueva versión que usa templates de algoritmos. + + -- Salvador E. Tropea <set@ieee.org> Mon, 20 Mar 2006 14:46:08 -0300 + +bit2svf (1.0.0-5) stable; urgency=low + + * Agregado documentación inglés. + + -- Salvador E. Tropea <set@ieee.org> Fri, 30 Sep 2005 11:23:08 -0300 + +bit2svf (1.0.0-4) stable; urgency=low + + * Agregado ~/.jbitrc + + -- Salvador E. Tropea <set@ieee.org> Wed, 18 May 2005 13:31:18 -0300 + +bit2svf (1.0.0-3) stable; urgency=low + + * Agregados al jbit. + + -- Salvador E. Tropea <set@ieee.org> Fri, 22 Apr 2005 16:51:06 -0300 + +bit2svf (1.0.0-2) stable; urgency=low + + * Agregado el script jbit. + + -- Salvador E. Tropea <set@ieee.org> Mon, 18 Apr 2005 16:51:06 -0300 + +bit2svf (1.0.0-1) stable; urgency=low + + * Initial Debian version. + + -- Salvador E. Tropea <set@ieee.org> Tue, 15 Apr 2005 16:32:37 -0300 + diff --git a/fpga/xilinx/programmer/bit2svf/debian/control b/fpga/xilinx/programmer/bit2svf/debian/control new file mode 100644 index 0000000..30d773d --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/debian/control @@ -0,0 +1,12 @@ +Source: bit2svf +Maintainer: SET <set@ieee.org> +Section: contrib/electronics +Priority: optional +Standards-Version: 3.5 + +Package: bit2svf +Architecture: i386 +Depends: jtag +Description: Conversor de .BIT a SVF + Este programa sirve para generar un archivo SVF con el cual utilizando + el programa JTAG para linux, se puede programar una FPGA o una PROM. diff --git a/fpga/xilinx/programmer/bit2svf/debian/packages b/fpga/xilinx/programmer/bit2svf/debian/packages new file mode 100644 index 0000000..8477d7b --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/debian/packages @@ -0,0 +1,40 @@ +# debian/packages for bit2svf +# Written by Charles Briscoe-Smith, May 1999. Public Domain. +# Customised for bit2svf by Salvador E. Tropea + +Source: bit2svf +Section: contrib/electronics +Priority: optional +Maintainer: SET <set@ieee.org> +Packager: SET <set@ieee.org> +Standards-Version: 3.5 +Description: Conversor de .BIT a SVF +Packaged-For: INTI +Copyright: GPL + Copyright (c) 2005 Juan Pablo D. Borgna <jpborgna en inti gov ar> + Copyright (c) 2005 Instituto Nacional de Tecnología Industrial + Copyright (c) 2001, 2002 by David Sullins +Major-Changes: + Creado. +Build: sh + echo "Hecho!" +Clean: sh + echo "Nada para borrar!" + +Package: bit2svf +Depends: jtag +Architecture: i386 +Description: Conversor de .BIT a SVF + Este programa sirve para generar un archivo SVF con el cual utilizando + el programa JTAG para linux, se puede programar una FPGA o una PROM. +Install: sh + yada install -bin bit2svf + yada install -bin dumpbit + yada install -bin -unstripped jbit + yada install -into /usr/share/bit2svf/ templates/*.svft + yada install -into /usr/share/bit2svf/ templates/DEVICES + yada install -doc README.es + yada install -doc README.en + yada install -doc -subdir templates templates/README.es + yada install -doc -subdir templates templates/README.en + diff --git a/fpga/xilinx/programmer/bit2svf/debian/rules b/fpga/xilinx/programmer/bit2svf/debian/rules new file mode 100755 index 0000000..53d36e8 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/debian/rules @@ -0,0 +1,128 @@ +#! /usr/bin/make -f +# Generated automatically from debian/packages +# by yada v0.9, of Tue, 07 Dec 1999 + +buildarch := $(shell dpkg --print-architecture) + +ifneq "$(buildarch)" "i386" +buildarch := any +endif + +.PHONY: default +default: + @echo "Specify a target:"; \ + echo " build compile the package"; \ + echo " binary make all binary packages"; \ + echo " binary-arch make all architecture-dependent binary packages"; \ + echo " binary-indep make all architecture-independent binary packages"; \ + echo " clean clean up the source package"; \ + echo; \ + echo " install-tree compile the package and create the install trees"; \ + echo " clean-install-tree clean up only under debian/"; \ + echo + +# Build the package and prepare the install tree + +.PHONY: build-only build +build-only: debian/build-stamp +build: build-only + +# Make sure these rules and the control file are up-to-date + +.PHONY: rules control +rules: debian/rules +debian/rules: debian/yada debian/packages + chmod +x debian/yada + debian/yada rebuild rules + +control: debian/control +debian/control: debian/yada debian/packages + chmod +x debian/yada + debian/yada rebuild control + +debian/build-stamp: + @[ -f debian/yada -a -f debian/rules ] + @umask 022 && (\ + echo -E 'eval "yada () { perl $$(pwd)/debian/yada \"\$$@\"; }"; set -e; set -v';\ + echo -E 'echo "Hecho!"') | /bin/sh + touch debian/build-stamp + +.PHONY: install-tree +install-tree: install-tree-$(buildarch) +install-tree-i386: \ + debian/tmp-bit2svf/DEBIAN/control +install-tree-any: + +debian/tmp-bit2svf/DEBIAN/control: debian/build-stamp debian/control + rm -rf debian/tmp-bit2svf + umask 022 && install -d debian/tmp-bit2svf/DEBIAN + chmod +x debian/yada + install -d debian/tmp-bit2svf/usr/share/doc/bit2svf + umask 022; debian/yada generate copyright \ + >debian/tmp-bit2svf/usr/share/doc/bit2svf/copyright + install -m 644 -p debian/changelog \ + debian/tmp-bit2svf/usr/share/doc/bit2svf/changelog + @umask 022 && export PACKAGE="bit2svf" \ + && export ROOT="$$(pwd)/debian/tmp-bit2svf" \ + && export CONTROL="$$(pwd)/debian/tmp-bit2svf/DEBIAN" && (\ + echo -E 'eval "yada () { perl $$(pwd)/debian/yada \"\$$@\"; }"; set -e; set -v';\ + echo -E 'yada install -bin bit2svf';\ + echo -E 'yada install -bin dumpbit';\ + echo -E 'yada install -bin -unstripped jbit';\ + echo -E 'yada install -into /usr/share/bit2svf/ templates/*.svft';\ + echo -E 'yada install -into /usr/share/bit2svf/ templates/DEVICES';\ + echo -E 'yada install -doc README.es';\ + echo -E 'yada install -doc README.en';\ + echo -E 'yada install -doc -subdir templates templates/README.es';\ + echo -E 'yada install -doc -subdir templates templates/README.en') | /bin/sh + debian/yada compress bit2svf + find debian/tmp-bit2svf -type f -print \ + | sed -n 's/^debian\/tmp-bit2svf\(\/etc\/.*\)$$/\1/p' \ + > debian/tmp-bit2svf/DEBIAN/conffiles + if test ! -s debian/tmp-bit2svf/DEBIAN/conffiles; then rm -f debian/tmp-bit2svf/DEBIAN/conffiles; fi + debian/yada generate maintscripts bit2svf + umask 022 && dpkg-gencontrol -isp -pbit2svf -Pdebian/tmp-bit2svf + +# Build package files + +.PHONY: binary binary-arch binary-indep +binary: binary-arch binary-indep +binary-arch: binary-arch-$(buildarch) + +.PHONY: binary-arch-i386 +binary-arch-i386: \ + binary-package-bit2svf +.PHONY: binary-arch-any +binary-arch-any: +binary-indep: + +.PHONY: binary-package-bit2svf +binary-package-bit2svf: check-root debian/tmp-bit2svf/DEBIAN/control + @[ -f debian/yada -a -f debian/rules ] + chown -R 0.0 debian/tmp-bit2svf + chmod -R u=rwX,go=rX debian/tmp-bit2svf + @if [ -d debian/tmp-bit2svf/usr/doc/bit2svf ]; then \ + echo "*** Yada warning: /usr/doc/bit2svf should be /usr/share/doc/bit2svf";\ + fi + dpkg-deb --build debian/tmp-bit2svf .. + +.PHONY: check-root +check-root: + @[ `id -u` = 0 ] || (echo "You must be root to do this!"; false) + +# Clean up afterwards + +.PHONY: clean clean-install-tree clean-build +clean: clean-install-tree clean-build debian/control debian/rules + +clean-build: + @[ -f debian/yada -a -f debian/rules ] + rm -f debian/build-stamp debian/depends-stamp + @umask 022 && (\ + echo -E 'eval "yada () { perl $$(pwd)/debian/yada \"\$$@\"; }"; set -e; set -v';\ + echo -E 'echo "Nada para borrar!"') | /bin/sh + +clean-install-tree: debian/rules + @[ -f debian/yada -a -f debian/rules ] + rm -f debian/install-tree-stamp + rm -rf debian/tmp* debian/files* debian/substvars diff --git a/fpga/xilinx/programmer/bit2svf/debian/yada b/fpga/xilinx/programmer/bit2svf/debian/yada new file mode 100755 index 0000000..a6ee08a --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/debian/yada @@ -0,0 +1,1557 @@ +#! /usr/bin/perl -w +# yada -- Yet Another Debianisation Aid +# Copyright 1999 Charles Briscoe-Smith +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# You can contact me by email at <cpbs@debian.org> +# +# $Id: yada,v 1.1 2005/04/15 21:07:44 salvador Exp $ + +# Bugs: +# +# - Build depends and build conflicts do not take virtual packages into +# account. This is a hard one to fix while not breaking encapsulation +# on dpkg's database. Here's one method of extracting a copy of the +# status file using only dpkg's defined interface: +# dpkg --get-selections '*' | sed 's/[^!-~].*//' | xargs dpkg -s > status + +$modified = ""; + +# $Format: "$project = \"$Project$\";"$ +$project = "yada"; +# $Format: "$projectversion = \"$ProjectVersion$\";"$ +$projectversion = "0.9"; +# $Format: "$projectdate = \"$ProjectDate$\";"$ +$projectdate = "Tue, 07 Dec 1999 20:15:08 +0000"; +# If you modify this file (e.g. for an NMU) please add a version line: +#$modified .= "Modified by XXX on yyyy/mm/dd\n"; + +$projectdate =~ s/ ..\:.*//; +$yadaversion = "Yet Another Debianization Aid ($project v$projectversion, of $projectdate)\n${modified}Copyright 1999 Charles Briscoe-Smith.\nReleased as free software under the terms of the GNU General Public License."; + +######################################################################## +# Standard ways of printing error messages +######################################################################## +sub choke { + print STDERR "@_ (Say `$0 --help' for help)\n"; + exit 1; +} + +BEGIN { + my $errors=0; + sub gasp { + print STDERR "@_\n"; + $errors++; + } + + sub chokepoint { + choke "Stopping after $errors errors." if $errors; + } +} + +######################################################################## +# Execute an external program, and bomb out if errors occur +######################################################################## +sub run { + print " -> @_\n"; + if (my $pid = fork) { + waitpid $pid, 0; + choke "*** YADA error: $_[0] exited with status $?\n" if $? != 0; + } elsif (defined $pid) { + exec @_ or exit 1; + } else { + die "Cannot fork a child process"; + } +} + +######################################################################## +# Pull selected values out of the environment +######################################################################## +sub getvars { + $ROOT=$ENV{"ROOT"}; + $CONTROL=$ENV{"CONTROL"}; + $PACKAGE=$ENV{"PACKAGE"}; + if (not defined $ROOT) { + die "I must be called from within a rules file. (ROOT is not defined)\n"; + } + if (not defined $CONTROL) { + die "I must be called from within a rules file. (CONTROL is not defined)\n"; + } + if (not defined $PACKAGE) { + die "I must be called from within a rules file. (PACKAGE is not defined)\n"; + } +} + +######################################################################## +# Read paragraphs from debian/packages +######################################################################## +# Read a paragraph into %par +sub getpara { + while (<PACKAGES>) { + next if m/^\s*\#/; + s/\s+$//; + last unless m/^$/; + } + %par=(); + while (defined) { + m/^([-A-Za-z0-9]+)\s*\:\s*(.*)$/ or die "Invalid line found"; + $keyword=$1; + $keyword=~tr/A-Z/a-z/; + $contents=$2; + while (<PACKAGES>) { + next if m/^\#/; + s/\s+$//s; + last unless s/^(\s)//; + $x=$1; + s/^/$x/ if $x ne " "; + s/^\.(\.*)$/$1/; + $contents.="\n".$_; + } + $contents=~s/^\n//s; + $par{$keyword}=$contents; + last if not defined or m/^$/; + } +} + +######################################################################## +# Parse source package from debian/packages +######################################################################## +%sourcefields=( + "source"=>1, "section"=>1, "priority"=>1, "maintainer"=>1, + "standards-version"=>1, "upstream-source"=>1, "copyright"=>1, + "major-changes"=>1, "packaged-for"=>1, "description"=>1, "build"=>1, + "clean"=>1, "home-page"=>1, "packager"=>1, "other-maintainers"=>1, + "build-conflicts"=>1, "build-depends"=>1, "build-sequence"=>1, + "patches"=>1, +); + +sub parsesourcepara { + if ($sourceparanum) { + gasp "Paragraph $paragraphnum: duplicate source package.\n Previously got source package from paragraph $sourceparanum."; + } + $sourceparanum=$paragraphnum; + my %srcpar=(); + for (keys %par) { + if (not defined $sourcefields{$_}) { + gasp "Paragraph $paragraphnum: field `$_' not recognised for source packages."; + } + $srcpar{$_}=$par{$_}; + } + %source=%par; +} + +######################################################################## +# Parse binary package from debian/packages +######################################################################## +%binaryfields=( + "package"=>1, "architecture"=>1, "section"=>1, "priority"=>1, + "essential"=>1, "pre-depends"=>1, "depends"=>1, "recommends"=>1, + "suggests"=>1, "provides"=>1, "conflicts"=>1, "replaces"=>1, + "description"=>1, "install"=>1, "finalise"=>1, "finalize"=>1, + "preinst"=>1, "postinst"=>1, "prerm"=>1, "postrm"=>1, "changelog"=>1, + "doc-depends"=>1, "alternatives"=>1, "menu"=>1, "shlibs"=>1, + "contains-libs"=>1, "doc-base"=>1, +); + +sub parsebinarypara { + my $pkg=$par{"package"}; + if ($binaryparanum{$pkg}) { + gasp "Paragraph $paragraphnum: duplicate binary package.\n Previously got binary package `$pkg' from paragraph $binaryparanum{$pkg}."; + } + $binaryparanum{$pkg}=$paragraphnum; + my %binpar=(); + foreach (keys %par) { + if (not defined $binaryfields{$_}) { + gasp "Paragraph $paragraphnum: field `$_' not recognised for binary packages." + } + $binpar{$_}=$par{$_}; + } + $binary{$pkg}=\%binpar; +} + +######################################################################## +# Open, read and parse the whole of debian/packages +######################################################################## +sub readpackages { + open PACKAGES, "debian/packages" + or die "Can't open debian/packages for reading"; + local $paragraphnum=0; + my @skipped=(); + &getpara; + while (1) { + $paragraphnum++; + last if not %par; + if (exists $par{"ignore"}) { + push @skipped, $paragraphnum; + } else { + # What sort of paragraph is this? + if (defined $par{"source"}) { + &parsesourcepara; + } elsif (defined $par{"package"}) { + &parsebinarypara; + } else { + gasp "Paragraph $paragraphnum: contains neither `source' nor `package' field."; + } + } + &getpara; + } + print "Paragraphs skipped: @skipped\n" if @skipped; + &chokepoint; +} + +######################################################################## +# Output control-file fields +######################################################################## +# Print a key/value pair to the given filehandle. +sub printkey { + my ($OUT, $k, $v)=@_; + if ($v=~m/^\./m) { die "Can't escape . at start of line"; } + $k=~s/(^|-)(.)/$1\u$2/g; + $v=~s/^$/./gm; + $v=~s/^/ /gm; + print $OUT "$k:$v\n" or die "Can't write to output file"; +} + +# Print, to the given filehandle, the named keys from the given paragraph +sub printkeys { + my ($OUT, $par, @keys)=@_; + foreach (@keys) { + if (defined $$par{$_}) { printkey $OUT, $_, $$par{$_}; } + } +} + +######################################################################## +# Output Makefile fragments +######################################################################## +# Print, on the given handle, make rules to execute the given executable +# field. +sub makescript { + my ($OUT, $fieldname, $pre, $text) = @_; + $_ = $text; + if (defined) { + if (s/^sh\n//s) { + # shell script + chomp; + s=^=set -e; set -v\n=s; + s=^=eval "yada () { perl \$(pwd)/debian/yada \\\"\\\$\@\\\"; }"; =s; + s/'/'\\''/g; + s/\$/\$\$/g; + s/\n/';\\\n\techo -E '/gs; + print OUT "$pre && (\\\n\techo -E '" or die; + print OUT or die; + print OUT "') | /bin/sh\n" or die; + } else { + gasp "Unknown executable type for `$fieldname'\n"; + } + } +} + +######################################################################## +# Append a line to a file, discarding duplicates +######################################################################## +sub append { + my ($file, $line, $upto) = @_; + my $sep = $line; + $sep =~ s/$upto.*//s if defined $upto; + open APPENDOUT, ">$file.new" or die "Cannot open `$file.new' for output"; + if (-f $file) { + open APPENDIN, "<$file" or die "Cannot open `$file' for input"; + while (<APPENDIN>) { + my $tmp = $_; + s/$upto.*//s if defined $upto; + print APPENDOUT $tmp unless $_ eq $sep; + } + close APPENDIN or die "Cannot close `$file'"; + } + print APPENDOUT $line or die "Cannot write to `$file.new'"; + close APPENDOUT or die "Cannot close `$file.new'"; + rename "$file.new", "$file" or die "Cannot rename `$file.new' to `$file'"; +} + +######################################################################## +# Convert package name into something which can be used for a substvar +# name -- no dots or pluses, but colons are okay +######################################################################## +sub normalise { + my ($pkg) = @_; + $pkg =~ s/\./:d/g; + $pkg =~ s/\+/:p/g; + return $pkg; +} + +######################################################################## +# Main program starts here +######################################################################## +if (not defined($_=shift) or m/^(-h|--h(e(lp?)?)?)$/i) { + print "$0: $yadaversion +Usage: yada action [args...] +Notably: + yada rebuild control|rules + yada install [-dir|-data|-doc|-bin|-script|-game|-lib|-man|-conffile] + [-x|-non-x] [-stripped|-unstripped] [-exec|-no-exec] + [-into <dir>] [-as <name>] [-subdir <subdir>] + [-section <mansect>] <file>... + yada undocumented [-x|-non-x] [-section <mansect>] <name>... + yada fixup libtool [path/to/libtool] + yada yada +"; + #yada symlink [-doc|-bin|-game|-lib|-man] [-into <dir>] [-as <name>] + # <file>... + if (defined) { exit 0; } else { exit 1; } +} + +if (m/^(-v|--v(e(r(s(i(on?)?)?)?)?)?)$/i) { + print "$0: $yadaversion\n"; + exit 0; +} + +if (m/^rebuild$/i) { + if (not defined($_=shift)) { choke "Rebuild what?"; } + + ###################################################################### + # Rebuild debian/control + ###################################################################### + if (m/^control$/i) { + &readpackages; + open OUT, ">debian/control.new" + or die "Can't open debian/control.new for writing"; + @skipped=(); + foreach ("source", "maintainer", "section", "priority", "standards-version") + { + if (defined $source{$_}) { &printkey(*OUT{IO}, $_, $source{$_}); } + } + for (keys %binary) { + $par=$binary{$_}; + if ($$par{"architecture"}=~m/none/i) { + push @skipped, $$par{"package"}; + } else { + $npkg = normalise($$par{"package"}); + if (defined $$par{"pre-depends"}) { + $$par{"pre-depends"} =~ + s/(^|\, ?)\s*\[.*?\]\s*(\,|$)/$1\${$npkg:Pre-Depends}$2/; + $$par{"pre-depends"} =~ s/(\,\s*\[.*?\]\s*)+(\,|$)/$2/g; + } + if (defined $$par{"depends"}) { + $$par{"depends"} =~ + s/(^|\, ?)\s*\[.*?\]\s*(\,|$)/$1\${$npkg:Depends}$2/; + $$par{"depends"} =~ s/(\,\s*\[.*?\]\s*)+(\,|$)/$2/g; + } + if (defined $$par{"recommends"}) { + $$par{"recommends"} =~ + s/(^|\, ?)\s*\[.*?\]\s*(\,|$)/$1\${$npkg:Recommends}$2/; + $$par{"recommends"} =~ s/(\,\s*\[.*?\]\s*)+(\,|$)/$2/g; + } + if (defined $$par{"suggests"}) { + $$par{"suggests"} =~ + s/(^|\, ?)\s*\[.*?\]\s*(\,|$)/$1\${$npkg:Suggests}$2/; + $$par{"suggests"} =~ s/(\,\s*\[.*?\]\s*)+(\,|$)/$2/g; + } + print OUT "\n" or die "Can't write to debian/control.new"; + &printkeys(*OUT{IO}, $par, "package", "architecture", "section", + "priority", "essential", "pre-depends", "depends", + "recommends", "suggests", "provides", "conflicts", + "replaces"); + if (defined $$par{"description"}) { + $_ = "$source{\"description\"}\n"; + s/^.*\n//; + s/(.)$/$1\n/s; + $$par{"description"} =~ m/^([^\n]*)\n(.*)/s; + &printkey(*OUT{IO}, "description", "$1\n$_$2"); + } + } + } + print "Skipped binary packages: @skipped\n" if @skipped; + close OUT or die "Can't close debian/control.new"; + rename "debian/control.new", "debian/control" + or die "Can't rename debian/control.new to debian/control"; + exit 0; + } + + ###################################################################### + # Rebuild debian/rules + ###################################################################### + if (m/^rules$/i) { + open OUT, ">debian/rules.new" + or die "Cannot open debian/rules.new for writing"; + &readpackages; + + $avoidroot=0; + $buildseq=$source{"build-sequence"}; + $buildconfls=$source{"build-conflicts"}; + $builddeps=$source{"build-depends"}; + + %packages=(); + %architectures=(); + + %install=(); + %architecture=(); + %finalise=(); + %docdep=(); + %preinst=(); + %postinst=(); + %prerm=(); + %postrm=(); + %predepends=(); + %depends=(); + %recommends=(); + %suggests=(); + + for (keys %binary) { + $par=$binary{$_}; + $pkg=$$par{"package"}; + $packages{$pkg}++; + $architecture{$pkg}=$$par{"architecture"}; + $finalise{$pkg}=$$par{"finalise"}; + if (defined $$par{"finalize"}) { + if (defined $finalise{$pkg}) { + gasp "Package `$pkg' has both `Finalise' and `Finalize'.\n"; + } else { + $finalise{$pkg}=$$par{"finalize"}; + } + } + $architecture{$pkg}=$$par{"architecture"}; + $install{$pkg}=$$par{"install"}; + $docdep{$pkg}=$$par{"doc-depends"}; + $preinst{$pkg}=$$par{"preinst"}; + $postinst{$pkg}=$$par{"postinst"}; + $prerm{$pkg}=$$par{"prerm"}; + $postrm{$pkg}=$$par{"postrm"}; + $_=$$par{"pre-depends"}; + if (defined) { + $_=join " ", grep s/^\[\s*(.+?)\s*\]$/$1/, split /\s*,\s*/; + s=(^| )/?([^ ])=$1debian/tmp-$pkg/$2=g; + $predepends{$pkg}=$_ if $_ ne ""; + } + $_=$$par{"depends"}; + if (defined) { + $_=join " ", grep s/^\[\s*(.+?)\s*\]$/$1/, split /\s*,\s*/; + s=(^| )/?([^ ])=$1debian/tmp-$pkg/$2=g; + $depends{$pkg}=$_ if $_ ne ""; + } + $_=$$par{"recommends"}; + if (defined) { + $_=join " ", grep s/^\s*\[(.+?)\s*\]$/$1/, split /\s*,\s*/; + s=(^| )/?([^ ])=$1debian/tmp-$pkg/$2=g; + $recommends{$pkg}=$_ if $_ ne ""; + } + $_=$$par{"suggests"}; + if (defined) { + $_=join " ", grep s/^\s*\[(.+?)\s*\]$/$1/, split /\s*,\s*/; + s=(^| )/?([^ ])=$1debian/tmp-$pkg/$2=g; + $suggests{$pkg}=$_ if $_ ne ""; + } + $_=$architecture{$pkg}; + if (defined) { + foreach (split / +/) { + $architectures{$_}++; + } + } + } + + delete $architectures{"all"}; + delete $architectures{"any"}; + + if (defined $buildseq) { + if ($buildseq =~ m/^avoid-root$/i) { + $avoidroot=1; + } elsif (not $buildseq =~ m/^conserve-space$/i) { + gasp "Unrecognised `Build-Sequence'; assuming `conserve-space'.\n", + " Build-Sequence: avoid-root | conserve-space\n"; + } + } + + ############################################################################ + print OUT "#! /usr/bin/make -f +# Generated automatically from debian/packages +# by $project v$projectversion, of $projectdate +" or die; + $_ = $modified; + s/^(.)/# &/g; + print OUT or die; + $usearches=0; + if (%architectures) { + $usearches=1; + print OUT "\nbuildarch := \$(shell dpkg --print-architecture)\n\n" or die; + foreach (keys %architectures) { + print OUT "ifneq \"\$(buildarch)\" \"$_\"\n" or die; + } + print OUT "buildarch := any\n" or die; + foreach (keys %architectures) { + print OUT "endif\n" or die; + } + } + + $patch=$source{"patches"}; + if (defined $patch) { + $patch="debian/".$patch; + } + + ############################################################################ + print OUT <<END or die; + +.PHONY: default +default: + \@echo \"Specify a target:\"; \\ + echo \" build compile the package\"; \\ + echo \" binary make all binary packages\"; \\ + echo \" binary-arch make all architecture-dependent binary packages\"; \\ + echo \" binary-indep make all architecture-independent binary packages\"; \\ + echo \" clean clean up the source package\"; \\ + echo; \\ +END + print OUT <<END or die if defined $buildconfls or defined $builddeps; + echo \" depends check build-time dependencies\"; \\ +END + print OUT <<END or die if defined $patch; + echo \" patch apply patches from $patch\"; \\ + echo \" unpatch unapply patches from ${patch}{,disabled}\"; \\ +END + print OUT <<END or die if $avoidroot; + echo \" build-only compile the package but do not create any install trees\"; \\ +END + print OUT <<END or die unless $avoidroot; + echo \" install-tree compile the package and create the install trees\"; \\ +END + print OUT <<END or die; + echo \" clean-install-tree clean up only under debian/\"; \\ + echo + +END +################################################################################ + if (defined $buildconfls or defined $builddeps) { + print OUT <<END or die; +# Check build dependencies and conflicts + +.PHONY: depends +depends: debian/depends-stamp +debian/depends-stamp: + \@echo 'Checking build conflicts and dependencies; just a minute...' +END + + if (defined $buildconfls) { + $_=$buildconfls; + s/^\s*(.*?)\s*$/$1/; + foreach (split /\s*,\s*/) { + if (m/^([-+.a-zA-Z0-9]+)(?:\s*\(\s*(\<\<|\<\=|\=|\>\=|\>\>)\s*([-+.:a-zA-Z0-9]+)\s*\))?$/) { + $spec="$1"; + if (defined $2) { + $spec.=" (version $2 $3)"; + } else { + $spec.=" (any version)"; + } + print OUT "\t\@echo -n '$1...'; v=\$\$(dpkg -s '$1' | sed -n '/^[sS][tT][aA][tT][uU][sS]:.* config-files\$\$/q;s/^[vV][eE][rR][sS][iI][oO][nN]: *//p'); \\ +\tif test \"\$\$v\"" or die; + if (defined $2) { + print OUT " && dpkg --compare-versions \"\$\$v\" '$2' '$3'" or die; + } + print OUT "; then \\ +\t echo '*** Build conflicts with package $spec, which is installed'; \\ +\t exit 1; \\ +\tfi\n" or die; + # if (defined $2) { + # print "Processing conflict with package `$1', versioning ($2 $3) not yet checked\n"; + # } + } else { + gasp "Invalid `Build-Conflicts' syntax: `$_'\n"; + } + } + } + + if (defined $builddeps) { + $_=$builddeps; + s/^\s*(.*?)\s*$/$1/; + foreach (split /\s*,\s*/) { + $speclist=""; + foreach (split /\s*\|\s*/) { + if (m/^([-+.a-zA-Z0-9]+)(?:\s*\(\s*(\<\<|\<\=|\=|\>\=|\>\>)\s*([-+.:a-zA-Z0-9]+)\s*\))?$/) { + $spec="`$1'"; + if (defined $2) { + $spec.=" (version $2 $3)"; + } else { + $spec.=" (any version)"; + } + if ($speclist eq "") { $at="\@"; } else { $at=""; } + $speclist.=", or $spec"; + print OUT "\t${at}echo -n '$1...'; v=\$\$(dpkg -s '$1' | sed -n '/^[sS][tT][aA][tT][uU][sS]:.* config-files\$\$/q;s/^[vV][eE][rR][sS][iI][oO][nN]: *//p'); \\ +\tif test \"\$\$v\"; then \\\n" or die; + if (defined $2) { + print OUT "\t if dpkg --compare-versions \"\$\$v\" '$2' '$3'; then \\\n" or die; + } + print OUT "\t exit 0; \\\n" or die; + if (defined $2) { + print OUT "\t fi; \\\n" or die; + } + print OUT "\tfi; \\\n" or die; + } else { + gasp "Invalid `Build-Depends' syntax: `$_'\n"; + } + } + $speclist =~ s/^, or //; + $speclist =~ s/'/'\\''/g; + print OUT "\techo 'Build depends on $speclist, which is not satisfied' | fmt; exit 1\n" or die; + } + } + print OUT <<END or die; + \@echo + \@echo 'Conflicts and dependencies all satisfied!' + touch debian/depends-stamp + +END + } + + ############################################################################ + + print OUT <<END or die if defined $patch; +.PHONY: patch unpatch +# Apply patches matching `$patch' to the source tree, +# and unapply any applied patches `$patch.disabled' +patch: debian/patch-stamp +debian/patch-stamp: + \@set -e; backupdirs=\$\$(ls -d debian/backup-* 2>/dev/null | wc -l); \\ + if test \$\$backupdirs -gt 1; then \\ + echo \"*** Yada error: There are multiple debian/backup-* directories.\"; \\ + echo \"*** I can't cope. Please clean up for me.\"; \\ + exit 1; \\ + fi; \\ + if test \$\$backupdirs = 1; then \\ + patchname=\"\$\$(echo debian/backup-* | sed 's=^debian/backup-==')\"; \\ + echo \"*** Cleaning up after interrupted patching run for \$\$patchname\"; \\ + if test -f \"debian/patch-\$\$patchname-applied\"; then \\ + rm -rf \"debian/backup-\$\$patchname\"; \\ + else \\ + (cd \"debian/backup-\$\$patchname\"; find . -type f -print0) | xargs -0ri mv -f -- debian/backup-\$\$patchname/{} {}; \\ + find \"debian/backup-\$\$patchname\" -depth -type d -exec rmdir '{}' \\;; \\ + if test -e \"debian/backup-\$\$patchname\"; then \\ + echo \"*** Yada error: I could not recover cleanly from an interrupted patch.\"; \\ + echo \"*** I can't cope. Please clean up for me.\"; \\ + exit 1; \\ + fi; \\ + fi; \\ + fi + + \@set -e; backdowndirs=\$\$(ls -d debian/backdown-* 2>/dev/null | wc -l); \\ + if test \$\$backdowndirs -gt 1; then \\ + echo \"*** Yada error: There are multiple debian/backdown-* directories.\"; \\ + echo \"*** I can't cope. Please clean up for me.\"; \\ + exit 1; \\ + fi; \\ + if test \$\$backdowndirs = 1; then \\ + patchname=\"\$\$(echo debian/backdown-* | sed 's=^debian/backdown-==')\"; \\ + echo \"*** Cleaning up after interrupted unpatching run for \$\$patchname\"; \\ + if test ! -f \"debian/patch-\$\$patchname-applied\"; then \\ + rm -rf \"debian/backdown-\$\$patchname\"; \\ + else \\ + (cd \"debian/backdown-\$\$patchname\"; find . -type f -print0) | xargs -0ri mv -f -- debian/backdown-\$\$patchname/{} {}; \\ + find \"debian/backdown-\$\$patchname\" -depth -type d -exec rmdir '{}' \\;; \\ + if test -e \"debian/backdown-\$\$patchname\"; then \\ + echo \"*** Yada error: I could not recover cleanly from an interrupted patch.\"; \\ + echo \"*** I can't cope. Please clean up for me.\"; \\ + exit 1; \\ + fi; \\ + fi; \\ + fi + + \@set -e; for stampfile in debian/patch-*-applied; do \\ + if test -f \"\$\$stampfile\"; then \\ + patchname=\"\$\$(echo \"\$\$stampfile\" | sed 's=^debian/patch-\\(.*\\)-applied\$\$=\\1=')\"; \\ + patchfile=\"debian/\$\$patchname.disabled\"; \\ + if test -f \"\$\$patchfile\"; then \\ + echo \"*** \$\$patchfile is now disabled; patching it out\"; \\ + patchoptions=\"\$\$(sed -n '/^#PATCHOPTIONS:/{;s/^[^:]*://;p;q;}' <\"\$\$patchfile\")\"; \\ + patch -R -f -i \"\$\$patchfile\" -b -V simple -B \"debian/backdown-\$\$patchname/\" \$\$patchoptions; \\ + rm -f \"\$\$stampfile\"; \\ + rm -rf \"debian/backdown-\$\$patchname\"; \\ + fi; \\ + fi; \\ + done + + \@set -e; for patchfile in $patch; do \\ + if test -f \"\$\$patchfile\"; then \\ + patchname=\"\$\$(echo \"\$\$patchfile\" | sed 's=^debian/==')\"; \\ + stampfile=\"debian/patch-\$\$patchname-applied\"; \\ + if test ! -f \"\$\$stampfile\"; then \\ + echo \"*** Applying patch from \$\$patchname\"; \\ + patchoptions=\"\$\$(sed -n '/^#PATCHOPTIONS:/{;s/^[^:]*://;p;q;}' <\"\$\$patchfile\")\"; \\ + patch -N -f -i \"\$\$patchfile\" -b -V simple -B \"debian/backup-\$\$patchname/\" \$\$patchoptions; \\ + touch \"\$\$stampfile\"; \\ + rm -rf \"debian/backup-\$\$patchname\"; \\ + fi; \\ + fi; \\ + done + + touch debian/patch-stamp + +# Remove all managed patches from the source tree +unpatch: + \@set -e; backupdirs=\$\$(ls -d debian/backup-* 2>/dev/null | wc -l); \\ + if test \$\$backupdirs -gt 1; then \\ + echo \"*** Yada error: There are multiple debian/backup-* directories.\"; \\ + echo \"*** I can not cope. Please clean up for me.\"; \\ + exit 1; \\ + fi; \\ + if test \$\$backupdirs = 1; then \\ + patchname=\"\$\$(echo debian/backup-* | sed 's=^debian/backup-==')\"; \\ + echo \"*** Cleaning up after interrupted patching run for \$\$patchname\"; \\ + if test -f \"debian/patch-\$\$patchname-applied\"; then \\ + rm -rf \"debian/backup-\$\$patchname\"; \\ + else \\ + (cd \"debian/backup-\$\$patchname\"; find . -type f -print0) | xargs -0ri mv -f -- debian/backup-\$\$patchname/{} {}; \\ + find \"debian/backup-\$\$patchname\" -depth -type d -exec rmdir '{}' \\;; \\ + if test -e \"debian/backup-\$\$patchname\"; then \\ + echo \"*** Yada error: I could not recover cleanly from an interrupted patch.\"; \\ + echo \"*** I can not cope. Please clean up for me.\"; \\ + exit 1; \\ + fi; \\ + fi; \\ + fi + + \@set -e; backdowndirs=\$\$(ls -d debian/backdown-* 2>/dev/null | wc -l); \\ + if test \$\$backdowndirs -gt 1; then \\ + echo \"*** Yada error: There are multiple debian/backdown-* directories.\"; \\ + echo \"*** I can not cope. Please clean up for me.\"; \\ + exit 1; \\ + fi; \\ + if test \$\$backdowndirs = 1; then \\ + patchname=\"\$\$(echo debian/backdown-* | sed 's=^debian/backdown-==')\"; \\ + echo \"*** Cleaning up after interrupted unpatching run for \$\$patchname\"; \\ + if test ! -f \"debian/patch-\$\$patchname-applied\"; then \\ + rm -rf \"debian/backdown-\$\$patchname\"; \\ + else \\ + (cd \"debian/backdown-\$\$patchname\"; find . -type f -print0) | xargs -0ri mv -f -- debian/backdown-\$\$patchname/{} {}; \\ + find \"debian/backdown-\$\$patchname\" -depth -type d -exec rmdir '{}' \\;; \\ + if test -e \"debian/backdown-\$\$patchname\"; then \\ + echo \"*** Yada error: I could not recover cleanly from an interrupted patch.\"; \\ + echo \"*** I can not cope. Please clean up for me.\"; \\ + exit 1; \\ + fi; \\ + fi; \\ + fi + + \@set -e; for stampfile in debian/patch-*-applied; do \\ + if test -f \"\$\$stampfile\"; then \\ + patchname=\"\$\$(echo \"\$\$stampfile\" | sed 's=^debian/patch-\\(.*\\)-applied\$\$=\\1=')\"; \\ + patchfile=\"debian/\$\$patchname\"; \\ + if test ! -f \"\$\$patchfile\"; then \\ + patchfile=\"\$\$patchfile.disabled\"; \\ + fi; \\ + if test -f \"\$\$patchfile\"; then \\ + echo \"*** Removing patch from \$\$patchname\"; \\ + patchoptions=\"\$\$(sed -n '/^#PATCHOPTIONS:/{;s/^[^:]*://;p;q;}' <\"\$\$patchfile\")\"; \\ + patch -R -f -i \"\$\$patchfile\" -b -V simple -B \"debian/backdown-\$\$patchname/\" \$\$patchoptions; \\ + rm -f \"\$\$stampfile\"; \\ + rm -rf \"debian/backdown-\$\$patchname\"; \\ + else \\ + echo \"*** Yada warning: Cannot find a patchfile named \\`\$\$patchname' to unapply\"; \\ + fi; \\ + fi; \\ + done + + rm -f debian/patch-stamp + +END + + print OUT <<END or die; +# Build the package and prepare the install tree + +.PHONY: build-only build +build-only: debian/build-stamp +END + ############################################################################ + + if ($avoidroot) { + print OUT "build: install-tree\n" or die; + } else { + print OUT "build: build-only\n" or die; + } + + ############################################################################ + print OUT <<END or die; + +# Make sure these rules and the control file are up-to-date + +.PHONY: rules control +rules: debian/rules +debian/rules: debian/yada debian/packages + chmod +x debian/yada + debian/yada rebuild rules + +control: debian/control +debian/control: debian/yada debian/packages + chmod +x debian/yada + debian/yada rebuild control + +END + print OUT "debian/build-stamp:" or die; + if (defined $buildconfls or defined $builddeps) { + print OUT " debian/depends-stamp" or die; + } + if (defined $patch) { + print OUT " debian/patch-stamp" or die; + } + print OUT "\n\t\@[ -f debian/yada -a -f debian/rules ]\n" or die; + + &makescript(*OUT{IO}, "Build", "\t\@umask 022", $source{"build"}); + + ############################################################################ + print OUT <<END or die; + touch debian/build-stamp + +.PHONY: install-tree +END + if ($usearches) { + print OUT "install-tree: install-tree-\$(buildarch)\n" or die; + } else { + print OUT "install-tree: install-tree-any\n" or die; + } + + foreach $arch (keys %architectures) { + print OUT "install-tree-$arch:" or die; + foreach (keys %packages) { + if ($architecture{$_} eq "all" or $architecture{$_} eq "any" + or $architecture{$_} =~ m/(^| )$arch( |$)/) { + print OUT " \\\n\tdebian/tmp-$_/DEBIAN/control" or die; + } + } + print OUT "\n" or die; + } + + print OUT "install-tree-any:" or die; + foreach (keys %packages) { + if ($architecture{$_} eq "all" or $architecture{$_} eq "any") { + print OUT " \\\n\tdebian/tmp-$_/DEBIAN/control" or die; + } + } + + foreach $pkg (keys %packages) { + print OUT "\n\ndebian/tmp-$pkg/DEBIAN/control: debian/build-stamp debian/control + rm -rf debian/tmp-$pkg + umask 022 && install -d debian/tmp-$pkg/DEBIAN + chmod +x debian/yada +" or die; + if (defined $docdep{$pkg}) { + print OUT +" umask 022 && install -d debian/tmp-$pkg/usr/share/doc/$docdep{$pkg} + umask 022 && ln -s $docdep{$pkg} debian/tmp-$pkg/usr/share/doc/$pkg +" or die; + } else { + if (defined $source{"upstream-source"}) { + $_=".Debian"; + } else { + $_=""; + } + print OUT <<EOM or die; + install -d debian/tmp-$pkg/usr/share/doc/$pkg + umask 022; debian/yada generate copyright \\ + >debian/tmp-$pkg/usr/share/doc/$pkg/copyright + install -m 644 -p debian/changelog \\ + debian/tmp-$pkg/usr/share/doc/$pkg/changelog$_ +EOM + } + &makescript(*OUT{IO}, "Install", +" \@umask 022 && export PACKAGE=\"$pkg\" \\ + && export ROOT=\"\$\$(pwd)/debian/tmp-$pkg\" \\ + && export CONTROL=\"\$\$(pwd)/debian/tmp-$pkg/DEBIAN\"", + $install{$pkg}); + if (defined $predepends{$pkg} or defined $depends{$pkg} + or defined $recommends{$pkg} or defined $suggests{$pkg}) + { + # FIXME: provide a way to add more directories to LD_LIBRARY_PATH. + print OUT "\tLD_LIBRARY_PATH=\"debian/tmp-$pkg/lib:debian/tmp-$pkg/usr/lib:\$\$LD_LIBRARY_PATH\" dpkg-shlibdeps -p" . normalise($pkg) or die; + if (defined $predepends{$pkg}) { + print OUT " -dPre-Depends $predepends{$pkg}" or die; + } + if (defined $depends{$pkg}) { + print OUT " -dDepends $depends{$pkg}" or die; + } + if (defined $recommends{$pkg}) { + print OUT " -dRecommends $recommends{$pkg}" or die; + } + if (defined $suggests{$pkg}) { + print OUT " -dSuggests $suggests{$pkg}" or die; + } + print OUT "\n" or die; + } + print OUT +" debian/yada compress $pkg + find debian/tmp-$pkg -type f -print \\ + | sed -n 's/^debian\\/tmp-$pkg\\(\\/etc\\/.*\\)\$\$/\\1/p' \\ + > debian/tmp-$pkg/DEBIAN/conffiles + if test ! -s debian/tmp-$pkg/DEBIAN/conffiles; then rm -f debian/tmp-$pkg/DEBIAN/conffiles; fi + debian/yada generate maintscripts $pkg +" or die; + if (defined $docdep{$pkg}) { + print OUT "\t-rmdir debian/tmp-$pkg/usr/share/doc/$docdep{$pkg}\n" + or die; + } + print OUT "\tumask 022 && dpkg-gencontrol -isp -p$pkg -Pdebian/tmp-$pkg" or die; + } + + ############################################################################ + print OUT <<END or die; + + +# Build package files + +.PHONY: binary binary-arch binary-indep +binary: binary-arch binary-indep +END + print OUT <<END or die if $usearches; +binary-arch: binary-arch-\$(buildarch) + +END + print OUT <<END or die unless $usearches; +binary-arch: binary-arch-any + +END + ############################################################################ + + foreach $arch (keys %architectures) { + print OUT ".PHONY: binary-arch-$arch\nbinary-arch-$arch:" or die; + foreach (keys %packages) { + if ($architecture{$_} eq "any" or $architecture{$_} =~ m/(^| )$arch( |$)/) { + print OUT " \\\n\tbinary-package-$_" or die; + } + } + print OUT "\n" or die; + } + + print OUT ".PHONY: binary-arch-any\nbinary-arch-any:" or die; + foreach (keys %packages) { + if ($architecture{$_} eq "any") { + print OUT " \\\n\tbinary-package-$_" or die; + } + } + print OUT "\n" or die; + + print OUT "binary-indep:" or die; + foreach (keys %packages) { + if ($architecture{$_} eq "all") { + print OUT " \\\n\tbinary-package-$_" or die; + } + } + + foreach $pkg (keys %packages) { + print OUT "\n\n.PHONY: binary-package-$pkg +binary-package-$pkg: check-root debian/tmp-$pkg/DEBIAN/control + \@[ -f debian/yada -a -f debian/rules ] + chown -R 0.0 debian/tmp-$pkg + chmod -R u=rwX,go=rX debian/tmp-$pkg\n" or die; + &makescript(*OUT{IO}, "Finalise", +" \@umask 022 && export PACKAGE=\"$pkg\" \\ + && export ROOT=\"\$\$(pwd)/debian/tmp-$pkg\" \\ + && export CONTROL=\"\$\$(pwd)/debian/tmp-$pkg/DEBIAN\"", + $finalise{$pkg}); + print OUT "\t\@if [ -d debian/tmp-$pkg/usr/doc/$pkg ]; then \\\n" . + "\t echo \"*** Yada warning: /usr/doc/$pkg should be " . + "/usr/share/doc/$pkg\";\\\n" . + "\tfi\n"; + print OUT "\tdpkg-deb --build debian/tmp-$pkg .." or die; + } + + print OUT <<EOM or die; + + +.PHONY: check-root +check-root: + \@[ `id -u` = 0 ] || (echo \"You must be root to do this!\"; false) + +# Clean up afterwards + +.PHONY: clean clean-install-tree clean-build +EOM + print OUT "clean: clean-install-tree clean-build" or die; + if (defined $patch) { print OUT " unpatch" or die; } + print OUT <<EOM or die; + debian/control debian/rules + +clean-build: + \@[ -f debian/yada -a -f debian/rules ] + rm -f debian/build-stamp debian/depends-stamp +EOM + ############################################################################ + + &makescript(*OUT{IO}, "Clean", "\t\@umask 022", $source{"clean"}); + + ############################################################################ + print OUT " +clean-install-tree: debian/rules + \@[ -f debian/yada -a -f debian/rules ] + rm -f debian/install-tree-stamp + rm -rf debian/tmp* debian/files* debian/substvars +" or die "Cannot write header to debian/rules.new"; + ############################################################################ + + close OUT or die "Cannot close debian/rules.new"; + chmod 0755, "debian/rules.new" or die "Cannot make debian/rules.new executable"; + + &chokepoint; # "leaving output in debian/rules.new\n"; + rename "debian/rules.new", "debian/rules" + or die "Cannot rename debian/rules.new to debian/rules"; + exit 0; + } +} + +if (m/^install$/i) { + &getvars; + @files=(); + $type="data"; + $tree="/usr"; + $dest=undef; + $destadd=undef; + $as=undef; + $strip=undef; + $exec=undef; + $sect=undef; + while (defined ($_=shift)) { + if ($_ eq "-dir") { $type="dir"; next; } + if ($_ eq "-data") { $type="data"; next; } + if ($_ eq "-doc") { $type="doc"; next; } + if ($_ eq "-bin") { $type="bin"; next; } + if ($_ eq "-script") { $type="bin"; $strip=0; next; } + if ($_ eq "-game") { $type="games"; next; } + if ($_ eq "-lib") { $type="lib"; next; } + if ($_ eq "-man") { $type="man"; next; } + if ($_ eq "-conffile") { if ($type ne "data") { warn "`-conffile' has changed in meaning!"; } $type="etc"; next; } + if ($_ eq "-x") { $tree="/usr/X11R6"; next; } + if ($_ eq "-non-x") { $tree="/usr"; next; } + if ($_ eq "-stripped") { $strip=1; next; } + if ($_ eq "-unstripped") { $strip=0; next; } + if ($_ eq "-exec") { $exec=1; next; } + if ($_ eq "-no-exec") { $exec=0; next; } + if ($_ eq "-into") { $dest=shift; next; } + if ($_ eq "-as") { $as=shift; next; } + if ($_ eq "-subdir") { $destadd=shift; next; } + if ($_ eq "-section") { $sect=shift; next; } + if ($_ =~ m/^-/) { print "I don't understand this option: `$_'\n"; exit 1; } + push @files, $_; + } + if (scalar @files == 0) { choke "Install what?"; } + if (defined $as and scalar @files != 1) { + choke "You can only install one file `-as' something at a time.\n"; + } + if ($type eq "dir") { + map s|^/?|$ROOT/|, @files; + &run('install', '-d', '-m', '755', @files); + exit 0; + } + if (not defined $dest) { + if ($type =~ /doc|man|info/ and $tree eq "/usr") { $tree .= "/share"; } + if ($type eq "etc") { $tree=""; } + if ($type =~ /etc|bin|lib|games|man/) { $dest="$tree/$type"; } + if ($type eq "doc") { $dest="$tree/$type/$PACKAGE"; } + } + if (not defined $dest) { choke "Where should I install to?"; } + if (defined $destadd) { + $dest.="/$destadd"; + } + if (not defined $strip) { + if ($type =~ /bin|games|lib/) { $strip=1; } else { $strip=0; } + } + $dest =~ s|^/?|$ROOT/|; + stat $dest; + if (! -e _) { &run('install', '-d', '-m', '755', "$dest"); stat $dest; } + if (! -d _) { die "`$dest' is not a directory"; } + if (not defined $exec) { + if ($type =~ m/bin|games/) { $exec=1; } else { $exec=0; } + } + if ($exec) { $mode='755'; } else { $mode='644'; } + foreach (@files) { + $asname=$as; + if (not defined $asname) { $asname=$_; $asname =~ s|.*/||; } + if ($type eq "man") { + $assect=$sect; + if (not defined $assect) { $assect=$asname; $assect =~ s/.*\.//; } + $assect =~ s/^(.).*/$1/; + $asname =~ s|^|man$assect/|; + stat "$dest/man$assect"; + if (! -e _) { + &run('install', '-d', '-m', '755', "$dest/man$assect"); + stat "$dest/man$assect"; + } + if (! -d _) { + die "`$dest/man$assect' is not a directory"; + } + } + &run('install', '-p', '-m', $mode, $_, "$dest/$asname"); + if ($strip) { &run('strip', '--remove-section=.comment', + '--remove-section=.note', "$dest/$asname"); } + } + exit 0; +} + +if (m/^undocumented$/i) { + &getvars; + @files=(); + $x11=0; + $sect=undef; + while (defined ($_=shift)) { + if ($_ eq "-x") { $x11=1; next; } + if ($_ eq "-non-x") { $x11=0; next; } + if ($_ eq "-section") { $sect=shift; next; } + if ($_ =~ m/^-/) { print "I don't understand this option: `$_'\n"; exit 1; } + push @files, $_; + } + if (scalar @files == 0) { choke "What is undocumented?"; } + foreach (@files) { + if (defined $sect) { + $secnum = $sect; + s/$/.$sect/; + } else { + $secnum = $_; + $secnum =~ s/.*\.//; + } + $secnum =~ s/^(.).*/$1/; + $pre = ''; + if ($secnum ne '7') { + $pre='../man7/'; + } + if ($x11) { + $pre = "../../../share/man/man7/"; + $dest = "$ROOT/usr/X11R6/man/man$secnum"; + } else { + $dest = "$ROOT/usr/share/man/man$secnum"; + } + stat "$dest"; + if (! -e _) { + &run('install', '-d', '-m', '755', "$dest"); + stat "$dest"; + } + if (! -d _) { + die "`$dest' is not a directory"; + } + $target="${pre}undocumented.7.gz"; + &run('ln', '-s', $target, "$dest/$_.gz"); + } + exit 0; +} + +if (m/^dpkg-shlibdeps$/i) { + &getvars; + $ldlp=$ENV{"LD_LIBRARY_PATH"}; + if (defined $ldlp) { + $ldlp.=":$ROOT/lib:$ROOT/usr/lib"; + } else { + $ldlp="$ROOT/lib:$ROOT/usr/lib"; + } + $ENV{"LD_LIBRARY_PATH"}=$ldlp; + &run('dpkg-shlibdeps', "-p$PACKAGE", @ARGV); + exit 0; +} + +if (m/^generate$/i) { + $_=shift; + choke "Generate what?" if not defined; + if (m/^copyright$/i) { + &readpackages; + $dist=$source{"packaged-for"}; + if (defined $dist) { + $dist="This is the $dist prepackaged version of "; + } else { + $dist="This is a prepackaged version of "; + } + $title=$source{"description"}; + if (defined $title) { + $title=~s/\n.*//s; + } else { + $title=$source{"source"}; + gasp "No Source field!" unless defined $title; + } + $packager=$source{"packager"}; + $othermaints=$source{"other-maintainers"}; + $maintainer=$source{"maintainer"}; + if (defined $othermaints and not defined $packager) { + gasp "Other-Maintainers but no Packager?"; + } elsif (defined $othermaints) { + $packager="$packager, then was subsequently maintained by $othermaints"; + } + if (defined $packager) { + $maintainer="It was originally Debianised by $packager, and is currently maintained by $maintainer"; + } else { + $maintainer="It was Debianised by $maintainer"; + } + $upstreamuri=$source{"upstream-source"}; + if (defined $upstreamuri) { + $upstreamuri=", using files obtained from $upstreamuri"; + $native=0; + } else { + $upstreamuri=""; + $native=1; + } + $homeuri=$source{"home-page"}; + if (defined $homeuri) { + $homeuri="\nMore information about $title is available from $homeuri.\n"; + } else { + $homeuri=""; + } + $changes=$source{"major-changes"}; + gasp "No Major-Changes field in non-native package!" + unless $native or defined $changes; + if (defined $changes) { + if ($changes eq "") { + $changes="\nNo major changes were made.\n"; + } else { + $changes =~ s/^/ /gm; + $changes = "\nChanges were made as follows:\n$changes\n"; + } + } else { + $changes=""; + } + $copyright=$source{"copyright"}; + gasp "No Copyright field!" unless defined $copyright; + $licence = $copyright; + $copyright =~ s/^/ /gm; + $copyright =~ s/^[^\n]*\n//s; + $licence =~ s/\n.*//s; + if ($licence ne ".") { + for ($licence) { + m/^GPL$/ + && do { $licname="GNU GPL (GNU General Public License)"; } + or m/^LGPL$/ + && do { $licname="GNU LGPL (GNU Library (or Lesser) General" + ." Public License)"; } + or m/^Artistic$/ + && do { $licname="Artistic license"; } + or m/^BSD$/ + && do { $licname="the standard BSD license"; } + or gasp "Unknown licence `$_'"; + } + $licence = "On any Debian system, you can find the complete text of the " + ."$licname in the file /usr/share/common-licenses/$licence\n"; + } + $|=1; # Ensure the output from fmt comes out in the right place. + if (not $copyright =~ m/copyright|\(c\)/i) { + warn "***** Are you sure you've included a proper copyright notice?\n"; + } + $copyright = "\nCopyright and licence notice:\n\n$copyright"; + open FMT, "|fmt" or die "Cannot spawn fmt"; + print FMT "$dist$title.\n$maintainer$upstreamuri.\n$homeuri" + or die "Cannot write data to fmt"; + close FMT or die "Cannot close pipe to fmt or fmt returned error status"; + print "$changes$copyright\n\n" or die "Cannot write output"; + open FMT, "|fmt" or die "Cannot spawn fmt"; + print FMT "$licence" or die "Cannot write data to fmt"; + close FMT or die "Cannot close pipe to fmt or fmt returned error status"; + &chokepoint; + exit 0; + } elsif (m/^maintscripts$/i) { + $pkg=shift; + choke "Which package's maintainer scripts to generate?" unless defined $pkg; + &readpackages; + $par=$binary{$pkg}; + choke "Cannot find package `$pkg' in debian/packages" unless %$par; + if (defined $$par{'doc-base'}) { + foreach (split /\n\n+(?=(?:.*[^ \n].*\n)*document\:)/i, $$par{'doc-base'}) + { + m/^document\s*\:\s*(.*?)\s*$/mi; + $docbase{$1}=$_; + } + } + for ('preinst', 'postinst', 'prerm', 'postrm') { + if (defined $$par{$_} + or ($_ eq 'postinst') # and (defined $$par{'menu'} + # or defined $$par{'doc-base'} + # or defined $$par{'contains-libs'} + # or defined $$par{'alternatives'})) + or ($_ eq 'prerm') # and (defined $$par{'alternatives'} + # or defined $$par{'doc-base'})) + or ($_ eq 'postrm' and defined $$par{'menu'})) + { + open MAINT, ">debian/tmp-$pkg/DEBIAN/$_" + or die "Cannot open $_ for output"; + $script=$$par{$_}; + if (not defined $script or $script =~ s/^sh\n//s) { + # shell script + #chomp; + print MAINT "#! /bin/sh\n# This maintainer script was generated by yada\n\nset -e\n" or die; + if ($_ eq 'postinst') { + print MAINT <<EOM or die; + +if test "\$1" = configure -a -d /usr/doc -a ! -e "/usr/doc/$pkg" -a -d "/usr/share/doc/$pkg" +then + ln -sf "../share/doc/$pkg" "/usr/doc/$pkg" +fi +EOM + } + if ($_ eq 'prerm') { + print MAINT <<EOM or die; + +if test \\( "\$1" = upgrade -o "\$1" = remove \\) -a -L "/usr/doc/$pkg"; then + rm -f "/usr/doc/$pkg" +fi +EOM + } + if (($_ eq 'postinst' or $_ eq 'postrm') and defined $$par{'menu'}) { + print MAINT "\nif test -x /usr/bin/update-menus; then update-menus; fi\n" + or die; + } + if ($_ eq 'postinst' and defined $$par{'contains-libs'}) { + print MAINT "\nif test \"\$1\" = configure; then ldconfig; fi\n" + or die; + } + if ($_ eq 'postinst' and defined $$par{'doc-base'}) { + print MAINT "\nif command -v install-docs >/dev/null 2>&1; then\n"; + foreach (keys %docbase) { + print MAINT " install-docs -i /usr/share/doc-base/$_;\n"; + } + print MAINT "fi\n"; + } + if ($_ eq 'prerm' and defined $$par{'doc-base'}) { + print MAINT "\nif command -v install-docs >/dev/null 2>&1; then\n"; + foreach (keys %docbase) { + print MAINT " install-docs -r $_;\n" + } + print MAINT "fi\n"; + } + if ($_ eq 'postinst' and defined $$par{'alternatives'}) { + $alt = $$par{'alternatives'}; + $alt =~ s/^\n|\n$//sg; + $alt =~ s/\n\n+/\n/sg; + $alt =~ s/$/\n/s; + gasp "Malformed `Alternatives' field." + unless $alt =~ m/^((\S+\s*->\s*\S+\s*->\s*\S+\s*\(\d+\)|>>\s*\S+\s*->\s*\S+\s*->\s*\S+)\n)+$/s; + while ($alt ne "") { + if ($alt =~ s/^(\S+)\s*->\s*(\S+)\s*->\s*(\S+)\s*\((\d+)\)\n//s) { + print MAINT "\nupdate-alternatives --install $1 $2 $3 $4" + or die; + } elsif ($alt =~ s/^>>\s*(\S+)\s*->\s*(\S+)\s*->\s*(\S+)\n//s) { + print MAINT " \\\n --slave $1 $2 $3" + or die; + } else { + die "Internal error"; + } + } + print MAINT "\n" or die; + } + if ($_ eq 'prerm' and defined $$par{'alternatives'}) { + $alt = $$par{'alternatives'}; + $alt =~ s/^\n|\n$//sg; + $alt =~ s/\n\n+/\n/sg; + $alt =~ s/$/\n/s; + gasp "Malformed `Alternatives' field." + unless $alt =~ m/^((\S+\s*->\s*\S+\s*->\s*\S+\s*\(\d+\)|>>\s*\S+\s*->\s*\S+\s*->\s*\S+)\n)+$/s; + while ($alt ne "") { + if ($alt =~ s/^(\S+)\s*->\s*(\S+)\s*->\s*(\S+)\s*\((\d+)\)\n//s) { + print MAINT "update-alternatives --remove $2 $3\n" + or die; + } elsif ($alt =~ s/^>>\s*(\S+)\s*->\s*(\S+)\s*->\s*(\S+)\n//s) { + 1; + } else { + die "Internal error"; + } + } + } + if (defined $script) { + print MAINT "\n# Package maintainer's commands follow:\n$script\n# End of package maintainer's commands\n\nexit 0\n" or die; + } else { + print MAINT "\nexit 0\n" or die; + } + } else { + gasp "Unknown executable type for `$_'\n"; + } + close MAINT or die "Cannot close `$_'"; + chmod 0755, "debian/tmp-$pkg/DEBIAN/$_" + or die "Cannot make `$_' executable"; + } + } + if (defined $$par{'menu'}) { + $_=$$par{'menu'}; + s/$/\n/s; + system("install -d debian/tmp-$pkg/usr/lib/menu") == 0 + or die "Cannot create menu directory"; + open MAINT, ">debian/tmp-$pkg/usr/lib/menu/$pkg" + or die "Cannot open menu file for writing"; + print MAINT or die "Cannot write to menu file"; + close MAINT or die "Cannot close menu file"; + } + if (defined $$par{'shlibs'}) { + $_=$$par{'shlibs'}; + s/$/\n/s; + open MAINT, ">debian/tmp-$pkg/DEBIAN/shlibs" + or die "Cannot open shlibs file for writing"; + print MAINT or die "Cannot write to shlibs file"; + close MAINT or die "Cannot close shlibs file"; + } + if (defined $$par{'doc-base'}) { + system("install -d debian/tmp-$pkg/usr/share/doc-base") == 0 + or die "Cannot create doc-base directory"; + foreach (keys %docbase) { + $tmp=$docbase{$_}; + $tmp=~s/$/\n/s; + open MAINT, ">debian/tmp-$pkg/usr/share/doc-base/$_" + or die "Cannot open doc-base file `$_' for writing"; + print MAINT $tmp or die "Cannot write to doc-base file `$_'"; + close MAINT or die "Cannot close doc-base file `$_'"; + } + } + exit 0; + } + + choke "Generate what? (`$_' not understood.)"; +} + +if (m/^compress$/i) { + $pkg = shift; + choke "What package should I compress?" unless defined $pkg; + system("set -e; set -v; find debian/tmp-$pkg/usr/info debian/tmp-$pkg/usr/share/info debian/tmp-$pkg/usr/man debian/tmp-$pkg/usr/share/man debian/tmp-$pkg/usr/X11*/man -type f ! -name \\*.gz -print0 2>/dev/null | xargs -0r gzip -9n") == 0 + or die "Problem compressing files (stage 1)"; + system("set -e; find debian/tmp-$pkg/usr/share/doc -type f \\( -size +2k -or -name changelog\\* \\) ! -name \\*.htm\\* ! -name \\*.gif ! -name copyright ! -name \\*.gz -print0 2>/dev/null | xargs -0r gzip -9n") == 0 + or die "Problem compressing files (stage 2)"; + open FILES, "find debian/tmp-$pkg -type l -print0 |" + or die "Cannot find symlinks"; + $/="\0"; + while (<FILES>) { + chomp; + m=(.*)/([^/]*)$=; $dir=$1; $name=$2; + $_ = readlink or die "Cannot read symlink `$_'"; + $changes = s=//+=/=g; + $changes += s=(^|/)\./=$1=g; + do { + $matches = s=(^|/)(?!\.\./)[^/]+/\.\./=$1=g; + $changes += $matches; + } while ($matches); + if (m=^/=) { + $dest="debian/tmp-$pkg"; + } else { + $dest=$dir; + } + if (! -e "$dest/$_" && -f "$dest/$_.gz" && ! -e "$dir/$name.gz") { + unlink "$dir/$name" or die "Cannot unlink `$dir/$name'"; + symlink "$_.gz", "$dir/$name.gz" + or die "Cannot create symlink `$dir/$name.gz'"; + } elsif ($changes) { + unlink "$dir/$name" or die "Cannot unlink `$dir/$name'"; + symlink "$_", "$dir/$name" or die "Cannot create symlink `$dir/$name'"; + } + } + close FILES or die "Problem closing pipe"; + exit 0; +} + +if (m/^fixup$/i) { + $_ = shift; + if (m/^libtool$/i) { + $script = shift; + $script = "libtool" if not defined $script; + # The following adapted from Lintian's libtool-workarounds.txt + # Patch the generated libtool to avoid passing -rpath when linking, + # and to explicitly link libraries against the libraries they + # depend on. + open APPENDIN, "<$script" or die "Cannot open `$script' for reading"; + open APPENDOUT, ">$script.new" + or die "Cannot open `$script.new' for writing"; + while (<APPENDIN>) { + s/^hardcode_libdir_flag_spec.*$/hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/; + s/"$/ \\\$deplibs"/ if /^archive_cmds="/; + print APPENDOUT or die; + } + close APPENDIN or die "Cannot close $script"; + close APPENDOUT or die "Cannot close $script.new"; + chmod 0755, "$script.new" or die "Cannot change mode of `$script.new'"; + rename "$script.new", $script + or die "Cannot move `$script.new' to `$script'"; + exit 0; + } + + choke "Fixup what? (`$_' not understood.)"; +} + +if (m/^yada$/i) { + if (! -d "debian") { + mkdir "debian", 0775 or die "Cannot create directory `debian'"; + print "Creating directory `debian'\n"; + } + if ($0 ne "debian/yada" and $0 ne "./debian/yada") { + print "Copying updated `yada' script into debian directory\n"; + if (-e "debian/yada") { + print "(Keeping old version as `yada.old')\n"; + rename "debian/yada", "debian/yada.old"; + } + &run('cp', '--', $0, 'debian/yada'); + } + $pkg=`pwd`; + chomp $pkg; + $pkgver=$pkg; + $pkgver=~s|.*-||; + $pkg=~s|.*/||; + $pkg=~s|-[^-]*||; + $today=`date -R`; + if (-e "debian/changelog") { + print "You already have a `debian/changelog'; I won't overwrite it.\n"; + } else { + open CHANGELOG, ">debian/changelog" + or die "Cannot open debian/changelog for writing"; + print "Creating initial `debian/changelog'\n"; + print CHANGELOG <<EOM or die "Cannot write to `debian/changelog'"; +$pkg ($pkgver-1) unstable; urgency=low + + * Initial Debian version. + + -- Wile E. Coyote <coyote\@acme.com> $today +EOM + close CHANGELOG or die "Cannot close `debian/changelog' after writing"; + } + if (-e "debian/packages") { + print "You already have a `debian/packages'; I won't overwrite it.\n"; + exit 0; + } + open PACKAGES, ">debian/packages" + or die "Cannot open `debian/packages' for writing"; + print "Creating example `debian/packages'\n"; + print PACKAGES <<EOM or die "Cannot write to `debian/packages'"; +# debian/packages for $pkg +# Written by Charles Briscoe-Smith, May 1999. Public Domain. +# Customised for $pkg by + +# This is an -example- packages file; read /usr/share/doc/yada/yada.txt.gz to +# find out how to customise it to your needs. + +Source: $pkg +Section: unknown +Priority: unknown +Maintainer: Mr. Nobody <nobody\@root.org> +Packager: T. Raven <nevermore\@poe.net> +Standards-Version: 0.0 +Upstream-Source: <URL:ftp://some.where/over/the/rainbow.tar.gz> +Home-Page: <URL:http://some.thing/nasty/in/the/woodshed.html> +Description: Some package +Packaged-For: Yoyodyne Inc. +Copyright: GPL + Copyright 1999 A. Snide Badger +Major-Changes: + Introduced many bugs by not editing debian/packages appropriately. +Build: sh + ./configure --prefix=/usr + make +Clean: sh + make distclean || true + +Package: $pkg +Architecture: any +Depends: [/usr/bin/*] +Description: Some binary package + This is a generic binary package. If you see this text, it hasn't been + built properly; the packager should have replaced this with something + appropriate. +Install: sh + make install DESTDIR=\$ROOT +EOM + close PACKAGES or die "Cannot close `debian/packages' after writing"; + exit 0; +} + +choke "I don't understand you."; + +exit 1; diff --git a/fpga/xilinx/programmer/bit2svf/dumpbit.c b/fpga/xilinx/programmer/bit2svf/dumpbit.c new file mode 100644 index 0000000..5d7c634 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/dumpbit.c @@ -0,0 +1,93 @@ + /**[txh]******************************************************************** + + Copyright (c) 2005 Juan Pablo D. Borgna <jpborgna en inti gov ar> + Copyright (c) 2005 Instituto Nacional de Tecnología Industrial + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA + + Description: Dumps the contents of a xilinx bit file in stdout. + +***************************************************************************/ +/***************************************************************************** + + Target: Any + Language: C + Compiler: gcc 3.3.5 (Debian GNU/Linux) + Text editor: SETEdit 0.5.5 + +*****************************************************************************/ + +#include <stdio.h> +#include <stdlib.h> +#include "bitfile.h" + +#define BSIZE 1048576 /* 1k */ + + +/* read a bit file from stdin */ +int main(int argc, char *argv[]) +{ + struct bithead bh; + FILE *bitfile, *outfile; + int remaining,readed; + char buff[BSIZE]; + + fprintf(stderr,"\ndumpbit - bit file stream dumper - v1.0\n"); + fprintf(stderr,"Copyright (c) 2005 Juan Pablo D. Borgna/INTI\n\n"); + + if (argc==1 || argc>3) + { + fprintf(stderr,"Insufficient args %s filename.bit filename\n",argv[0]); + return 1; + } + + if ((bitfile=fopen(argv[1],"rb"))==NULL) + { + perror("BITFILE"); + return 2; + } + + if ((outfile=fopen(argv[2],"wb"))==NULL) + { + perror("OUTFILE"); + return 3; + } + + initbh(&bh); + if (readhead(&bh, bitfile)) + { + fprintf(stderr,"Invalid bit file header.\n"); + return 3; + } + + fprintf(stderr,"\n"); + fprintf(stderr,"Bit file created on %s at %s.\n", bh.date, bh.time); + fprintf(stderr,"Created from file %s for Xilinx part %s.\n", bh.filename, bh.part); + fprintf(stderr,"Bitstream length is %d bytes.\n", bh.length); + fprintf(stderr,"\n"); + + remaining=bh.length; + + while(remaining) + { + readed=fread(buff,1,BSIZE,bitfile); + fwrite(buff,readed,1,outfile); + remaining-=readed; + } + + fclose(bitfile); + freebh(&bh); + return 0; +} diff --git a/fpga/xilinx/programmer/bit2svf/global.h b/fpga/xilinx/programmer/bit2svf/global.h new file mode 100644 index 0000000..2d5e9bf --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/global.h @@ -0,0 +1,16 @@ +/* Globaly used variables */ + +long address; +long step; +long s_bytes; +long s_bits; +long stream_s; +unsigned cutlines; + +char *id; +char *idmask; +char *bsize; +long msize; + + +char *templ; diff --git a/fpga/xilinx/programmer/bit2svf/jbit b/fpga/xilinx/programmer/bit2svf/jbit new file mode 100755 index 0000000..d7f6e5d --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/jbit @@ -0,0 +1,232 @@ +#!/usr/bin/perl +# +# Copyright (c) 2006-2007 Salvador E. Tropea <salvador en inti.gov.ar> +# Copyright (c) 2006-2007 Instituto Nacional de Tecnología Industrial +# +# Based on code: +# Copyright (c) 2005 Juan Pablo D. Borgna <jpborgna en inti gov ar> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA +# +# Este script invoca a bit2svf y jtag para programar el contenido de +# un archivo bit en un dispositivo Xilinx. +# +# Basado en el script original de Juan Pablo D. Borgna +# +# + +use Getopt::Long; +use File::Basename; + +print "jbit - bit2svf/jtag short cut - v2.1\n"; +print "Copyright (c) 2006-2007 Salvador E. Tropea/INTI\n\n"; + +GetOptions( + 'skip=s' => \$skip, + 'length=s' => \$len, + 'help' => \&help); + +if (scalar(@ARGV)!=2) + { + print "You must specify two arguments\n\n"; + help(); + } + +$bitfile=@ARGV[0]; + +# Seteos por defecto +$jtag="/usr/bin/jtag"; +$bit2svf="/usr/bin/bit2svf"; +$svft=@ARGV[1]; +$temp=`mktemp -t bit2svf.XXXXXX`; +chomp($temp); +$temp_r=`mktemp -t jbit.XXXXXX`; +chomp($temp_r); + +$device="ppdev"; +$location="/dev/parport0"; +$cable_type="DLC5"; + +if ($skip) + { + $skip=$1*(1<<20) if ($skip=~/(\d+)M/i); + $skip=$1*(1<<10) if ($skip=~/(\d+)k/i); + $skip="--skip=$skip"; + } +if ($len) + { + $len=$1*(1<<20) if ($len=~/(\d+)M/i); + $len=$1*(1<<10) if ($len=~/(\d+)k/i); + $len="--length=$len"; + } + +# Leer seteos de ~/.jbitrc +$jbitrc=$ENV{'HOME'}.'/.jbitrc'; +if (-e $jbitrc) + { + print "Configuration from $jbitrc:\n"; + open(FIL,"<$jbitrc") or die "Error opening $jbitrc"; + while ($a=<FIL>) + { + unless ($a=~/^\#/ or $a=~/^\s*$/) + { + if ($a=~/^(\S+)\s*=\s*\"?([^\"\n]*)\"?$/) + { + $var=uc($1); + $val=$2; + if ($val=~/^\$(\d)$/) + { + $val=$ARGV[$1-1]; + } + print "$var -> \"$val\"\n"; + if ($var eq 'JTAG') + { + $jtag=$val; + } + elsif ($var eq 'BIT2SVF') + { + $bit2svf=$val; + } + elsif ($var eq 'SVFT') + { + $svft=$val; + } + elsif ($var eq 'TEMP') + { + #$temp=$val; + print "TEMP is obsolete!!!\n"; + } + elsif ($var eq 'DEVICE') + { + $device=$val; + } + elsif ($var eq 'LOCATION') + { + $location=$val; + } + elsif ($var eq 'CABLE_TYPE') + { + $cable_type=$val; + } + elsif ($var eq 'PARTNUM') + { + $partnum=$val; + print "PARTNUM is obsolete!!!\n"; + } + else + { + die "Unknown variable $var"; + } + } + else + { + die "Error parsing $jbitrc:\n$a"; + } + } + } + close(FIL); + print "\n"; + } +else + { + print "No personal configuration '$jbitrc'\n"; + } + +# Compuebo la existencia de todo lo necesario +die "Can't find JTAG in $jtag" unless -e $jtag; +die "Can't find bit2svf in $bit2svf" unless -e $bit2svf; +die "Missing file: $bitfile" unless -e $bitfile; + +# Creo el .svf +print "Creating temporary file $temp ...\n<--------- $bit2svf $skip $len $bitfile $temp $svft\n"; +die "Error creating temporary file $temp" + if system("$bit2svf $skip $len $bitfile $temp $svft"); +print "<--------- end of bit2svf\n\n"; + +# Buscar que posición tiene en la cadena +print "Analyzing JTAG chain using $jtag ...\n"; +open(FIL,"|$jtag > $temp_r") or die; +print FIL "cable $device $location $cable_type\n"; +print FIL "detect\n"; +print FIL "quit\n"; +close FIL; +$ndev=0; +$devs=0; +$partnum=-1; +open(FIL,"<$temp_r") or die; +while ($a=<FIL>) + { + if ($a=~/Chain length: (\d+)/) + { + $devs=$1; + print "Devices in the chain: $devs\n"; + } + elsif ($a=~/Part:\s+(\S+)$/) + { + $dev=uc($1); + print "$ndev: $dev "; + if ($svft eq $dev) + { + print "<--"; + $partnum=$ndev; + } + print "\n"; + $ndev++; + } + } +close(FIL); +die "Can't find any device in the chain, consult $temp_r" + unless $devs; +die "Can't find $svft in the chain" unless $partnum!=-1; +print "Device number in the chain: $partnum\n\n"; + +# Ejecutarlo +print "Transferring $temp using $jtag ...\n<--------- jtag\n"; +open(FIL,"|$jtag") or die; +print FIL "cable $device $location $cable_type\n"; +print FIL "detect\n"; +print FIL "part $partnum\n"; +print FIL "svf $temp\n"; +print FIL "quit\n"; +close FIL; +print "<--------- fin de jtag\n\n"; + +# Clean-up +print "Cleaning temporary files ... ($temp $temp_r)\n"; +`rm -f $temp $temp_r`; +print "Have a nice day :-)\n"; + + +sub help +{ + my $me=basename($0); + + print <<END; +$me is a program to configure Xilinx devices using JTAG. + +Usage: + jbit [OPTIONS] file.bit DEVICE + +Options: + --skip=value Skip bits the bitstream + --length=value Limit the bitstream length + --help This text + +file.bit is the file containing the bitstream. +DEVICE is the name of the device to configure. + +END + exit 1; +} diff --git a/fpga/xilinx/programmer/bit2svf/jbitrc_sample.txt b/fpga/xilinx/programmer/bit2svf/jbitrc_sample.txt new file mode 100644 index 0000000..d926fa1 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/jbitrc_sample.txt @@ -0,0 +1,21 @@ +# +# Ejemplo de configuracion personalizada +# Custom config sample +# ~/.jbitrc +# + +#Paths de archivos necesarios +#Needed files path + +JTAG=/usr/bin/jtag +BIT2SVF=/usr/bin/bit2svf +SVFT="$2" +TEMP=/tmp/bit2svf.tmp + + +#Conexion y configuracion de la cadena +#Chain conection and configuration + +DEVICE="ppdev" +LOCATION="/dev/parport0" +CABLE_TYPE="DLC5" diff --git a/fpga/xilinx/programmer/bit2svf/parts.c b/fpga/xilinx/programmer/bit2svf/parts.c new file mode 100644 index 0000000..3b80240 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/parts.c @@ -0,0 +1,119 @@ +#include <stdlib.h> +#include <string.h> +#include "parts.h" + +/* +part known[] = { + {"XC18V01","f5034093","0ffeffff","alg_18V",0x3FC0}, + {"XC2S100","f0614093","0fffffff","alg_VIRTEX",0l}, + {NULL,NULL,NULL,NULL,0l} + }; +*/ +#define TOKDELIM " \t/,;.\n" + +part * +text_to_part(char *text) +{ + part temp, *ret; + char *token; + + token=strtok(text,TOKDELIM); + if (token==NULL) return NULL; + temp.name=strdup(token); + + token=strtok(NULL,TOKDELIM); + if (token==NULL) return NULL; + temp.id=strdup(token); + + token=strtok(NULL,TOKDELIM); + if (token==NULL) return NULL; + temp.idmask=strdup(token); + + token=strtok(NULL, TOKDELIM); + if (token==NULL) return NULL; + temp.alg_tpl=strdup(token); + + token=strtok(NULL, TOKDELIM); + if (token==NULL) return NULL; + temp.bsize=strdup(token); + + token=strtok(NULL,TOKDELIM); + if (token==NULL) return NULL; + temp.msize=strtol(token,NULL,0); + + + if((ret=(part *)malloc(sizeof(part)))==NULL) + { + fprintf(stderr,"Cannot asign memory needed for a part\n"); + return NULL; + } + *ret=temp; + return ret; +} + + +int +select_part_from_file(char *name, char *file, part **ret) +{ + char buff[1000]; + FILE *fp; + + if((fp=fopen(file,"rt"))==NULL) + { + fprintf(stderr,"Unable to open devices file %s.\n",file); + return 1; + } + + fgets(buff,1000,fp); + + while(!feof(fp)) + { + if (strncasecmp(buff,"//",2) && (buff[0]!='\n')) /*If its not a comment*/ + { /* or a blank line ...*/ + *ret=text_to_part(buff); + if (*ret==NULL) + fprintf(stderr,"Invalid line inside device file: %s\n",buff); + else if (!strcasecmp(name,(*ret)->name)) + { /* FOUND! */ + fclose(fp); + return 0; + } + } + fgets(buff,1000,fp); + } + + *ret=NULL; + fprintf(stderr,"Device not found inside device file: %s\n",name); + fclose(fp); + return 1; +} + +/* +int +select_part_by_name(char *name, part **ret) +{ + int found=0; + part *r; + + r=known; + + while (r->name && !found) + { + if (!strcasecmp(r->name,name)) + found=1; + else + r++; + } + + if (!found) + { + fprintf(stderr,"Device not found %s\n",name); + return 1; + } + + *ret=r; + + return 0; +} + +*/ diff --git a/fpga/xilinx/programmer/bit2svf/parts.h b/fpga/xilinx/programmer/bit2svf/parts.h new file mode 100644 index 0000000..48c5ae4 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/parts.h @@ -0,0 +1,19 @@ +#include <stdio.h> + +typedef struct part_ + { + char *name; + char *id; + char *idmask; + char *alg_tpl; + char *bsize; + long msize; + } part; + + + +/* Some headers */ +int select_part_by_name(char *name, part **ret); +part *text_to_part(char *text); +int select_part_from_file(char *name, char *file, part **ret); + diff --git a/fpga/xilinx/programmer/bit2svf/tags b/fpga/xilinx/programmer/bit2svf/tags new file mode 100644 index 0000000..81203ae --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/tags @@ -0,0 +1,103 @@ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ +!_TAG_PROGRAM_NAME Exuberant Ctags // +!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ +!_TAG_PROGRAM_VERSION 5.5.4 // +Architecture debian/yada /^Architecture: any$/;" kind:l language:Perl +BIDIR Makefile /^BIDIR=bitinfo-0.3$/;" kind:m language:Make +BSIZE dumpbit.c 36;" kind:d language:C file: +Build debian/yada /^Build: sh$/;" kind:l language:Perl +CC Makefile /^CC=gcc$/;" kind:m language:Make +CC bitinfo-0.3/Makefile /^CC = gcc$/;" kind:m language:Make +CFLAGS Makefile /^CFLAGS=-Wall -g3 -I$(BIDIR)$/;" kind:m language:Make +CFLAGS bitinfo-0.3/Makefile /^CFLAGS = -c -g -Wall$/;" kind:m language:Make +Clean debian/yada /^Clean: sh$/;" kind:l language:Perl +Copyright debian/yada /^Copyright: GPL$/;" kind:l language:Perl +DEFAULT_RES bit2svf.c 41;" kind:d language:C file: +Depends debian/yada /^Depends: [\/usr\/bin\/*]$/;" kind:l language:Perl +Description debian/yada /^Description: Some binary package$/;" kind:l language:Perl +Description debian/yada /^Description: Some package$/;" kind:l language:Perl +Install debian/yada /^Install: sh$/;" kind:l language:Perl +LDFLAGS Makefile /^LDFLAGS=-I$(BIDIR)$/;" kind:m language:Make +LDFLAGS bitinfo-0.3/Makefile /^LDFLAGS = $/;" kind:m language:Make +Maintainer debian/yada /^Maintainer: Mr. Nobody <nobody\\@root.org>$/;" kind:l language:Perl +Notably debian/yada /^Notably:$/;" kind:l language:Perl +OBJECTS bitinfo-0.3/Makefile /^OBJECTS = bitinfo.o bitfile.o$/;" kind:m language:Make +PKG Makefile /^PKG=bit2svf-$(VERSION)$/;" kind:m language:Make +PROYECTO Makefile /^PROYECTO=dumpbit bit2svf$/;" kind:m language:Make +Package debian/yada /^Package: $pkg$/;" kind:l language:Perl +Packager debian/yada /^Packager: T. Raven <nevermore\\@poe.net>$/;" kind:l language:Perl +Priority debian/yada /^Priority: unknown$/;" kind:l language:Perl +Section debian/yada /^Section: unknown$/;" kind:l language:Perl +Source debian/yada /^Source: $pkg$/;" kind:l language:Perl +TOKDELIM parts.c 12;" kind:d language:C file: +Usage debian/yada /^Usage: yada action [args...]$/;" kind:l language:Perl +VERSION Makefile /^VERSION=1.1.0$/;" kind:m language:Make +address global.h /^long address;$/;" kind:v language:C++ +alg_tpl parts.h /^ char *alg_tpl;$/;" kind:m language:C++ struct:part_ +append debian/yada /^sub append {$/;" kind:s language:Perl +binary debian/yada /^binary: binary-arch binary-indep$/;" kind:l language:Perl +bithead bitinfo-0.3/bitfile.h /^struct bithead$/;" kind:s language:C++ +bsize global.h /^char *bsize;$/;" kind:v language:C++ +bsize parts.h /^ char *bsize;$/;" kind:m language:C++ struct:part_ +choke debian/yada /^sub choke {$/;" kind:s language:Perl +chokepoint debian/yada /^ sub chokepoint {$/;" kind:s language:Perl +control debian/yada /^control: debian\/control$/;" kind:l language:Perl +cutputs bitshandle.c /^cutputs(char *string, FILE *fp, long block, int *col)$/;" kind:f language:C +date bitinfo-0.3/bitfile.h /^ char* date;$/;" kind:m language:C++ struct:bithead +default debian/yada /^default:$/;" kind:l language:Perl +depends debian/yada /^depends: debian\/depends-stamp$/;" kind:l language:Perl +do_command commands.c /^do_command(char *cmd, FILE *dfp, FILE *ofp, int *col)$/;" kind:f language:C +filename bitinfo-0.3/bitfile.h /^ char* filename;$/;" kind:m language:C++ struct:bithead +fill commands.c /^fill(FILE *fp, long c, long t)$/;" kind:f language:C +freebh bitinfo-0.3/bitfile.c /^void freebh(struct bithead *bh)$/;" kind:f language:C +gasp debian/yada /^ sub gasp {$/;" kind:s language:Perl +getpara debian/yada /^sub getpara {$/;" kind:s language:Perl +getvars debian/yada /^sub getvars {$/;" kind:s language:Perl +head13 bitinfo-0.3/bitfile.c /^static uchar head13[] = {0, 9, 15, 240, 15, 240, 15, 240, 15, 240, 0, 0, 1};$/;" kind:v language:C file: +id global.h /^char *id;$/;" kind:v language:C++ +id parts.h /^ char *id;$/;" kind:m language:C++ struct:part_ +idmask global.h /^char *idmask;$/;" kind:v language:C++ +idmask parts.h /^ char *idmask;$/;" kind:m language:C++ struct:part_ +initbh bitinfo-0.3/bitfile.c /^void initbh(struct bithead *bh)$/;" kind:f language:C +inv_byte bitshandle.c /^inv_byte(unsigned char b)$/;" kind:f language:C +length bitinfo-0.3/bitfile.h /^ int length;$/;" kind:m language:C++ struct:bithead +main bit2svf.c /^int main(int argc, char *argv[])$/;" kind:f language:C +main bitinfo-0.3/bitinfo.c /^int main(void)$/;" kind:f language:C +main dumpbit.c /^int main(int argc, char *argv[])$/;" kind:f language:C +makescript debian/yada /^sub makescript {$/;" kind:s language:Perl +msize global.h /^long msize;$/;" kind:v language:C++ +msize parts.h /^ long msize;$/;" kind:m language:C++ struct:part_ +name parts.h /^ char *name;$/;" kind:m language:C++ struct:part_ +normalise debian/yada /^sub normalise {$/;" kind:s language:Perl +parsebinarypara debian/yada /^sub parsebinarypara {$/;" kind:s language:Perl +parsesourcepara debian/yada /^sub parsesourcepara {$/;" kind:s language:Perl +part bitinfo-0.3/bitfile.h /^ char* part;$/;" kind:m language:C++ struct:bithead +part parts.h /^ } part;$/;" kind:t language:C++ +part_ parts.h /^typedef struct part_$/;" kind:s language:C++ +patch debian/yada /^patch: debian\/patch-stamp$/;" kind:l language:Perl +pb bitshandle.c /^pb(char *to, char *from,long nbytes)$/;" kind:f language:C +pbi bitshandle.c /^pbi(char *to, char *from,long nbytes)$/;" kind:f language:C +printkey debian/yada /^sub printkey {$/;" kind:s language:Perl +printkeys debian/yada /^sub printkeys {$/;" kind:s language:Perl +readhead bitinfo-0.3/bitfile.c /^int readhead(struct bithead *bh, FILE *f)$/;" kind:f language:C +readhead13 bitinfo-0.3/bitfile.c /^int readhead13 (FILE *f)$/;" kind:f language:C +readlength bitinfo-0.3/bitfile.c /^int readlength(FILE *f)$/;" kind:f language:C +readpackages debian/yada /^sub readpackages {$/;" kind:s language:Perl +readsecthead bitinfo-0.3/bitfile.c /^int readsecthead(char *buf, FILE *f)$/;" kind:f language:C +readsection bitinfo-0.3/bitfile.c /^int readsection(char *buf, int length, FILE *f)$/;" kind:f language:C +repeat commands.c /^repeat (FILE *ifp, FILE *ofp, FILE *dfp,long limit)$/;" kind:f language:C +rules debian/yada /^rules: debian\/rules$/;" kind:l language:Perl +run debian/yada /^sub run {$/;" kind:s language:Perl +s_bits global.h /^long s_bits;$/;" kind:v language:C++ +s_bytes global.h /^long s_bytes;$/;" kind:v language:C++ +select_part_from_file parts.c /^select_part_from_file(char *name, char *file, part **ret)$/;" kind:f language:C +step global.h /^long step;$/;" kind:v language:C++ +stream_s global.h /^long stream_s;$/;" kind:v language:C++ +templ global.h /^char *templ;$/;" kind:v language:C++ +text_to_part parts.c /^text_to_part(char *text)$/;" kind:f language:C +time bitinfo-0.3/bitfile.h /^ char* time;$/;" kind:m language:C++ struct:bithead +uchar bitinfo-0.3/bitfile.c 31;" kind:d language:C file: +unpatch debian/yada /^unpatch:$/;" kind:l language:Perl +value_from commands.c /^value_from(char *varname)$/;" kind:f language:C diff --git a/fpga/xilinx/programmer/bit2svf/templates/.DEVICES~ b/fpga/xilinx/programmer/bit2svf/templates/.DEVICES~ new file mode 100644 index 0000000..9219f41 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/templates/.DEVICES~ @@ -0,0 +1,42 @@ +//One device per line +//NAME | ID | IDMASK | ALG_TPL | BSIZE | MSIZE (last mem pos) +// XC18V memories +XC18V256 , f5022093, 0ffeffff, alg_18V , 2048 , 0x1000 +XC18V512 , f5023093, 0ffeffff, alg_18V , 2048 , 0x2000 +XC18V01 , f5024093, 0ffeffff, alg_18V , 2048 , 0x4000 +XC18V01-SO20 , f5024093, 0ffeffff, alg_18V , 2048 , 0x4000 +XC18V02 , f5025093, 0ffeffff, alg_18V , 4096 , 0x4000 +XC18V04 , f5026093, 0ffeffff, alg_18V , 4096 , 0x8000 + +// XCF memories +XCF01S , f5044093, 0ffeffff, alg_XCF , 2048 , 0x4000 +XCF02S , f5045093, 0ffeffff, alg_XCF , 4096 , 0x4000 +XCF04S , f5046093, 0ffeffff, alg_XCF , 4096 , 0x8000 + +// XCFxxP memories +XCF08P , f5057093, 0fffffff, alg_XCFP ,8192 , 0x100000 + +// Spartan II family (5 bits IR) +XC2S15 , f0608093, 0fffffff, alg_Spartan_II, VOID , 0l +XC2S30 , f060c093, 0fffffff, alg_Spartan_II, VOID , 0l +XC2S50 , f0610093, 0fffffff, alg_Spartan_II, VOID , 0l +XC2S100 , f0614093, 0fffffff, alg_Spartan_II, VOID , 0l +XC2S100-PQ208 , f0614093, 0fffffff, alg_Spartan_II, VOID , 0l +XC2S150 , f0618093, 0fffffff, alg_Spartan_II, VOID , 0l +XC2S200 , f061c093, 0fffffff, alg_Spartan_II, VOID , 0l + +// Spartan 3 family (6 bits IR) +XC3S50 , f140D093, 0fffffff, alg_Spartan_3, VOID , 0l +XC3S200 , f1414093, 0fffffff, alg_Spartan_3, VOID , 0l +XC3S400 , f141C093, 0fffffff, alg_Spartan_3, VOID , 0l +XC3S1000, f1428093, 0fffffff, alg_Spartan_3, VOID , 0l +XC3S1500, f1434093, 0fffffff, alg_Spartan_3, VOID , 0l +XC3S2000, f1440093, 0fffffff, alg_Spartan_3, VOID , 0l +XC3S4000, f1448093, 0fffffff, alg_Spartan_3, VOID , 0l +XC3S5000, f1450093, 0fffffff, alg_Spartan_3, VOID , 0l + +// Virtex 4 family (10 bits IR) +XC4VLX25, f167c093, 0fffffff, alg_Virtex_4, VOID, 0l + +//EOF + diff --git a/fpga/xilinx/programmer/bit2svf/templates/.README.en~ b/fpga/xilinx/programmer/bit2svf/templates/.README.en~ new file mode 100644 index 0000000..9201290 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/templates/.README.en~ @@ -0,0 +1,112 @@ +Copyright (c) 2005 Juan Pablo D. Borgna <jpborgna en inti gov ar> +Copyright (c) 2006-2007 Salvador E. Tropea <salvador en inti gov ar> +Copyright (c) 2005-2007 Instituto Nacional de Tecnología Industrial + +Commands and blocks: + The template files have block commands and operation + commands. The block commands start with two substract + signs "--" and the operation are betwin dollar signs "$". + The block commands mark the excecution of a block and the + end of the block must be identifyed with the instruction + "--END". + +Internal variables: + The next internal variables are provided wich can be used + indicating their name betwin dollars signs "$" or modified + if a value is assigned using parentesis signs. + Ex.: $ADDRESS(0x00)$ asigns this variable the value 0x0000. + +$ADDRESS$ : + Accumulator useful at the time of incrementing a memory address. + +$STEP$ : + Value on wich $ADDRESS$ variable will be incremented. + +$BSIZEB$ : + Amount of bytes of the bitstream file. + +$BSIZEB2$ : + 2 * amount of bytes of the bitstream file. + +$BSIZE$ : + Amount of bits of the bitstream file. + Note: BSIZE an STEP are related. BSIZE is the size of the cache + used to store the data before flashing the device. Each memory + address contains some bits that's a word, the STEP is the size of + the cache in words. So BSIZE=STEP*word_size. + For the XC18V: 32*64=2048 o 32*128=4096. + +$MSIZE$ : + Taken from the msize field from the device definition in the + DEVICES file. + It contains the last memory position of a device with memory. + +$ID$ : + Taken from the id field from the device definition in the DEVICES + file. + It contains the IDCODE of the selected device. + +$IDMASK$ : + Taken from the idmask field from the device definition in the + DEVICE file. + It contains the mask wich be used in the comprobation of the IDCODE + + +Block commands: + +--LITERAL START : + It indicate that in the output file must be copied the content + of this block until the end is found "as is". + If an operational command is found inside it is excecuted. + +--REPEAT START : + + It indicate that this block will be repeated until the end of + the bitfile is reached. + This block must have inside some operational command wich + reads information from the input bitfile, if not, the end of + this will never be reached and the progran will keep + repeating this block until there is no more disk space. + With each block iteration the variable $ADDRESS$ is + incremented by $STEP$. + +--REPEAT UNTIL value : + It indicates that this block will be repeated until the + variable $ADDRESS$ reach the value passed as parameter. + With each block iteration the variable $ADDRESS$ is + incremented by $STEP$. + The value passwd as parameter must be $STEP$ multiplo, + or the exit condition will never be reached and the + program will keep repeating this block until there is + no more disk space. + Instead of value you can use a variable: + Ej.: --REPEAT UNTIL MSIZE + + +--END : + It indicates the end of a LITERAL, REPEAT or REPEAT UNTIL block. + + +Opeation commands: + The operation commands may recive as an argment the name of + a variable instead of a constant: + Ej.: $FILL(0xFF,BSIZE)$ + +$DATA(ndatabytes)$ : + Writes in the output file a ndatabytes amount of bytes + from the input bitfile expressed in hex. + +$DATA_INV(ndatabytes)$ : + Writes in the output fila a ndatabytes amount of bytes + from the input bitfile inverting the order, expressed + in hex. + +$FILL(VAL,TIMES)$ : + Writes TIMES times the value VAL expressed in hex in the + output file. + +$REWIND$ : + Rewinds the bitfile to the first stream byte so it can be used in a + new block. + + diff --git a/fpga/xilinx/programmer/bit2svf/templates/.README.es~ b/fpga/xilinx/programmer/bit2svf/templates/.README.es~ new file mode 100644 index 0000000..af3560b --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/templates/.README.es~ @@ -0,0 +1,237 @@ +Copyright (c) 2005 Juan Pablo D. Borgna <jpborgna en inti gov ar> +Copyright (c) 2006-2007 Salvador E. Tropea <salvador en inti gov ar> +Copyright (c) 2005-2007 Instituto Nacional de Tecnología Industrial + +Comandos y bloques: + Los archivos de template tienen comandos de bloque y + comandos de operacion. Los comandos de bloque comienzan con + dos signos menos "--" y los de operacion van encerrados entre + signos pesos "$". Los comandos de bloque indican la ejecucion + de un bloque y el fin de bloque debe ser indicado con la + instruccion "--END". + + +Variables internas: + Se proporcionan las siguientes variables internas que pueden + ser utilizadas invocando su nombre entre signos pesos "$" o + modificados si ademas se les asigna un valor entre + parentesis. Ej. $ADDRESS(0x0000)$ le asignara a esta variable + el valor 0x0000. + +$ADDRESS$ : + Acumulador que es util al momento de incrementar la direccion de una + memoria, por ejemplo. + +$STEP$ : + Valor con el cual se incrementara la variable $ADDRESS$. + +$SBYTES$ : + Cantidad de bytes que posee el bitstream del bitfile. + +$SBITES$ : + Cantidad de bits que posee el bitstream del bitfile. + +$MSIZE$ : + Obtenido del campo msize de la definicion del dispositivo en el + archivo DEVICES. + Expresa la ultima posicion de memoria de un dispositivo con memoria. + +$ID$ : + Obtenido del campo id de la definicion del dispositivo en el archivo + DEVICES. + Expresa el IDCODE del dispositivo actual. + +$IDMASK$ : + Obtenido del campo idmask de la definicion del dispositivo en el + archivo DEVICES. + Expresa la mascara que se usara en la comprobacion del IDCODE. + +$BSIZE$ : + Obtenido del campo BSIZE de la definicion del dispositivo en el + archivo DEVICES. + Es el "block size" (cantidad de bits) a transferir expresando + en bits. + Nota: El valor BSIZE y el valor STEP no son cosas separadas. + BSIZE es el tamaño en bits de la cache que tiene el dispositivo + para almacenar los datos antes de transferirlos a la flash. + Cada dirección de memoria direcciona una cantidad de bits (64 + o 128 es lo común), el STEP es el número de posiciones de memoria + que entran en la cache, luego BSIZE=STEP*bits_por_dirección. + Esto es en las XC18V: 32*64=2048 o 32*128=4096. + +$BSIZEB$ : + Obtenido del campo BSIZE de la definicion del dispositivo en el + archivo DEVICES. + Es el "block size" (cantidad de bits) a transferir expresando + en bytes. + +$BSIZEB2$ : + $BSIZEB$ multiplicado por 2. + +Comandos de bloque: + + +--LITERAL START : + Indica que se debe copiar en el archivo de salida el contenido + de este bloque y hasta el final del mismo tal y como esta. + Si se encuentra un comando de operacion entre medio este es + ejecutado. + +--REPEAT START : + Indica que se repetira de principio a fin el contenido de este + bloque mientras que haya informacion que leer en el bitfile + de entrada. + Este comando de bloque debe tener en su interior algun comando + de operacion que lea informacion del bitfile de entrada, si no + este nunca llegara a su fin y el programa se quedara + repitiendo el bloque hasta agotar el espacio en disco. + Con cada iteracion del bloque se incrementa la variable + $ADDRESS$ en $STEP$. + +--REPEAT UNTIL valor : + Indica que se repetira de principio a fin el contenido de + este bloque hasta que la variable $ADDRESS$ tome el valor + pasado como parametro. Con cada iteracion del bloque se + incrementara la variable $ADDRESS$ en $STEP$. + El valor pasado como parametro debe ser multiplo de + $STEP$, si no la condicion de salida del bloque nunca se + conseguira y el programa se quedara repitiendo el bloque + hasta agotar el espacio en disco. + En lugar de valor se puede utilizar una variable: + Ej.: --REPEAT UNTIL MSIZE + + +--END : + Indica el final de un bloque LITERAL, REPEAT o REPEAT UNTIL. + + +Comandos de operacion: + Los comandos de operacion pueden recibir como argumento + el nombre de una variable en lugar de una constante: + Ej.: $FILL(0xFF,BSIZE)$ + +$DATA(ndatabytes)$ : + Escribe en el archivo de salida una cantidad ndatabytes de + bytes del bitfile de entrada expresados en hexadecimal. + +$DATA_INV(ndatabytes)$ : + Escribe en el archivo de salida una cantidad ndatabytes + de bytes del bitfile de entrada, invirtiendo el orden + de los bits del bloque, expresados en hexadecimal. + +$FILL(VAL,TIMES)$ : + Escribe TIMES veces el valor VAL expresado en hexadecimal en + el archivo de salida. + +$REWIND$ : + Vuelve a poner el archivo de bits en la posicion del primer byte del + stream para poder realizar otra pasada completa con un comando de + bloque. + +------------------------------------------------------------------------------- + +Como crear un template para una FPGA: +------------------------------------- + +Autor: Salvador E. Tropea + +A) Crear un .SVF válido para esa FPGA: + +1) Obtener un .bit para la FPGA en cuestión. +2) Abrir el impact: +$ . /usr/local/ISEWb/settings.sh +$ impact +3) Elegir "I want to (*) Create a new project", Ok. (Darle un nombre si se +quiere). +4) Elegir "(*) Prepare a boundary-scan file [SVF]", Finish. +5) Elegir un nombre para el SVF. +6) Elegir el .bit. +7) Presionar el botón derecho sobre la FPGA y elegir "Program", Ok. +8) Salir del impact + +Automáticamente es: + +setPreference -pref AutoSignature:FALSE +setPreference -pref KeepSVF:FALSE +setPreference -pref ConcurrentMode:FALSE +setPreference -pref UseHighz:FALSE +setPreference -pref UserLevel:NOVICE +setPreference -pref svfUseTime:FALSE +setMode -bs +setMode -bs +setCable -port svf -file "salida.svf" +addDevice -p 1 -file "archivo.bit" +Program -p 1 -s -defaultVersion 0 + +B) Crear un nuevo template (ej: alg_Virtex_4.svft) + +1) Abrir un template que ya exista para usarlo de guía. +2) Borrar "FREQUENCY 1E6 HZ;" +3) Reemplazar: $ID$ y $IDMASK$ en la parte que dice "Loading device with +'idcode' instruction.". (f167c093) +4) Reemplazar la megalínea del bitstream por: +SDR $SBITS$ TDI ($DATA_INV(-1)$) SMASK ($FILL(0xFF,-1)$); + +C) Probar su funcionamiento + +1) Colocar el nuevo template en /usr/share/bit2svf/ +2) Editar /usr/share/bit2svf/DEVICES agregando el ID de la FPGA y el algoritmo +a usar: + +// Virtex 4 family (10 bits IR) +XC4VLX25, f167c093, 0fffffff, alg_Virtex_4, VOID, 0l + +3) Probar el template: + +$ bit2svf display_test_lx25.bit v4-b2s.svf XC4VLX25 + +Esto genera v4-b2s.svf que debería ser practicamente idéntico al generado por +impact. +Nota: En este caso observé que el impact agrega 32 bits en 0 extra al +bitstream. Esto no parece ser indispensable y sospecho que sirve para +"limpiar/vaciar" la cadena. +4) Si todo fue OK se puede probar con el dispositivo: + +$ jbit display_test_lx25.bit XC4VLX25 + + +------------------------------------------------------------------------------- + +Como crear un template para una PROM: +------------------------------------- + +Autor: Salvador E. Tropea + +A) Crear un archivo de PROM válido. + +1) Obtener un .bit para la FPGA en cuestión. +2) Abrir el impact: +$ . /usr/local/ISEWb/settings.sh +$ impact +3) Elegir "I want to (*) Prepare a ROM file", Ok. (Darle un nombre si se +quiere). +4) Elegir "I want to target a (*) Xilinx PROM", "PROM File name" darle un +nombre. Next. (Ojo con el path). +5) Elegir la PROM y Add, luego Next. +6) Agregar el .bit +7) Elegir "Generate File ..." dentro de las acciones disponibles (la única). +8) Esto genera un .MCS con el contenido para la PROM. + +B) Crear un .SVF válido para esa PROM. Esto es similar a la FPGA, la única +diferencia es que le especificamos el .MCS en lugar de un .bit. En este caso +nos preguntará cual es el dispositivo haciendo un guess de cual se trata. Esto +es porque el .mcs es un bitstream crudo y no dice para que dispositivo se +hizo. +Durante este proceso se pueden elegir opciones como si la PROM se conecta en +paralelo y si se incluye verificación. Además hay que elegir que primero la +borre. + +B) Crear un nuevo template o usar uno ya hecho. Esto es como con la FPGA. + +C) Probar su funcionamiento. Esto es más o menos lo mismo que con la FPGA. La +principal diferencia con las PROMs es que acá es necesario configurar su tamaño +y el tamaño de la caché o página donde se guardarán temporalmente los datos: + +// XCFxxP memories +XCF08P , f5057093, 0fffffff, alg_XCFP ,8192 , 0x100000 + diff --git a/fpga/xilinx/programmer/bit2svf/templates/DEVICES b/fpga/xilinx/programmer/bit2svf/templates/DEVICES new file mode 100644 index 0000000..86f53a9 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/templates/DEVICES @@ -0,0 +1,42 @@ +//One device per line +//NAME | ID | IDMASK | ALG_TPL | BSIZE | MSIZE +// XC18V memories +XC18V256 , f5022093, 0ffeffff, alg_18V , 2048 , 0x1000 +XC18V512 , f5023093, 0ffeffff, alg_18V , 2048 , 0x2000 +XC18V01 , f5024093, 0ffeffff, alg_18V , 2048 , 0x4000 +XC18V01-SO20 , f5024093, 0ffeffff, alg_18V , 2048 , 0x4000 +XC18V02 , f5025093, 0ffeffff, alg_18V , 4096 , 0x4000 +XC18V04 , f5026093, 0ffeffff, alg_18V , 4096 , 0x8000 + +// XCF memories +XCF01S , f5044093, 0ffeffff, alg_XCF , 2048 , 0x4000 +XCF02S , f5045093, 0ffeffff, alg_XCF , 4096 , 0x4000 +XCF04S , f5046093, 0ffeffff, alg_XCF , 4096 , 0x8000 + +// XCFxxP memories +XCF08P , f5057093, 0fffffff, alg_XCFP ,8192 , 0x100000 + +// Spartan II family (5 bits IR) +XC2S15 , f0608093, 0fffffff, alg_Spartan_II, VOID , 0l +XC2S30 , f060c093, 0fffffff, alg_Spartan_II, VOID , 0l +XC2S50 , f0610093, 0fffffff, alg_Spartan_II, VOID , 0l +XC2S100 , f0614093, 0fffffff, alg_Spartan_II, VOID , 0l +XC2S100-PQ208 , f0614093, 0fffffff, alg_Spartan_II, VOID , 0l +XC2S150 , f0618093, 0fffffff, alg_Spartan_II, VOID , 0l +XC2S200 , f061c093, 0fffffff, alg_Spartan_II, VOID , 0l + +// Spartan 3 family (6 bits IR) +XC3S50 , f140D093, 0fffffff, alg_Spartan_3, VOID , 0l +XC3S200 , f1414093, 0fffffff, alg_Spartan_3, VOID , 0l +XC3S400 , f141C093, 0fffffff, alg_Spartan_3, VOID , 0l +XC3S1000, f1428093, 0fffffff, alg_Spartan_3, VOID , 0l +XC3S1500, f1434093, 0fffffff, alg_Spartan_3, VOID , 0l +XC3S2000, f1440093, 0fffffff, alg_Spartan_3, VOID , 0l +XC3S4000, f1448093, 0fffffff, alg_Spartan_3, VOID , 0l +XC3S5000, f1450093, 0fffffff, alg_Spartan_3, VOID , 0l + +// Virtex 4 family (10 bits IR) +XC4VLX25, f167c093, 0fffffff, alg_Virtex_4, VOID, 0l + +//EOF + diff --git a/fpga/xilinx/programmer/bit2svf/templates/README.en b/fpga/xilinx/programmer/bit2svf/templates/README.en new file mode 100644 index 0000000..f517b01 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/templates/README.en @@ -0,0 +1,115 @@ +Copyright (c) 2005 Juan Pablo D. Borgna <jpborgna en inti gov ar> +Copyright (c) 2006-2007 Salvador E. Tropea <salvador en inti gov ar> +Copyright (c) 2005-2007 Instituto Nacional de Tecnología Industrial + +Commands and blocks: + The template files have block commands and operation + commands. The block commands start with two substract + signs "--" and the operation are betwin dollar signs "$". + The block commands mark the excecution of a block and the + end of the block must be identifyed with the instruction + "--END". + +Internal variables: + The next internal variables are provided wich can be used + indicating their name betwin dollars signs "$" or modified + if a value is assigned using parentesis signs. + Ex.: $ADDRESS(0x00)$ asigns this variable the value 0x0000. + +$ADDRESS$ : + Accumulator useful at the time of incrementing a memory address. + +$STEP$ : + Value on wich $ADDRESS$ variable will be incremented. + +$BSIZEB$ : + Amount of bytes of the bitstream file. + +$BSIZEB2$ : + 2 * amount of bytes of the bitstream file. + +$BSIZE$ : + Amount of bits of the bitstream file. + Note: BSIZE an STEP are related. BSIZE is the size of the cache + used to store the data before flashing the device. Each memory + address contains some bits that's a word, the STEP is the size of + the cache in words. So BSIZE=STEP*word_size. + For the XC18V: 32*64=2048 o 32*128=4096. + +$MSIZE$ : + Taken from the msize field from the device definition in the + DEVICES file. + It contains the last memory position of a device with memory. + +$ID$ : + Taken from the id field from the device definition in the DEVICES + file. + It contains the IDCODE of the selected device. + +$IDMASK$ : + Taken from the idmask field from the device definition in the + DEVICE file. + It contains the mask wich be used in the comprobation of the IDCODE + + +Block commands: + +--LITERAL START : + It indicate that in the output file must be copied the content + of this block until the end is found "as is". + If an operational command is found inside it is excecuted. + +--REPEAT START : + + It indicate that this block will be repeated until the end of + the bitfile is reached. + This block must have inside some operational command wich + reads information from the input bitfile, if not, the end of + this will never be reached and the progran will keep + repeating this block until there is no more disk space. + With each block iteration the variable $ADDRESS$ is + incremented by $STEP$. + +--REPEAT UNTIL value : + It indicates that this block will be repeated until the + variable $ADDRESS$ reach the value passed as parameter. + With each block iteration the variable $ADDRESS$ is + incremented by $STEP$. + The value passwd as parameter must be $STEP$ multiplo, + or the exit condition will never be reached and the + program will keep repeating this block until there is + no more disk space. + Instead of value you can use a variable: + Ej.: --REPEAT UNTIL MSIZE + + +--END : + It indicates the end of a LITERAL, REPEAT or REPEAT UNTIL block. + + +Opeation commands: + The operation commands may recive as an argment the name of + a variable instead of a constant: + Ej.: $FILL(0xFF,BSIZE)$ + +$DATA(ndatabytes)$ : + Writes in the output file a ndatabytes amount of bytes + from the input bitfile expressed in hex. + +$DATA_INV(ndatabytes)$ : + Writes in the output fila a ndatabytes amount of bytes + from the input bitfile inverting the order, expressed + in hex. + +$FILL(VAL,TIMES)$ : + Writes TIMES times the value VAL expressed in hex in the + output file. + +$REWIND$ : + Rewinds the bitfile to the first stream byte so it can be used in a + new block. + +$CUTLINES(n): + Using 0 stops cutting long lines, 1 starts cutting again. + Other values: reserved. + diff --git a/fpga/xilinx/programmer/bit2svf/templates/README.es b/fpga/xilinx/programmer/bit2svf/templates/README.es new file mode 100644 index 0000000..58f47b5 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/templates/README.es @@ -0,0 +1,241 @@ +Copyright (c) 2005 Juan Pablo D. Borgna <jpborgna en inti gov ar> +Copyright (c) 2006-2007 Salvador E. Tropea <salvador en inti gov ar> +Copyright (c) 2005-2007 Instituto Nacional de Tecnología Industrial + +Comandos y bloques: + Los archivos de template tienen comandos de bloque y + comandos de operacion. Los comandos de bloque comienzan con + dos signos menos "--" y los de operacion van encerrados entre + signos pesos "$". Los comandos de bloque indican la ejecucion + de un bloque y el fin de bloque debe ser indicado con la + instruccion "--END". + + +Variables internas: + Se proporcionan las siguientes variables internas que pueden + ser utilizadas invocando su nombre entre signos pesos "$" o + modificados si ademas se les asigna un valor entre + parentesis. Ej. $ADDRESS(0x0000)$ le asignara a esta variable + el valor 0x0000. + +$ADDRESS$ : + Acumulador que es util al momento de incrementar la direccion de una + memoria, por ejemplo. + +$STEP$ : + Valor con el cual se incrementara la variable $ADDRESS$. + +$SBYTES$ : + Cantidad de bytes que posee el bitstream del bitfile. + +$SBITES$ : + Cantidad de bits que posee el bitstream del bitfile. + +$MSIZE$ : + Obtenido del campo msize de la definicion del dispositivo en el + archivo DEVICES. + Expresa la ultima posicion de memoria de un dispositivo con memoria. + +$ID$ : + Obtenido del campo id de la definicion del dispositivo en el archivo + DEVICES. + Expresa el IDCODE del dispositivo actual. + +$IDMASK$ : + Obtenido del campo idmask de la definicion del dispositivo en el + archivo DEVICES. + Expresa la mascara que se usara en la comprobacion del IDCODE. + +$BSIZE$ : + Obtenido del campo BSIZE de la definicion del dispositivo en el + archivo DEVICES. + Es el "block size" (cantidad de bits) a transferir expresando + en bits. + Nota: El valor BSIZE y el valor STEP no son cosas separadas. + BSIZE es el tamaño en bits de la cache que tiene el dispositivo + para almacenar los datos antes de transferirlos a la flash. + Cada dirección de memoria direcciona una cantidad de bits (64 + o 128 es lo común), el STEP es el número de posiciones de memoria + que entran en la cache, luego BSIZE=STEP*bits_por_dirección. + Esto es en las XC18V: 32*64=2048 o 32*128=4096. + +$BSIZEB$ : + Obtenido del campo BSIZE de la definicion del dispositivo en el + archivo DEVICES. + Es el "block size" (cantidad de bits) a transferir expresando + en bytes. + +$BSIZEB2$ : + $BSIZEB$ multiplicado por 2. + +Comandos de bloque: + + +--LITERAL START : + Indica que se debe copiar en el archivo de salida el contenido + de este bloque y hasta el final del mismo tal y como esta. + Si se encuentra un comando de operacion entre medio este es + ejecutado. + +--REPEAT START : + Indica que se repetira de principio a fin el contenido de este + bloque mientras que haya informacion que leer en el bitfile + de entrada. + Este comando de bloque debe tener en su interior algun comando + de operacion que lea informacion del bitfile de entrada, si no + este nunca llegara a su fin y el programa se quedara + repitiendo el bloque hasta agotar el espacio en disco. + Con cada iteracion del bloque se incrementa la variable + $ADDRESS$ en $STEP$. + +--REPEAT UNTIL valor : + Indica que se repetira de principio a fin el contenido de + este bloque hasta que la variable $ADDRESS$ tome el valor + pasado como parametro. Con cada iteracion del bloque se + incrementara la variable $ADDRESS$ en $STEP$. + El valor pasado como parametro debe ser multiplo de + $STEP$, si no la condicion de salida del bloque nunca se + conseguira y el programa se quedara repitiendo el bloque + hasta agotar el espacio en disco. + En lugar de valor se puede utilizar una variable: + Ej.: --REPEAT UNTIL MSIZE + + +--END : + Indica el final de un bloque LITERAL, REPEAT o REPEAT UNTIL. + + +Comandos de operacion: + Los comandos de operacion pueden recibir como argumento + el nombre de una variable en lugar de una constante: + Ej.: $FILL(0xFF,BSIZE)$ + +$DATA(ndatabytes)$ : + Escribe en el archivo de salida una cantidad ndatabytes de + bytes del bitfile de entrada expresados en hexadecimal. + +$DATA_INV(ndatabytes)$ : + Escribe en el archivo de salida una cantidad ndatabytes + de bytes del bitfile de entrada, invirtiendo el orden + de los bits del bloque, expresados en hexadecimal. + +$FILL(VAL,TIMES)$ : + Escribe TIMES veces el valor VAL expresado en hexadecimal en + el archivo de salida. + +$REWIND$ : + Vuelve a poner el archivo de bits en la posicion del primer byte del + stream para poder realizar otra pasada completa con un comando de + bloque. + +$CUTLINES(n): + Con 0 deja de cortar las líneas largas, con 1 vuelve a cortarlas. + Otros valores: reservados. + +------------------------------------------------------------------------------- + +Como crear un template para una FPGA: +------------------------------------- + +Autor: Salvador E. Tropea + +A) Crear un .SVF válido para esa FPGA: + +1) Obtener un .bit para la FPGA en cuestión. +2) Abrir el impact: +$ . /usr/local/ISEWb/settings.sh +$ impact +3) Elegir "I want to (*) Create a new project", Ok. (Darle un nombre si se +quiere). +4) Elegir "(*) Prepare a boundary-scan file [SVF]", Finish. +5) Elegir un nombre para el SVF. +6) Elegir el .bit. +7) Presionar el botón derecho sobre la FPGA y elegir "Program", Ok. +8) Salir del impact + +Automáticamente es: + +setPreference -pref AutoSignature:FALSE +setPreference -pref KeepSVF:FALSE +setPreference -pref ConcurrentMode:FALSE +setPreference -pref UseHighz:FALSE +setPreference -pref UserLevel:NOVICE +setPreference -pref svfUseTime:FALSE +setMode -bs +setMode -bs +setCable -port svf -file "salida.svf" +addDevice -p 1 -file "archivo.bit" +Program -p 1 -s -defaultVersion 0 + +B) Crear un nuevo template (ej: alg_Virtex_4.svft) + +1) Abrir un template que ya exista para usarlo de guía. +2) Borrar "FREQUENCY 1E6 HZ;" +3) Reemplazar: $ID$ y $IDMASK$ en la parte que dice "Loading device with +'idcode' instruction.". (f167c093) +4) Reemplazar la megalínea del bitstream por: +SDR $SBITS$ TDI ($DATA_INV(-1)$) SMASK ($FILL(0xFF,-1)$); + +C) Probar su funcionamiento + +1) Colocar el nuevo template en /usr/share/bit2svf/ +2) Editar /usr/share/bit2svf/DEVICES agregando el ID de la FPGA y el algoritmo +a usar: + +// Virtex 4 family (10 bits IR) +XC4VLX25, f167c093, 0fffffff, alg_Virtex_4, VOID, 0l + +3) Probar el template: + +$ bit2svf display_test_lx25.bit v4-b2s.svf XC4VLX25 + +Esto genera v4-b2s.svf que debería ser practicamente idéntico al generado por +impact. +Nota: En este caso observé que el impact agrega 32 bits en 0 extra al +bitstream. Esto no parece ser indispensable y sospecho que sirve para +"limpiar/vaciar" la cadena. +4) Si todo fue OK se puede probar con el dispositivo: + +$ jbit display_test_lx25.bit XC4VLX25 + + +------------------------------------------------------------------------------- + +Como crear un template para una PROM: +------------------------------------- + +Autor: Salvador E. Tropea + +A) Crear un archivo de PROM válido. + +1) Obtener un .bit para la FPGA en cuestión. +2) Abrir el impact: +$ . /usr/local/ISEWb/settings.sh +$ impact +3) Elegir "I want to (*) Prepare a ROM file", Ok. (Darle un nombre si se +quiere). +4) Elegir "I want to target a (*) Xilinx PROM", "PROM File name" darle un +nombre. Next. (Ojo con el path). +5) Elegir la PROM y Add, luego Next. +6) Agregar el .bit +7) Elegir "Generate File ..." dentro de las acciones disponibles (la única). +8) Esto genera un .MCS con el contenido para la PROM. + +B) Crear un .SVF válido para esa PROM. Esto es similar a la FPGA, la única +diferencia es que le especificamos el .MCS en lugar de un .bit. En este caso +nos preguntará cual es el dispositivo haciendo un guess de cual se trata. Esto +es porque el .mcs es un bitstream crudo y no dice para que dispositivo se +hizo. +Durante este proceso se pueden elegir opciones como si la PROM se conecta en +paralelo y si se incluye verificación. Además hay que elegir que primero la +borre. + +B) Crear un nuevo template o usar uno ya hecho. Esto es como con la FPGA. + +C) Probar su funcionamiento. Esto es más o menos lo mismo que con la FPGA. La +principal diferencia con las PROMs es que acá es necesario configurar su tamaño +y el tamaño de la caché o página donde se guardarán temporalmente los datos: + +// XCFxxP memories +XCF08P , f5057093, 0fffffff, alg_XCFP ,8192 , 0x100000 + diff --git a/fpga/xilinx/programmer/bit2svf/templates/alg_18V.svft b/fpga/xilinx/programmer/bit2svf/templates/alg_18V.svft new file mode 100644 index 0000000..e754da1 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/templates/alg_18V.svft @@ -0,0 +1,192 @@ +//Info: Sample template for programming XILINX XC18V01 PROMS +//Info: Created with output from Impact + +--LITERAL START +TRST OFF; +ENDIR IDLE; +ENDDR IDLE; +STATE RESET; +STATE IDLE; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (fe) SMASK (ff) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO ($ID$) MASK ($IDMASK$) ; +//Loading device with 'conld' instruction. +SIR 8 TDI (f0) ; +RUNTEST 110000 TCK; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +STATE RESET; +// Loading devices with 'ispen' or 'bypass' instruction. +SIR 8 TDI (e8) ; +SDR 6 TDI (34) SMASK (3f) ; +// Loading device with 'faddr' instruction. +SIR 8 TDI (eb) ; +SDR 16 TDI (0001) SMASK (ffff) ; +RUNTEST 1 TCK; +RUNTEST 1 TCK; +// Loading device with 'ferase' instruction. +SIR 8 TDI (ec) ; +RUNTEST 1 TCK; +RUNTEST 15000000 TCK; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (f0) ; +RUNTEST 110000 TCK; +STATE RESET; +// Loading devices with 'ispen' or 'bypass' instruction. +SIR 8 TDI (e8) ; +SDR 6 TDI (34) SMASK (3f) ; +--END + +$ADDRESS(0x0000)$ +$STEP(0x0020)$ + + +--REPEAT START +// Loading device with a 'fdata0' instruction. +SIR 8 TDI (ed) ; +SDR $BSIZE$ TDI ($DATA_INV(BSIZEB)$) SMASK ($FILL(0xFF,BSIZEB)$) ; +ENDIR IDLE; +RUNTEST 1 TCK; +RUNTEST 1 TCK; +// Loading device with a 'faddr' instruction. +SIR 8 TDI (eb) ; +SDR 16 TDI ($ADDRESS$) SMASK (ffff) ; +RUNTEST 1 TCK; +RUNTEST 1 TCK; +// Loading device with a 'fpgm' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (ea) ; +RUNTEST 1 TCK; +RUNTEST 14000 TCK; +--END + +--LITERAL START +// Loading device with a 'faddr' instruction. +SIR 8 TDI (eb) ; +SDR 16 TDI (0001) ; +ENDIR IDLE; +RUNTEST 1 TCK; +// Loading device with 'serase' instruction. +SIR 8 TDI (0a) ; +RUNTEST 37000 TCK; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (f0) ; +RUNTEST 110000 TCK; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'ispen' instruction. +SIR 8 TDI (e8) ; +SDR 6 TDI (34) SMASK (3f) ; +//Loading device with 'conld' instruction. +SIR 8 TDI (f0) ; +RUNTEST 110000 TCK; +//Loading device with 'ispen' instruction. +SIR 8 TDI (e8) ; +SDR 6 TDI (34) ; +--END + +$REWIND$ +$ADDRESS(0x0000)$ +$STEP(0x0040)$ + +--REPEAT START +// Loading device with a 'faddr' instruction. +SIR 8 TDI (eb) ; +SDR 16 TDI ($ADDRESS$) SMASK (ffff) ; +RUNTEST 1 TCK; +RUNTEST 1 TCK; +// Loading device with a 'fvfy0' instruction. +SIR 8 TDI (ef) ; +RUNTEST 1 TCK; +RUNTEST 50 TCK; +SDR $BSIZE2$ TDI ($FILL(0x00,BSIZEB2)$) SMASK ($FILL(0xFF,BSIZEB2)$) TDO ($DATA_INV(BSIZEB2)$) MASK ($FILL(0xFF,BSIZEB2)$) ; +--END + + +--REPEAT UNTIL MSIZE +// Loading device with a 'faddr' instruction. +SIR 8 TDI (eb) ; +SDR 16 TDI ($ADDRESS$) SMASK (ffff) ; +RUNTEST 1 TCK; +RUNTEST 1 TCK; +// Loading device with a 'fvfy0' instruction. +SIR 8 TDI (ef) ; +RUNTEST 1 TCK; +RUNTEST 50 TCK; +SDR $BSIZE2$ TDI ($FILL(0xFF,BSIZEB2)$) SMASK ($FILL(0xFF,BSIZEB2)$) TDO ($FILL(0xFF,BSIZEB2)$) MASK ($FILL(0xFF,BSIZEB2)$) ; +--END + +--LITERAL START +//Loading device with 'conld' instruction. +SIR 8 TDI (f0) ; +RUNTEST 110000 TCK; +//Loading device with 'ispen' instruction. +SIR 8 TDI (e8) ; +SDR 6 TDI (34) SMASK (3f) ; +//Loading device with 'ispen' instruction. +SIR 8 TDI (e8) ; +SDR 6 TDI (34) ; +// Loading device with a 'faddr' instruction. +SIR 8 TDI (eb) TDO (00) MASK (00) ; +SDR 16 TDI (4000) SMASK (ffff) ; +RUNTEST 1 TCK; +RUNTEST 1 TCK; +// Loading device with a 'fdata3' instruction. +SIR 8 TDI (f3) TDO (00) ; +SDR 6 TDI (1f) SMASK (3f) TDO (00) MASK (00) ; +// Loading device with a 'fpgm' instruction. +SIR 8 TDI (ea) TDO (00) ; +RUNTEST 1 TCK; +RUNTEST 14000 TCK; +// Loading device with a 'fvfy3' instruction. +SIR 8 TDI (e2) TDO (00) ; +RUNTEST 1 TCK; +RUNTEST 50 TCK; +SDR 6 TDI (1f) TDO (1f) ; +//Loading device with 'conld' instruction. +SIR 8 TDI (f0) ; +RUNTEST 110000 TCK; +//Loading device with 'ispen' instruction. +SIR 8 TDI (e8) ; +SDR 6 TDI (34) ; +//Loading device with 'conld' instruction. +SIR 8 TDI (f0) ; +RUNTEST 110000 TCK; +// Loading device with a 'config' instruction. +SIR 8 TDI (ee) TDO (00) ; +RUNTEST 50 TCK; +//Loading device with 'bypass' instruction. +SIR 8 TDI (ff) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +SIR 8 TDI (ff) ; +SDR 1 TDI (00) SMASK (01) ; +--END diff --git a/fpga/xilinx/programmer/bit2svf/templates/alg_Spartan_3.svft b/fpga/xilinx/programmer/bit2svf/templates/alg_Spartan_3.svft new file mode 100644 index 0000000..d2dc978 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/templates/alg_Spartan_3.svft @@ -0,0 +1,83 @@ +//Info: Sample template for programming XILINX Spartan 3 FPGA +//Info: Created with output from Impact + +--LITERAL START +TRST OFF; +ENDIR IDLE; +ENDDR IDLE; +STATE RESET; +STATE IDLE; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 6 TDI (09) SMASK (3f) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO ($ID$) MASK ($IDMASK$) ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 6 TDI (09) ; +SDR 32 TDI (00000000) TDO ($ID$) ; +//Loading device with 'bypass' instruction. +SIR 6 TDI (3f) ; +// Loading device with a `jprogram` instruction. +SIR 6 TDI (0b) ; +RUNTEST 1 TCK; +// Loading device with a `bypass` instruction. +SIR 6 TDI (3f) ; +RUNTEST 14000 TCK; +// Loading device with a `cfg_in` instruction. +SIR 6 TDI (05) ; +SDR 192 TDI (0000000000000000e00000008001000c66aa9955ffffffff) SMASK (ffffffffffffffffffffffffffffffffffffffffffffffff) ; +// Loading device with a `jshutdown` instruction. +SIR 6 TDI (0d) ; +RUNTEST 12 TCK; +STATE RESET; +// Loading device with a `cfg_in` instruction. +SIR 6 TDI (05) ; +SDR 64 TDI (0000000000000000) SMASK (ffffffffffffffff) ; +SIR 6 TDI (05) TDO (00) MASK (00) ; +SDR $SBITS$ TDI ($DATA_INV(-1)$) SMASK ($FILL(0xFF,-1)$); +// Loading device with a `jstart` instruction. +SIR 6 TDI (0c) ; +RUNTEST 12 TCK; +//Loading device with 'bypass' instruction. +SIR 6 TDI (3f) ; +//Loading device with 'bypass' instruction. +SIR 6 TDI (3f) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +// Loading device with a `jstart` instruction. +SIR 6 TDI (0c) ; +RUNTEST 12 TCK; +//Checking done pin status. +//Loading device with 'Bypass' instruction. +SIR 6 TDI (3f) TDO (21) MASK (20) ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +SIR 6 TDI (3f) ; +SDR 1 TDI (00) SMASK (01) ; +--END diff --git a/fpga/xilinx/programmer/bit2svf/templates/alg_Spartan_II.svft b/fpga/xilinx/programmer/bit2svf/templates/alg_Spartan_II.svft new file mode 100644 index 0000000..8ef16a4 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/templates/alg_Spartan_II.svft @@ -0,0 +1,95 @@ +//Info: Sample template for programming XILINX SpartanII FPGA +//Info: Created with output from Impact + +--LITERAL START +TRST OFF; +ENDIR IDLE; +ENDDR IDLE; +STATE RESET; +STATE IDLE; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 5 TDI (09) SMASK (1f) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO ($ID$) MASK ($IDMASK$) ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 5 TDI (09) ; +SDR 32 TDI (00000000) TDO ($ID$) ; +//Loading device with 'bypass' instruction. +SIR 5 TDI (1f) ; +STATE RESET; +// Loading device with a `cfg_in` instruction. +SIR 5 TDI (05) ; +SDR 288 TDI (00000000e00000008001000ca00000008001000cbcfd05008004800c66aa995500000000) SMASK (ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +STATE RESET; +// Loading device with a `jstart` instruction. +SIR 5 TDI (0c) ; +SDR 13 TDI (0000) SMASK (1fff) ; +STATE RESET; +// Loading device with a `cfg_in` instruction. +SIR 5 TDI (05) ; +SDR 352 TDI (00000000e00000008001000ca00000008001000cfffc05008004800c100000008001000c66aa995500000000) SMASK (ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +STATE RESET; +// Loading device with a `jstart` instruction. +SIR 5 TDI (0c) ; +SDR 13 TDI (0000) SMASK (1fff) ; +STATE RESET; +// Loading device with a `cfg_in` instruction. +SIR 5 TDI (05) ; +SDR 288 TDI (00000000e00000008001000ca00000008001000cb4fd05008004800c66aa995500000000) SMASK (ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +STATE RESET; +// Loading device with a `jstart` instruction. +SIR 5 TDI (0c) ; +SDR 13 TDI (0000) SMASK (1fff) ; +STATE RESET; +// Loading device with a `cfg_in` instruction. +SIR 5 TDI (05) ; + +SDR $SBITS$ TDI ($DATA_INV(-1)$) SMASK ($FILL(0xFF,-1)$); + +STATE RESET; +// Loading device with a `jstart` instruction. +SIR 5 TDI (0c) ; +SDR 13 TDI (0000) SMASK (1fff) ; +STATE RESET; +//Loading device with 'bypass' instruction. +SIR 5 TDI (1f) ; +//Loading device with 'bypass' instruction. +SIR 5 TDI (1f) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +STATE RESET; +//Checking done pin status. +//Loading device with 'Bypass' instruction. +SIR 5 TDI (1f) TDO (05) MASK (04) ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +SIR 5 TDI (1f) ; +SDR 1 TDI (00) SMASK (01) ; +--END diff --git a/fpga/xilinx/programmer/bit2svf/templates/alg_Virtex_4.svft b/fpga/xilinx/programmer/bit2svf/templates/alg_Virtex_4.svft new file mode 100644 index 0000000..1bd73f4 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/templates/alg_Virtex_4.svft @@ -0,0 +1,111 @@ +//Info: Sample template for programming XILINX Virtex 4 FPGA +//Info: Created with output from Impact + +--LITERAL START +TRST OFF; +ENDIR IDLE; +ENDDR IDLE; +STATE RESET; +STATE IDLE; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 10 TDI (03c9) SMASK (03ff) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO ($ID$) MASK ($IDMASK$) ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 10 TDI (03c9) ; +SDR 32 TDI (00000000) TDO ($ID$) ; +//Loading device with 'bypass' instruction. +SIR 10 TDI (03ff) ; +// Loading device with a `ISC_ENABLE` instruction. +ENDIR IRPAUSE; +SIR 10 TDI (03d0) ; +SDR 5 TDI (15) SMASK (1f) ; +ENDIR IDLE; +RUNTEST 12 TCK; +// Loading device with a `ISC_PROGRAM_SECURITY` instruction. +ENDIR IRPAUSE; +SIR 10 TDI (03d2) ; +SDR 32 TDI (00000000) SMASK (ffffffff) ; +ENDIR IDLE; +RUNTEST 9 TCK; +// Loading device with a `ISC_DISABLE` instruction. +SIR 10 TDI (03d7) ; +RUNTEST 12 TCK; +// Loading device with a `jprogram` instruction. +SIR 10 TDI (03cb) ; +RUNTEST 1 TCK; +// Loading device with a `bypass` instruction. +SIR 10 TDI (03ff) ; +RUNTEST 21000 TCK; +// Loading device with a `cfg_in` instruction. +SIR 10 TDI (03c5) ; +RUNTEST 100000 TCK; +// Check init_complete in ircapture. +//Loading device with 'Bypass' instruction. +SIR 10 TDI (03ff) TDO (0010) MASK (0010) ; +// Loading device with a `jprogram` instruction. +SIR 10 TDI (03cb) ; +RUNTEST 1 TCK; +// Loading device with a `bypass` instruction. +SIR 10 TDI (03ff) ; +RUNTEST 21000 TCK; +// Loading device with a `cfg_in` instruction. +SIR 10 TDI (03c5) ; +RUNTEST 100000 TCK; +// Check init_complete in ircapture. +//Loading device with 'Bypass' instruction. +SIR 10 TDI (03ff) TDO (0010) ; +STATE RESET; +// Loading device with a `cfg_in` instruction. +SIR 10 TDI (03c5) TDO (0000) MASK (0000) ; +SDR $SBITS$ TDI ($DATA_INV(-1)$) SMASK ($FILL(0xFF,-1)$); +// Loading device with a `jstart` instruction. +SIR 10 TDI (03cc) ; +RUNTEST 12 TCK; +//Loading device with 'bypass' instruction. +SIR 10 TDI (03ff) ; +//Loading device with 'bypass' instruction. +SIR 10 TDI (03ff) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +// Loading device with a `jstart` instruction. +SIR 10 TDI (03cc) ; +RUNTEST 12 TCK; +// Loading device with a `cfg_in` instruction. +SIR 10 TDI (03c5) ; +SDR 224 TDI (0000000000000000200000008001000c0000000466aa9955ffffffff) SMASK (ffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +//Checking done pin status. +//Loading device with 'Bypass' instruction. +SIR 10 TDI (03ff) TDO (0021) MASK (0020) ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +SIR 10 TDI (03ff) ; +SDR 1 TDI (00) SMASK (01) ; +--END diff --git a/fpga/xilinx/programmer/bit2svf/templates/alg_XCF.svft b/fpga/xilinx/programmer/bit2svf/templates/alg_XCF.svft new file mode 100644 index 0000000..73138c3 --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/templates/alg_XCF.svft @@ -0,0 +1,190 @@ +//Info: Sample template for programming XILINX XCFxx PROMS +//Info: Created with output from Impact + +--LITERAL START +TRST OFF; +ENDIR IDLE; +ENDDR IDLE; +STATE RESET; +STATE IDLE; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (fe) SMASK (ff) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO ($ID$) MASK ($IDMASK$) ; +//Loading device with 'conld' instruction. +SIR 8 TDI (f0) ; +RUNTEST 110000 TCK; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (07) ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +STATE RESET; +// Loading devices with 'ispen' or 'bypass' instruction. +SIR 8 TDI (e8) ; +SDR 6 TDI (34) SMASK (3f) ; +// Loading device with 'faddr' instruction. +SIR 8 TDI (eb) ; +SDR 16 TDI (0001) SMASK (ffff) ; +RUNTEST 1 TCK; +RUNTEST 1 TCK; +// Loading device with 'ferase' instruction. +SIR 8 TDI (ec) ; +RUNTEST 1 TCK; +RUNTEST 15000000 TCK; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (f0) ; +RUNTEST 110000 TCK; +STATE RESET; +// Loading devices with 'ispen' or 'bypass' instruction. +SIR 8 TDI (e8) ; +SDR 6 TDI (34) SMASK (3f) ; +--END + +$ADDRESS(0x0000)$ +$STEP(0x0020)$ + +--REPEAT START +// Loading device with a 'fdata0' instruction. +SIR 8 TDI (ed) ; +SDR $BSIZE$ TDI ($DATA_INV(BSIZEB)$) SMASK ($FILL(0xFF,BSIZEB)$) ; +ENDIR IDLE; +RUNTEST 1 TCK; +RUNTEST 1 TCK; +// Loading device with a 'faddr' instruction. +SIR 8 TDI (eb) ; +SDR 16 TDI ($ADDRESS$) SMASK (ffff) ; +RUNTEST 1 TCK; +RUNTEST 1 TCK; +// Loading device with a 'fpgm' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (ea) ; +RUNTEST 1 TCK; +RUNTEST 14000 TCK; +--END + +--LITERAL START +// Loading device with a 'faddr' instruction. +SIR 8 TDI (eb) ; +SDR 16 TDI (0001) ; +ENDIR IDLE; +RUNTEST 1 TCK; +// Loading device with 'serase' instruction. +SIR 8 TDI (0a) ; +RUNTEST 37000 TCK; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (f0) ; +RUNTEST 110000 TCK; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'ispen' instruction. +SIR 8 TDI (e8) ; +SDR 6 TDI (34) SMASK (3f) ; +//Loading device with 'conld' instruction. +SIR 8 TDI (f0) ; +RUNTEST 110000 TCK; +//Loading device with 'ispen' instruction. +SIR 8 TDI (e8) ; +SDR 6 TDI (34) ; +--END + +$REWIND$ +$ADDRESS(0x0000)$ +$STEP(0x0040)$ + +--REPEAT START +// Loading device with a 'faddr' instruction. +SIR 8 TDI (eb) ; +SDR 16 TDI ($ADDRESS$) SMASK (ffff) ; +RUNTEST 1 TCK; +RUNTEST 1 TCK; +// Loading device with a 'fvfy0' instruction. +SIR 8 TDI (ef) ; +RUNTEST 1 TCK; +RUNTEST 50 TCK; +SDR $BSIZE2$ TDI ($FILL(0x00,BSIZEB2)$) SMASK ($FILL(0xFF,BSIZEB2)$) TDO ($DATA_INV(BSIZEB2)$) MASK ($FILL(0xFF,BSIZEB2)$) ; +--END + +--REPEAT UNTIL MSIZE +// Loading device with a 'faddr' instruction. +SIR 8 TDI (eb) ; +SDR 16 TDI ($ADDRESS$) SMASK (ffff) ; +RUNTEST 1 TCK; +RUNTEST 1 TCK; +// Loading device with a 'fvfy0' instruction. +SIR 8 TDI (ef) ; +RUNTEST 1 TCK; +RUNTEST 50 TCK; +SDR $BSIZE2$ TDI ($FILL(0xFF,BSIZEB2)$) SMASK ($FILL(0xFF,BSIZEB2)$) TDO ($FILL(0xFF,BSIZEB2)$) MASK ($FILL(0xFF,BSIZEB2)$) ; +--END + +--LITERAL START +//Loading device with 'conld' instruction. +SIR 8 TDI (f0) ; +RUNTEST 110000 TCK; +//Loading device with 'ispen' instruction. +SIR 8 TDI (e8) ; +SDR 6 TDI (34) SMASK (3f) ; +//Loading device with 'ispen' instruction. +SIR 8 TDI (e8) ; +SDR 6 TDI (34) ; +// Loading device with a 'faddr' instruction. +SIR 8 TDI (eb) TDO (00) MASK (00) ; +SDR 16 TDI (8000) SMASK (ffff) ; +RUNTEST 1 TCK; +RUNTEST 1 TCK; +// Loading device with a 'fdata3' instruction. +SIR 8 TDI (f3) TDO (00) ; +SDR 3 TDI (07) SMASK (07) TDO (00) MASK (00) ; +// Loading device with a 'fpgm' instruction. +SIR 8 TDI (ea) TDO (00) ; +RUNTEST 1 TCK; +RUNTEST 14000 TCK; +// Loading device with a 'fvfy3' instruction. +SIR 8 TDI (e2) TDO (00) ; +RUNTEST 1 TCK; +RUNTEST 50 TCK; +SDR 3 TDI (07) TDO (07) ; +//Loading device with 'conld' instruction. +SIR 8 TDI (f0) ; +RUNTEST 110000 TCK; +//Loading device with 'ispen' instruction. +SIR 8 TDI (e8) ; +SDR 6 TDI (34) SMASK (3f) ; +//Loading device with 'conld' instruction. +SIR 8 TDI (f0) ; +RUNTEST 110000 TCK; +// Loading device with a 'config' instruction. +SIR 8 TDI (ee) TDO (00) ; +RUNTEST 50 TCK; +//Loading device with 'bypass' instruction. +SIR 8 TDI (ff) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +SIR 8 TDI (ff) ; +SDR 1 TDI (00) SMASK (01) ; +--END diff --git a/fpga/xilinx/programmer/bit2svf/templates/alg_XCFP.svft b/fpga/xilinx/programmer/bit2svf/templates/alg_XCFP.svft new file mode 100644 index 0000000..214fa4a --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/templates/alg_XCFP.svft @@ -0,0 +1,208 @@ +//Info: Sample template for programming XILINX XCFxxP PROMS +//Info: Created with output from Impact + +--LITERAL START +TRST OFF; +ENDIR IDLE; +ENDDR IDLE; +STATE RESET; +STATE IDLE; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'ispen' instruction. +SIR 16 TDI (00e8) SMASK (ffff) ; +SDR 8 TDI (03) SMASK (ff) ; +//Loading device with 'idcode' instruction. +SIR 16 TDI (00fe) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO ($ID$) MASK ($IDMASK$) ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +STATE RESET; +// Loading devices with 'ispen' or 'bypass' instruction. +SIR 16 TDI (00e8) ; +SDR 8 TDI (d0) SMASK (ff) ; +// Loading device with a 'XSC_UNLOCK' instruction. +SIR 16 TDI (aa55) ; +SDR 24 TDI (00003f) SMASK (ffffff) ; +// Loading device witha 'ISC_ERASE' instruction. +ENDIR IRPAUSE; +SIR 16 TDI (00ec) ; +SDR 24 TDI (00003f) ; +ENDIR IDLE; +RUNTEST 140000000 TCK; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 16 TDI (00f0) ; +RUNTEST 50 TCK; +STATE RESET; +// Loading devices with 'ispen' or 'bypass' instruction. +SIR 16 TDI (00e8) ; +SDR 8 TDI (d0) SMASK (ff) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'ispen' instruction. +SIR 16 TDI (00e8) ; +SDR 8 TDI (03) ; +// Loading device with 'XSC_DATA_BTC' instruction. +SIR 16 TDI (00f2) ; +SDR 32 TDI (ffffffe0) SMASK (ffffffff) TDO (00000000) MASK (00000000) ; +// Loading device with a 'ISC_PROGRAM' instruction. +SIR 16 TDI (00ea) ; +RUNTEST 120 TCK; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +STATE RESET; +// Loading devices with 'ispen' or 'bypass' instruction. +SIR 16 TDI (00e8) ; +SDR 8 TDI (d0) SMASK (ff) ; +--END + +$CUTLINES(0)$ + +--LITERAL START +// Loading device with a 'ISC_DATA_SHIFT' instruction. +SIR 16 TDI (00ed) ; +SDR 256 TDI ($DATA_INV(32)$) SMASK ($FILL(0xFF,32)$) ; +// Loading device with a 'ISC_ADDRESS_SHIFT' instruction. +SIR 16 TDI (00eb) ; +SDR 24 TDI (000000) SMASK (ffffff) ; +// Loading device with a 'ISC_PROGRAM' instruction. +SIR 16 TDI (00ea) ; +RUNTEST 1000 TCK; +// Loading device with a 'ISC_DATA_SHIFT' instruction. +SIR 16 TDI (00ed) ; +SDR 256 TDI ($DATA_INV(32)$) SMASK ($FILL(0xFF,32)$) ; +// Loading device with a 'ISC_PROGRAM' instruction. +SIR 16 TDI (00ea) ; +RUNTEST 1000 TCK; +--END + +--REPEAT START +// Loading device with a 'ISC_DATA_SHIFT' instruction. +SIR 16 TDI (00ed) ; +SDR 256 TDI ($DATA_INV(32)$) ; +// Loading device with a 'ISC_PROGRAM' instruction. +SIR 16 TDI (00ea) ; +RUNTEST 1000 TCK; +--END + +$CUTLINES(1)$ + +--LITERAL START +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'ispen' instruction. +SIR 16 TDI (00e8) ; +SDR 8 TDI (03) SMASK (ff) ; +// Loading device with a 'XSC_DATA_SUCR' instruction. +SIR 16 TDI (000e) ; +SDR 16 TDI (fffc) SMASK (ffff) TDO (0000) MASK (0000) ; +// Loading device with a 'ISC_PROGRAM' instruction. +SIR 16 TDI (00ea) ; +RUNTEST 60 TCK; +//Loading device with 'ispen' instruction. +SIR 16 TDI (00e8) ; +SDR 8 TDI (03) SMASK (ff) ; +//Loading device with 'ispen' instruction. +SIR 16 TDI (00e8) ; +SDR 8 TDI (03) ; +// Loading device witha 'XSC_DATA_CCB' instruction. +SIR 16 TDI (000c) ; +SDR 16 TDI (fff9) SMASK (ffff) TDO (0000) MASK (0000) ; +// Loading device with a 'ISC_PROGRAM' instruction. +SIR 16 TDI (00ea) ; +RUNTEST 60 TCK; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 16 TDI (00f0) ; +RUNTEST 50 TCK; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'ispen' instruction. +SIR 16 TDI (00e8) ; +SDR 8 TDI (03) SMASK (ff) ; +// Loading device with 'XSC_DATA_DONE' instruction. +SIR 16 TDI (0009) ; +SDR 8 TDI (ce) TDO (00) MASK (00) ; +// Loading device with a 'ISC_PROGRAM' instruction. +SIR 16 TDI (00ea) ; +RUNTEST 60 TCK; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'ispen' instruction. +SIR 16 TDI (00e8) ; +SDR 8 TDI (03) ; +--END + +$REWIND$ +$ADDRESS(0x0000)$ +$STEP(0x0400)$ + +--REPEAT START +// Loading device with a 'ISC_ADDRESS_SHIFT' instruction. +SIR 16 TDI (00eb) ; +SDR 24 TDI ($ADDRESS$) SMASK (ffffff) ; +// Loading device with a 'XSC_READ' instruction. +SIR 16 TDI (00ef) ; +RUNTEST 15 TCK; +SDR $BSIZE$ TDI ($FILL(0x00,BSIZEB)$) SMASK ($FILL(0xFF,BSIZEB)$) TDO ($DATA_INV(BSIZEB)$) MASK ($FILL(0xFF,BSIZEB)$) ; +--END + +--LITERAL START +// Check Device status. +SIR 16 TDI (00e3) ; +SDR 8 TDI (00) SMASK (ff) TDO (36) MASK (7f) ; +//Loading device with 'conld' instruction. +SIR 16 TDI (00f0) ; +RUNTEST 50 TCK; +//Loading device with 'ispen' instruction. +SIR 16 TDI (00e8) ; +SDR 8 TDI (03) ; +//Loading device with 'conld' instruction. +SIR 16 TDI (00f0) ; +RUNTEST 50 TCK; +// Loading device with a 'config' instruction. +SIR 16 TDI (00ee) TDO (0000) MASK (0000) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +SIR 16 TDI (ffff) ; +SDR 1 TDI (00) SMASK (01) ; +--END diff --git a/fpga/xilinx/programmer/bit2svf/usage.txt b/fpga/xilinx/programmer/bit2svf/usage.txt new file mode 100644 index 0000000..f04266d --- /dev/null +++ b/fpga/xilinx/programmer/bit2svf/usage.txt @@ -0,0 +1,63 @@ +Copyright (c) 2005 Juan Pablo D. Borgna <jpborgna en inti gov ar> +Copyright (c) 2005 Instituto Nacional de Tecnología Industrial +Copyright (c) 2001, 2002 by David Sullins +Licese: GPL por bitfile.c + + +jbit: +----- + This script is a shortcut for programming a device using the GNU JTAG + program with a .bit file. It generates and deletes the intermediate SVF + file. It can read a personal config, refer to jbitrc_sample.txt. + +Sample: + +bit2svf$ ./jbit ejemplo_prom.bit XC18V01 + +jbit - bit2svf/jtag short cut - v1.0 +Copyright (c) 2005 Juan Pablo D. Borgna/INTI + +Creando archivo temporario /tmp/bit2svf.tmp + +bit2svf - SVF file generator - v1.0 +Copyright (c) 2005 Juan Pablo D. Borgna/INTI + + +Bit file created on 2004/08/25 at 13:43:18. +Created from file ejemplo.ncd for Xilinx part 2s100pq208. +Bitstream length is 97652 bytes. + +Process finsished sucefully. +Creado ok +Invocando /home/jpablo/usr/bin/jtag +Initializing Xilinx DLC5 JTAG Parallel Cable III on ppdev port /dev/parport0 +IR length: 8 +Chain length: 1 +Device Id: 00000101000000100100000010010011 + Manufacturer: Xilinx + Part: XC18V01-SO20 + Stepping: 1 + Filename: /home/jpablo/usr//share/jtag/xilinx/xc18v01-so20/xc18v01-so20 +Warning svf: checking of TDO not supported for SIR. + This message is only displayed once. +Borrando temporarios.. +Que tenga un buen dia :-) + + + +bit2svf: +-------- + This program generates a SVF file wich using the program JTAG it is + possible to program a FPGA or PROM. + +Sample: + +bit2svf$ ./bit2svf ejemplo_prom.bit ejemplo_prom.svf XC18V01 + +Bit file created on 2004/08/25 at 13:43:18. +Created from file ejemplo.ncd for Xilinx part 2s100pq208. +Bitstream length is 97652 bytes. + +Process finsished sucefully. + + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/COPYING b/fpga/xilinx/programmer/dependencies/libxsvf/COPYING new file mode 100644 index 0000000..daa098d --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/COPYING @@ -0,0 +1,18 @@ + +Lib(X)SVF - A library for implementing SVF and XSVF JTAG players + +Copyright (C) 2009 RIEGL Research ForschungsGmbH +Copyright (C) 2009 Clifford Wolf <clifford@clifford.at> + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/Makefile b/fpga/xilinx/programmer/dependencies/libxsvf/Makefile new file mode 100644 index 0000000..396c1b8 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/Makefile @@ -0,0 +1,83 @@ +# Lib(X)SVF - A library for implementing SVF and XSVF JTAG players +# +# Copyright (C) 2009 RIEGL Research ForschungsGmbH +# Copyright (C) 2009 Clifford Wolf <clifford@clifford.at> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +#AR = ppc_6xx-ar +#RANLIB = ppc_6xx-ranlib +#CC = ppc_6xx-gcc +#CFLAGS += -DXSVFTOOL_RLMS_VLINE + +AR = ar +RANLIB = ranlib +CC = gcc + +CFLAGS += -Wall -Os -ggdb -MD +#CFLAGS += -Wextra -Wno-unused-parameter -Werror + +help: + @echo "" + @echo "Usage:" + @echo "" + @echo " $(MAKE) libxsvf.a" + @echo " .... build only the library" + @echo "" + @echo " $(MAKE) xsvftool-gpio" + @echo " .... build the library and xsvftool-gpio" + @echo "" + @echo " $(MAKE) xsvftool-ft232h" + @echo " .... build the library and xsvftool-ft232h" + @echo "" + @echo " $(MAKE) xsvftool-xpcu" + @echo " .... build the library and xsvftool-xpcu" + @echo "" + @echo " $(MAKE) all" + @echo " .... build the library and all examples" + @echo "" + @echo " $(MAKE) install" + @echo " .... install everything in /usr/local/" + @echo "" + +all: libxsvf.a xsvftool-gpio xsvftool-ft232h xsvftool-xpcu + +install: all + install -Dt /usr/local/bin/ xsvftool-gpio xsvftool-ft232h xsvftool-xpcu + install -Dt /usr/local/include/ -m 644 libxsvf.h + install -Dt /usr/local/lib/ -m 644 libxsvf.a + +libxsvf.a: tap.o statename.o memname.o svf.o xsvf.o scan.o play.o + rm -f libxsvf.a + $(AR) qc $@ $^ + $(RANLIB) $@ + +xsvftool-gpio: libxsvf.a xsvftool-gpio.o + +xsvftool-ft232h: LDLIBS+=-lftdi -lm +xsvftool-ft232h: LDFLAGS+=-pthread +xsvftool-ft232h.o: CFLAGS+=-pthread +xsvftool-ft232h: libxsvf.a xsvftool-ft232h.o + +xsvftool-xpcu: libxsvf.a xsvftool-xpcu.src/*.c xsvftool-xpcu.src/*.h \ + xsvftool-xpcu.src/*.v xsvftool-xpcu.src/*.ucf + $(MAKE) -C xsvftool-xpcu.src + cp xsvftool-xpcu.src/xsvftool-xpcu xsvftool-xpcu + +clean: + $(MAKE) -C xsvftool-xpcu.src clean + rm -f xsvftool-gpio xsvftool-ft232h xsvftool-xpcu + rm -f libxsvf.a *.o *.d + +-include *.d + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/README b/fpga/xilinx/programmer/dependencies/libxsvf/README new file mode 100644 index 0000000..60d5aeb --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/README @@ -0,0 +1,365 @@ + +Lib(X)SVF - A library for implementing SVF and XSVF JTAG players +****************************************************************** + +Please check the subversion repository for updates: +http://svn.clifford.at/libxsvf/trunk/ + +You also might want to have a look at the project homepage: +http://www.clifford.at/libxsvf/ + +In papers and reports, please refer to Lib(X)SVF as follows: "Clifford Wolf, +Lib(X)SVF: A library for implementing SVF and XSVF JTAG players. +http://www.clifford.at/libxsvf/", e.g. using the following BibTeX code: + +@MISC{LibXSVF, + author = {Clifford Wolf}, + title = {Lib(X)SVF: A library for implementing SVF and XSVF JTAG players}, + howpublished = "\url{http://www.clifford.at/libxsvf/}" +} + +Please send bug reports and fixes to <clifford@clifford.at>. + + +Copyright and Disclaimer +------------------------ + +Copyright (C) 2009 RIEGL Research ForschungsGmbH +Copyright (C) 2009 Clifford Wolf <clifford@clifford.at> + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Introduction +------------ + +JTAG (IEEE 1149.1, aka "Boundary Scan", [1], [2]) is a standard IC +testing, debugging and programming port. + +SVF (Serial Vector Format, [3], [4]) is a file format for storing the +patterns that should be sent to the JTAG interface, as well as the +expected response. It is used as an exchange format between programms +that generate the JTAG input/output patterns and devices that can +physically talk to a JTAG interface. + +XSVF (Xilinx Serial Vector Format, [5]) is a binary variant of the SVF +file format, optimized but not limited to programming Xilinx FPGA and +CPLD devices. + +Often one wants to use an embedded host processor or microcontroller +to access the JTAG interface on an embedded device instead of using +an external JTAG probe. This library can be used to implement such a +solution. In addition to playing SVF and XSVF files this library is +also capable of scanning the devices in the JTAG chain. + +Lib(X)SVF is free software licensed under the ISC license (a licence +that is functionally equivalent to the 2-clause BSD license). + +[1] http://en.wikipedia.org/wiki/JTAG +[2] http://www.fpga4fun.com/JTAG.html +[3] http://en.wikipedia.org/wiki/Serial_Vector_Format +[4] http://www.asset-intertech.com/support/svf.pdf +[5] http://www.xilinx.com/bvdocs/appnotes/xapp503.pdf + + +Limitations and non-standard extensions +--------------------------------------- + +The SVF commands 'PIO' and 'PIOMAP' are unsupported. Any use of this +commands in an SVF input file is reported as error. + +The SVF 'RUNTEST' command is implemented in a limited manner: The +'MAXIMUM' time parameter is ignored. Combining 'SCK' with a time +parameter results in first executing the specified number of clock +pulses followed by a delay of the specified timespan, instead of +performing the clock cycles and the delay in parallel. + +The SVF commands 'HDR', 'HIR', 'SDR', 'SIR', 'TDR' and 'TIR' support +an additional non-standard 'RMASK' parameter. This is a mask for the +TDO bits, simmilar to the standard 'MASK' parameter. All TDO bits +marked using a '1' in 'RMASK' are reported back to the host application +using the the ret_tdo() callback function. This can be used to read +data (such as device serial numbers) using JTAG by providing SVF +templates. + + +Using and Porting +----------------- + +The library itself is written in plain C and does not depend on any +library calls or headers, not even from the standard C library. So it +can be ported easily even to restricted environment, such as embedded +systems. + +So far the libary has only been tested on 32 bit hosts. Using it on +16 bit processors might not be possible without performing some minor +fixes in the code. + +The program 'xsvftool-gpio' (see xsvftool-gpio.c) is a good example +of how to use the library. Please have a look at this program first. + +Note: See 'Host accessor macros' below for an alternative way of +integrating libxsvf into your host environment. + +The host application must provide an libxsvf_host struct as defined +in libxsvf.h. This struct contains some function pointers that must +be set to implementations of the following functions: + + int setup(struct libxsvf_host *h); + + This function is called by libxsvf to setup/initialize the + jtag interface. It is executed before any other libxsvf_host + callback function is called. + + This function should return 0 when setting up the jtag + interface went fine and -1 on an error. + + int shutdown(struct libxsvf_host *h); + + This function is called by libxsvf to shutdown the jtag + interface. No other libxsvf_host callback function will + be called after this function has been executed. + + This function should return 0 when shutting down the jtag + interface went fine and -1 on an error. + + void udelay(struct libxsvf_host *h, long usecs, int tms, long num_tck) + + A function that delays execution for at least the specified + number of microseconds. + + When the 'num_tck' argument is not 0 also the specified number tck + clock cycles (i.e. 1-0-1 transitions) must be generated with TMS set + to the value specified in the 'tms' argument. + + A simple implementation may perform the delay and the clock cycles + after another instead of parallel. This only has an impact on the + runtime of the player, not on its functionality. + + int getbyte(struct libxsvf_host *h); + + A function that returns the next byte from the input file + or -1 on end of file. + + int sync(struct libxsvf_host *h); + + This function is only needed when writing bindings for an asynchronous + hardware interface (see 'Using libxsvf with asynchronous interfaces' below). + + This function is optional and the function pointer may be set to a NULL + pointer on implementations using the simple synchronous interface. + + void pulse_tck(struct libxsvf_host *h, int tms, int tdi, int tdo, int rmask, int sync) + + This is the main JTAG I/O callback function. + It must perform the following tasks: + + * Set the tms line to the value specified in the 'tms' argument. + + * Set the tdi line to the value specified in the 'tdi' argument. + This argument may be '-1' to indicate that the value of the tdi + line is not important. In this case the tdi line may be set to + any value or may be left unchanged. + + * Create a negative pulse (1-0-1) on the JTAG TCK line. + + * Check the tdo line against the should-be value specified in + the 'tdo' argument. This argument may be '-1' to indicate that + the value of the tdo line doesn't need to be checked. + + * Store the current tdo value if the 'rmask' value is set to '1'. + This step may be ignored if the RMASK feature (see "Limitations + and non-standard extensions" above) is not used. + + The function must return the current value of the tdo line, or -1 on + a TDO-mismatch-error. + + A simple implementation of this function would look like this: + + --snip-- + int my_pulse_tck(struct libxsvf_host *h, int tms, int tdi, int tdo, int rmask, int sync) { + int line_tdo; + setPort(TMS, tms); + if (tdi >= 0) + setPort(TDI, tdi); + setPort(TCK, 0); + setPort(TCK, 1); + line_tdo = getPort(TDO); + return tdo < 0 || line_tdo == tdo ? line_tdo : -1; + } + --snap-- + + The 'sync' argument can safely be ignored unless you are writing + bindings for an asynchronous hardware interface (see 'Using libxsvf + with asynchronous interfaces' below). + + void pulse_sck(struct libxsvf_host *h); + + A function to create a pulse on the JTAG SCK line. + + This function is optional and the function pointer may + be set to a NULL pointer on implementations without an + SCK line. In this cases an SVF 'RUNTEST n SCK' command + has no effect. + + void set_trst(struct libxsvf_host *h, int v); + + A function to set the JTAG TRST line to the specified + value: + 1 ... drive the line high + 0 ... drive the line low + -1 ... do not drive the line (high impedance) + -2 ... got SVF 'TRST ABSENT' command + + This function is optional and the function pointer may + be set to a NULL pointer on implementations without an + TRST line. In this cases an SVF 'TRST' command has no + effect. + + int set_frequency(struct libxsvf_host *h, int v); + + A function to set the JTAG CLK frequency to the specified + value in Hz. This function should return 0 when setting + the frequency was successful and -1 on error. + + This function pointer is optional (may be set to NULL). + In this case an SVF FREQUENCY command always results in + an error. + + void report_tapstate(struct libxsvf_host *h); + + This function is called whenever the state of the TAP + state machine has changed. The TAP state can be read + using the h->tap_state enum. + + This function pointer is optional (may be set to NULL) + and is for debugging purposes only. + + void report_device(struct libxsvf_host *h, unsigned long idcode); + + This function is called in scan mode for each device found + in the JTAG chain. + + This function pointer is optional (may be set to NULL) + and is only called in the SCAN mode. + + void report_status(struct libxsvf_host *h, const char *message); + + This function is called each time before an SVF or XSVF + command is executed. + + This function pointer is optional (may be set to NULL) + and is for debugging purposes only. + + void report_error(struct libxsvf_host *h, const char *file, int line, const char *message); + + This function is called whenever an error is detected + in libxsvf. It is not optional and should provide a + way to notify a user about the error. + + void *realloc(struct libxsvf_host *h, void *ptr, int size, enum libxsvf_mem which); + + This function must provide a way to allocate dynamic + memory. In cases where there is a standard c library + it may be a simple wrapper for the realloc() function. + + The xsvftool-gpio command line option '-r' can be used to + auto-generate a realloc function for static buffers, based + on the requirements from an example svf or xsvf file. + Example given: + + ./xsvftool-gpio -r my_host_realloc -s demo.svf + + (Re-)allocation may fail. In this cases a NULL pointer + must be returned. The library then generates an error, + frees all resources and returns. + +After such a struct is prepared, the function libxsvf_play() +can be called, passing the libxsvf_host struct as first and the +mode (LIBXSVF_MODE_SVF, LIBXSVF_MODE_XSVF or LIBXSVF_MODE_SCAN) +as second argument. + +Example given: + + if (libxsvf_play(&h, LIBXSVF_MODE_XSVF) < 0) { + /* Error handling */ + } + +The libxsvf_host struct is passed back to all callback functions +and the 'user_data' member (a void pointer) can be used to pass +additional data (such as a file handle) to the callbacks. + + +Host accessor macros +-------------------- + +Despite its great flexibility, APIs based on callback functions +as the one used by libxsvf are unusual in the embedded community. +Basically because they introduce a slight overhead in the memory +footprint. + +For those who prefer a more direct integration with their host +environments libxsvf also provides 'host accessor macros' in the +libxsvf.h header file. Simply remove the callback functions from +the libxsvf_host struct and modify the LIBXSVF_HOST_ macros +to fit your needs. + + +Using libxsvf with asynchronous interfaces +------------------------------------------ + +This library has been designed at first for a register mapped bit banging +interface as it can be found on many microcontrollers or host CPUs. But +some interfaces might require the JTAG data to be send and recivied in +blocks and/or asynchronously. This is not trivial with this library because the +pulse_tck() callback function is expected to transfer one single bit at a time. +The solution to this is to buffer all data sent to pulse_tck() and always +return a valid status (i.e. 'tdo < 0 ? 1 : tdo') and do the transfers when the +buffer is full or when an interface shutdown is requested. + +However, some JTAG transaction must be performed synchronously (e.g. the last +transaction in an XSVF XREPEAT data shift. In this cases pulse_tck() is called +with the 'sync' argument set to 1. The pulse_tck() function must then perform +all buffered JTAG transactions and return the actual tdo value for this last +JTAG transaction or -1 if an error was detected before. + +An asynchronous interface binding also must implement the sync() function. It +must perform all buffered JTAG transactions and return -1 if a TDO error was +detected an 0 otherwise. + +Note: The returncode of pulse_tck is not checked in all conditions! So whenever +an error is detected all further calls to pulse_tck() up to and including +the next call of pulse_tck() with the 'sync' argument set or the next call to +sync() or shutdown() must return -1. + +Have a look at the example program 'xsvftool-ft232h.c' for a reference +implementation. + + +Stripping down libxsvf +---------------------- + +It is possible to disable SVF, XSVF and/or SCAN support by setting the +LIBXSVF_WITHOUT_SVF, LIBXSVF_WITHOUT_XSVF or LIBXSVF_WITHOUT_SCAN +defines. In this cases one would not want to link against svf.o, xsvf.o +or scan.o. + +One does not need to link agains statename.o and memname.o if the +libxsvf_state2str() and libxsvf_mem2str() functions are not needed. +Usually this functions are used for debugging purposes only. + +It is possible to modify the LIBXSVF_HOST_REPORT_STATUS() and +LIBXSVF_HOST_REPORT_ERROR() macros in libxsvf.h to be empty +instructions. This drastically reduces the number of string +constants in the code. + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/libxsvf.h b/fpga/xilinx/programmer/dependencies/libxsvf/libxsvf.h new file mode 100644 index 0000000..e3ddf12 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/libxsvf.h @@ -0,0 +1,139 @@ +/* + * Lib(X)SVF - A library for implementing SVF and XSVF JTAG players + * + * Copyright (C) 2009 RIEGL Research ForschungsGmbH + * Copyright (C) 2009 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef LIBXSVF_H +#define LIBXSVF_H + +enum libxsvf_mode { + LIBXSVF_MODE_SVF = 1, + LIBXSVF_MODE_XSVF = 2, + LIBXSVF_MODE_SCAN = 3 +}; + +enum libxsvf_tap_state { + /* Special States */ + LIBXSVF_TAP_INIT = 0, + LIBXSVF_TAP_RESET = 1, + LIBXSVF_TAP_IDLE = 2, + /* DR States */ + LIBXSVF_TAP_DRSELECT = 3, + LIBXSVF_TAP_DRCAPTURE = 4, + LIBXSVF_TAP_DRSHIFT = 5, + LIBXSVF_TAP_DREXIT1 = 6, + LIBXSVF_TAP_DRPAUSE = 7, + LIBXSVF_TAP_DREXIT2 = 8, + LIBXSVF_TAP_DRUPDATE = 9, + /* IR States */ + LIBXSVF_TAP_IRSELECT = 10, + LIBXSVF_TAP_IRCAPTURE = 11, + LIBXSVF_TAP_IRSHIFT = 12, + LIBXSVF_TAP_IREXIT1 = 13, + LIBXSVF_TAP_IRPAUSE = 14, + LIBXSVF_TAP_IREXIT2 = 15, + LIBXSVF_TAP_IRUPDATE = 16 +}; + +enum libxsvf_mem { + LIBXSVF_MEM_XSVF_TDI_DATA = 0, + LIBXSVF_MEM_XSVF_TDO_DATA = 1, + LIBXSVF_MEM_XSVF_TDO_MASK = 2, + LIBXSVF_MEM_XSVF_ADDR_MASK = 3, + LIBXSVF_MEM_XSVF_DATA_MASK = 4, + LIBXSVF_MEM_SVF_COMMANDBUF = 5, + LIBXSVF_MEM_SVF_SDR_TDI_DATA = 6, + LIBXSVF_MEM_SVF_SDR_TDI_MASK = 7, + LIBXSVF_MEM_SVF_SDR_TDO_DATA = 8, + LIBXSVF_MEM_SVF_SDR_TDO_MASK = 9, + LIBXSVF_MEM_SVF_SDR_RET_MASK = 10, + LIBXSVF_MEM_SVF_SIR_TDI_DATA = 11, + LIBXSVF_MEM_SVF_SIR_TDI_MASK = 12, + LIBXSVF_MEM_SVF_SIR_TDO_DATA = 13, + LIBXSVF_MEM_SVF_SIR_TDO_MASK = 14, + LIBXSVF_MEM_SVF_SIR_RET_MASK = 15, + LIBXSVF_MEM_SVF_HDR_TDI_DATA = 16, + LIBXSVF_MEM_SVF_HDR_TDI_MASK = 17, + LIBXSVF_MEM_SVF_HDR_TDO_DATA = 18, + LIBXSVF_MEM_SVF_HDR_TDO_MASK = 19, + LIBXSVF_MEM_SVF_HDR_RET_MASK = 20, + LIBXSVF_MEM_SVF_HIR_TDI_DATA = 21, + LIBXSVF_MEM_SVF_HIR_TDI_MASK = 22, + LIBXSVF_MEM_SVF_HIR_TDO_DATA = 23, + LIBXSVF_MEM_SVF_HIR_TDO_MASK = 24, + LIBXSVF_MEM_SVF_HIR_RET_MASK = 25, + LIBXSVF_MEM_SVF_TDR_TDI_DATA = 26, + LIBXSVF_MEM_SVF_TDR_TDI_MASK = 27, + LIBXSVF_MEM_SVF_TDR_TDO_DATA = 28, + LIBXSVF_MEM_SVF_TDR_TDO_MASK = 29, + LIBXSVF_MEM_SVF_TDR_RET_MASK = 30, + LIBXSVF_MEM_SVF_TIR_TDI_DATA = 31, + LIBXSVF_MEM_SVF_TIR_TDI_MASK = 32, + LIBXSVF_MEM_SVF_TIR_TDO_DATA = 33, + LIBXSVF_MEM_SVF_TIR_TDO_MASK = 34, + LIBXSVF_MEM_SVF_TIR_RET_MASK = 35, + LIBXSVF_MEM_NUM = 36 +}; + +struct libxsvf_host { + int (*setup)(struct libxsvf_host *h); + int (*shutdown)(struct libxsvf_host *h); + void (*udelay)(struct libxsvf_host *h, long usecs, int tms, long num_tck); + int (*getbyte)(struct libxsvf_host *h); + int (*sync)(struct libxsvf_host *h); + int (*pulse_tck)(struct libxsvf_host *h, int tms, int tdi, int tdo, int rmask, int sync); + void (*pulse_sck)(struct libxsvf_host *h); + void (*set_trst)(struct libxsvf_host *h, int v); + int (*set_frequency)(struct libxsvf_host *h, int v); + void (*report_tapstate)(struct libxsvf_host *h); + void (*report_device)(struct libxsvf_host *h, unsigned long idcode); + void (*report_status)(struct libxsvf_host *h, const char *message); + void (*report_error)(struct libxsvf_host *h, const char *file, int line, const char *message); + void *(*realloc)(struct libxsvf_host *h, void *ptr, int size, enum libxsvf_mem which); + enum libxsvf_tap_state tap_state; + void *user_data; +}; + +int libxsvf_play(struct libxsvf_host *, enum libxsvf_mode mode); +const char *libxsvf_state2str(enum libxsvf_tap_state tap_state); +const char *libxsvf_mem2str(enum libxsvf_mem which); + +/* Internal API */ +int libxsvf_svf(struct libxsvf_host *h); +int libxsvf_xsvf(struct libxsvf_host *h); +int libxsvf_scan(struct libxsvf_host *h); +int libxsvf_tap_walk(struct libxsvf_host *, enum libxsvf_tap_state); + +/* Host accessor macros (see README) */ +#define LIBXSVF_HOST_SETUP() h->setup(h) +#define LIBXSVF_HOST_SHUTDOWN() h->shutdown(h) +#define LIBXSVF_HOST_UDELAY(_usecs, _tms, _num_tck) h->udelay(h, _usecs, _tms, _num_tck) +#define LIBXSVF_HOST_GETBYTE() h->getbyte(h) +#define LIBXSVF_HOST_SYNC() (h->sync ? h->sync(h) : 0) +#define LIBXSVF_HOST_PULSE_TCK(_tms, _tdi, _tdo, _rmask, _sync) h->pulse_tck(h, _tms, _tdi, _tdo, _rmask, _sync) +#define LIBXSVF_HOST_PULSE_SCK() do { if (h->pulse_sck) h->pulse_sck(h); } while (0) +#define LIBXSVF_HOST_SET_TRST(_v) do { if (h->set_trst) h->set_trst(h, _v); } while (0) +#define LIBXSVF_HOST_SET_FREQUENCY(_v) (h->set_frequency ? h->set_frequency(h, _v) : -1) +#define LIBXSVF_HOST_REPORT_TAPSTATE() do { if (h->report_tapstate) h->report_tapstate(h); } while (0) +#define LIBXSVF_HOST_REPORT_DEVICE(_v) do { if (h->report_device) h->report_device(h, _v); } while (0) +#define LIBXSVF_HOST_REPORT_STATUS(_msg) do { if (h->report_status) h->report_status(h, _msg); } while (0) +#define LIBXSVF_HOST_REPORT_ERROR(_msg) h->report_error(h, __FILE__, __LINE__, _msg) +#define LIBXSVF_HOST_REALLOC(_ptr, _size, _which) h->realloc(h, _ptr, _size, _which) + +#endif + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/memname.c b/fpga/xilinx/programmer/dependencies/libxsvf/memname.c new file mode 100644 index 0000000..0cc3f31 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/memname.c @@ -0,0 +1,65 @@ +/* + * Lib(X)SVF - A library for implementing SVF and XSVF JTAG players + * + * Copyright (C) 2009 RIEGL Research ForschungsGmbH + * Copyright (C) 2009 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "libxsvf.h" + +const char *libxsvf_mem2str(enum libxsvf_mem which) +{ +#define X(_w, _t) if (which == LIBXSVF_MEM_ ## _w) return #_t; + X(XSVF_TDI_DATA, xsvf_tdi_data) + X(XSVF_TDO_DATA, xsvf_tdo_data) + X(XSVF_TDO_MASK, xsvf_tdo_mask) + X(XSVF_ADDR_MASK, xsvf_addr_mask) + X(XSVF_DATA_MASK, xsvf_data_mask) + X(SVF_COMMANDBUF, svf_commandbuf) + X(SVF_HDR_TDI_DATA, svf_hdr_tdi_data) + X(SVF_HDR_TDI_MASK, svf_hdr_tdi_mask) + X(SVF_HDR_TDO_DATA, svf_hdr_tdo_data) + X(SVF_HDR_TDO_MASK, svf_hdr_tdo_mask) + X(SVF_HDR_RET_MASK, svf_hdr_ret_mask) + X(SVF_HIR_TDI_DATA, svf_hir_tdi_data) + X(SVF_HIR_TDI_MASK, svf_hir_tdi_mask) + X(SVF_HIR_TDO_DATA, svf_hir_tdo_data) + X(SVF_HIR_TDO_MASK, svf_hir_tdo_mask) + X(SVF_HIR_RET_MASK, svf_hir_ret_mask) + X(SVF_TDR_TDI_DATA, svf_tdr_tdi_data) + X(SVF_TDR_TDI_MASK, svf_tdr_tdi_mask) + X(SVF_TDR_TDO_DATA, svf_tdr_tdo_data) + X(SVF_TDR_TDO_MASK, svf_tdr_tdo_mask) + X(SVF_TDR_RET_MASK, svf_tdr_ret_mask) + X(SVF_TIR_TDI_DATA, svf_tir_tdi_data) + X(SVF_TIR_TDI_MASK, svf_tir_tdi_mask) + X(SVF_TIR_TDO_DATA, svf_tir_tdo_data) + X(SVF_TIR_TDO_MASK, svf_tir_tdo_mask) + X(SVF_TIR_RET_MASK, svf_tir_ret_mask) + X(SVF_SDR_TDI_DATA, svf_sdr_tdi_data) + X(SVF_SDR_TDI_MASK, svf_sdr_tdi_mask) + X(SVF_SDR_TDO_DATA, svf_sdr_tdo_data) + X(SVF_SDR_TDO_MASK, svf_sdr_tdo_mask) + X(SVF_SDR_RET_MASK, svf_sdr_ret_mask) + X(SVF_SIR_TDI_DATA, svf_sir_tdi_data) + X(SVF_SIR_TDI_MASK, svf_sir_tdi_mask) + X(SVF_SIR_TDO_DATA, svf_sir_tdo_data) + X(SVF_SIR_TDO_MASK, svf_sir_tdo_mask) + X(SVF_SIR_RET_MASK, svf_sir_ret_mask) +#undef X + return (void*)0; +} + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/play.c b/fpga/xilinx/programmer/dependencies/libxsvf/play.c new file mode 100644 index 0000000..e57c01e --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/play.c @@ -0,0 +1,72 @@ +/* + * Lib(X)SVF - A library for implementing SVF and XSVF JTAG players + * + * Copyright (C) 2009 RIEGL Research ForschungsGmbH + * Copyright (C) 2009 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "libxsvf.h" + +int libxsvf_play(struct libxsvf_host *h, enum libxsvf_mode mode) +{ + int rc = -1; + + h->tap_state = LIBXSVF_TAP_INIT; + if (LIBXSVF_HOST_SETUP() < 0) { + LIBXSVF_HOST_REPORT_ERROR("Setup of JTAG interface failed."); + return -1; + } + + if (mode == LIBXSVF_MODE_SVF) { +#ifdef LIBXSVF_WITHOUT_SVF + LIBXSVF_HOST_REPORT_ERROR("SVF support in libxsvf is disabled."); +#else + rc = libxsvf_svf(h); +#endif + } + + if (mode == LIBXSVF_MODE_XSVF) { +#ifdef LIBXSVF_WITHOUT_XSVF + LIBXSVF_HOST_REPORT_ERROR("XSVF support in libxsvf is disabled."); +#else + rc = libxsvf_xsvf(h); +#endif + } + + if (mode == LIBXSVF_MODE_SCAN) { +#ifdef LIBXSVF_WITHOUT_SCAN + LIBXSVF_HOST_REPORT_ERROR("SCAN support in libxsvf is disabled."); +#else + rc = libxsvf_scan(h); +#endif + } + + libxsvf_tap_walk(h, LIBXSVF_TAP_RESET); + if (LIBXSVF_HOST_SYNC() != 0 && rc >= 0 ) { + LIBXSVF_HOST_REPORT_ERROR("TDO mismatch in TAP reset. (this is not possible!)"); + rc = -1; + } + + int shutdown_rc = LIBXSVF_HOST_SHUTDOWN(); + + if (shutdown_rc < 0) { + LIBXSVF_HOST_REPORT_ERROR("Shutdown of JTAG interface failed."); + rc = rc < 0 ? rc : shutdown_rc; + } + + return rc; +} + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/scan.c b/fpga/xilinx/programmer/dependencies/libxsvf/scan.c new file mode 100644 index 0000000..cb24e56 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/scan.c @@ -0,0 +1,58 @@ +/* + * Lib(X)SVF - A library for implementing SVF and XSVF JTAG players + * + * Copyright (C) 2009 RIEGL Research ForschungsGmbH + * Copyright (C) 2009 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "libxsvf.h" + +int libxsvf_scan(struct libxsvf_host *h) +{ + int i, j; + + if (libxsvf_tap_walk(h, LIBXSVF_TAP_RESET) < 0) + return -1; + + if (libxsvf_tap_walk(h, LIBXSVF_TAP_DRSHIFT) < 0) + return -1; + + for (i=0; i<256; i++) + { + int bit = LIBXSVF_HOST_PULSE_TCK(0, 1, -1, 0, 1); + + if (bit < 0) + return -1; + + if (bit == 0) { + LIBXSVF_HOST_REPORT_DEVICE(0); + } else { + unsigned long idcode = 1; + for (j=1; j<32; j++) { + int bit = LIBXSVF_HOST_PULSE_TCK(0, 1, -1, 0, 1); + if (bit < 0) + return -1; + idcode |= ((unsigned long)bit) << j; + } + if (idcode == 0xffffffff) + break; + LIBXSVF_HOST_REPORT_DEVICE(idcode); + } + } + + return 0; +} + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/statename.c b/fpga/xilinx/programmer/dependencies/libxsvf/statename.c new file mode 100644 index 0000000..128fb7f --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/statename.c @@ -0,0 +1,46 @@ +/* + * Lib(X)SVF - A library for implementing SVF and XSVF JTAG players + * + * Copyright (C) 2009 RIEGL Research ForschungsGmbH + * Copyright (C) 2009 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "libxsvf.h" + +const char *libxsvf_state2str(enum libxsvf_tap_state tap_state) +{ +#define X(_s) if (tap_state == _s) return #_s; + X(LIBXSVF_TAP_INIT) + X(LIBXSVF_TAP_RESET) + X(LIBXSVF_TAP_IDLE) + X(LIBXSVF_TAP_DRSELECT) + X(LIBXSVF_TAP_DRCAPTURE) + X(LIBXSVF_TAP_DRSHIFT) + X(LIBXSVF_TAP_DREXIT1) + X(LIBXSVF_TAP_DRPAUSE) + X(LIBXSVF_TAP_DREXIT2) + X(LIBXSVF_TAP_DRUPDATE) + X(LIBXSVF_TAP_IRSELECT) + X(LIBXSVF_TAP_IRCAPTURE) + X(LIBXSVF_TAP_IRSHIFT) + X(LIBXSVF_TAP_IREXIT1) + X(LIBXSVF_TAP_IRPAUSE) + X(LIBXSVF_TAP_IREXIT2) + X(LIBXSVF_TAP_IRUPDATE) +#undef X + return "UNKOWN_STATE"; +} + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/svf.c b/fpga/xilinx/programmer/dependencies/libxsvf/svf.c new file mode 100644 index 0000000..0ba13f4 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/svf.c @@ -0,0 +1,657 @@ +/* + * Lib(X)SVF - A library for implementing SVF and XSVF JTAG players + * + * Copyright (C) 2009 RIEGL Research ForschungsGmbH + * Copyright (C) 2009 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "libxsvf.h" + +static int read_command(struct libxsvf_host *h, char **buffer_p, int *len_p) +{ + char *buffer = *buffer_p; + int braket_mode = 0; + int len = *len_p; + int p = 0; + + while (1) + { + if (len < p+10) { + len = len < 64 ? 96 : len*2; + buffer = LIBXSVF_HOST_REALLOC(buffer, len, LIBXSVF_MEM_SVF_COMMANDBUF); + *buffer_p = buffer; + *len_p = len; + if (!buffer) { + LIBXSVF_HOST_REPORT_ERROR("Allocating memory failed."); + return -1; + } + } + buffer[p] = 0; + + int ch = LIBXSVF_HOST_GETBYTE(); + if (ch < 0) { +handle_eof: + if (p == 0) + return 0; + LIBXSVF_HOST_REPORT_ERROR("Unexpected EOF."); + return -1; + } + if (ch <= ' ') { +insert_eol: + if (!braket_mode && p > 0 && buffer[p-1] != ' ') + buffer[p++] = ' '; + continue; + } + if (ch == '!') { +skip_to_eol: + while (1) { + ch = LIBXSVF_HOST_GETBYTE(); + if (ch < 0) + goto handle_eof; + if (ch < ' ' && ch != '\t') + goto insert_eol; + } + } + if (ch == '/' && p > 0 && buffer[p-1] == '/') { + p--; + goto skip_to_eol; + } + if (ch == ';') + break; + if (ch == '(') { + if (!braket_mode && p > 0 && buffer[p-1] != ' ') + buffer[p++] = ' '; + braket_mode++; + } + if (ch >= 'a' && ch <= 'z') + buffer[p++] = ch - ('a' - 'A'); + else + buffer[p++] = ch; + if (ch == ')') { + braket_mode--; + if (!braket_mode) + buffer[p++] = ' '; + } + } + return 1; +} + +static int strtokencmp(const char *str1, const char *str2) +{ + int i = 0; + while (1) { + if ((str1[i] == ' ' || str1[i] == 0) && (str2[i] == ' ' || str2[i] == 0)) + return 0; + if (str1[i] < str2[i]) + return -1; + if (str1[i] > str2[i]) + return +1; + i++; + } +} + +static int strtokenskip(const char *str1) +{ + int i = 0; + while (str1[i] != 0 && str1[i] != ' ') i++; + while (str1[i] == ' ') i++; + return i; +} + +static int token2tapstate(const char *str1) +{ +#define X(_t) if (!strtokencmp(str1, #_t)) return LIBXSVF_TAP_ ## _t; + X(RESET) + X(IDLE) + X(DRSELECT) + X(DRCAPTURE) + X(DRSHIFT) + X(DREXIT1) + X(DRPAUSE) + X(DREXIT2) + X(DRUPDATE) + X(IRSELECT) + X(IRCAPTURE) + X(IRSHIFT) + X(IREXIT1) + X(IRPAUSE) + X(IREXIT2) + X(IRUPDATE) +#undef X + return -1; +} + +struct bitdata_s { + int len, alloced_len; + int alloced_bytes; + unsigned char *tdi_data; + unsigned char *tdi_mask; + unsigned char *tdo_data; + unsigned char *tdo_mask; + unsigned char *ret_mask; + int has_tdo_data; +}; + +static void bitdata_free(struct libxsvf_host *h, struct bitdata_s *bd, int offset) +{ + LIBXSVF_HOST_REALLOC(bd->tdi_data, 0, offset+0); + LIBXSVF_HOST_REALLOC(bd->tdi_mask, 0, offset+1); + LIBXSVF_HOST_REALLOC(bd->tdo_data, 0, offset+2); + LIBXSVF_HOST_REALLOC(bd->tdo_mask, 0, offset+3); + LIBXSVF_HOST_REALLOC(bd->ret_mask, 0, offset+4); + + bd->tdi_data = (void*)0; + bd->tdi_mask = (void*)0; + bd->tdo_data = (void*)0; + bd->tdo_mask = (void*)0; + bd->ret_mask = (void*)0; +} + +static int hex(char ch) +{ + if (ch >= 'A' && ch <= 'Z') + return (ch - 'A') + 10; + if (ch >= '0' && ch <= '9') + return ch - '0'; + return 0; +} + +static const char *bitdata_parse(struct libxsvf_host *h, const char *p, struct bitdata_s *bd, int offset) +{ + int i, j; + bd->len = 0; + bd->has_tdo_data = 0; + while (*p >= '0' && *p <= '9') { + bd->len = bd->len * 10 + (*p - '0'); + p++; + } + while (*p == ' ') { + p++; + } + if (bd->len != bd->alloced_len) { + bitdata_free(h, bd, offset); + bd->alloced_len = bd->len; + bd->alloced_bytes = (bd->len+7) / 8; + } + while (*p) + { + int memnum = 0; + unsigned char **dp = (void*)0; + if (!strtokencmp(p, "TDI")) { + p += strtokenskip(p); + dp = &bd->tdi_data; + memnum = 0; + } + if (!strtokencmp(p, "TDO")) { + p += strtokenskip(p); + dp = &bd->tdo_data; + bd->has_tdo_data = 1; + memnum = 1; + } + if (!strtokencmp(p, "SMASK")) { + p += strtokenskip(p); + dp = &bd->tdi_mask; + memnum = 2; + } + if (!strtokencmp(p, "MASK")) { + p += strtokenskip(p); + dp = &bd->tdo_mask; + memnum = 3; + } + if (!strtokencmp(p, "RMASK")) { + p += strtokenskip(p); + dp = &bd->ret_mask; + memnum = 4; + } + if (!dp) + return (void*)0; + if (*dp == (void*)0) { + *dp = LIBXSVF_HOST_REALLOC(*dp, bd->alloced_bytes, offset+memnum); + } + if (*dp == (void*)0) { + LIBXSVF_HOST_REPORT_ERROR("Allocating memory failed."); + return (void*)0; + } + + unsigned char *d = *dp; + for (i=0; i<bd->alloced_bytes; i++) + d[i] = 0; + + if (*p != '(') + return (void*)0; + p++; + + int hexdigits = 0; + for (i=0; (p[i] >= 'A' && p[i] <= 'F') || (p[i] >= '0' && p[i] <= '9'); i++) + hexdigits++; + + i = bd->alloced_bytes*2 - hexdigits; + for (j=0; j<hexdigits; j++, i++, p++) { + if (i%2 == 0) { + d[i/2] |= hex(*p) << 4; + } else { + d[i/2] |= hex(*p); + } + } + + if (*p != ')') + return (void*)0; + p++; + while (*p == ' ') { + p++; + } + } +#if 0 + /* Debugging Output, needs <stdio.h> */ + printf("--- Parsed bitdata [%d] ---\n", bd->len); + if (bd->tdi_data) { + printf("TDI DATA:"); + for (i=0; i<bd->alloced_bytes; i++) + printf(" %02x", bd->tdi_data[i]); + printf("\n"); + } + if (bd->tdo_data && has_tdo_data) { + printf("TDO DATA:"); + for (i=0; i<bd->alloced_bytes; i++) + printf(" %02x", bd->tdo_data[i]); + printf("\n"); + } + if (bd->tdi_mask) { + printf("TDI MASK:"); + for (i=0; i<bd->alloced_bytes; i++) + printf(" %02x", bd->tdi_mask[i]); + printf("\n"); + } + if (bd->tdo_mask) { + printf("TDO MASK:"); + for (i=0; i<bd->alloced_bytes; i++) + printf(" %02x", bd->tdo_mask[i]); + printf("\n"); + } +#endif + return p; +} + +static int getbit(unsigned char *data, int n) +{ + return (data[n/8] & (1 << (7 - n%8))) ? 1 : 0; +} + +static int bitdata_play(struct libxsvf_host *h, struct bitdata_s *bd, enum libxsvf_tap_state estate) +{ + int left_padding = (8 - bd->len % 8) % 8; + int tdo_error = 0; + int tms = 0; + int i; + + for (i=bd->len+left_padding-1; i >= left_padding; i--) { + if (i == left_padding && h->tap_state != estate) { + h->tap_state++; + tms = 1; + } + int tdi = -1; + if (bd->tdi_data) { + if (!bd->tdi_mask || getbit(bd->tdi_mask, i)) + tdi = getbit(bd->tdi_data, i); + } + int tdo = -1; + if (bd->tdo_data && bd->has_tdo_data && (!bd->tdo_mask || getbit(bd->tdo_mask, i))) + tdo = getbit(bd->tdo_data, i); + int rmask = bd->ret_mask && getbit(bd->ret_mask, i); + if (LIBXSVF_HOST_PULSE_TCK(tms, tdi, tdo, rmask, 0) < 0) + tdo_error = 1; + } + + if (tms) + LIBXSVF_HOST_REPORT_TAPSTATE(); + + if (!tdo_error) + return 0; + + LIBXSVF_HOST_REPORT_ERROR("TDO mismatch."); + return -1; +} + +int libxsvf_svf(struct libxsvf_host *h) +{ + char *command_buffer = (void*)0; + int command_buffer_len = 0; + int rc, i; + + struct bitdata_s bd_hdr = { 0, 0, 0, (void*)0, (void*)0, (void*)0, (void*)0, (void*)0 }; + struct bitdata_s bd_hir = { 0, 0, 0, (void*)0, (void*)0, (void*)0, (void*)0, (void*)0 }; + struct bitdata_s bd_tdr = { 0, 0, 0, (void*)0, (void*)0, (void*)0, (void*)0, (void*)0 }; + struct bitdata_s bd_tir = { 0, 0, 0, (void*)0, (void*)0, (void*)0, (void*)0, (void*)0 }; + struct bitdata_s bd_sdr = { 0, 0, 0, (void*)0, (void*)0, (void*)0, (void*)0, (void*)0 }; + struct bitdata_s bd_sir = { 0, 0, 0, (void*)0, (void*)0, (void*)0, (void*)0, (void*)0 }; + + int state_endir = LIBXSVF_TAP_IDLE; + int state_enddr = LIBXSVF_TAP_IDLE; + int state_run = LIBXSVF_TAP_IDLE; + int state_endrun = LIBXSVF_TAP_IDLE; + + while (1) + { + rc = read_command(h, &command_buffer, &command_buffer_len); + + if (rc <= 0) + break; + + const char *p = command_buffer; + + LIBXSVF_HOST_REPORT_STATUS(command_buffer); + + if (!strtokencmp(p, "ENDIR")) { + p += strtokenskip(p); + state_endir = token2tapstate(p); + if (state_endir < 0) + goto syntax_error; + p += strtokenskip(p); + goto eol_check; + } + + if (!strtokencmp(p, "ENDDR")) { + p += strtokenskip(p); + state_enddr = token2tapstate(p); + if (state_endir < 0) + goto syntax_error; + p += strtokenskip(p); + goto eol_check; + } + + if (!strtokencmp(p, "FREQUENCY")) { + unsigned long number = 0; + int exp = 0; + p += strtokenskip(p); + if (*p < '0' || *p > '9') + goto syntax_error; + while (*p >= '0' && *p <= '9') { + number = number*10 + (*p - '0'); + p++; + } + if(*p == 'E' || *p == 'e') { + p++; + while (*p >= '0' && *p <= '9') { + exp = exp*10 + (*p - '0'); + p++; + } + for(i=0; i<exp; i++) + number *= 10; + } + while (*p == ' ') { + p++; + } + p += strtokenskip(p); + if (LIBXSVF_HOST_SET_FREQUENCY(number) < 0) { + LIBXSVF_HOST_REPORT_ERROR("FREQUENCY command failed!"); + goto error; + } + goto eol_check; + } + + if (!strtokencmp(p, "HDR")) { + p += strtokenskip(p); + p = bitdata_parse(h, p, &bd_hdr, LIBXSVF_MEM_SVF_HDR_TDI_DATA); + if (!p) + goto syntax_error; + goto eol_check; + } + + if (!strtokencmp(p, "HIR")) { + p += strtokenskip(p); + p = bitdata_parse(h, p, &bd_hir, LIBXSVF_MEM_SVF_HIR_TDI_DATA); + if (!p) + goto syntax_error; + goto eol_check; + } + + if (!strtokencmp(p, "PIO") || !strtokencmp(p, "PIOMAP")) { + goto unsupported_error; + } + + if (!strtokencmp(p, "RUNTEST")) { + p += strtokenskip(p); + int tck_count = -1; + int sck_count = -1; + int min_time = -1; + int max_time = -1; + while (*p) { + int got_maximum = 0; + if (!strtokencmp(p, "MAXIMUM")) { + p += strtokenskip(p); + got_maximum = 1; + } + int got_endstate = 0; + if (!strtokencmp(p, "ENDSTATE")) { + p += strtokenskip(p); + got_endstate = 1; + } + int st = token2tapstate(p); + if (st >= 0) { + p += strtokenskip(p); + if (got_endstate) + state_endrun = st; + else + state_run = st; + continue; + } + if (*p < '0' || *p > '9') + goto syntax_error; + int number = 0; + int exp = 0, expsign = 1; + int number_e6, exp_e6; + while (*p >= '0' && *p <= '9') { + number = number*10 + (*p - '0'); + p++; + } + if(*p == 'E' || *p == 'e') { + p++; + if(*p == '-') { + expsign = -1; + p++; + } + while (*p >= '0' && *p <= '9') { + exp = exp*10 + (*p - '0'); + p++; + } + exp = exp * expsign; + number_e6 = number; + exp_e6 = exp + 6; + while (exp < 0) { + number /= 10; + exp++; + } + while (exp > 0) { + number *= 10; + exp--; + } + while (exp_e6 < 0) { + number_e6 /= 10; + exp_e6++; + } + while (exp_e6 > 0) { + number_e6 *= 10; + exp_e6--; + } + } else { + number_e6 = number * 1000000; + } + while (*p == ' ') { + p++; + } + if (!strtokencmp(p, "SEC")) { + p += strtokenskip(p); + if (got_maximum) + max_time = number_e6; + else + min_time = number_e6; + continue; + } + if (!strtokencmp(p, "TCK")) { + p += strtokenskip(p); + tck_count = number; + continue; + } + if (!strtokencmp(p, "SCK")) { + p += strtokenskip(p); + sck_count = number; + continue; + } + goto syntax_error; + } + if (libxsvf_tap_walk(h, state_run) < 0) + goto error; + if (max_time >= 0) { + LIBXSVF_HOST_REPORT_ERROR("WARNING: Maximum time in SVF RUNTEST command is ignored."); + } + if (sck_count >= 0) { + for (i=0; i < sck_count; i++) { + LIBXSVF_HOST_PULSE_SCK(); + } + } + if (min_time >= 0 || tck_count >= 0) { + LIBXSVF_HOST_UDELAY(min_time >= 0 ? min_time : 0, 0, tck_count >= 0 ? tck_count : 0); + } + if (libxsvf_tap_walk(h, state_endrun) < 0) + goto error; + goto eol_check; + } + + if (!strtokencmp(p, "SDR")) { + p += strtokenskip(p); + p = bitdata_parse(h, p, &bd_sdr, LIBXSVF_MEM_SVF_SDR_TDI_DATA); + if (!p) + goto syntax_error; + if (libxsvf_tap_walk(h, LIBXSVF_TAP_DRSHIFT) < 0) + goto error; + if (bitdata_play(h, &bd_hdr, bd_sdr.len+bd_tdr.len > 0 ? LIBXSVF_TAP_DRSHIFT : state_enddr) < 0) + goto error; + if (bitdata_play(h, &bd_sdr, bd_tdr.len > 0 ? LIBXSVF_TAP_DRSHIFT : state_enddr) < 0) + goto error; + if (bitdata_play(h, &bd_tdr, state_enddr) < 0) + goto error; + if (libxsvf_tap_walk(h, state_enddr) < 0) + goto error; + goto eol_check; + } + + if (!strtokencmp(p, "SIR")) { + p += strtokenskip(p); + p = bitdata_parse(h, p, &bd_sir, LIBXSVF_MEM_SVF_SIR_TDI_DATA); + if (!p) + goto syntax_error; + if (libxsvf_tap_walk(h, LIBXSVF_TAP_IRSHIFT) < 0) + goto error; + if (bitdata_play(h, &bd_hir, bd_sir.len+bd_tir.len > 0 ? LIBXSVF_TAP_IRSHIFT : state_endir) < 0) + goto error; + if (bitdata_play(h, &bd_sir, bd_tir.len > 0 ? LIBXSVF_TAP_IRSHIFT : state_endir) < 0) + goto error; + if (bitdata_play(h, &bd_tir, state_endir) < 0) + goto error; + if (libxsvf_tap_walk(h, state_endir) < 0) + goto error; + goto eol_check; + } + + if (!strtokencmp(p, "STATE")) { + p += strtokenskip(p); + while (*p) { + int st = token2tapstate(p); + if (st < 0) + goto syntax_error; + if (libxsvf_tap_walk(h, st) < 0) + goto error; + p += strtokenskip(p); + } + goto eol_check; + } + + if (!strtokencmp(p, "TDR")) { + p += strtokenskip(p); + p = bitdata_parse(h, p, &bd_tdr, LIBXSVF_MEM_SVF_TDR_TDI_DATA); + if (!p) + goto syntax_error; + goto eol_check; + } + + if (!strtokencmp(p, "TIR")) { + p += strtokenskip(p); + p = bitdata_parse(h, p, &bd_tir, LIBXSVF_MEM_SVF_TIR_TDI_DATA); + if (!p) + goto syntax_error; + goto eol_check; + } + + if (!strtokencmp(p, "TRST")) { + p += strtokenskip(p); + if (!strtokencmp(p, "ON")) { + p += strtokenskip(p); + LIBXSVF_HOST_SET_TRST(1); + goto eol_check; + } + if (!strtokencmp(p, "OFF")) { + p += strtokenskip(p); + LIBXSVF_HOST_SET_TRST(0); + goto eol_check; + } + if (!strtokencmp(p, "Z")) { + p += strtokenskip(p); + LIBXSVF_HOST_SET_TRST(-1); + goto eol_check; + } + if (!strtokencmp(p, "ABSENT")) { + p += strtokenskip(p); + LIBXSVF_HOST_SET_TRST(-2); + goto eol_check; + } + goto syntax_error; + } + +eol_check: + while (*p == ' ') + p++; + if (*p == 0) + continue; + +syntax_error: + LIBXSVF_HOST_REPORT_ERROR("SVF Syntax Error:"); + if (0) { +unsupported_error: + LIBXSVF_HOST_REPORT_ERROR("Error in SVF input: unsupported command:"); + } + LIBXSVF_HOST_REPORT_ERROR(command_buffer); +error: + rc = -1; + break; + } + + if (LIBXSVF_HOST_SYNC() != 0 && rc >= 0 ) { + LIBXSVF_HOST_REPORT_ERROR("TDO mismatch."); + rc = -1; + } + + bitdata_free(h, &bd_hdr, LIBXSVF_MEM_SVF_HDR_TDI_DATA); + bitdata_free(h, &bd_hir, LIBXSVF_MEM_SVF_HIR_TDI_DATA); + bitdata_free(h, &bd_tdr, LIBXSVF_MEM_SVF_TDR_TDI_DATA); + bitdata_free(h, &bd_tir, LIBXSVF_MEM_SVF_TIR_TDI_DATA); + bitdata_free(h, &bd_sdr, LIBXSVF_MEM_SVF_SDR_TDI_DATA); + bitdata_free(h, &bd_sir, LIBXSVF_MEM_SVF_SIR_TDI_DATA); + + LIBXSVF_HOST_REALLOC(command_buffer, 0, LIBXSVF_MEM_SVF_COMMANDBUF); + + return rc; +} + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/tap.c b/fpga/xilinx/programmer/dependencies/libxsvf/tap.c new file mode 100644 index 0000000..c258fde --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/tap.c @@ -0,0 +1,173 @@ +/* + * Lib(X)SVF - A library for implementing SVF and XSVF JTAG players + * + * Copyright (C) 2009 RIEGL Research ForschungsGmbH + * Copyright (C) 2009 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "libxsvf.h" + +static void tap_transition(struct libxsvf_host *h, int v) +{ + LIBXSVF_HOST_PULSE_TCK(v, -1, -1, 0, 0); +} + +int libxsvf_tap_walk(struct libxsvf_host *h, enum libxsvf_tap_state s) +{ + int i, j; + for (i=0; s != h->tap_state; i++) + { + switch (h->tap_state) + { + /* Special States */ + case LIBXSVF_TAP_INIT: + for (j = 0; j < 6; j++) + tap_transition(h, 1); + h->tap_state = LIBXSVF_TAP_RESET; + break; + case LIBXSVF_TAP_RESET: + tap_transition(h, 0); + h->tap_state = LIBXSVF_TAP_IDLE; + break; + case LIBXSVF_TAP_IDLE: + tap_transition(h, 1); + h->tap_state = LIBXSVF_TAP_DRSELECT; + break; + + /* DR States */ + case LIBXSVF_TAP_DRSELECT: + if (s >= LIBXSVF_TAP_IRSELECT || s == LIBXSVF_TAP_RESET) { + tap_transition(h, 1); + h->tap_state = LIBXSVF_TAP_IRSELECT; + } else { + tap_transition(h, 0); + h->tap_state = LIBXSVF_TAP_DRCAPTURE; + } + break; + case LIBXSVF_TAP_DRCAPTURE: + if (s == LIBXSVF_TAP_DRSHIFT) { + tap_transition(h, 0); + h->tap_state = LIBXSVF_TAP_DRSHIFT; + } else { + tap_transition(h, 1); + h->tap_state = LIBXSVF_TAP_DREXIT1; + } + break; + case LIBXSVF_TAP_DRSHIFT: + tap_transition(h, 1); + h->tap_state = LIBXSVF_TAP_DREXIT1; + break; + case LIBXSVF_TAP_DREXIT1: + if (s == LIBXSVF_TAP_DRPAUSE) { + tap_transition(h, 0); + h->tap_state = LIBXSVF_TAP_DRPAUSE; + } else { + tap_transition(h, 1); + h->tap_state = LIBXSVF_TAP_DRUPDATE; + } + break; + case LIBXSVF_TAP_DRPAUSE: + tap_transition(h, 1); + h->tap_state = LIBXSVF_TAP_DREXIT2; + break; + case LIBXSVF_TAP_DREXIT2: + if (s == LIBXSVF_TAP_DRSHIFT) { + tap_transition(h, 0); + h->tap_state = LIBXSVF_TAP_DRSHIFT; + } else { + tap_transition(h, 1); + h->tap_state = LIBXSVF_TAP_DRUPDATE; + } + break; + case LIBXSVF_TAP_DRUPDATE: + if (s == LIBXSVF_TAP_IDLE) { + tap_transition(h, 0); + h->tap_state = LIBXSVF_TAP_IDLE; + } else { + tap_transition(h, 1); + h->tap_state = LIBXSVF_TAP_DRSELECT; + } + break; + + /* IR States */ + case LIBXSVF_TAP_IRSELECT: + if (s == LIBXSVF_TAP_RESET) { + tap_transition(h, 1); + h->tap_state = LIBXSVF_TAP_RESET; + } else { + tap_transition(h, 0); + h->tap_state = LIBXSVF_TAP_IRCAPTURE; + } + break; + case LIBXSVF_TAP_IRCAPTURE: + if (s == LIBXSVF_TAP_IRSHIFT) { + tap_transition(h, 0); + h->tap_state = LIBXSVF_TAP_IRSHIFT; + } else { + tap_transition(h, 1); + h->tap_state = LIBXSVF_TAP_IREXIT1; + } + break; + case LIBXSVF_TAP_IRSHIFT: + tap_transition(h, 1); + h->tap_state = LIBXSVF_TAP_IREXIT1; + break; + case LIBXSVF_TAP_IREXIT1: + if (s == LIBXSVF_TAP_IRPAUSE) { + tap_transition(h, 0); + h->tap_state = LIBXSVF_TAP_IRPAUSE; + } else { + tap_transition(h, 1); + h->tap_state = LIBXSVF_TAP_IRUPDATE; + } + break; + case LIBXSVF_TAP_IRPAUSE: + tap_transition(h, 1); + h->tap_state = LIBXSVF_TAP_IREXIT2; + break; + case LIBXSVF_TAP_IREXIT2: + if (s == LIBXSVF_TAP_IRSHIFT) { + tap_transition(h, 0); + h->tap_state = LIBXSVF_TAP_IRSHIFT; + } else { + tap_transition(h, 1); + h->tap_state = LIBXSVF_TAP_IRUPDATE; + } + break; + case LIBXSVF_TAP_IRUPDATE: + if (s == LIBXSVF_TAP_IDLE) { + tap_transition(h, 0); + h->tap_state = LIBXSVF_TAP_IDLE; + } else { + tap_transition(h, 1); + h->tap_state = LIBXSVF_TAP_DRSELECT; + } + break; + + default: + LIBXSVF_HOST_REPORT_ERROR("Illegal tap state."); + return -1; + } + if (h->report_tapstate) + LIBXSVF_HOST_REPORT_TAPSTATE(); + if (i>10) { + LIBXSVF_HOST_REPORT_ERROR("Loop in tap walker."); + return -1; + } + } + + return 0; +} diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvf.c b/fpga/xilinx/programmer/dependencies/libxsvf/xsvf.c new file mode 100644 index 0000000..2796da2 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvf.c @@ -0,0 +1,474 @@ +/* + * Lib(X)SVF - A library for implementing SVF and XSVF JTAG players + * + * Copyright (C) 2009 RIEGL Research ForschungsGmbH + * Copyright (C) 2009 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "libxsvf.h" + +/* command codes as defined in xilinx xapp503 */ +enum xsvf_cmd { + XCOMPLETE = 0x00, + XTDOMASK = 0x01, + XSIR = 0x02, + XSDR = 0x03, + XRUNTEST = 0x04, + XREPEAT = 0x07, + XSDRSIZE = 0x08, + XSDRTDO = 0x09, + XSETSDRMASKS = 0x0A, + XSDRINC = 0x0B, + XSDRB = 0x0C, + XSDRC = 0x0D, + XSDRE = 0x0E, + XSDRTDOB = 0x0F, + XSDRTDOC = 0x10, + XSDRTDOE = 0x11, + XSTATE = 0x12, + XENDIR = 0x13, + XENDDR = 0x14, + XSIR2 = 0x15, + XCOMMENT = 0x16, + XWAIT = 0x17 +}; + +// This is to not confuse the VIM syntax highlighting +#define VAL_OPEN ( +#define VAL_CLOSE ) + +#define READ_BITS(_buf, _len) do { \ + unsigned char *_p = _buf; int _i; \ + for (_i=0; _i<(_len); _i+=8) { \ + int tmp = LIBXSVF_HOST_GETBYTE(); \ + if (tmp < 0) { \ + LIBXSVF_HOST_REPORT_ERROR("Unexpected EOF."); \ + goto error; \ + } \ + *(_p++) = tmp; \ + } \ +} while (0) + +#define READ_LONG() VAL_OPEN{ \ + long _buf = 0; int _i; \ + for (_i=0; _i<4; _i++) { \ + int tmp = LIBXSVF_HOST_GETBYTE(); \ + if (tmp < 0) { \ + LIBXSVF_HOST_REPORT_ERROR("Unexpected EOF."); \ + goto error; \ + } \ + _buf = _buf << 8 | tmp; \ + } \ + _buf; \ +}VAL_CLOSE + +#define READ_BYTE() VAL_OPEN{ \ + int _tmp = LIBXSVF_HOST_GETBYTE(); \ + if (_tmp < 0) { \ + LIBXSVF_HOST_REPORT_ERROR("Unexpected EOF."); \ + goto error; \ + } \ + _tmp; \ +}VAL_CLOSE + +#define SHIFT_DATA(_inp, _outp, _maskp, _len, _state, _estate, _edelay, _ret) do { \ + if (shift_data(h, _inp, _outp, _maskp, _len, _state, _estate, _edelay, _ret) < 0) { \ + goto error; \ + } \ +} while (0) + +#define TAP(_state) do { \ + if (libxsvf_tap_walk(h, _state) < 0) \ + goto error; \ +} while (0) + +static int bits2bytes(int bits) +{ + return (bits+7) / 8; +} + +static int getbit(unsigned char *data, int n) +{ + return (data[n/8] & (1 << (7 - n%8))) ? 1 : 0; +} + +static void setbit(unsigned char *data, int n, int v) +{ + unsigned char mask = 1 << (7 - n%8); + if (v) + data[n/8] |= mask; + else + data[n/8] &= ~mask; +} + +static int xilinx_tap(int state) +{ + /* state codes as defined in xilinx xapp503 */ + switch (state) + { + case 0x00: + return LIBXSVF_TAP_RESET; + break; + case 0x01: + return LIBXSVF_TAP_IDLE; + break; + case 0x02: + return LIBXSVF_TAP_DRSELECT; + break; + case 0x03: + return LIBXSVF_TAP_DRCAPTURE; + break; + case 0x04: + return LIBXSVF_TAP_DRSHIFT; + break; + case 0x05: + return LIBXSVF_TAP_DREXIT1; + break; + case 0x06: + return LIBXSVF_TAP_DRPAUSE; + break; + case 0x07: + return LIBXSVF_TAP_DREXIT2; + break; + case 0x08: + return LIBXSVF_TAP_DRUPDATE; + break; + case 0x09: + return LIBXSVF_TAP_IRSELECT; + break; + case 0x0A: + return LIBXSVF_TAP_IRCAPTURE; + break; + case 0x0B: + return LIBXSVF_TAP_IRSHIFT; + break; + case 0x0C: + return LIBXSVF_TAP_IREXIT1; + break; + case 0x0D: + return LIBXSVF_TAP_IRPAUSE; + break; + case 0x0E: + return LIBXSVF_TAP_IREXIT2; + break; + case 0x0F: + return LIBXSVF_TAP_IRUPDATE; + break; + } + return -1; +} + +static int shift_data(struct libxsvf_host *h, unsigned char *inp, unsigned char *outp, unsigned char *maskp, int len, enum libxsvf_tap_state state, enum libxsvf_tap_state estate, int edelay, int retries) +{ + int left_padding = (8 - len % 8) % 8; + int with_retries = retries > 0; + int i; + + if (with_retries && LIBXSVF_HOST_SYNC() < 0) { + LIBXSVF_HOST_REPORT_ERROR("TDO mismatch."); + return -1; + } + + while (1) + { + int tdo_error = 0; + int tms = 0; + + TAP(state); + tms = 0; + + for (i=len+left_padding-1; i>=left_padding; i--) { + if (i == left_padding && h->tap_state != estate) { + h->tap_state++; + tms = 1; + } + int tdi = getbit(inp, i); + int tdo = -1; + if (maskp && getbit(maskp, i)) + tdo = outp && getbit(outp, i); + int sync = with_retries && i == left_padding; + if (LIBXSVF_HOST_PULSE_TCK(tms, tdi, tdo, 0, sync) < 0) + tdo_error = 1; + } + + if (tms) + LIBXSVF_HOST_REPORT_TAPSTATE(); + + if (edelay) { + TAP(LIBXSVF_TAP_IDLE); + LIBXSVF_HOST_UDELAY(edelay, 0, edelay); + } else { + TAP(estate); + } + + if (!tdo_error) + return 0; + + if (retries <= 0) { + LIBXSVF_HOST_REPORT_ERROR("TDO mismatch."); + return -1; + } + + retries--; + } + +error: + return -1; +} + +int libxsvf_xsvf(struct libxsvf_host *h) +{ + int rc = 0; + int i, j; + + unsigned char *buf_tdi_data = (void*)0; + unsigned char *buf_tdo_data = (void*)0; + unsigned char *buf_tdo_mask = (void*)0; + unsigned char *buf_addr_mask = (void*)0; + unsigned char *buf_data_mask = (void*)0; + + long state_dr_size = 0; + long state_data_size = 0; + long state_runtest = 0; + unsigned char state_xendir = 0; + unsigned char state_xenddr = 0; + unsigned char state_retries = 0; + unsigned char cmd = 0; + + while (1) + { + unsigned char last_cmd = cmd; + cmd = LIBXSVF_HOST_GETBYTE(); + +#define STATUS(_c) LIBXSVF_HOST_REPORT_STATUS("XSVF Command " #_c); + + switch (cmd) + { + case XCOMPLETE: { + STATUS(XCOMPLETE); + goto got_complete_command; + } + case XTDOMASK: { + STATUS(XTDOMASK); + READ_BITS(buf_tdo_mask, state_dr_size); + break; + } + case XSIR: { + STATUS(XSIR); + int length = READ_BYTE(); + unsigned char buf[bits2bytes(length)]; + READ_BITS(buf, length); + SHIFT_DATA(buf, (void*)0, (void*)0, length, LIBXSVF_TAP_IRSHIFT, + state_xendir ? LIBXSVF_TAP_IRPAUSE : LIBXSVF_TAP_IDLE, + state_runtest, state_retries); + break; + } + case XSDR: { + STATUS(XSDR); + READ_BITS(buf_tdi_data, state_dr_size); + SHIFT_DATA(buf_tdi_data, buf_tdo_data, buf_tdo_mask, state_dr_size, LIBXSVF_TAP_DRSHIFT, + state_xenddr ? LIBXSVF_TAP_DRPAUSE : LIBXSVF_TAP_IDLE, + state_runtest, state_retries); + break; + } + case XRUNTEST: { + STATUS(XRUNTEST); + state_runtest = READ_LONG(); + break; + } + case XREPEAT: { + STATUS(XREPEAT); + state_retries = READ_BYTE(); + break; + } + case XSDRSIZE: { + STATUS(XSDRSIZE); + state_dr_size = READ_LONG(); + buf_tdi_data = LIBXSVF_HOST_REALLOC(buf_tdi_data, bits2bytes(state_dr_size), LIBXSVF_MEM_XSVF_TDI_DATA); + buf_tdo_data = LIBXSVF_HOST_REALLOC(buf_tdo_data, bits2bytes(state_dr_size), LIBXSVF_MEM_XSVF_TDO_DATA); + buf_tdo_mask = LIBXSVF_HOST_REALLOC(buf_tdo_mask, bits2bytes(state_dr_size), LIBXSVF_MEM_XSVF_TDO_MASK); + buf_addr_mask = LIBXSVF_HOST_REALLOC(buf_addr_mask, bits2bytes(state_dr_size), LIBXSVF_MEM_XSVF_ADDR_MASK); + buf_data_mask = LIBXSVF_HOST_REALLOC(buf_data_mask, bits2bytes(state_dr_size), LIBXSVF_MEM_XSVF_DATA_MASK); + if (!buf_tdi_data || !buf_tdo_data || !buf_tdo_mask || !buf_addr_mask || !buf_data_mask) { + LIBXSVF_HOST_REPORT_ERROR("Allocating memory failed."); + goto error; + } + break; + } + case XSDRTDO: { + STATUS(XSDRTDO); + READ_BITS(buf_tdi_data, state_dr_size); + READ_BITS(buf_tdo_data, state_dr_size); + SHIFT_DATA(buf_tdi_data, buf_tdo_data, buf_tdo_mask, state_dr_size, LIBXSVF_TAP_DRSHIFT, + state_xenddr ? LIBXSVF_TAP_DRPAUSE : LIBXSVF_TAP_IDLE, + state_runtest, state_retries); + break; + } + case XSETSDRMASKS: { + STATUS(XSETSDRMASKS); + READ_BITS(buf_addr_mask, state_dr_size); + READ_BITS(buf_data_mask, state_dr_size); + state_data_size = 0; + for (i=0; i<state_dr_size; i++) + state_data_size += getbit(buf_data_mask, i); + break; + } + case XSDRINC: { + STATUS(XSDRINC); + READ_BITS(buf_tdi_data, state_dr_size); + int num = READ_BYTE(); + while (1) { + SHIFT_DATA(buf_tdi_data, buf_tdo_data, buf_tdo_mask, state_dr_size, LIBXSVF_TAP_DRSHIFT, + state_xenddr ? LIBXSVF_TAP_DRPAUSE : LIBXSVF_TAP_IDLE, + state_runtest, state_retries); + if (num-- <= 0) + break; + int carry = 1; + for (i=state_dr_size-1; i>=0; i--) { + if (getbit(buf_addr_mask, i) == 0) + continue; + if (getbit(buf_tdi_data, i)) { + setbit(buf_tdi_data, i, !carry); + } else { + setbit(buf_tdi_data, i, carry); + carry = 0; + } + } + unsigned char this_byte = 0; + for (i=0, j=0; i<state_data_size; i++) { + if (i%8 == 0) + this_byte = READ_BYTE(); + while (getbit(buf_data_mask, j) == 0) + j++; + setbit(buf_tdi_data, j++, getbit(&this_byte, i%8)); + } + } + break; + } + case XSDRB: { + STATUS(XSDRB); + READ_BITS(buf_tdi_data, state_dr_size); + SHIFT_DATA(buf_tdi_data, (void*)0, (void*)0, state_dr_size, LIBXSVF_TAP_DRSHIFT, LIBXSVF_TAP_DRSHIFT, 0, 0); + break; + } + case XSDRC: { + STATUS(XSDRC); + READ_BITS(buf_tdi_data, state_dr_size); + SHIFT_DATA(buf_tdi_data, (void*)0, (void*)0, state_dr_size, LIBXSVF_TAP_DRSHIFT, LIBXSVF_TAP_DRSHIFT, 0, 0); + break; + } + case XSDRE: { + STATUS(XSDRE); + READ_BITS(buf_tdi_data, state_dr_size); + SHIFT_DATA(buf_tdi_data, (void*)0, (void*)0, state_dr_size, LIBXSVF_TAP_DRSHIFT, + state_xenddr ? LIBXSVF_TAP_DRPAUSE : LIBXSVF_TAP_IDLE, 0, 0); + break; + } + case XSDRTDOB: { + STATUS(XSDRTDOB); + READ_BITS(buf_tdi_data, state_dr_size); + READ_BITS(buf_tdo_data, state_dr_size); + SHIFT_DATA(buf_tdi_data, buf_tdo_data, (void*)0, state_dr_size, LIBXSVF_TAP_DRSHIFT, LIBXSVF_TAP_DRSHIFT, 0, 0); + break; + } + case XSDRTDOC: { + STATUS(XSDRTDOC); + READ_BITS(buf_tdi_data, state_dr_size); + READ_BITS(buf_tdo_data, state_dr_size); + SHIFT_DATA(buf_tdi_data, buf_tdo_data, (void*)0, state_dr_size, LIBXSVF_TAP_DRSHIFT, LIBXSVF_TAP_DRSHIFT, 0, 0); + break; + } + case XSDRTDOE: { + STATUS(XSDRTDOE); + READ_BITS(buf_tdi_data, state_dr_size); + READ_BITS(buf_tdo_data, state_dr_size); + SHIFT_DATA(buf_tdi_data, buf_tdo_data, (void*)0, state_dr_size, LIBXSVF_TAP_DRSHIFT, + state_xenddr ? LIBXSVF_TAP_DRPAUSE : LIBXSVF_TAP_IDLE, 0, 0); + break; + } + case XSTATE: { + STATUS(XSTATE); + if (state_runtest && last_cmd == XRUNTEST) { + TAP(LIBXSVF_TAP_IDLE); + LIBXSVF_HOST_UDELAY(state_runtest, 0, state_runtest); + } + unsigned char state = READ_BYTE(); + TAP(xilinx_tap(state)); + break; + } + case XENDIR: { + STATUS(XENDIR); + state_xendir = READ_BYTE(); + break; + } + case XENDDR: { + STATUS(XENDDR); + state_xenddr = READ_BYTE(); + break; + } + case XSIR2: { + STATUS(XSIR2); + int length = READ_BYTE(); + length = length << 8 | READ_BYTE(); + unsigned char buf[bits2bytes(length)]; + READ_BITS(buf, length); + SHIFT_DATA(buf, (void*)0, (void*)0, length, LIBXSVF_TAP_IRSHIFT, + state_xendir ? LIBXSVF_TAP_IRPAUSE : LIBXSVF_TAP_IDLE, + state_runtest, state_retries); + break; + } + case XCOMMENT: { + STATUS(XCOMMENT); + unsigned char this_byte; + do { + this_byte = READ_BYTE(); + } while (this_byte); + break; + } + case XWAIT: { + STATUS(XWAIT); + unsigned char state1 = READ_BYTE(); + unsigned char state2 = READ_BYTE(); + long usecs = READ_LONG(); + TAP(xilinx_tap(state1)); + LIBXSVF_HOST_UDELAY(usecs, 0, 0); + TAP(xilinx_tap(state2)); + break; + } + default: + LIBXSVF_HOST_REPORT_ERROR("Unknown XSVF command."); + goto error; + } + } + +error: + rc = -1; + +got_complete_command: + if (LIBXSVF_HOST_SYNC() != 0 && rc >= 0 ) { + LIBXSVF_HOST_REPORT_ERROR("TDO mismatch."); + rc = -1; + } + + LIBXSVF_HOST_REALLOC(buf_tdi_data, 0, LIBXSVF_MEM_XSVF_TDI_DATA); + LIBXSVF_HOST_REALLOC(buf_tdo_data, 0, LIBXSVF_MEM_XSVF_TDO_DATA); + LIBXSVF_HOST_REALLOC(buf_tdo_mask, 0, LIBXSVF_MEM_XSVF_TDO_MASK); + LIBXSVF_HOST_REALLOC(buf_addr_mask, 0, LIBXSVF_MEM_XSVF_ADDR_MASK); + LIBXSVF_HOST_REALLOC(buf_data_mask, 0, LIBXSVF_MEM_XSVF_DATA_MASK); + + return rc; +} + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-ft232h.c b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-ft232h.c new file mode 100644 index 0000000..e86362d --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-ft232h.c @@ -0,0 +1,1130 @@ +/* + * Lib(X)SVF - A library for implementing SVF and XSVF JTAG players + * + * Copyright (C) 2009 RIEGL Research ForschungsGmbH + * Copyright (C) 2009 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * + * A JTAG SVF/XSVF Player based on libxsvf for the FTDI FT232H, FT2232H and + * FT4232H High Speed USB to Multipurpose UART/FIFO ICs. + * + * This also serves as an example program for using libxvsf with asynchonous + * hardware interfaces. Have a look at 'xsvftool-gpio.c' for a simple libxsvf + * example for synchonous interfaces (such as register mapped GPIOs). + * + * IMPORTANT NOTE: You need libftdi [1] (version 0.16 or newer) installed + * to build this program. + * + * To run it at full speed you need a version of libftdi that has been + * compiled with '--with-async-mode', and must enable all four defines + * BLOCK_WRITE, ASYNC_WRITE, BACKGROUND_READ and INTERLACED_READ_WRITE below. + * + * [1] http://www.intra2net.com/en/developer/libftdi/ + */ + +#include "libxsvf.h" + +#define BUFFER_SIZE (1024*16) + +#define BLOCK_WRITE +// #define ASYNC_WRITE +// #define BACKGROUND_READ +// #define INTERLACED_READ_WRITE + +#include <sys/time.h> +#include <unistd.h> +#include <string.h> +#include <stdlib.h> +#include <assert.h> +#include <stdio.h> +#include <errno.h> +#include <ftdi.h> +#include <math.h> +#ifdef BACKGROUND_READ +# include <pthread.h> +#endif + +struct read_job_s; +struct udata_s; +struct buffer_s; + +typedef void job_handler_t(struct udata_s *u, struct read_job_s *job, unsigned char *data); + +struct read_job_s { + struct read_job_s *next; + int data_len, bits_len; + struct buffer_s *buffer; + job_handler_t *handler; + unsigned int command_id; +}; + +struct buffer_s { + unsigned int tms:1; + unsigned int tdi:1; + unsigned int tdi_enable:1; + unsigned int tdo:1; + unsigned int tdo_enable:1; + unsigned int rmask:1; +}; + +struct udata_s { + FILE *f; + struct ftdi_context ftdic; + uint16_t device_vendor; + uint16_t device_product; + int device_channel; + int eeprom_size; + int buffer_size; + struct buffer_s buffer[BUFFER_SIZE]; + struct read_job_s *job_fifo_out, *job_fifo_in; + int last_tms; + int last_tdo; + int buffer_i; + int retval_i; + int retval[256]; + int error_rc; + int verbose; + int syncmode; + int forcemode; + int frequency; +#ifdef BACKGROUND_READ +# ifdef INTERLACED_READ_WRITE + int total_job_bits; + int writer_wait_flag; + pthread_mutex_t writer_wait_flag_mutex; +# endif + int reader_terminate; + pthread_mutex_t read_write_mutex; + pthread_cond_t read_more_cond; + pthread_cond_t read_done_cond; + pthread_t read_thread; +#endif +#ifdef BLOCK_WRITE + int ftdibuf_len; + unsigned char ftdibuf[4096]; +#endif +}; + +static FILE *dumpfile = NULL; + +static void write_dumpfile(int wr, unsigned char *buf, int size, unsigned int command_id) +{ + int i; + if (!dumpfile) + return; + fprintf(dumpfile, "%s[%u] %04x:", wr ? "SEND" : "RECV", command_id, size); + for (i = 0; i < size; i++) + fprintf(dumpfile, " %02x", buf[i]); + fprintf(dumpfile, "\n"); +} + +static int my_ftdi_read_data(struct ftdi_context *ftdi, unsigned char *buf, int size, unsigned int command_id) +{ + int pos = 0; + int poll_count = 0; + while (pos < size) { + int rc = ftdi_read_data(ftdi, buf+pos, size-pos); + if (rc < 0) { + fprintf(stderr, "[***] ftdi_read_data returned error `%s' (rc=%d).\n", ftdi_get_error_string(ftdi), rc); + break; + } + // this check should only be needed for very low JTAG clock frequencies + if (rc == 0) { + if (++poll_count > 8) { + fprintf(stderr, "[***] my_ftdi_read_data gives up polling <id=%u, pos=%u, size=%u>.\n", command_id, pos, size); + break; + } + // fprintf(stderr, "[%d/8] my_ftdi_read_data with len=%d polling at %d..\n", poll_count, size, pos); + usleep(4096 << poll_count); + } + pos += rc; + } + write_dumpfile(0, buf, pos, command_id); + return pos; +} + +static int my_ftdi_write_data(struct udata_s *u, unsigned char *buf, int size, int sync) +{ +#ifdef BLOCK_WRITE + int rc, total_queued = 0; + + sync = 1; + + while (size > 0) + { + if (u->ftdibuf_len == 4096) { + if (dumpfile) + fprintf(dumpfile, "WRITE %d BYTES (buffer full)\n", u->ftdibuf_len); +#ifdef ASYNC_WRITE + rc = ftdi_write_data_async(&u->ftdic, u->ftdibuf, u->ftdibuf_len); +#else + rc = ftdi_write_data(&u->ftdic, u->ftdibuf, u->ftdibuf_len); +#endif + if (rc != u->ftdibuf_len) + return -1; + u->ftdibuf_len = 0; + } + + int chunksize = 4096 - u->ftdibuf_len; + if (chunksize > size) + chunksize = size; + + memcpy(u->ftdibuf + u->ftdibuf_len, buf, chunksize); + u->ftdibuf_len += chunksize; + total_queued += chunksize; + size -= chunksize; + buf += chunksize; + } + + if (sync && u->ftdibuf_len > 0) { + if (dumpfile) + fprintf(dumpfile, "WRITE %d BYTES (sync)\n", u->ftdibuf_len); +#ifdef ASYNC_WRITE + rc = ftdi_write_data_async(&u->ftdic, u->ftdibuf, u->ftdibuf_len); +#else + rc = ftdi_write_data(&u->ftdic, u->ftdibuf, u->ftdibuf_len); +#endif + if (rc != u->ftdibuf_len) + return -1; + u->ftdibuf_len = 0; + } + + return total_queued; +#else +# ifdef ASYNC_WRITE + return ftdi_write_data_async(&u->ftdic, buf, size); +# else + return ftdi_write_data(&u->ftdic, buf, size); +# endif +#endif +} + +static struct read_job_s *new_read_job(struct udata_s *u, int data_len, int bits_len, struct buffer_s *buffer, job_handler_t *handler) +{ + struct read_job_s *job = calloc(1, sizeof(struct read_job_s)); + static unsigned int command_count = 0; + + job->data_len = data_len; + job->bits_len = bits_len; + job->buffer = calloc(bits_len, sizeof(struct buffer_s)); + memcpy(job->buffer, buffer, bits_len*sizeof(struct buffer_s)); + job->handler = handler; + job->command_id = command_count++; + + if (u->job_fifo_in) + u->job_fifo_in->next = job; + if (!u->job_fifo_out) + u->job_fifo_out = job; + u->job_fifo_in = job; + +#ifdef BACKGROUND_READ +# ifdef INTERLACED_READ_WRITE + u->total_job_bits += bits_len; +# endif +#endif + + return job; +} + +static void transfer_tms_job_handler(struct udata_s *u, struct read_job_s *job, unsigned char *data) +{ + int i; + for (i=0; i<job->bits_len; i++) { + // seams like output is align to the MSB in the byte and is LSB first + int bitpos = i + (8 - job->bits_len); + int line_tdo = (*data & (1 << bitpos)) != 0 ? 1 : 0; + if (job->buffer[i].tdo_enable && job->buffer[i].tdo != line_tdo) + u->error_rc = -1; + if (job->buffer[i].rmask && u->retval_i < 256) + u->retval[u->retval_i++] = line_tdo; + u->last_tdo = line_tdo; + } +} + +static void transfer_tms(struct udata_s *u, struct buffer_s *d, int tdi, int len) +{ + int i, rc; + + unsigned char data_command[] = { + 0x6e, len-1, tdi << 7, 0x87 + }; + + for (i=0; i<len; i++) + data_command[2] |= d[i].tms << i; + data_command[2] |= d[len-1].tms << len; + u->last_tms = d[len-1].tms; + + struct read_job_s *rj = new_read_job(u, 1, len, d, &transfer_tms_job_handler); + + write_dumpfile(1, data_command, sizeof(data_command), rj->command_id); + rc = my_ftdi_write_data(u, data_command, sizeof(data_command), 0); + if (rc != sizeof(data_command)) { + fprintf(stderr, "IO Error: Transfer tms write failed: %s (rc=%d/%d)\n", + ftdi_get_error_string(&u->ftdic), rc, (int)sizeof(data_command)); + u->error_rc = -1; + } +} + +static void transfer_tdi_job_handler(struct udata_s *u, struct read_job_s *job, unsigned char *data) +{ + int i, j, k; + int bytes = job->bits_len / 8; + int bits = job->bits_len % 8; + + for (i=0, j=0; j<bytes; j++) { + for (k=0; k<8; k++, i++) { + int line_tdo = (data[j] & (1 << k)) != 0 ? 1 : 0; + if (job->buffer[i].tdo_enable && job->buffer[i].tdo != line_tdo) + if (!u->forcemode) + u->error_rc = -1; + if (job->buffer[j*8+k].rmask && u->retval_i < 256) + u->retval[u->retval_i++] = line_tdo; + } + } + for (j=0; j<bits; j++, i++) { + int bitpos = j + (8 - bits); + int line_tdo = (data[bytes] & (1 << bitpos)) != 0 ? 1 : 0; + if (job->buffer[i].tdo_enable && job->buffer[i].tdo != line_tdo) + if (!u->forcemode) + u->error_rc = -1; + if (job->buffer[i].rmask && u->retval_i < 256) + u->retval[u->retval_i++] = line_tdo; + u->last_tdo = line_tdo; + } +} + +static void transfer_tdi(struct udata_s *u, struct buffer_s *d, int len) +{ + int bytes = len / 8; + int bits = len % 8; + + int command_len = 1; + int data_len = 0; + if (bytes) { + command_len += 3 + bytes; + data_len += bytes; + } + if (bits) { + command_len += 3; + data_len++; + } + + int i, j, k, rc; + unsigned char command[command_len]; + + i = 0; + if (bytes) { + command[i++] = 0x39; + command[i++] = (bytes-1) & 0xff; + command[i++] = (bytes-1) >> 8; + for (j=0; j<bytes; j++, i++) { + command[i] = 0; + for (k=0; k<8; k++) + command[i] |= d[j*8+k].tdi << k; + } + } + if (bits) { + command[i++] = 0x3b; + command[i++] = bits-1; + command[i] = 0; + for (j=0; j<bits; j++) + command[i] |= d[bytes*8+j].tdi << j; + i++; + } + command[i] = 0x87; + assert(i+1 == command_len); + + struct read_job_s *rj = new_read_job(u, data_len, len, d, &transfer_tdi_job_handler); + + write_dumpfile(1, command, command_len, rj->command_id); + rc = my_ftdi_write_data(u, command, command_len, 0); + if (rc != command_len) { + fprintf(stderr, "IO Error: Transfer tdi write failed: %s (rc=%d/%d)\n", + ftdi_get_error_string(&u->ftdic), rc, command_len); + u->error_rc = -1; + } +} + +static void process_next_read_job(struct udata_s *u) +{ + if (!u->job_fifo_out) + return; + +#ifdef ASYNC_WRITE + ftdi_async_complete(&u->ftdic,1); +#endif + + struct read_job_s *job = u->job_fifo_out; + + u->job_fifo_out = job->next; + if (!u->job_fifo_out) + u->job_fifo_in = NULL; + + unsigned char data[job->data_len]; + if (my_ftdi_read_data(&u->ftdic, data, job->data_len, job->command_id) != job->data_len) { + fprintf(stderr, "IO Error: FTDI/USB read failed!\n"); + u->error_rc = -1; + } else { + job->handler(u, job, data); + } + +#ifdef BACKGROUND_READ +# ifdef INTERLACED_READ_WRITE + u->total_job_bits -= job->bits_len; +# endif +#endif + + free(job->buffer); + free(job); +} + +#ifdef BACKGROUND_READ +static void *reader_main(void *arg) +{ + struct udata_s *u = arg; + pthread_mutex_lock(&u->read_write_mutex); + while (!u->reader_terminate) { + while (u->job_fifo_out) { + process_next_read_job(u); +#ifdef INTERLACED_READ_WRITE + if (u->total_job_bits <= u->buffer_size/2) { + pthread_mutex_lock(&u->writer_wait_flag_mutex); + int writer_is_waiting = u->writer_wait_flag; + pthread_mutex_unlock(&u->writer_wait_flag_mutex); + if (writer_is_waiting) + break; + } +#endif + } + pthread_cond_signal(&u->read_done_cond); + pthread_cond_wait(&u->read_more_cond, &u->read_write_mutex); + } + pthread_mutex_unlock(&u->read_write_mutex); + return NULL; +} +#endif + +static void buffer_flush(struct udata_s *u) +{ +#ifdef BACKGROUND_READ +# ifdef INTERLACED_READ_WRITE + pthread_mutex_lock(&u->writer_wait_flag_mutex); + u->writer_wait_flag = 1; + pthread_mutex_unlock(&u->writer_wait_flag_mutex); + pthread_mutex_lock(&u->read_write_mutex); + while (u->total_job_bits > u->buffer_size/2) { + pthread_cond_wait(&u->read_done_cond, &u->read_write_mutex); + } +# else + pthread_mutex_lock(&u->read_write_mutex); + while (u->job_fifo_out) { + pthread_cond_wait(&u->read_done_cond, &u->read_write_mutex); + } +# endif +#endif + int pos = 0; + while (pos < u->buffer_i) + { + struct buffer_s b = u->buffer[pos]; + if (u->last_tms != b.tms) { + int len = u->buffer_i - pos; + len = len > 6 ? 6 : len; + int tdi=-1, i; + for (i=0; i<len; i++) { + if (!u->buffer[pos+i].tdi_enable) + continue; + if (tdi < 0) + tdi = u->buffer[pos+i].tdi; + if (tdi != u->buffer[pos+i].tdi) + len = i; + } + // printf("transfer_tms <len=%d, tdi=%d>\n", len, tdi < 0 ? 1 : tdi); + transfer_tms(u, u->buffer+pos, (tdi & 1), len); + pos += len; + continue; + } + int len = u->buffer_i - pos; + int i; + for (i=0; i<len; i++) { + if (u->buffer[pos+i].tms != u->last_tms) + len = i; + } + // printf("transfer_tdi <len=%d, tms=%d>\n", len, u->last_tms); + transfer_tdi(u, u->buffer+pos, len); + pos += len; + } + u->buffer_i = 0; + +#ifdef BLOCK_WRITE + int rc = my_ftdi_write_data(u, NULL, 0, 1); + if (rc != 0) { + fprintf(stderr, "IO Error: Ftdi write failed: %s\n", + ftdi_get_error_string(&u->ftdic)); + u->error_rc = -1; + } +#endif + +#ifdef BACKGROUND_READ +# ifdef INTERLACED_READ_WRITE + pthread_mutex_lock(&u->writer_wait_flag_mutex); + u->writer_wait_flag = 0; + pthread_mutex_unlock(&u->writer_wait_flag_mutex); +# endif + pthread_mutex_unlock(&u->read_write_mutex); + pthread_cond_signal(&u->read_more_cond); +#else + while (u->job_fifo_out) + process_next_read_job(u); +#endif +} + +static void buffer_sync(struct udata_s *u) +{ + buffer_flush(u); +#ifdef BACKGROUND_READ + pthread_mutex_lock(&u->read_write_mutex); + while (u->job_fifo_out) { + pthread_cond_wait(&u->read_done_cond, &u->read_write_mutex); + } + pthread_mutex_unlock(&u->read_write_mutex); +#endif +} + +static void buffer_add(struct udata_s *u, int tms, int tdi, int tdo, int rmask) +{ + u->buffer[u->buffer_i].tms = tms; + u->buffer[u->buffer_i].tdi = tdi; + u->buffer[u->buffer_i].tdi_enable = tdi >= 0; + u->buffer[u->buffer_i].tdo = tdo; + u->buffer[u->buffer_i].tdo_enable = tdo >= 0; + u->buffer[u->buffer_i].rmask = rmask; + u->buffer_i++; + + if (u->buffer_i >= u->buffer_size) + buffer_flush(u); +} + +static int h_setup(struct libxsvf_host *h) +{ + int device_is_amontec_jtagkey_2p = 0; + + struct udata_s *u = h->user_data; + u->buffer_size = BUFFER_SIZE; +#ifdef BLOCK_WRITE + u->ftdibuf_len = 0; +#endif + + if (ftdi_init(&u->ftdic) < 0) + return -1; + + if (u->eeprom_size > 0) + u->ftdic.eeprom_size = u->eeprom_size; + + if (u->device_channel > 0) { + enum ftdi_interface interface = + u->device_channel == 1 ? INTERFACE_A : + u->device_channel == 2 ? INTERFACE_B : + u->device_channel == 3 ? INTERFACE_C : + u->device_channel == 4 ? INTERFACE_D : INTERFACE_ANY; + if (ftdi_set_interface(&u->ftdic, interface) < 0) { + fprintf(stderr, "IO Error: Interface setup failed (set port).\n"); + ftdi_deinit(&u->ftdic); + return -1; + } + } + + if (u->device_vendor > 0 || u->device_product > 0) { + if (ftdi_usb_open(&u->ftdic, u->device_vendor, u->device_product) == 0) + goto found_device; + goto failed_device; + } + + // 0x0403:0xcff8 = Amontec JTAGkey2P + if (ftdi_usb_open(&u->ftdic, 0x0403, 0xcff8) == 0) { + device_is_amontec_jtagkey_2p = 1; + goto found_device; + } + + // 0x0403:0x6010 = Plain FTDI 2232H + if (ftdi_usb_open(&u->ftdic, 0x0403, 0x6010) == 0) { + goto found_device; + } + + // 0x0403:0x6011 = Plain FTDI 4232H + if (ftdi_usb_open(&u->ftdic, 0x0403, 0x6011) == 0) { + goto found_device; + } + + // 0x0403:0x6014 = Plain FTDI 232H + if (ftdi_usb_open(&u->ftdic, 0x0403, 0x6014) == 0) { + u->buffer_size = 64; + goto found_device; + } + +failed_device: + fprintf(stderr, "IO Error: Interface setup failed (can't find or can't open device).\n"); + ftdi_deinit(&u->ftdic); + return -1; +found_device:; + +#if 0 + // Older versions of libftdi don't have the TYPE_232H enum value. + // So we simply skip this check and let BITMODE_MPSSE below fail for non-H type chips. + if (u->ftdic.type != TYPE_232H && u->ftdic.type != TYPE_2232H && u->ftdic.type != TYPE_4232H) { + fprintf(stderr, "IO Error: Interface setup failed (wrong chip type).\n"); + ftdi_usb_close(&u->ftdic); + ftdi_deinit(&u->ftdic); + return -1; + } +#endif + +#if 1 + if (ftdi_usb_reset(&u->ftdic) < 0) { + fprintf(stderr, "IO Error: Interface setup failed (usb reset).\n"); + ftdi_usb_close(&u->ftdic); + ftdi_deinit(&u->ftdic); + return -1; + } + + if (ftdi_usb_purge_buffers(&u->ftdic) < 0) { + fprintf(stderr, "IO Error: Interface setup failed (purge buffers).\n"); + ftdi_usb_close(&u->ftdic); + ftdi_deinit(&u->ftdic); + return -1; + } +#endif + + if (ftdi_set_bitmode(&u->ftdic, 0xff, BITMODE_MPSSE) < 0) { + fprintf(stderr, "IO Error: Interface setup failed (MPSSE mode).\n"); + ftdi_usb_close(&u->ftdic); + ftdi_deinit(&u->ftdic); + return -1; + } + + unsigned char plain_init_commands[] = { + // 0x86, 0x6f, 0x17, // initial clk freq (1 kHz) + // 0x86, 0x05, 0x00, // initial clk freq (1 MHz) + 0x86, 0x02, 0x00, // initial clk freq (2 MHz) + 0x80, 0x08, 0x0b, // initial line states + // 0x84, // enable loopback + 0x85, // disable loopback + }; + unsigned char amontec_init_commands[] = { + 0x86, 0x02, 0x00, // initial clk freq (2 MHz) + 0x80, 0x08, 0x1b, // initial line states + 0x85, // disable loopback + }; + unsigned char *init_commands_p = plain_init_commands; + int init_commands_sz = sizeof(plain_init_commands); + + if (device_is_amontec_jtagkey_2p) { + init_commands_p = amontec_init_commands; + init_commands_sz = sizeof(amontec_init_commands); + } + + write_dumpfile(1, init_commands_p, init_commands_sz, 0); + if (ftdi_write_data(&u->ftdic, init_commands_p, init_commands_sz) != init_commands_sz) { + fprintf(stderr, "IO Error: Interface setup failed (init commands): %s\n", + ftdi_get_error_string(&u->ftdic)); + ftdi_disable_bitbang(&u->ftdic); + ftdi_usb_close(&u->ftdic); + ftdi_deinit(&u->ftdic); + return -1; + } + + if (u->frequency > 0) + h->set_frequency(h, u->frequency); + + u->job_fifo_out = NULL; + u->job_fifo_in = NULL; + u->last_tms = -1; + u->last_tdo = -1; + u->buffer_i = 0; + u->error_rc = 0; + +#ifdef BACKGROUND_READ +# ifdef INTERLACED_READ_WRITE + u->total_job_bits = 0; + u->writer_wait_flag = 0; + pthread_mutex_init(&u->writer_wait_flag_mutex, NULL); +# endif + u->reader_terminate = 0; + pthread_mutex_init(&u->read_write_mutex, NULL); + pthread_cond_init(&u->read_more_cond, NULL); + pthread_cond_init(&u->read_done_cond, NULL); + pthread_create(&u->read_thread, NULL, &reader_main, u); +#endif + + return 0; +} + +static int h_shutdown(struct libxsvf_host *h) +{ + struct udata_s *u = h->user_data; + buffer_sync(u); +#ifdef BACKGROUND_READ + pthread_mutex_lock(&u->read_write_mutex); + u->reader_terminate = 1; + pthread_cond_signal(&u->read_more_cond); + pthread_mutex_unlock(&u->read_write_mutex); + + pthread_join(u->read_thread, NULL); + pthread_cond_destroy(&u->read_done_cond); + pthread_cond_destroy(&u->read_more_cond); + pthread_mutex_destroy(&u->read_write_mutex); +# ifdef INTERLACED_READ_WRITE + pthread_mutex_destroy(&u->writer_wait_flag_mutex); +# endif +#endif + ftdi_disable_bitbang(&u->ftdic); + ftdi_usb_close(&u->ftdic); + ftdi_deinit(&u->ftdic); + return u->error_rc; +} + +static void h_udelay(struct libxsvf_host *h, long usecs, int tms, long num_tck) +{ + struct udata_s *u = h->user_data; + buffer_sync(u); + if (num_tck > 0) { + struct timeval tv1, tv2; + gettimeofday(&tv1, NULL); + while (num_tck > 0) { + buffer_add(u, tms, -1, -1, 0); + num_tck--; + } + buffer_sync(u); + gettimeofday(&tv2, NULL); + if (tv2.tv_sec > tv1.tv_sec) { + usecs -= (1000000 - tv1.tv_usec) + (tv2.tv_sec - tv1.tv_sec - 1) * 1000000; + tv1.tv_usec = 0; + } + usecs -= tv2.tv_usec - tv1.tv_usec; + } + if (usecs > 0) { + usleep(usecs); + } +} + +static int h_getbyte(struct libxsvf_host *h) +{ + struct udata_s *u = h->user_data; + return fgetc(u->f); +} + +static int h_sync(struct libxsvf_host *h) +{ + struct udata_s *u = h->user_data; + buffer_sync(u); + int rc = u->error_rc; + u->error_rc = 0; + return rc; +} + +static int h_pulse_tck(struct libxsvf_host *h, int tms, int tdi, int tdo, int rmask, int sync) +{ + struct udata_s *u = h->user_data; + if (u->syncmode) + sync = 1; + buffer_add(u, tms, tdi, tdo, rmask); + if (sync) { + buffer_sync(u); + int rc = u->error_rc < 0 ? u->error_rc : u->last_tdo; + u->error_rc = 0; + return rc; + } + return u->error_rc < 0 ? u->error_rc : 1; +} + +static int h_set_frequency(struct libxsvf_host *h, int v) +{ + struct udata_s *u = h->user_data; + if (u->syncmode && v > 10000) + v = 10000; + unsigned char setfreq_command[] = { 0x86, 0x02, 0x00 }; + int div = fmax(ceil(12e6 / (2*v) - 1), 2); + setfreq_command[1] = div >> 0; + setfreq_command[2] = div >> 8; + write_dumpfile(1, setfreq_command, sizeof(setfreq_command), 0); + int rc = my_ftdi_write_data(u, setfreq_command, sizeof(setfreq_command), 1); + if (rc != sizeof(setfreq_command)) { + fprintf(stderr, "IO Error: Set frequency write failed: %s (rc=%d/%d)\n", + ftdi_get_error_string(&u->ftdic), rc, (int)sizeof(setfreq_command)); + u->error_rc = -1; + } + return 0; +} + +static void h_report_tapstate(struct libxsvf_host *h) +{ + struct udata_s *u = h->user_data; + if (u->verbose >= 2) + printf("[%s]\n", libxsvf_state2str(h->tap_state)); +} + +static void h_report_device(struct libxsvf_host *h, unsigned long idcode) +{ + printf("idcode=0x%08lx, revision=0x%01lx, part=0x%04lx, manufactor=0x%03lx\n", idcode, + (idcode >> 28) & 0xf, (idcode >> 12) & 0xffff, (idcode >> 1) & 0x7ff); +} + +static void h_report_status(struct libxsvf_host *h, const char *message) +{ + struct udata_s *u = h->user_data; + if (u->verbose >= 1) + printf("[STATUS] %s\n", message); +} + +static void h_report_error(struct libxsvf_host *h, const char *file, int line, const char *message) +{ + fprintf(stderr, "[%s:%d] %s\n", file, line, message); +} + +static void *h_realloc(struct libxsvf_host *h, void *ptr, int size, enum libxsvf_mem which) +{ + return realloc(ptr, size); +} + +static struct udata_s u = { +}; + +static struct libxsvf_host h = { + .udelay = h_udelay, + .setup = h_setup, + .shutdown = h_shutdown, + .getbyte = h_getbyte, + .sync = h_sync, + .pulse_tck = h_pulse_tck, + .set_frequency = h_set_frequency, + .report_tapstate = h_report_tapstate, + .report_device = h_report_device, + .report_status = h_report_status, + .report_error = h_report_error, + .realloc = h_realloc, + .user_data = &u +}; + +static uint16_t eeprom_checksum(unsigned char *data, int len) +{ + uint16_t checksum = 0xAAAA; + int i; + + for (i = 0; i < len; i+=2) { + uint16_t value = (data[i+1] << 8) | data[i]; + checksum = value ^ checksum; + checksum = (checksum << 1) | (checksum >> 15); + } + + return checksum; +} + +const char *progname; + +static void help() +{ + fprintf(stderr, "\n"); + fprintf(stderr, "A JTAG SVF/XSVF Player based on libxsvf for the FTDI FT232H, FT2232H and\n"); + fprintf(stderr, "FT4232H High Speed USB to Multipurpose UART/FIFO ICs.\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "xsvftool-ft2232h, part of Lib(X)SVF (http://www.clifford.at/libxsvf/).\n"); + fprintf(stderr, "Copyright (C) 2009 RIEGL Research ForschungsGmbH\n"); + fprintf(stderr, "Copyright (C) 2009 Clifford Wolf <clifford@clifford.at>\n"); + fprintf(stderr, "Lib(X)SVF is free software licensed under the ISC license.\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "Usage: %s [ -v[v..] ] [ -d dumpfile ] [ -L | -B ] [ -S ] [ -F ] \\\n", progname); + fprintf(stderr, " %*s [ -D vendor:product ] [ -C channel ] [ -f freq[k|M] ] \\\n", (int)(strlen(progname)+1), ""); + fprintf(stderr, " %*s [ -Z eeprom-size] [ [-G] -W eeprom-filename ] [ -R eeprom-filename ] \\\n", (int)(strlen(progname)+1), ""); + fprintf(stderr, " %*s { -s svf-file | -x xsvf-file | -c } ...\n", (int)(strlen(progname)+1), ""); + fprintf(stderr, "\n"); + fprintf(stderr, " -v\n"); + fprintf(stderr, " Enable verbose output (repeat for incrased verbosity)\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -d dumpfile\n"); + fprintf(stderr, " Write a logfile of all MPSSE comunication\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -L, -B\n"); + fprintf(stderr, " Print RMASK bits as hex value (little or big endian)\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -S\n"); + fprintf(stderr, " Run in synchronous mode (slow but report errors right away)\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -F\n"); + fprintf(stderr, " Force mode (ignore all TDO mismatches)\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -f freq[k|M]\n"); + fprintf(stderr, " Set maximum frequency in Hz, kHz or MHz\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -D vendor:product\n"); + fprintf(stderr, " Select device using USB vendor and product id\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -C channel\n"); + fprintf(stderr, " Select channel on target device (A, B, C or D)\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -Z eeprom-size\n"); + fprintf(stderr, " Set size of the FTDI EEPROM\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -G\n"); + fprintf(stderr, " Generate checksum before writing EEPROM data\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -W eeprom-filename\n"); + fprintf(stderr, " Write content of the given file to the FTDI EEPROM\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -R eeprom-filename\n"); + fprintf(stderr, " Write content of the FTDI EEPROM to the given file\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -s svf-file\n"); + fprintf(stderr, " Play the specified SVF file\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -x xsvf-file\n"); + fprintf(stderr, " Play the specified XSVF file\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -c\n"); + fprintf(stderr, " List devices in JTAG chain\n"); + fprintf(stderr, "\n"); + exit(1); +} + +int main(int argc, char **argv) +{ + int rc = 0; + int gotaction = 0; + int genchecksum = 0; + int hex_mode = 0; + int opt, i, j; + + progname = argc >= 1 ? argv[0] : "xsvftool-ft232h"; + while ((opt = getopt(argc, argv, "vd:LBSFD:C:Z:GW:R:f:x:s:c")) != -1) + { + switch (opt) + { + case 'v': + u.verbose++; + break; + case 'd': + if (!strcmp(optarg, "-")) + dumpfile = stdout; + else + dumpfile = fopen(optarg, "w"); + if (!dumpfile) { + fprintf(stderr, "Can't open dumpfile `%s': %s\n", optarg, strerror(errno)); + rc = 1; + } + break; + case 'f': + u.frequency = strtol(optarg, &optarg, 10); + while (*optarg != 0) { + if (*optarg == 'k') { + u.frequency *= 1000; + optarg++; + continue; + } + if (*optarg == 'M') { + u.frequency *= 1000000; + optarg++; + continue; + } + if (optarg[0] == 'H' && optarg[1] == 'z') { + optarg += 2; + continue; + } + help(); + } + break; + case 'D': + { + char *endptr = NULL; + u.device_vendor = strtol(optarg, &endptr, 16); + if (!endptr || *endptr != ':') + help(); + u.device_product = strtol(endptr, &endptr, 16); + if (!endptr || *endptr != 0) + help(); + } + break; + case 'C': + if (!strcmp(optarg, "A")) + u.device_channel = 1; + else + if (!strcmp(optarg, "B")) + u.device_channel = 2; + else + if (!strcmp(optarg, "C")) + u.device_channel = 3; + else + if (!strcmp(optarg, "D")) + u.device_channel = 4; + else + help(); + break; + case 'Z': + { + char *endptr = NULL; + u.eeprom_size = strtol(optarg, &endptr, 0); + if (!endptr || *endptr != 0) + help(); + } + break; + case 'G': + genchecksum = 1; + break; + case 'W': + { + gotaction = 1; + if (h_setup(&h) < 0) + return 1; + unsigned char eeprom_data[u.ftdic.eeprom_size]; + + FILE *f = fopen(optarg, "r"); + if (f == NULL) { + fprintf(stderr, "Can't open EEPROM file `%s' for reading: %s\n", optarg, strerror(errno)); + h_shutdown(&h); + return 1; + } + if (fread(eeprom_data, u.ftdic.eeprom_size, 1, f) != 1) { + fprintf(stderr, "Can't read EEPROM file `%s': %s\n", optarg, strerror(errno)); + h_shutdown(&h); + return 1; + } + fclose(f); + + uint16_t checksum = eeprom_checksum(eeprom_data, u.ftdic.eeprom_size-2); + if (genchecksum) { + eeprom_data[u.ftdic.eeprom_size-1] = checksum >> 8; + eeprom_data[u.ftdic.eeprom_size-2] = checksum; + } + + uint16_t checksum_chip = (eeprom_data[u.ftdic.eeprom_size-1] << 8) | eeprom_data[u.ftdic.eeprom_size-2]; + if (checksum != checksum_chip) { + fprintf(stderr, "ERROR: Checksum from EEPROM data is invalid! (is 0x%04x instead of 0x%04x)\n", + checksum_chip, checksum); + h_shutdown(&h); + return 1; + } + + if (ftdi_write_eeprom(&u.ftdic, eeprom_data) < 0) { + fprintf(stderr, "Writing EEPROM data failed! (size=%d)\n", u.ftdic.eeprom_size); + h_shutdown(&h); + return 1; + } + if (h_shutdown(&h) < 0) + return 1; + } + break; + case 'R': + { + gotaction = 1; + if (h_setup(&h) < 0) + return 1; + int eeprom_size = u.ftdic.eeprom_size; + unsigned char eeprom_data[eeprom_size]; + if (ftdi_read_eeprom(&u.ftdic, eeprom_data) < 0) { + fprintf(stderr, "Reading EEPROM data failed! (size=%d)\n", u.ftdic.eeprom_size); + h_shutdown(&h); + return 1; + } + if (h_shutdown(&h) < 0) + return 1; + + FILE *f = fopen(optarg, "w"); + if (f == NULL) { + fprintf(stderr, "Can't open EEPROM file `%s' for writing: %s\n", optarg, strerror(errno)); + return 1; + } + if (fwrite(eeprom_data, eeprom_size, 1, f) != 1) { + fprintf(stderr, "Can't write EEPROM file `%s': %s\n", optarg, strerror(errno)); + return 1; + } + fclose(f); + + uint16_t checksum = eeprom_checksum(eeprom_data, eeprom_size-2); + uint16_t checksum_chip = (eeprom_data[eeprom_size-1] << 8) | eeprom_data[eeprom_size-2]; + if (checksum != checksum_chip) + fprintf(stderr, "WARNING: Checksum from EEPROM data is invalid! (is 0x%04x instead of 0x%04x)\n", + checksum_chip, checksum); + } + break; + case 'x': + case 's': + gotaction = 1; + if (!strcmp(optarg, "-")) + u.f = stdin; + else + u.f = fopen(optarg, "rb"); + if (u.f == NULL) { + fprintf(stderr, "Can't open %s file `%s': %s\n", opt == 's' ? "SVF" : "XSVF", optarg, strerror(errno)); + rc = 1; + break; + } + if (libxsvf_play(&h, opt == 's' ? LIBXSVF_MODE_SVF : LIBXSVF_MODE_XSVF) < 0) { + fprintf(stderr, "Error while playing %s file `%s'.\n", opt == 's' ? "SVF" : "XSVF", optarg); + rc = 1; + } + if (strcmp(optarg, "-")) + fclose(u.f); + break; + case 'c': + gotaction = 1; + int old_frequency = u.frequency; + if (u.frequency == 0) + u.frequency = 10000; + if (libxsvf_play(&h, LIBXSVF_MODE_SCAN) < 0) { + fprintf(stderr, "Error while scanning JTAG chain.\n"); + rc = 1; + } + u.frequency = old_frequency; + break; + case 'L': + hex_mode = 1; + break; + case 'B': + hex_mode = 2; + break; + case 'S': + if (u.frequency == 0) + u.frequency = 10000; + u.syncmode = 1; + break; + case 'F': + u.forcemode = 1; + break; + default: + help(); + break; + } + } + + if (!gotaction) + help(); + + if (u.retval_i) { + if (hex_mode) { + printf("0x"); + for (i=0; i < u.retval_i; i+=4) { + int val = 0; + for (j=i; j<i+4; j++) + val = val << 1 | u.retval[hex_mode > 1 ? j : u.retval_i - j - 1]; + printf("%x", val); + } + } else { + printf("%d rmask bits:", u.retval_i); + for (i=0; i < u.retval_i; i++) + printf(" %d", u.retval[i]); + } + printf("\n"); + } + + return rc; +} + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-gpio.c b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-gpio.c new file mode 100644 index 0000000..c46e4d7 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-gpio.c @@ -0,0 +1,542 @@ +/* + * Lib(X)SVF - A library for implementing SVF and XSVF JTAG players + * + * Copyright (C) 2009 RIEGL Research ForschungsGmbH + * Copyright (C) 2009 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "libxsvf.h" + +#include <sys/time.h> +#include <unistd.h> +#include <string.h> +#include <stdlib.h> +#include <stdio.h> +#include <errno.h> + + +/** BEGIN: Low-Level I/O Implementation **/ + +#ifdef XSVFTOOL_RLMS_VLINE + +// Simple example with MPC8349E GPIO pins +// (RIEGL LMS V-Line motherboard) + +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/mman.h> +#include <fcntl.h> + +#define IO_PORT_ADDR 0xE0000C00 + +struct io_layout { + unsigned long tdi:1; + unsigned long tdo:1; + unsigned long tms:1; + unsigned long tck:1; + unsigned long reserved:28; +}; + +static volatile struct io_layout *io_direction; +static volatile struct io_layout *io_opendrain; +static volatile struct io_layout *io_data; + +static void io_setup(void) +{ + /* open /dev/mem device file */ + int fd = open("/dev/mem", O_RDWR); + if (fd < 0) { + fprintf(stderr, "Can't open /dev/mem: %s\n", strerror(errno)); + exit(1); + } + + /* calculate offsets to page and within page */ + unsigned long psize = getpagesize(); + unsigned long off_inpage = IO_PORT_ADDR % psize; + unsigned long off_topage = IO_PORT_ADDR - off_inpage; + unsigned long mapsize = off_inpage + sizeof(struct io_layout) * 3; + + /* map it into logical memory */ + void *io_addr_map = mmap(0, mapsize, PROT_WRITE, MAP_SHARED, fd, off_topage); + if (io_addr_map == MAP_FAILED) { + fprintf(stderr, "Can't map physical memory: %s\n", strerror(errno)); + exit(1); + } + + /* calculate register addresses */ + io_direction = io_addr_map + off_inpage; + io_opendrain = io_addr_map + off_inpage + 4; + io_data = io_addr_map + off_inpage + 8; + + /* set direction reg */ + io_direction->tms = 1; + io_direction->tck = 1; + io_direction->tdo = 0; + io_direction->tdi = 1; + + /* set open drain reg */ + io_opendrain->tms = 0; + io_opendrain->tck = 0; + io_opendrain->tdo = 0; + io_opendrain->tdi = 0; + +#ifdef HAVE_TRST + /* for boards with TRST, must be driven high */ + io_data->trst = 1; + io_direction->trst = 1; + io_opendrain->trst = 0; +#endif +} + +static void io_shutdown(void) +{ + /* set all to z-state */ + io_direction->tms = 0; + io_direction->tck = 0; + io_direction->tdo = 0; + io_direction->tdi = 0; + +#ifdef HAVE_TRST + /* for boards with TRST, assuming there is a pull-down resistor */ + io_direction->trst = 0; +#endif +} + +static void io_tms(int val) +{ + io_data->tms = val; +} + +static void io_tdi(int val) +{ + io_data->tdi = val; +} + +static void io_tck(int val) +{ + io_data->tck = val; + // usleep(1); +} + +static void io_sck(int val) +{ + /* not available */ +} + +static void io_trst(int val) +{ + /* not available */ +} + +static int io_tdo() +{ + return io_data->tdo ? 1 : 0; +} + +#else + +static void io_setup(void) +{ +} + +static void io_shutdown(void) +{ +} + +static void io_tms(int val) +{ +} + +static void io_tdi(int val) +{ +} + +static void io_tck(int val) +{ +} + +static void io_sck(int val) +{ +} + +static void io_trst(int val) +{ +} + +static int io_tdo() +{ + return -1; +} + +#endif + +/** END: Low-Level I/O Implementation **/ + + +struct udata_s { + FILE *f; + int verbose; + int clockcount; + int bitcount_tdi; + int bitcount_tdo; + int retval_i; + int retval[256]; +}; + +static int h_setup(struct libxsvf_host *h) +{ + struct udata_s *u = h->user_data; + if (u->verbose >= 2) { + fprintf(stderr, "[SETUP]\n"); + fflush(stderr); + } + io_setup(); + return 0; +} + +static int h_shutdown(struct libxsvf_host *h) +{ + struct udata_s *u = h->user_data; + if (u->verbose >= 2) { + fprintf(stderr, "[SHUTDOWN]\n"); + fflush(stderr); + } + io_shutdown(); + return 0; +} + +static void h_udelay(struct libxsvf_host *h, long usecs, int tms, long num_tck) +{ + struct udata_s *u = h->user_data; + if (u->verbose >= 3) { + fprintf(stderr, "[DELAY:%ld, TMS:%d, NUM_TCK:%ld]\n", usecs, tms, num_tck); + fflush(stderr); + } + if (num_tck > 0) { + struct timeval tv1, tv2; + gettimeofday(&tv1, NULL); + io_tms(tms); + while (num_tck > 0) { + io_tck(0); + io_tck(1); + num_tck--; + } + gettimeofday(&tv2, NULL); + if (tv2.tv_sec > tv1.tv_sec) { + usecs -= (1000000 - tv1.tv_usec) + (tv2.tv_sec - tv1.tv_sec - 1) * 1000000; + tv1.tv_usec = 0; + } + usecs -= tv2.tv_usec - tv1.tv_usec; + if (u->verbose >= 3) { + fprintf(stderr, "[DELAY_AFTER_TCK:%ld]\n", usecs > 0 ? usecs : 0); + fflush(stderr); + } + } + if (usecs > 0) { + usleep(usecs); + } +} + +static int h_getbyte(struct libxsvf_host *h) +{ + struct udata_s *u = h->user_data; + return fgetc(u->f); +} + +static int h_pulse_tck(struct libxsvf_host *h, int tms, int tdi, int tdo, int rmask, int sync) +{ + struct udata_s *u = h->user_data; + + io_tms(tms); + + if (tdi >= 0) { + u->bitcount_tdi++; + io_tdi(tdi); + } + + io_tck(0); + io_tck(1); + + int line_tdo = io_tdo(); + int rc = line_tdo >= 0 ? line_tdo : 0; + + if (rmask == 1 && u->retval_i < 256) + u->retval[u->retval_i++] = line_tdo; + + if (tdo >= 0 && line_tdo >= 0) { + u->bitcount_tdo++; + if (tdo != line_tdo) + rc = -1; + } + + if (u->verbose >= 4) { + fprintf(stderr, "[TMS:%d, TDI:%d, TDO_ARG:%d, TDO_LINE:%d, RMASK:%d, RC:%d]\n", tms, tdi, tdo, line_tdo, rmask, rc); + } + + u->clockcount++; + return rc; +} + +static void h_pulse_sck(struct libxsvf_host *h) +{ + struct udata_s *u = h->user_data; + if (u->verbose >= 4) { + fprintf(stderr, "[SCK]\n"); + } + io_sck(0); + io_sck(1); +} + +static void h_set_trst(struct libxsvf_host *h, int v) +{ + struct udata_s *u = h->user_data; + if (u->verbose >= 4) { + fprintf(stderr, "[TRST:%d]\n", v); + } + io_trst(v); +} + +static int h_set_frequency(struct libxsvf_host *h, int v) +{ + fprintf(stderr, "WARNING: Setting JTAG clock frequency to %d ignored!\n", v); + return 0; +} + +static void h_report_tapstate(struct libxsvf_host *h) +{ + struct udata_s *u = h->user_data; + if (u->verbose >= 3) { + fprintf(stderr, "[%s]\n", libxsvf_state2str(h->tap_state)); + } +} + +static void h_report_device(struct libxsvf_host *h, unsigned long idcode) +{ + // struct udata_s *u = h->user_data; + printf("idcode=0x%08lx, revision=0x%01lx, part=0x%04lx, manufactor=0x%03lx\n", idcode, + (idcode >> 28) & 0xf, (idcode >> 12) & 0xffff, (idcode >> 1) & 0x7ff); +} + +static void h_report_status(struct libxsvf_host *h, const char *message) +{ + struct udata_s *u = h->user_data; + if (u->verbose >= 2) { + fprintf(stderr, "[STATUS] %s\n", message); + } +} + +static void h_report_error(struct libxsvf_host *h, const char *file, int line, const char *message) +{ + fprintf(stderr, "[%s:%d] %s\n", file, line, message); +} + +static int realloc_maxsize[LIBXSVF_MEM_NUM]; + +static void *h_realloc(struct libxsvf_host *h, void *ptr, int size, enum libxsvf_mem which) +{ + struct udata_s *u = h->user_data; + if (size > realloc_maxsize[which]) + realloc_maxsize[which] = size; + if (u->verbose >= 3) { + fprintf(stderr, "[REALLOC:%s:%d]\n", libxsvf_mem2str(which), size); + } + return realloc(ptr, size); +} + +static struct udata_s u; + +static struct libxsvf_host h = { + .udelay = h_udelay, + .setup = h_setup, + .shutdown = h_shutdown, + .getbyte = h_getbyte, + .pulse_tck = h_pulse_tck, + .pulse_sck = h_pulse_sck, + .set_trst = h_set_trst, + .set_frequency = h_set_frequency, + .report_tapstate = h_report_tapstate, + .report_device = h_report_device, + .report_status = h_report_status, + .report_error = h_report_error, + .realloc = h_realloc, + .user_data = &u +}; + +const char *progname; + +static void copyleft() +{ + static int already_printed = 0; + if (already_printed) + return; + fprintf(stderr, "xsvftool-gpio, part of Lib(X)SVF (http://www.clifford.at/libxsvf/).\n"); + fprintf(stderr, "Copyright (C) 2009 RIEGL Research ForschungsGmbH\n"); + fprintf(stderr, "Copyright (C) 2009 Clifford Wolf <clifford@clifford.at>\n"); + fprintf(stderr, "Lib(X)SVF is free software licensed under the ISC license.\n"); + already_printed = 1; +} + +static void help() +{ + copyleft(); + fprintf(stderr, "\n"); + fprintf(stderr, "Usage: %s [ -r funcname ] [ -v ... ] [ -L | -B ] { -s svf-file | -x xsvf-file | -c } ...\n", progname); + fprintf(stderr, "\n"); + fprintf(stderr, " -r funcname\n"); + fprintf(stderr, " Dump C-code for pseudo-allocator based on example files\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -v, -vv, -vvv, -vvvv\n"); + fprintf(stderr, " Verbose, more verbose and even more verbose\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -L, -B\n"); + fprintf(stderr, " Print RMASK bits as hex value (little or big endian)\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -s svf-file\n"); + fprintf(stderr, " Play the specified SVF file\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -x xsvf-file\n"); + fprintf(stderr, " Play the specified XSVF file\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -c\n"); + fprintf(stderr, " List devices in JTAG chain\n"); + fprintf(stderr, "\n"); + exit(1); +} + +int main(int argc, char **argv) +{ + int rc = 0; + int gotaction = 0; + int hex_mode = 0; + const char *realloc_name = NULL; + int opt, i, j; + + progname = argc >= 1 ? argv[0] : "xvsftool"; + while ((opt = getopt(argc, argv, "r:vLBx:s:c")) != -1) + { + switch (opt) + { + case 'r': + realloc_name = optarg; + break; + case 'v': + copyleft(); + u.verbose++; + break; + case 'x': + case 's': + gotaction = 1; + if (u.verbose) + fprintf(stderr, "Playing %s file `%s'.\n", opt == 's' ? "SVF" : "XSVF", optarg); + if (!strcmp(optarg, "-")) + u.f = stdin; + else + u.f = fopen(optarg, "rb"); + if (u.f == NULL) { + fprintf(stderr, "Can't open %s file `%s': %s\n", opt == 's' ? "SVF" : "XSVF", optarg, strerror(errno)); + rc = 1; + break; + } + if (libxsvf_play(&h, opt == 's' ? LIBXSVF_MODE_SVF : LIBXSVF_MODE_XSVF) < 0) { + fprintf(stderr, "Error while playing %s file `%s'.\n", opt == 's' ? "SVF" : "XSVF", optarg); + rc = 1; + } + if (strcmp(optarg, "-")) + fclose(u.f); + break; + case 'c': + gotaction = 1; + if (libxsvf_play(&h, LIBXSVF_MODE_SCAN) < 0) { + fprintf(stderr, "Error while scanning JTAG chain.\n"); + rc = 1; + } + break; + case 'L': + hex_mode = 1; + break; + case 'B': + hex_mode = 2; + break; + default: + help(); + break; + } + } + + if (!gotaction) + help(); + + if (u.verbose) { + fprintf(stderr, "Total number of clock cycles: %d\n", u.clockcount); + fprintf(stderr, "Number of significant TDI bits: %d\n", u.bitcount_tdi); + fprintf(stderr, "Number of significant TDO bits: %d\n", u.bitcount_tdo); + if (rc == 0) { + fprintf(stderr, "Finished without errors.\n"); + } else { + fprintf(stderr, "Finished with errors!\n"); + } + } + + if (u.retval_i) { + if (hex_mode) { + printf("0x"); + for (i=0; i < u.retval_i; i+=4) { + int val = 0; + for (j=i; j<i+4; j++) + val = val << 1 | u.retval[hex_mode > 1 ? j : u.retval_i - j - 1]; + printf("%x", val); + } + } else { + printf("%d rmask bits:", u.retval_i); + for (i=0; i < u.retval_i; i++) + printf(" %d", u.retval[i]); + } + printf("\n"); + } + + if (realloc_name) { + int num = 0; + for (i = 0; i < LIBXSVF_MEM_NUM; i++) { + if (realloc_maxsize[i] > 0) + num = i+1; + } + printf("void *%s(void *h, void *ptr, int size, int which) {\n", realloc_name); + for (i = 0; i < num; i++) { + if (realloc_maxsize[i] > 0) + printf("\tstatic unsigned char buf_%s[%d];\n", libxsvf_mem2str(i), realloc_maxsize[i]); + } + printf("\tstatic unsigned char *buflist[%d] = {", num); + for (i = 0; i < num; i++) { + if (realloc_maxsize[i] > 0) + printf("%sbuf_%s", i ? ", " : " ", libxsvf_mem2str(i)); + else + printf("%s(void*)0", i ? ", " : " "); + } + printf(" };\n\tstatic int sizelist[%d] = {", num); + for (i = 0; i < num; i++) { + if (realloc_maxsize[i] > 0) + printf("%ssizeof(buf_%s)", i ? ", " : " ", libxsvf_mem2str(i)); + else + printf("%s0", i ? ", " : " "); + } + printf(" };\n"); + printf("\treturn which < %d && size <= sizelist[which] ? buflist[which] : (void*)0;\n", num); + printf("};\n"); + } + + return rc; +} + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/all-wcprops b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/all-wcprops new file mode 100644 index 0000000..84a5a14 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/all-wcprops @@ -0,0 +1,113 @@ +K 25 +svn:wc:ra_dav:version-url +V 44 +/libxsvf/!svn/ver/59/trunk/xsvftool-xpcu.src +END +prep_erasecpld.svf +K 25 +svn:wc:ra_dav:version-url +V 63 +/libxsvf/!svn/ver/51/trunk/xsvftool-xpcu.src/prep_erasecpld.svf +END +fx2.h +K 25 +svn:wc:ra_dav:version-url +V 50 +/libxsvf/!svn/ver/32/trunk/xsvftool-xpcu.src/fx2.h +END +fx2usb-interface.c +K 25 +svn:wc:ra_dav:version-url +V 63 +/libxsvf/!svn/ver/58/trunk/xsvftool-xpcu.src/fx2usb-interface.c +END +prep_firmware.ihx +K 25 +svn:wc:ra_dav:version-url +V 62 +/libxsvf/!svn/ver/52/trunk/xsvftool-xpcu.src/prep_firmware.ihx +END +fx2usb-interface.h +K 25 +svn:wc:ra_dav:version-url +V 63 +/libxsvf/!svn/ver/58/trunk/xsvftool-xpcu.src/fx2usb-interface.h +END +firmware.c +K 25 +svn:wc:ra_dav:version-url +V 55 +/libxsvf/!svn/ver/58/trunk/xsvftool-xpcu.src/firmware.c +END +README +K 25 +svn:wc:ra_dav:version-url +V 51 +/libxsvf/!svn/ver/59/trunk/xsvftool-xpcu.src/README +END +gpifprog.c +K 25 +svn:wc:ra_dav:version-url +V 55 +/libxsvf/!svn/ver/32/trunk/xsvftool-xpcu.src/gpifprog.c +END +genfx2hrd.sh +K 25 +svn:wc:ra_dav:version-url +V 57 +/libxsvf/!svn/ver/58/trunk/xsvftool-xpcu.src/genfx2hrd.sh +END +hardware.v +K 25 +svn:wc:ra_dav:version-url +V 55 +/libxsvf/!svn/ver/58/trunk/xsvftool-xpcu.src/hardware.v +END +hardware.sh +K 25 +svn:wc:ra_dav:version-url +V 56 +/libxsvf/!svn/ver/58/trunk/xsvftool-xpcu.src/hardware.sh +END +fx2regs.h +K 25 +svn:wc:ra_dav:version-url +V 54 +/libxsvf/!svn/ver/32/trunk/xsvftool-xpcu.src/fx2regs.h +END +hardware.ucf +K 25 +svn:wc:ra_dav:version-url +V 57 +/libxsvf/!svn/ver/58/trunk/xsvftool-xpcu.src/hardware.ucf +END +reset-probe-impact.sh +K 25 +svn:wc:ra_dav:version-url +V 66 +/libxsvf/!svn/ver/51/trunk/xsvftool-xpcu.src/reset-probe-impact.sh +END +Makefile +K 25 +svn:wc:ra_dav:version-url +V 53 +/libxsvf/!svn/ver/58/trunk/xsvftool-xpcu.src/Makefile +END +prep_hardware.svf +K 25 +svn:wc:ra_dav:version-url +V 62 +/libxsvf/!svn/ver/51/trunk/xsvftool-xpcu.src/prep_hardware.svf +END +fx2sdly.h +K 25 +svn:wc:ra_dav:version-url +V 54 +/libxsvf/!svn/ver/32/trunk/xsvftool-xpcu.src/fx2sdly.h +END +xsvftool-xpcu.c +K 25 +svn:wc:ra_dav:version-url +V 60 +/libxsvf/!svn/ver/58/trunk/xsvftool-xpcu.src/xsvftool-xpcu.c +END diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/dir-prop-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/dir-prop-base new file mode 100644 index 0000000..b6dfa08 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/dir-prop-base @@ -0,0 +1,53 @@ +K 10 +svn:ignore +V 656 +*.d +hardware.gyd +hardware.ngr +firmware.map +firmware.mem +hardware.lso +firmware.asm +hardware.xml +hardware.bld +firmware.rel +_impactbatch.log +tmperr.err +xsvftool-xpcu +hardware.chk +hardware.mfd +hardware.vm6 +hardware.syr +hardware.xst +xilinx +hardware_pad.csv +gpifprog_fixed.c +firmware.lst +hardware_html +firmware.sym +firmware.rst +hardware.prj +hardware_xst.xrpt +hardware.svf +hardware.cxt +xlnx_auto_0_xdb +hardware.jed +hardware.cmd +firmware.lnk +hardware.pad +_xmsgs +hardware.rpt +hardware_ngdbuild.xrpt +hardware.pnx +firmware.ihx +hardware.ngc +hardware.ngd +hardware_build.xml +hardware.log +hardware_cksum_c.inc +hardware_cksum_vl.inc +filedata.h +erasecpld.svf +erasecpld.cmd + +END diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/entries b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/entries new file mode 100644 index 0000000..356c56c --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/entries @@ -0,0 +1,640 @@ +10 + +dir +95 +http://svn.clifford.at/libxsvf/trunk/xsvftool-xpcu.src +http://svn.clifford.at/libxsvf + + + +2011-03-09T20:13:50.638865Z +59 +clifford +has-props + + + + + + + + + + + + + +26ca6efd-f666-0410-bd9f-983cc4be47ed + +Makefile +file + + + + +2012-10-02T01:57:46.679797Z +990ca3e66bc99801ca0308fd259df4d1 +2011-03-09T16:51:48.495929Z +58 +clifford + + + + + + + + + + + + + + + + + + + + + +3660 + +prep_hardware.svf +file + + + + +2012-10-02T01:57:46.169785Z +f7bf4997cac0d798dcf5916cc218a4eb +2011-03-08T12:42:08.190476Z +51 +clifford + + + + + + + + + + + + + + + + + + + + + +346182 + +fx2sdly.h +file + + + + +2012-10-02T01:57:46.199786Z +4919205747f644d595feccaa0873f785 +2011-02-28T20:31:05.769802Z +32 +clifford + + + + + + + + + + + + + + + + + + + + + +6302 + +xsvftool-xpcu.c +file + + + + +2012-10-02T01:57:46.239787Z +b43eb6aec8f652969a0c342913952772 +2011-03-09T16:51:48.495929Z +58 +clifford + + + + + + + + + + + + + + + + + + + + + +21115 + +prep_erasecpld.svf +file + + + + +2012-10-02T01:57:46.299788Z +3a45e5f09b373a4c96c9e4420027bd77 +2011-03-08T12:42:08.190476Z +51 +clifford + + + + + + + + + + + + + + + + + + + + + +1752 + +fx2.h +file + + + + +2012-10-02T01:57:46.269787Z +c59c23ec6aefccd08b73a8a5837301bd +2011-02-28T20:31:05.769802Z +32 +clifford + + + + + + + + + + + + + + + + + + + + + +13305 + +fx2usb-interface.c +file + + + + +2012-10-02T01:57:46.319789Z +bf015690e1eb02682a4f6077bd3518ef +2011-03-09T16:51:48.495929Z +58 +clifford + + + + + + + + + + + + + + + + + + + + + +6110 + +prep_firmware.ihx +file + + + + +2012-10-02T01:57:46.359790Z +1d334c83dbef94f895b8c4c81368e50c +2011-03-08T13:08:37.409109Z +52 +clifford + + + + + + + + + + + + + + + + + + + + + +10258 + +fx2usb-interface.h +file + + + + +2012-10-02T01:57:46.439791Z +5994e79207cbe9609b2995c1f9c03c5a +2011-03-09T16:51:48.495929Z +58 +clifford + + + + + + + + + + + + + + + + + + + + + +1479 + +firmware.c +file + + + + +2012-10-02T01:57:46.419791Z +841cd86570ee00ef6daf5dda8eeb1ac5 +2011-03-09T16:51:48.495929Z +58 +clifford + + + + + + + + + + + + + + + + + + + + + +16020 + +README +file + + + + +2012-10-02T01:57:46.389790Z +fc53491a441aedbed1f80a1273627806 +2011-03-09T20:13:50.638865Z +59 +clifford + + + + + + + + + + + + + + + + + + + + + +7072 + +gpifprog.c +file + + + + +2012-10-02T01:57:46.469792Z +0db9e58d0f96cbad5467896eab5857ab +2011-02-28T20:31:05.769802Z +32 +clifford + + + + + + + + + + + + + + + + + + + + + +16725 + +genfx2hrd.sh +file + + + + +2012-10-02T01:57:46.499793Z +73408be174362880043dc9f226dd8157 +2011-03-09T16:51:48.495929Z +58 +clifford + + + + + + + + + + + + + + + + + + + + + +2065 + +hardware.v +file + + + + +2012-10-02T01:57:46.529794Z +8446c8f5b855e54859b86eaed921008e +2011-03-09T16:51:48.495929Z +58 +clifford + + + + + + + + + + + + + + + + + + + + + +3386 + +hardware.sh +file + + + + +2012-10-02T01:57:46.599795Z +5ec6b224ed658fc5ba13402f7acb7e1b +2011-03-09T16:51:48.495929Z +58 +clifford + + + + + + + + + + + + + + + + + + + + + +2519 + +fx2regs.h +file + + + + +2012-10-02T01:57:46.569795Z +d4e95ccd07c8a517f6e3e0e5551139fb +2011-02-28T20:31:05.769802Z +32 +clifford + + + + + + + + + + + + + + + + + + + + + +30132 + +hardware.ucf +file + + + + +2012-10-02T01:57:46.629796Z +87b8a7ef3ac3e7cab2712b2554a0d09b +2011-03-09T16:51:48.495929Z +58 +clifford + + + + + + + + + + + + + + + + + + + + + +2523 + +reset-probe-impact.sh +file + + + + +2012-10-02T01:57:46.649796Z +d814ebfbe61b68f701d5b3d610dd46cd +2011-03-08T12:42:08.190476Z +51 +clifford + + + + + + + + + + + + + + + + + + + + + +781 + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/Makefile.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/Makefile.svn-base new file mode 100644 index 0000000..ca0621d --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/Makefile.svn-base @@ -0,0 +1,97 @@ +# +# xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB +# +# Copyright (C) 2011 RIEGL Research ForschungsGmbH +# Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +USE_PREP_FIRMWARE = 1 +USE_PREP_HARDWARE = 1 + +LIBXSVFDIR=.. + +CC = gcc +CFLAGS = -Wall -Wextra -Werror -Os -ggdb -I$(LIBXSVFDIR) -MD +LDFLAGS = -L$(LIBXSVFDIR) +LDLIBS = -lusb -lreadline -lxsvf + +SDCC = sdcc +SDCFLAGS = -mmcs51 --xram-loc 0x2000 + +all: xsvftool-xpcu + +xsvftool-xpcu: filedata.h hardware_cksum_c.inc $(LIBXSVFDIR)/libxsvf.a xsvftool-xpcu.o fx2usb-interface.o + $(CC) $(LDFLAGS) xsvftool-xpcu.o fx2usb-interface.o $(LDLIBS) -o $@ + +hardware.svf erasecpld.svf: hardware.sh hardware.ucf hardware.v hardware_cksum_vl.inc +ifeq ($(USE_PREP_HARDWARE),1) + cp prep_hardware.svf hardware.svf + cp prep_erasecpld.svf erasecpld.svf +else + bash hardware.sh +endif + +firmware.ihx: firmware.c +ifeq ($(USE_PREP_FIRMWARE),1) + cp prep_firmware.ihx firmware.ihx +else + cpp -MD -MF $(basename $<).d -MT $(basename $<).ihx -o /dev/null $< + $(SDCC) $(SDCFLAGS) $< +endif + +firmware.ihx: gpifprog_fixed.c +gpifprog_fixed.c: gpifprog.c + sed 's/ xdata / /g;' < $< > $@ + +$(LIBXSVFDIR)/libxsvf.a: + $(MAKE) -C $(LIBXSVFDIR) libxsvf.a + +hardware_cksum_vl.inc hardware_cksum_c.inc: hardware.sh hardware.ucf hardware.v + echo "'h$$(cat $^ | md5sum | cut -c1-6 | tr a-z A-Z)" > hardware_cksum_vl.inc + echo "\"$$(cat $^ | md5sum | cut -c1-6 | tr a-z A-Z)\"" > hardware_cksum_c.inc + +filedata.h: hardware.svf erasecpld.svf firmware.ihx + { echo "unsigned char hardware_svf[] = { " && perl -pe 's/(.)/ord($$1).","/sge' hardware.svf && echo "};" && \ + echo "unsigned char erasecpld_svf[] = { " && perl -pe 's/(.)/ord($$1).","/sge' erasecpld.svf && echo "};" && \ + echo "unsigned char firmware_ihx[] = { " && perl -pe 's/(.)/ord($$1).","/sge' firmware.ihx && echo "};"; } | \ + perl -pe 's/(.{70}.*?,)/$$1\n/g' > filedata.h_new + mv filedata.h_new filedata.h + +prep: + make clean + sed -i '/^USE_PREP_/ s/1/0/;' Makefile + make hardware.svf firmware.ihx + cp hardware.svf prep_hardware.svf + cp erasecpld.svf prep_erasecpld.svf + cp firmware.ihx prep_firmware.ihx + sed -i '/^USE_PREP_/ s/0/1/;' Makefile + make clean + +clean: + rm -f firmware.asm firmware.lnk firmware.lst firmware.map + rm -f firmware.mem firmware.rel firmware.rst firmware.sym + rm -f hardware.bld hardware_build.xml hardware.chk hardware.cmd + rm -f hardware.log hardware.lso hardware.mfd hardware.ngc hardware.ngd + rm -f hardware_ngdbuild.xrpt hardware.ngr hardware.pad hardware_pad.csv + rm -f hardware.pnx hardware.prj hardware.rpt hardware.svf hardware.syr + rm -f hardware.vm6 hardware.xml hardware.xst hardware_xst.xrpt + rm -f hardware.cxt hardware.gyd hardware.jed _impactbatch.log tmperr.err + rm -f hardware_cksum_vl.inc hardware_cksum_c.inc gpifprog_fixed.c + rm -rf hardware_html xilinx xlnx_auto_0_xdb _xmsgs + rm -f filedata.h firmware.ihx erasecpld.cmd erasecpld.svf + rm -f xsvftool-xpcu core *.o *.d + +-include *.d + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/README.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/README.svn-base new file mode 100644 index 0000000..451f25a --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/README.svn-base @@ -0,0 +1,173 @@ + +xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB +================================================================== + +This program can be used to play SVF and XSVF files on the "Xilinx +Platform Cable USB" family of JTAG probes. + +It is based on the libxsvf library: +http://www.clifford.at/libxsvf/ + +This tool replaces the original CPLD firmware from Xilinx when run +on one of the probes. See the notes below on how to restore the Xilinx +firmware on the CPLD. + +The file 'firmware.c' also contains a brief description of the pin mappings +between the the Cypress CY7C68013A-100AIX and the Xilinx XC2C256-7VQ100 +on the probe as used by this software, as well as a brief description of +the USB protocol this software is using. + +With this software it is possible to use JTAG clock speeds up to 24 MHz. +But with the high frequencies there are "gaps" in the transmission resulting +in an effective transfer rate of approx 6 MBit/s. + +This tool contains firmware for the CY7C68013A-100AIX (firmware.c) and for the +XC2C256-7VQ100 (hardware.v) on the probe. Some more exotic tools are needed to +build these. So pre-compiled versions of this firmware images are distributed +along with the xsvftool-xpcu source code. You need to set the USE_PREP_* config +options in the Makefile to '0' if you prefer building the firmware yourself. + + +xsvftool-xpcu vs. Xilinx USB cable driver +----------------------------------------- + +When installed, the Xilinx "USB cable driver" tries to load its own FX2 firmware +to the probes as soon as the probe is connected to the system. Once the Xilinx +firmware is loaded into the probe the probe can't be accessed using xsvftool-xpcu. + +So in order to use xsvftool-xpcu with a probe you need to uninstall or disable +the Xilinx driver. This can usually be done by commenting out the udev rules in +the /etc/udev/rules.d/xusbdfwu.rules file. + +A probe that shows up as 03fd:0008 in the lsusb output is running the Xilinx +firmware. You won't be able to access this probe with xsvftool-xpcu unless you +deactivate the Xilinx driver as explained above, disconnect the probe from the +PC and reconnect it. + +You can always load the Xilinx FX2 firmware in the probe manually without using +the udev rules (see "fxload" examples below). + + +Supported and unsupported hardware +---------------------------------- + +This software has been tested using the following probes: + + - A Xilinx Platform Cable USB + - The on-board probe of a Spartan-6 development board + - A self-built clone of the Xilinx Platform Cable USB + +Per default the software recognizes the following USB vendor IDs and device IDs +(VID:PID) as a supported probe: + + 03fd:0009 Xilinx Platform Cable USB + 03fd:000d Xilinx Platform Cable USB (embedded) + 03fd:000f Xilinx Platform Cable USB (low power) + 04b4:8613 Cypress FX2 without configuration PROM + +Currently there is no support for the "Xilinx Platform Cable USB II" in this +software. + + +Notes on device permissions +--------------------------- + +To run xsvftool-xpcu as unprivileged user you need to set the permissions on +the USB device accordingly. E.g.: + + $ lsusb -d 04b4:8613 + Bus 002 Device 021: ID 04b4:8613 Cypress Semiconductor Corp. CY7C68013 EZ-USB FX2 USB 2.0 Development Kit + + $ sudo chmod 0666 /dev/bus/usb/002/021 + + $ ./xsvftool-xpcu -Pc + Scanning JTAG chain.. + idcode=0x16d4a093, revision=0x1, part=0x6d4a, manufactor=0x049 + Total number of JTAG clock cycles performed: 79 + READY. + +Instead of doing this manually each time the device is connected one might +prefer to create a udev rule that does set the permissions automatically: + + $ sudo vi /etc/udev/rules.d/xsvftool-xpcu.rules + # Allow everyone access to the Xilinx Platform Cable USB (see 'man 7 udev' for details) + ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="03fd", ATTR{idProduct}=="0008", MODE:="0666" + ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="03fd", ATTR{idProduct}=="0009", MODE:="0666" + ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="03fd", ATTR{idProduct}=="000d", MODE:="0666" + ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="03fd", ATTR{idProduct}=="000f", MODE:="0666" + ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="04b4", ATTR{idProduct}=="8613", MODE:="0666" + +NOTE: The line for 03fd:0008 is for the re-enumerated device when the original +Xilinx firmware is used on the probe. It is not used nor needed when using +xsvftool-xpcu exclusively, but isn't harmful either. + + +Restore Xilinx CPLD Firmware with "xsvftool-xpcu" +------------------------------------------------- + +The Xilinx ISE comes with XSVF files for programming the CPLD with the Xilinx +firmware. You can simply use "xsvftool-xpcu" to program the CPLD to the original +firmware: + + $ ./xsvftool-xpcu -P -x /opt/Xilinx/13.1/ISE_DS/ISE/data/xusb_emb.fmwr + +After that you need to disconnect and reconnect the probe before you can load +the Xilinx FX2 firmware and use the probe with impact: + + $ lsusb -d 04b4:8613 + Bus 001 Device 106: ID 04b4:8613 Cypress Semiconductor Corp. CY7C68013 EZ-USB FX2 USB 2.0 Development Kit + + $ fxload -t fx2 -D /dev/bus/usb/001/106 -I /opt/Xilinx/13.1/ISE_DS/ISE/bin/lin/xusb_emb.hex + + ### usually you need to wait a few seconds here for the device to re-enumerate and settle ### + $ lsusb -d 03fd:0008 + Bus 001 Device 108: ID 03fd:0008 Xilinx, Inc. + + ### just scan the JTAG chain to test the probe ### + $ /opt/Xilinx/13.1/ISE_DS/ISE/bin/lin/impact -batch /dev/null + > setMode -bs + > setCable -port usb21 + > identify + > quit + +NOTE: Use the *.hex file from the "ISE/bin/lin/" directory! It is different +from the one in the "ISE/data/" directory and only this one seams to work. + + +Restore Xilinx CPLD Firmware with "impact" +------------------------------------------ + +Up to ISE 11 the Xilinx "impact" program did automatically reprogram the CPLD on +the probe whenever needed. Since ISE 12 this does only work when there is already +an (older) Xilinx firmware on the probe. So in order to reprogram the CPLD on +the probe with "impact" you need ISE 11 installed. Then it is possible to +reprogram the CPLD just by loading the fx2 firmware and running impact on the +probe: + + $ lsusb -d 04b4:8613 + Bus 002 Device 021: ID 04b4:8613 Cypress Semiconductor Corp. CY7C68013 EZ-USB FX2 USB 2.0 Development Kit + + $ fxload -t fx2 -D /dev/bus/usb/002/021 -I /opt/Xilinx/11.3/ISE/bin/lin/xusb_emb.hex + + ### usually you need to wait a few seconds here for the device to re-enumerate and settle ### + $ lsusb -d 03fd:0008 + Bus 002 Device 022: ID 03fd:0008 Xilinx, Inc. + + $ vi impatch_batch.cmd + setMode -bs + setCable -port usb21 + quit + + ### this automatically reprograms the CPLD without doing anything else with the probe ### + $ /opt/Xilinx/11.3/ISE/bin/lin/impact -batch impatch_batch.cmd + +The "reset-probe.sh" shell script in this directory (libxsvf/xsvftool-xpcu.src/) +does this automatically: + + $ bash reset-probe-impact.sh + +WARNING: For some reason this procedure fails when the probe has been used with +xsvftool-xpcu between being connected to USB and loading xusb_emb.hex into the +FX2. So disconnect and reconnect the probe before running the reset-probe.sh +script! + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/firmware.c.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/firmware.c.svn-base new file mode 100644 index 0000000..587d53e --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/firmware.c.svn-base @@ -0,0 +1,782 @@ +/* + * xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB + * + * Copyright (C) 2011 RIEGL Research ForschungsGmbH + * Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +/* + * Command Reference (EP1) + * ----------------------- + * + * Request: T<nn> + * Response: OK (T<nn>) + * Configure timing for EP2/JTAG transfers + * + * Request: R + * Response: OK (R) + * Perform internal and CPLD reset + * + * Request: W<n> + * Response: OK (W<n>) + * Wait for the CPLD sync signal to become <n> + * + * Request: C + * Response: <nnnnnn> (C) + * Read out the CPLD verilog checksum + * + * Request: B<n> + * Response: OK (B<n>) + * Set BUFFER_OE to <n> + * + * Request: I<n> + * Response: OK (I<n>) + * Set INIT_INT to <n> + * + * Request: S + * Response: <n><m><k><p><x><y><s> (S) + * Read and reset status bits + * (<n> = FX2-JTAG-ERR, <m> = CPLD-JTAG-ERR, <k> = INIT_B_INT, + * <p> = SLOE_INT, <x> = FX2-JTAG-TDO, <y> = CPLD-JTAG-TDO, <s> = SYNC) + * + * Request: P + * Response: <n><m><k><p><x><y><s> (P) + * Peek status bits without resetting them + * + * Request: J<bindata> + * Response: -- NONE -- + * Execute JTAG transaction (4bit/cycle) + * + * Request: X + * Response: OK (X) + * Exit. Restore FX2 default settings and enter endless loop + * + * + * Target JTAG Programming (EP2) + * ----------------------------- + * + * Raw JTAG transaction codes. + * (4bit/cycle when T=0, 8bit/cycle otherwise) + * + * + * JTAG Transaction codes + * ---------------------- + * + * 0000: + * NOP + * + * 0001 xxxx: + * Set sync signal to 'xxxx' (engine on CPLD only) + * + * 001x: + * reserved for future use + * + * 01xy: + * JTAG transaction without TDO check. TMS=x, TDI=y + * + * 1zxy: + * JTAG transaction with TDO check. TDO=z, TMS=x, TDI=y + * + * + * FX2 <-> CPLD Interface + * ---------------------- + * + * FD[7:0] ---> FD[7:0] + * CTL0 ---> STROBE_FD (neg) + * CTL1 ---> STROBE_SHIFT (neg) + * CTL2 ---> STROBE_PUSH (neg) + * + * PC[7:4] <--- SYNC + * PC3 <--- TDO + * PC2 <--- CKSUM + * PC1 <--- INIT_B_INT + * PC0 <--- ERR + * + * PD4 ---> RESET_SYNC + * PD3 ---> RESET_ERR + * PD2 ---> INIT_INT + * PD1 ---> SHIFT_CKSUM + * PD0 ---> RESET_CKSUM + * + * + * Other FX2 Connections + * --------------------- + * + * PA0 ---> LED_GREEN + * PA1 ---> LED_RED + * PA2 <--- SLOE_INT + * PA3 ---> CPLD_PWR + * PA5 ---> BUFFER_OE + * + * IOE[3] ---> CPLD TCK + * IOE[4] ---> CPLD TMS + * IOE[5] <--- CPLD TDO + * IOE[6] ---> CPLD TDI + * + */ + +// #include "fx2.h" +// #include "fx2regs.h" +// #include "fx2sdly.h" +#include "gpifprog_fixed.c" + +// set to '1' on CPLD JTAG error +BYTE state_err; + +// use quad buffering and larger buffers +#define ALL_RESOURCES_ON_EP2 + +void sleep3us(void) +{ + SYNCDELAY; + SYNCDELAY; + SYNCDELAY; + SYNCDELAY; + SYNCDELAY; + SYNCDELAY; + SYNCDELAY; + SYNCDELAY; +} + +void msleep(WORD ms) +{ + WORD i; + while (ms-- > 0) { + for (i = 0; i < 1000; i += 3) + sleep3us(); + } +} + +void setup(void) +{ + BYTE i; + + /* CPU: 48MHz, don't drive CLKOUT */ + CPUCS = 0x10; + +#ifdef ALL_RESOURCES_ON_EP2 + /* Configure the Endpoints (EP2 => 4x 1kB) */ + EP2CFG = 0xA8; // VALID=1, DIR=0, TYPE=10, SIZE=1, BUF=00 + EP4CFG = 0x00; // VALID=0, DIR=0, TYPE=00, SIZE=0, BUF=00 + EP6CFG = 0x00; // VALID=0, DIR=0, TYPE=00, SIZE=0, BUF=00 + EP8CFG = 0x00; // VALID=0, DIR=0, TYPE=00, SIZE=0, BUF=00 +#else + /* Configure the Endpoints (default config) */ + EP2CFG = 0xA2; // VALID=1, DIR=0, TYPE=10, SIZE=0, BUF=10 + EP4CFG = 0xA0; // VALID=1, DIR=0, TYPE=10, SIZE=0, BUF=00 + EP6CFG = 0xA2; // VALID=1, DIR=1, TYPE=10, SIZE=0, BUF=10 + EP8CFG = 0xA0; // VALID=1, DIR=1, TYPE=10, SIZE=0, BUF=00 +#endif + + /* USB FIFO */ + FIFORESET = 0x80; + SYNCDELAY; + FIFORESET = 2; + SYNCDELAY; + FIFORESET = 4; + SYNCDELAY; + FIFORESET = 6; + SYNCDELAY; + FIFORESET = 8; + SYNCDELAY; + FIFORESET = 0; + SYNCDELAY; + + /* Set WORDWIDE=0 for all FIFOs */ + EP2FIFOCFG &= ~bmWORDWIDE; + SYNCDELAY; + EP4FIFOCFG &= ~bmWORDWIDE; + SYNCDELAY; + EP6FIFOCFG &= ~bmWORDWIDE; + SYNCDELAY; + EP8FIFOCFG &= ~bmWORDWIDE; + SYNCDELAY; + + /* Initialize GPIF Subsystem */ + GpifInit(); + + /* Misc signals on port A */ + PORTACFG = 0; + OEA = bmBIT0 | bmBIT1 | bmBIT3 | bmBIT5; + IOA = 0; + + /* FX2 <-> CPLD signals on port C */ + PORTCCFG = 0; + OEC = 0; + IOC = 0; + + /* FX2 <-> CPLD signals on port D */ + OED = bmBIT0 | bmBIT1 | bmBIT2 | bmBIT3 | bmBIT4; + IOD = 0; + + /* TURN ON CPLD VCC */ + PA3 = 1; + msleep(100); + + /* XC2S256 JTAG on port E */ + OEE = bmBIT3|bmBIT4|bmBIT6; + IOE = bmBIT3|bmBIT4|bmBIT6; + + /* Set TAP to logic reset state */ + for (i=0; i<16; i++) { + // TMS is high - just generate a few TCK pulses + sleep3us(); + IOE &= ~bmBIT3; + sleep3us(); + IOE |= bmBIT3; + } + + /* All set up: Let the host find out about the new EP config */ +#if 0 + USBCS |= bmDISCON; + msleep(10); + USBCS &= ~bmDISCON; +#endif +} + +void unsetup(void) +{ + WORD i, j; + + /* 1st TURN OFF CPLD VCC */ + PA3 = 0; + msleep(100); + + /* + * Restore default configuration as good as possible + * + * The idea is that one could load the xilinx firmware without + * the need to reconnect. Unfortunately it doesn't work. Something + * important is still different between the FX2 after reset and + * after running this unsetup() function. + */ + + GPIFABORT = 0xFF; + SYNCDELAY; + + CPUCS = 0x02; + SYNCDELAY; + IFCONFIG = 0x80; + SYNCDELAY; + + EP2CFG = 0xA2; + SYNCDELAY; + EP4CFG = 0xA0; + SYNCDELAY; + EP6CFG = 0xA2; + SYNCDELAY; + EP8CFG = 0xA0; + SYNCDELAY; + + EP2FIFOCFG = 0x05; + SYNCDELAY; + EP4FIFOCFG = 0x05; + SYNCDELAY; + EP6FIFOCFG = 0x05; + SYNCDELAY; + EP8FIFOCFG = 0x05; + SYNCDELAY; + + FIFORESET = 0x80; + SYNCDELAY; + FIFORESET = 2; + SYNCDELAY; + FIFORESET = 4; + SYNCDELAY; + FIFORESET = 6; + SYNCDELAY; + FIFORESET = 8; + SYNCDELAY; + FIFORESET = 0; + SYNCDELAY; + + IOA = 0; + IOC = 0; + IOD = 0; + IOE = 0; + + OEA = 0; + OEC = 0; + OED = 0; + OEE = 0; + + PORTACFG = 0; + PORTCCFG = 0; + + OEA = 1; + for (i=0; i<3; i++) { + PA0 = 1; + for (j=0; j<3000; j++) sleep3us(); + PA1 = 0; + for (j=0; j<3000; j++) sleep3us(); + } + OEA = 0; + + // just ack everything and wait + while (1) { + if((EP1OUTCS & bmBIT1) == 0) { + EP1OUTBC = 0xff; SYNCDELAY; + } + if((EP2CS & bmBIT2) == 0) { + EP2BCL = 0xff; SYNCDELAY; + } + } +} + +BYTE nibble2hex(BYTE v) +{ + return "0123456789ABCDEF"[v&0x0f]; +} + +BYTE hex2nibble(BYTE v) +{ + if (v >= '0' && v <= '9') + return v - '0'; + if (v >= 'a' && v <= 'f') + return 0x0A + v - 'a'; + if (v >= 'A' && v <= 'F') + return 0x0A + v - 'A'; + return 0; +} + +xdata at (0xE400 + 64) volatile BYTE GPIF_WAVE2_LEN0; +xdata at (0xE400 + 66) volatile BYTE GPIF_WAVE2_LEN2; + +void proc_command_t(BYTE t) +{ + if (t == 0) { + GPIFWFSELECT = 0x4E; SYNCDELAY; + } else { + GPIFWFSELECT = 0x4A; SYNCDELAY; + GPIF_WAVE2_LEN0 = t; SYNCDELAY; + GPIF_WAVE2_LEN2 = t; SYNCDELAY; + } + + EP1INBUF[0] = 'O'; SYNCDELAY; + EP1INBUF[1] = 'K'; SYNCDELAY; + EP1INBUF[2] = ' '; SYNCDELAY; + EP1INBUF[3] = '('; SYNCDELAY; + EP1INBUF[4] = 'T'; SYNCDELAY; + EP1INBUF[5] = nibble2hex((t >> 4) & 0x0f); SYNCDELAY; + EP1INBUF[6] = nibble2hex((t >> 0) & 0x0f); SYNCDELAY; + EP1INBUF[7] = ')'; SYNCDELAY; + EP1INBC = 8; SYNCDELAY; +} + +void proc_command_r(void) +{ + BYTE i, *p = "OK (R)"; + + /* Reset TAP to logic reset state */ + IOE = bmBIT3|bmBIT4|bmBIT6; + for (i=0; i<16; i++) { + // TMS is high - just generate a few TCK pulses + sleep3us(); + IOE &= ~bmBIT3; + sleep3us(); + IOE |= bmBIT3; + } + + /* Reset speed to max. */ + GPIFWFSELECT = 0x4E; SYNCDELAY; + + /* Reset JTAG error state */ + state_err = 0; + + /* Reset LEDs and BUFFER_OE */ + PA0 = PA1 = PA5 = 0; + + /* Assert CPLD reset pins */ + IOD = bmBIT0 | bmBIT3 | bmBIT4; + SYNCDELAY; + IOD |= bmBIT1; + SYNCDELAY; + IOD = 0; + + /* Send response */ + for (i = 0; p[i]; i++) { + EP1INBUF[i] = p[i]; SYNCDELAY; + } + EP1INBC = i; SYNCDELAY; +} + +void proc_bulkdata(void); + +void proc_command_w_ok(BYTE v) +{ + EP1INBUF[0] = 'O'; SYNCDELAY; + EP1INBUF[1] = 'K'; SYNCDELAY; + EP1INBUF[2] = ' '; SYNCDELAY; + EP1INBUF[3] = '('; SYNCDELAY; + EP1INBUF[4] = 'W'; SYNCDELAY; + EP1INBUF[5] = nibble2hex(v); SYNCDELAY; + EP1INBUF[6] = ')'; SYNCDELAY; + EP1INBC = 7; SYNCDELAY; +} + +void proc_command_w_timeout(BYTE v) +{ + EP1INBUF[0] = 'T'; SYNCDELAY; + EP1INBUF[1] = 'I'; SYNCDELAY; + EP1INBUF[2] = 'M'; SYNCDELAY; + EP1INBUF[3] = 'E'; SYNCDELAY; + EP1INBUF[4] = 'O'; SYNCDELAY; + EP1INBUF[5] = 'U'; SYNCDELAY; + EP1INBUF[6] = 'T'; SYNCDELAY; + EP1INBUF[7] = '!'; SYNCDELAY; + EP1INBUF[8] = ' '; SYNCDELAY; + EP1INBUF[9] = 'S'; SYNCDELAY; + EP1INBUF[10] = '='; SYNCDELAY; + EP1INBUF[11] = nibble2hex(IOC >> 4); SYNCDELAY; + EP1INBUF[12] = ' '; SYNCDELAY; + EP1INBUF[13] = '('; SYNCDELAY; + EP1INBUF[14] = 'W'; SYNCDELAY; + EP1INBUF[15] = nibble2hex(v); SYNCDELAY; + EP1INBUF[16] = ')'; SYNCDELAY; + EP1INBC = 17; SYNCDELAY; +} + +void proc_command_w(BYTE v) +{ + WORD i, j; + + for (i = 0; i < 1000; i++) + for (j = 0; j < 1000; j++) + { + /* check for wait condition */ + if ((IOC >> 4) == v) { + proc_command_w_ok(v); + return; + } + + /* check for data on EP2 */ + if((EP2CS & bmBIT2) == 0) { + PA0 = 1; + proc_bulkdata(); + PA0 = 0; + } + } + + proc_command_w_timeout(v); +} + +void proc_command_c(void) +{ + BYTE i, j, buf; + + /* Reset chksum register */ + PD0 = 1; + PD1 = 0; + SYNCDELAY; + PD1 = 1; + SYNCDELAY; + PD0 = 0; + PD1 = 0; + + for (i = 0; i < 6; i++) { + buf = 0; + for (j = 0; j < 4; j++) { + buf = buf << 1 | PC2; + SYNCDELAY; + PD1 = 1; + SYNCDELAY; + PD1 = 0; + } + EP1INBUF[i] = nibble2hex(buf); SYNCDELAY; + } + + EP1INBUF[6] = ' '; SYNCDELAY; + EP1INBUF[7] = '('; SYNCDELAY; + EP1INBUF[8] = 'C'; SYNCDELAY; + EP1INBUF[9] = ')'; SYNCDELAY; + EP1INBC = 10; SYNCDELAY; +} + +void proc_command_b(BYTE v) +{ + PA5 = v; + + EP1INBUF[0] = 'O'; SYNCDELAY; + EP1INBUF[1] = 'K'; SYNCDELAY; + EP1INBUF[2] = ' '; SYNCDELAY; + EP1INBUF[3] = '('; SYNCDELAY; + EP1INBUF[4] = 'B'; SYNCDELAY; + EP1INBUF[5] = v ? '1' : '0'; SYNCDELAY; + EP1INBUF[6] = ')'; SYNCDELAY; + EP1INBC = 7; SYNCDELAY; +} + +void proc_command_i(BYTE v) +{ + PD2 = v; + + EP1INBUF[0] = 'O'; SYNCDELAY; + EP1INBUF[1] = 'K'; SYNCDELAY; + EP1INBUF[2] = ' '; SYNCDELAY; + EP1INBUF[3] = '('; SYNCDELAY; + EP1INBUF[4] = 'I'; SYNCDELAY; + EP1INBUF[5] = v ? '1' : '0'; SYNCDELAY; + EP1INBUF[6] = ')'; SYNCDELAY; + EP1INBC = 7; SYNCDELAY; +} + +void proc_command_s(void) +{ + EP1INBUF[0] = PC0 ? '1' : '0'; SYNCDELAY; + EP1INBUF[1] = state_err ? '1' : '0'; SYNCDELAY; + EP1INBUF[2] = PC1 ? '1' : '0'; SYNCDELAY; + EP1INBUF[3] = PA2 ? '1' : '0'; SYNCDELAY; + EP1INBUF[4] = PC3 ? '1' : '0'; SYNCDELAY; + EP1INBUF[5] = (IOE & bmBIT5) ? '1' : '0'; SYNCDELAY; + EP1INBUF[6] = nibble2hex(IOC >> 4); SYNCDELAY; + EP1INBUF[7] = ' '; SYNCDELAY; + EP1INBUF[8] = '('; SYNCDELAY; + EP1INBUF[9] = 'S'; SYNCDELAY; + EP1INBUF[10] = ')'; SYNCDELAY; + EP1INBC = 11; SYNCDELAY; + + // reset error state + state_err = 0; + IOD = bmBIT3; + SYNCDELAY; + SYNCDELAY; + IOD &= ~bmBIT3; +} + +void proc_command_p(void) +{ + EP1INBUF[0] = PC0 ? '1' : '0'; SYNCDELAY; + EP1INBUF[1] = state_err ? '1' : '0'; SYNCDELAY; + EP1INBUF[2] = PC1 ? '1' : '0'; SYNCDELAY; + EP1INBUF[3] = PA2 ? '1' : '0'; SYNCDELAY; + EP1INBUF[4] = PC3 ? '1' : '0'; SYNCDELAY; + EP1INBUF[5] = (IOE & bmBIT5) ? '1' : '0'; SYNCDELAY; + EP1INBUF[6] = nibble2hex(IOC >> 4); SYNCDELAY; + EP1INBUF[7] = ' '; SYNCDELAY; + EP1INBUF[8] = '('; SYNCDELAY; + EP1INBUF[9] = 'P'; SYNCDELAY; + EP1INBUF[10] = ')'; SYNCDELAY; + EP1INBC = 11; SYNCDELAY; +} + +BYTE proc_command_j_exec_skip_next; +void proc_command_j_exec(BYTE cmd) +{ + if (proc_command_j_exec_skip_next) { + proc_command_j_exec_skip_next = 0; + return; + } + if (cmd == 0x00) + return; + if (cmd == 0x01) { + // 0001 xxxx: Set sync signal to 'xxxx' (engine on CPLD only) + proc_command_j_exec_skip_next = 1; + return; + } + if ((cmd & 0x0c) == 0x04) + { + // 01xy: JTAG transaction without TDO check. TMS=x, TDI=y + + /* set tms line */ + if (cmd & 0x02) + IOE |= bmBIT4; + else + IOE &= ~bmBIT4; + + /* set tdi line */ + if (cmd & 0x01) + IOE |= bmBIT6; + else + IOE &= ~bmBIT6; + + /* generate tck pulse */ + SYNCDELAY; + IOE &= ~bmBIT3; + sleep3us(); + IOE |= bmBIT3; + SYNCDELAY; + + return; + } + if ((cmd & 0x08) == 0x08) + { + // 1zxy: JTAG transaction with TDO check. TDO=z, TMS=x, TDI=y + + /* set tms line */ + if (cmd & 0x02) + IOE |= bmBIT4; + else + IOE &= ~bmBIT4; + + /* set tdi line */ + if (cmd & 0x01) + IOE |= bmBIT6; + else + IOE &= ~bmBIT6; + + /* generate tck pulse */ + SYNCDELAY; + IOE &= ~bmBIT3; + sleep3us(); + IOE |= bmBIT3; + SYNCDELAY; + + /* perform tdo check */ + if (((cmd & 0x04) == 0) != ((IOE & bmBIT5) == 0)) + state_err = 1; + + return; + } +} + +void proc_command_j(BYTE len) +{ + BYTE i; + proc_command_j_exec_skip_next = 0; + for (i = 1; i < len; i++) { + BYTE cmd = EP1OUTBUF[i]; + proc_command_j_exec(cmd & 0x0f); + proc_command_j_exec(cmd >> 4); + } +} + +void proc_command_x(void) +{ + EP1INBUF[0] = 'O'; SYNCDELAY; + EP1INBUF[1] = 'K'; SYNCDELAY; + EP1INBUF[2] = ' '; SYNCDELAY; + EP1INBUF[3] = '('; SYNCDELAY; + EP1INBUF[4] = 'X'; SYNCDELAY; + EP1INBUF[5] = ')'; SYNCDELAY; + EP1INBC = 6; SYNCDELAY; + + /* accept new data on EP1OUT */ + EP1OUTBC = 0xff; SYNCDELAY; + + unsetup(); +} + +void proc_command(void) +{ + BYTE len, cmd; + + /* process command(s) */ + len = EP1OUTBC; + cmd = EP1OUTBUF[0]; + + if (cmd == 'T' && len == 3) + proc_command_t((hex2nibble(EP1OUTBUF[1]) << 4) | hex2nibble(EP1OUTBUF[2])); + else if (cmd == 'R' && len == 1) + proc_command_r(); + else if (cmd == 'W' && len == 2) + proc_command_w(hex2nibble(EP1OUTBUF[1])); + else if (cmd == 'C' && len == 1) + proc_command_c(); + else if (cmd == 'B' && len == 2) + proc_command_b(EP1OUTBUF[1] == '1'); + else if (cmd == 'I' && len == 2) + proc_command_i(EP1OUTBUF[1] == '1'); + else if (cmd == 'S' && len == 1) + proc_command_s(); + else if (cmd == 'P' && len == 1) + proc_command_p(); + else if (cmd == 'J') + proc_command_j(len); + else if (cmd == 'X') + proc_command_x(); + else + { + /* send error response */ + EP1INBUF[0] = 'E'; SYNCDELAY; + EP1INBUF[1] = 'R'; SYNCDELAY; + EP1INBUF[2] = 'R'; SYNCDELAY; + EP1INBUF[3] = 'O'; SYNCDELAY; + EP1INBUF[4] = 'R'; SYNCDELAY; + EP1INBUF[5] = '!'; SYNCDELAY; + EP1INBC = 6; SYNCDELAY; + } + + /* accept new data on EP1OUT */ + EP1OUTBC = 0xff; SYNCDELAY; +} + +void proc_bulkdata(void) +{ + WORD len; + + len = (EP2BCH << 8) | EP2BCL; + if (len == 0) + { + /* ignore this and accept data on EP2 */ + EP2BCL = 0xff; SYNCDELAY; + } +#if 0 + else if (len == 1) + { + while ((GPIFTRIG & 0x80) == 0) { /* GPIF is busy */ } + + /* transfer single byte */ + XGPIFSGLDATH = 0; SYNCDELAY; + XGPIFSGLDATLX = EP2FIFOBUF[0]; SYNCDELAY; + + /* accept new data on EP2 */ + EP2BCL = 0xff; SYNCDELAY; + } +#endif + else + { + while ((GPIFTRIG & 0x80) == 0) { /* GPIF is busy */ } + + /* pass pkt to GPIF master */ + EP2GPIFTCH = EP2BCH; + EP2GPIFTCL = EP2BCL; + EP2BCL = 0x00; + EP2GPIFTRIG = 0xff; + } +} + +void main(void) +{ + state_err = 0; + + setup(); + + /* accept data on EP2 */ + EP2BCL = 0xff; SYNCDELAY; // 1st buffer + EP2BCL = 0xff; SYNCDELAY; // 2nd buffer +#ifdef ALL_RESOURCES_ON_EP2 + EP2BCL = 0xff; SYNCDELAY; // 3rd buffer + EP2BCL = 0xff; SYNCDELAY; // 4th buffer +#endif + + while (1) + { + /* check for data on EP1 */ + if((EP1OUTCS & bmBIT1) == 0) { + PA1 = 1; + proc_command(); + PA1 = 0; + } + + /* check for data on EP2 */ + if((EP2CS & bmBIT2) == 0) { + PA0 = 1; + proc_bulkdata(); + PA0 = 0; + } + } +} + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/fx2.h.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/fx2.h.svn-base new file mode 100644 index 0000000..79db73b --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/fx2.h.svn-base @@ -0,0 +1,332 @@ +// **** Auto-generated using genfx2hrd.sh from CY3684 EZ USB FX2LP Development Kit headers +//----------------------------------------------------------------------------- +// File: FX2.h +// Contents: EZ-USB FX2/FX2LP/FX1 constants, macros, datatypes, globals, and library +// function prototypes. +// +// $Archive: /USB/Target/Inc/Fx2.h $ +// $Date: 3/23/05 2:30p $ +// $Revision: 16 $ +// +// Copyright (c) 2005 Cypress Semiconductor, All rights reserved +//----------------------------------------------------------------------------- +#ifndef FX2_H //Header sentry +#define FX2_H + +#define INTERNAL_DSCR_ADDR 0x0080 // Relocate Descriptors to 0x80 +#define bmSTRETCH 0x07 +#define FW_STRETCH_VALUE 0x0 // Set stretch to 0 in frameworks + +//----------------------------------------------------------------------------- +// Constants +//----------------------------------------------------------------------------- +#define TRUE 1 +#define FALSE 0 + +#define bmBIT0 0x01 +#define bmBIT1 0x02 +#define bmBIT2 0x04 +#define bmBIT3 0x08 +#define bmBIT4 0x10 +#define bmBIT5 0x20 +#define bmBIT6 0x40 +#define bmBIT7 0x80 + +#define DEVICE_DSCR 0x01 // Descriptor type: Device +#define CONFIG_DSCR 0x02 // Descriptor type: Configuration +#define STRING_DSCR 0x03 // Descriptor type: String +#define INTRFC_DSCR 0x04 // Descriptor type: Interface +#define ENDPNT_DSCR 0x05 // Descriptor type: End Point +#define DEVQUAL_DSCR 0x06 // Descriptor type: Device Qualifier +#define OTHERSPEED_DSCR 0x07 // Descriptor type: Other Speed Configuration + +#define bmBUSPWR bmBIT7 // Config. attribute: Bus powered +#define bmSELFPWR bmBIT6 // Config. attribute: Self powered +#define bmRWU bmBIT5 // Config. attribute: Remote Wakeup + +#define bmEPOUT bmBIT7 +#define bmEPIN 0x00 + +#define EP_CONTROL 0x00 // End Point type: Control +#define EP_ISO 0x01 // End Point type: Isochronous +#define EP_BULK 0x02 // End Point type: Bulk +#define EP_INT 0x03 // End Point type: Interrupt + +#define SUD_SIZE 8 // Setup data packet size + +////////////////////////////////////////////////////////////////////////////// +//Added for HID + +#define SETUP_MASK 0x60 //Used to mask off request type +#define SETUP_STANDARD_REQUEST 0 //Standard Request +#define SETUP_CLASS_REQUEST 0x20 //Class Request +#define SETUP_VENDOR_REQUEST 0x40 //Vendor Request +#define SETUP_RESERVED_REQUEST 0x60 //Reserved or illegal request + +////////////////////////////////////////////////////////////////////////////// + + +#define SC_GET_STATUS 0x00 // Setup command: Get Status +#define SC_CLEAR_FEATURE 0x01 // Setup command: Clear Feature +#define SC_RESERVED 0x02 // Setup command: Reserved +#define SC_SET_FEATURE 0x03 // Setup command: Set Feature +#define SC_SET_ADDRESS 0x05 // Setup command: Set Address +#define SC_GET_DESCRIPTOR 0x06 // Setup command: Get Descriptor +#define SC_SET_DESCRIPTOR 0x07 // Setup command: Set Descriptor +#define SC_GET_CONFIGURATION 0x08 // Setup command: Get Configuration +#define SC_SET_CONFIGURATION 0x09 // Setup command: Set Configuration +#define SC_GET_INTERFACE 0x0a // Setup command: Get Interface +#define SC_SET_INTERFACE 0x0b // Setup command: Set Interface +#define SC_SYNC_FRAME 0x0c // Setup command: Sync Frame +#define SC_ANCHOR_LOAD 0xa0 // Setup command: Anchor load + +#define GD_DEVICE 0x01 // Get descriptor: Device +#define GD_CONFIGURATION 0x02 // Get descriptor: Configuration +#define GD_STRING 0x03 // Get descriptor: String +#define GD_INTERFACE 0x04 // Get descriptor: Interface +#define GD_ENDPOINT 0x05 // Get descriptor: Endpoint +#define GD_DEVICE_QUALIFIER 0x06 // Get descriptor: Device Qualifier +#define GD_OTHER_SPEED_CONFIGURATION 0x07 // Get descriptor: Other Configuration +#define GD_INTERFACE_POWER 0x08 // Get descriptor: Interface Power +#define GD_HID 0x21 // Get descriptor: HID +#define GD_REPORT 0x22 // Get descriptor: Report + +#define GS_DEVICE 0x80 // Get Status: Device +#define GS_INTERFACE 0x81 // Get Status: Interface +#define GS_ENDPOINT 0x82 // Get Status: End Point + +#define FT_DEVICE 0x00 // Feature: Device +#define FT_ENDPOINT 0x02 // Feature: End Point + +#define I2C_IDLE 0 // I2C Status: Idle mode +#define I2C_SENDING 1 // I2C Status: I2C is sending data +#define I2C_RECEIVING 2 // I2C Status: I2C is receiving data +#define I2C_PRIME 3 // I2C Status: I2C is receiving the first byte of a string +#define I2C_STOP 5 // I2C Status: I2C waiting for stop completion +#define I2C_BERROR 6 // I2C Status: I2C error; Bit Error +#define I2C_NACK 7 // I2C Status: I2C error; No Acknowledge +#define I2C_OK 8 // I2C positive return code +#define I2C_WAITSTOP 9 // I2C Status: Wait for STOP complete + +/*----------------------------------------------------------------------------- + Macros +-----------------------------------------------------------------------------*/ + +#define MSB(word) (BYTE)(((WORD)(word) >> 8) & 0xff) +#define LSB(word) (BYTE)((WORD)(word) & 0xff) + +#define SWAP_ENDIAN(word) ((BYTE*)&word)[0] ^= ((BYTE*)&word)[1];\ + ((BYTE*)&word)[1] ^= ((BYTE*)&word)[0];\ + ((BYTE*)&word)[0] ^= ((BYTE*)&word)[1] + +#define EZUSB_IRQ_ENABLE() EUSB = 1 +#define EZUSB_IRQ_DISABLE() EUSB = 0 +#define EZUSB_IRQ_CLEAR() EXIF &= ~0x10 // IE2_ + +#define EZUSB_STALL_EP0() EP0CS |= bmEPSTALL + +// WRITEDELAY() has been replaced by SYNCDELAY; macro in fx2sdly.h +// ...it is here for backwards compatibility... + +// the WRITEDELAY macro compiles to the time equivalent of 3 NOPs. +// It is used in the frameworks to allow for write recovery time +// requirements of certain registers. This is only necessary for +// EZ-USB FX parts. See the EZ-USB FX TRM for +// more information on write recovery time issues. +#define WRITEDELAY() {char writedelaydummy = 0;} +// if this firmware will never run on an EZ-USB FX part replace +// with: +// #define WRITEDELAY() + +// macro to reset and endpoint data toggle +#define EZUSB_RESET_DATA_TOGGLE(ep) TOGCTL = (((ep & 0x80) >> 3) + (ep & 0x0F));\ + TOGCTL |= bmRESETTOGGLE + + +#define EZUSB_ENABLE_RSMIRQ() (EICON |= 0x20) // Enable Resume Interrupt (EPFI_) +#define EZUSB_DISABLE_RSMIRQ() (EICON &= ~0x20) // Disable Resume Interrupt (EPFI_) +#define EZUSB_CLEAR_RSMIRQ() (EICON &= ~0x10) // Clear Resume Interrupt Flag (PFI_) + +#define EZUSB_GETI2CSTATUS() (I2CPckt.status) +#define EZUSB_CLEARI2CSTATUS() if((I2CPckt.status == I2C_BERROR) || (I2CPckt.status == I2C_NACK))\ + I2CPckt.status = I2C_IDLE; + +#define EZUSB_ENABLEBP() (BREAKPT |= bmBPEN) +#define EZUSB_DISABLEBP() (BREAKPT &= ~bmBPEN) +#define EZUSB_CLEARBP() (BREAKPT |= bmBREAK) +#define EZUSB_BP(addr) BPADDRH = (BYTE)(((WORD)addr >> 8) & 0xff);\ + BPADDRL = (BYTE)addr + +#define EZUSB_EXTWAKEUP() (((WAKEUPCS & bmWU2) && (WAKEUPCS & bmWU2EN)) ||\ + ((WAKEUPCS & bmWU) && (WAKEUPCS & bmWUEN))) + +#define EZUSB_HIGHSPEED() (USBCS & bmHSM) + +//----------------------------------------------------------------------------- +// Datatypes +//----------------------------------------------------------------------------- +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef bit BOOL; + +#define INT0_VECT 0 +#define TMR0_VECT 1 +#define INT1_VECT 2 +#define TMR1_VECT 3 +#define COM0_VECT 4 +#define TMR2_VECT 5 +#define WKUP_VECT 6 +#define COM1_VECT 7 +#define USB_VECT 8 +#define I2C_VECT 9 +#define INT4_VECT 10 +#define INT5_VECT 11 +#define INT6_VECT 12 + + +typedef struct +{ + BYTE length; + BYTE type; +}DSCR; + +typedef struct // Device Descriptor +{ + BYTE length; // Descriptor length ( = sizeof(DEVICEDSCR) ) + BYTE type; // Decriptor type (Device = 1) + BYTE spec_ver_minor; // Specification Version (BCD) minor + BYTE spec_ver_major; // Specification Version (BCD) major + BYTE dev_class; // Device class + BYTE sub_class; // Device sub-class + BYTE protocol; // Device sub-sub-class + BYTE max_packet; // Maximum packet size + WORD vendor_id; // Vendor ID + WORD product_id; // Product ID + WORD version_id; // Product version ID + BYTE mfg_str; // Manufacturer string index + BYTE prod_str; // Product string index + BYTE serialnum_str; // Serial number string index + BYTE configs; // Number of configurations +}DEVICEDSCR; + +typedef struct // Device Qualifier Descriptor +{ + BYTE length; // Descriptor length ( = sizeof(DEVICEQUALDSCR) ) + BYTE type; // Decriptor type (Device Qualifier = 6) + BYTE spec_ver_minor; // Specification Version (BCD) minor + BYTE spec_ver_major; // Specification Version (BCD) major + BYTE dev_class; // Device class + BYTE sub_class; // Device sub-class + BYTE protocol; // Device sub-sub-class + BYTE max_packet; // Maximum packet size + BYTE configs; // Number of configurations + BYTE reserved0; +}DEVICEQUALDSCR; + +typedef struct +{ + BYTE length; // Configuration length ( = sizeof(CONFIGDSCR) ) + BYTE type; // Descriptor type (Configuration = 2) + WORD config_len; // Configuration + End Points length + BYTE interfaces; // Number of interfaces + BYTE index; // Configuration number + BYTE config_str; // Configuration string + BYTE attrib; // Attributes (b7 - buspwr, b6 - selfpwr, b5 - rwu + BYTE power; // Power requirement (div 2 ma) +}CONFIGDSCR; + +typedef struct +{ + BYTE length; // Interface descriptor length ( - sizeof(INTRFCDSCR) ) + BYTE type; // Descriptor type (Interface = 4) + BYTE index; // Zero-based index of this interface + BYTE alt_setting; // Alternate setting + BYTE ep_cnt; // Number of end points + BYTE class; // Interface class + BYTE sub_class; // Interface sub class + BYTE protocol; // Interface sub sub class + BYTE interface_str; // Interface descriptor string index +}INTRFCDSCR; + +typedef struct +{ + BYTE length; // End point descriptor length ( = sizeof(ENDPNTDSCR) ) + BYTE type; // Descriptor type (End point = 5) + BYTE addr; // End point address + BYTE ep_type; // End point type + BYTE mp_L; // Maximum packet size + BYTE mp_H; + BYTE interval; // Interrupt polling interval +}ENDPNTDSCR; + +typedef struct +{ + BYTE length; // String descriptor length + BYTE type; // Descriptor type +}STRINGDSCR; + +typedef struct +{ + BYTE cntrl; // End point control register + BYTE bytes; // End point buffer byte count +}EPIOC; + +typedef struct +{ + BYTE length; + BYTE *dat; + BYTE count; + BYTE status; +}I2CPCKT; + +//----------------------------------------------------------------------------- +// Globals +//----------------------------------------------------------------------------- +extern code BYTE USB_AutoVector; + +extern WORD pDeviceDscr; +extern WORD pDeviceQualDscr; +extern WORD pHighSpeedConfigDscr; +extern WORD pFullSpeedConfigDscr; +extern WORD pConfigDscr; +extern WORD pOtherConfigDscr; +extern WORD pStringDscr; + +extern code DEVICEDSCR DeviceDscr; +extern code DEVICEQUALDSCR DeviceQualDscr; +extern code CONFIGDSCR HighSpeedConfigDscr; +extern code CONFIGDSCR FullSpeedConfigDscr; +extern code STRINGDSCR StringDscr; +extern code DSCR UserDscr; + +extern I2CPCKT I2CPckt; + +//----------------------------------------------------------------------------- +// Function Prototypes +//----------------------------------------------------------------------------- + +extern void EZUSB_Renum(void); +extern void EZUSB_Discon(BOOL renum); + +extern void EZUSB_Susp(void); +extern void EZUSB_Resume(void); + +extern void EZUSB_Delay1ms(void); +extern void EZUSB_Delay(WORD ms); + +extern CONFIGDSCR xdata* EZUSB_GetConfigDscr(BYTE ConfigIdx); +extern INTRFCDSCR xdata* EZUSB_GetIntrfcDscr(BYTE ConfigIdx, BYTE IntrfcIdx, BYTE AltSetting); +extern STRINGDSCR xdata* EZUSB_GetStringDscr(BYTE StrIdx); +extern DSCR xdata* EZUSB_GetDscr(BYTE index, DSCR* dscr, BYTE type); + +extern void EZUSB_InitI2C(void); +extern BOOL EZUSB_WriteI2C_(BYTE addr, BYTE length, BYTE xdata *dat); +extern BOOL EZUSB_ReadI2C_(BYTE addr, BYTE length, BYTE xdata *dat); +extern BOOL EZUSB_WriteI2C(BYTE addr, BYTE length, BYTE xdata *dat); +extern BOOL EZUSB_ReadI2C(BYTE addr, BYTE length, BYTE xdata *dat); +extern void EZUSB_WaitForEEPROMWrite(BYTE addr); + +extern void modify_endpoint_stall(BYTE epid, BYTE stall); + +#endif // FX2_H diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/fx2regs.h.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/fx2regs.h.svn-base new file mode 100644 index 0000000..f0d7f5b --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/fx2regs.h.svn-base @@ -0,0 +1,687 @@ +// **** Auto-generated using genfx2hrd.sh from CY3684 EZ USB FX2LP Development Kit headers +//----------------------------------------------------------------------------- +// File: FX2regs.h +// Contents: EZ-USB FX2/FX2LP/FX1 register declarations and bit mask definitions. +// +// $Archive: /USB/Target/Inc/fx2regs.h $ +// $Date: 4/13/05 4:29p $ +// $Revision: 42 $ +// +// +// Copyright (c) 2005 Cypress Semiconductor, All rights reserved +//----------------------------------------------------------------------------- + +#ifndef FX2REGS_H /* Header Sentry */ +#define FX2REGS_H + +//----------------------------------------------------------------------------- +// FX2/FX2LP/FX1 Related Register Assignments +//----------------------------------------------------------------------------- + +// The Ez-USB FX2/FX2LP/FX1 registers are defined here. We use fx2regs.h for register +// address allocation by using "#define ALLOCATE_EXTERN". +// When using "#define ALLOCATE_EXTERN", you get (for instance): +// xdata volatile BYTE OUT7BUF[64] _at_ 0x7B40; +// Such lines are created from FX2.h by using the preprocessor. +// Incidently, these lines will not generate any space in the resulting hex +// file; they just bind the symbols to the addresses for compilation. +// You just need to put "#define ALLOCATE_EXTERN" in your main program file; +// i.e. fw.c or a stand-alone C source file. +// Without "#define ALLOCATE_EXTERN", you just get the external reference: +// extern xdata volatile BYTE OUT7BUF[64] ;// 0x7B40; +// This uses the concatenation operator "##" to insert a comment "//" +// to cut off the end of the line, "_at_ 0x7B40;", which is not wanted. + +#ifdef ALLOCATE_EXTERN +#define EXTERN +#define _AT_ _at_ +#else +#define EXTERN extern +#define _AT_ ;/ ## / +#endif + +xdata at 0xE400 volatile BYTE GPIF_WAVE_DATA; +xdata at 0xE480 volatile BYTE RES_WAVEDATA_END; + +// General Configuration + +xdata at 0xE600 volatile BYTE CPUCS; // Control & Status +xdata at 0xE601 volatile BYTE IFCONFIG; // Interface Configuration +xdata at 0xE602 volatile BYTE PINFLAGSAB; // FIFO FLAGA and FLAGB Assignments +xdata at 0xE603 volatile BYTE PINFLAGSCD; // FIFO FLAGC and FLAGD Assignments +xdata at 0xE604 volatile BYTE FIFORESET; // Restore FIFOS to default state +xdata at 0xE605 volatile BYTE BREAKPT; // Breakpoint +xdata at 0xE606 volatile BYTE BPADDRH; // Breakpoint Address H +xdata at 0xE607 volatile BYTE BPADDRL; // Breakpoint Address L +xdata at 0xE608 volatile BYTE UART230; // 230 Kbaud clock for T0,T1,T2 +xdata at 0xE609 volatile BYTE FIFOPINPOLAR; // FIFO polarities +xdata at 0xE60A volatile BYTE REVID; // Chip Revision +xdata at 0xE60B volatile BYTE REVCTL; // Chip Revision Control + +// Endpoint Configuration + +xdata at 0xE610 volatile BYTE EP1OUTCFG; // Endpoint 1-OUT Configuration +xdata at 0xE611 volatile BYTE EP1INCFG; // Endpoint 1-IN Configuration +xdata at 0xE612 volatile BYTE EP2CFG; // Endpoint 2 Configuration +xdata at 0xE613 volatile BYTE EP4CFG; // Endpoint 4 Configuration +xdata at 0xE614 volatile BYTE EP6CFG; // Endpoint 6 Configuration +xdata at 0xE615 volatile BYTE EP8CFG; // Endpoint 8 Configuration +xdata at 0xE618 volatile BYTE EP2FIFOCFG; // Endpoint 2 FIFO configuration +xdata at 0xE619 volatile BYTE EP4FIFOCFG; // Endpoint 4 FIFO configuration +xdata at 0xE61A volatile BYTE EP6FIFOCFG; // Endpoint 6 FIFO configuration +xdata at 0xE61B volatile BYTE EP8FIFOCFG; // Endpoint 8 FIFO configuration +xdata at 0xE620 volatile BYTE EP2AUTOINLENH; // Endpoint 2 Packet Length H (IN only) +xdata at 0xE621 volatile BYTE EP2AUTOINLENL; // Endpoint 2 Packet Length L (IN only) +xdata at 0xE622 volatile BYTE EP4AUTOINLENH; // Endpoint 4 Packet Length H (IN only) +xdata at 0xE623 volatile BYTE EP4AUTOINLENL; // Endpoint 4 Packet Length L (IN only) +xdata at 0xE624 volatile BYTE EP6AUTOINLENH; // Endpoint 6 Packet Length H (IN only) +xdata at 0xE625 volatile BYTE EP6AUTOINLENL; // Endpoint 6 Packet Length L (IN only) +xdata at 0xE626 volatile BYTE EP8AUTOINLENH; // Endpoint 8 Packet Length H (IN only) +xdata at 0xE627 volatile BYTE EP8AUTOINLENL; // Endpoint 8 Packet Length L (IN only) +xdata at 0xE630 volatile BYTE EP2FIFOPFH; // EP2 Programmable Flag trigger H +xdata at 0xE631 volatile BYTE EP2FIFOPFL; // EP2 Programmable Flag trigger L +xdata at 0xE632 volatile BYTE EP4FIFOPFH; // EP4 Programmable Flag trigger H +xdata at 0xE633 volatile BYTE EP4FIFOPFL; // EP4 Programmable Flag trigger L +xdata at 0xE634 volatile BYTE EP6FIFOPFH; // EP6 Programmable Flag trigger H +xdata at 0xE635 volatile BYTE EP6FIFOPFL; // EP6 Programmable Flag trigger L +xdata at 0xE636 volatile BYTE EP8FIFOPFH; // EP8 Programmable Flag trigger H +xdata at 0xE637 volatile BYTE EP8FIFOPFL; // EP8 Programmable Flag trigger L +xdata at 0xE640 volatile BYTE EP2ISOINPKTS; // EP2 (if ISO) IN Packets per frame (1-3) +xdata at 0xE641 volatile BYTE EP4ISOINPKTS; // EP4 (if ISO) IN Packets per frame (1-3) +xdata at 0xE642 volatile BYTE EP6ISOINPKTS; // EP6 (if ISO) IN Packets per frame (1-3) +xdata at 0xE643 volatile BYTE EP8ISOINPKTS; // EP8 (if ISO) IN Packets per frame (1-3) +xdata at 0xE648 volatile BYTE INPKTEND; // Force IN Packet End +xdata at 0xE649 volatile BYTE OUTPKTEND; // Force OUT Packet End + +// Interrupts + +xdata at 0xE650 volatile BYTE EP2FIFOIE; // Endpoint 2 Flag Interrupt Enable +xdata at 0xE651 volatile BYTE EP2FIFOIRQ; // Endpoint 2 Flag Interrupt Request +xdata at 0xE652 volatile BYTE EP4FIFOIE; // Endpoint 4 Flag Interrupt Enable +xdata at 0xE653 volatile BYTE EP4FIFOIRQ; // Endpoint 4 Flag Interrupt Request +xdata at 0xE654 volatile BYTE EP6FIFOIE; // Endpoint 6 Flag Interrupt Enable +xdata at 0xE655 volatile BYTE EP6FIFOIRQ; // Endpoint 6 Flag Interrupt Request +xdata at 0xE656 volatile BYTE EP8FIFOIE; // Endpoint 8 Flag Interrupt Enable +xdata at 0xE657 volatile BYTE EP8FIFOIRQ; // Endpoint 8 Flag Interrupt Request +xdata at 0xE658 volatile BYTE IBNIE; // IN-BULK-NAK Interrupt Enable +xdata at 0xE659 volatile BYTE IBNIRQ; // IN-BULK-NAK interrupt Request +xdata at 0xE65A volatile BYTE NAKIE; // Endpoint Ping NAK interrupt Enable +xdata at 0xE65B volatile BYTE NAKIRQ; // Endpoint Ping NAK interrupt Request +xdata at 0xE65C volatile BYTE USBIE; // USB Int Enables +xdata at 0xE65D volatile BYTE USBIRQ; // USB Interrupt Requests +xdata at 0xE65E volatile BYTE EPIE; // Endpoint Interrupt Enables +xdata at 0xE65F volatile BYTE EPIRQ; // Endpoint Interrupt Requests +xdata at 0xE660 volatile BYTE GPIFIE; // GPIF Interrupt Enable +xdata at 0xE661 volatile BYTE GPIFIRQ; // GPIF Interrupt Request +xdata at 0xE662 volatile BYTE USBERRIE; // USB Error Interrupt Enables +xdata at 0xE663 volatile BYTE USBERRIRQ; // USB Error Interrupt Requests +xdata at 0xE664 volatile BYTE ERRCNTLIM; // USB Error counter and limit +xdata at 0xE665 volatile BYTE CLRERRCNT; // Clear Error Counter EC[3..0] +xdata at 0xE666 volatile BYTE INT2IVEC; // Interupt 2 (USB) Autovector +xdata at 0xE667 volatile BYTE INT4IVEC; // Interupt 4 (FIFOS & GPIF) Autovector +xdata at 0xE668 volatile BYTE INTSETUP; // Interrupt 2&4 Setup + +// Input/Output + +xdata at 0xE670 volatile BYTE PORTACFG; // I/O PORTA Alternate Configuration +xdata at 0xE671 volatile BYTE PORTCCFG; // I/O PORTC Alternate Configuration +xdata at 0xE672 volatile BYTE PORTECFG; // I/O PORTE Alternate Configuration +xdata at 0xE678 volatile BYTE I2CS; // Control & Status +xdata at 0xE679 volatile BYTE I2DAT; // Data +xdata at 0xE67A volatile BYTE I2CTL; // I2C Control +xdata at 0xE67B volatile BYTE XAUTODAT1; // Autoptr1 MOVX access +xdata at 0xE67C volatile BYTE XAUTODAT2; // Autoptr2 MOVX access + +#define EXTAUTODAT1 XAUTODAT1 +#define EXTAUTODAT2 XAUTODAT2 + +// USB Control + +xdata at 0xE680 volatile BYTE USBCS; // USB Control & Status +xdata at 0xE681 volatile BYTE SUSPEND; // Put chip into suspend +xdata at 0xE682 volatile BYTE WAKEUPCS; // Wakeup source and polarity +xdata at 0xE683 volatile BYTE TOGCTL; // Toggle Control +xdata at 0xE684 volatile BYTE USBFRAMEH; // USB Frame count H +xdata at 0xE685 volatile BYTE USBFRAMEL; // USB Frame count L +xdata at 0xE686 volatile BYTE MICROFRAME; // Microframe count, 0-7 +xdata at 0xE687 volatile BYTE FNADDR; // USB Function address + +// Endpoints + +xdata at 0xE68A volatile BYTE EP0BCH; // Endpoint 0 Byte Count H +xdata at 0xE68B volatile BYTE EP0BCL; // Endpoint 0 Byte Count L +xdata at 0xE68D volatile BYTE EP1OUTBC; // Endpoint 1 OUT Byte Count +xdata at 0xE68F volatile BYTE EP1INBC; // Endpoint 1 IN Byte Count +xdata at 0xE690 volatile BYTE EP2BCH; // Endpoint 2 Byte Count H +xdata at 0xE691 volatile BYTE EP2BCL; // Endpoint 2 Byte Count L +xdata at 0xE694 volatile BYTE EP4BCH; // Endpoint 4 Byte Count H +xdata at 0xE695 volatile BYTE EP4BCL; // Endpoint 4 Byte Count L +xdata at 0xE698 volatile BYTE EP6BCH; // Endpoint 6 Byte Count H +xdata at 0xE699 volatile BYTE EP6BCL; // Endpoint 6 Byte Count L +xdata at 0xE69C volatile BYTE EP8BCH; // Endpoint 8 Byte Count H +xdata at 0xE69D volatile BYTE EP8BCL; // Endpoint 8 Byte Count L +xdata at 0xE6A0 volatile BYTE EP0CS; // Endpoint Control and Status +xdata at 0xE6A1 volatile BYTE EP1OUTCS; // Endpoint 1 OUT Control and Status +xdata at 0xE6A2 volatile BYTE EP1INCS; // Endpoint 1 IN Control and Status +xdata at 0xE6A3 volatile BYTE EP2CS; // Endpoint 2 Control and Status +xdata at 0xE6A4 volatile BYTE EP4CS; // Endpoint 4 Control and Status +xdata at 0xE6A5 volatile BYTE EP6CS; // Endpoint 6 Control and Status +xdata at 0xE6A6 volatile BYTE EP8CS; // Endpoint 8 Control and Status +xdata at 0xE6A7 volatile BYTE EP2FIFOFLGS; // Endpoint 2 Flags +xdata at 0xE6A8 volatile BYTE EP4FIFOFLGS; // Endpoint 4 Flags +xdata at 0xE6A9 volatile BYTE EP6FIFOFLGS; // Endpoint 6 Flags +xdata at 0xE6AA volatile BYTE EP8FIFOFLGS; // Endpoint 8 Flags +xdata at 0xE6AB volatile BYTE EP2FIFOBCH; // EP2 FIFO total byte count H +xdata at 0xE6AC volatile BYTE EP2FIFOBCL; // EP2 FIFO total byte count L +xdata at 0xE6AD volatile BYTE EP4FIFOBCH; // EP4 FIFO total byte count H +xdata at 0xE6AE volatile BYTE EP4FIFOBCL; // EP4 FIFO total byte count L +xdata at 0xE6AF volatile BYTE EP6FIFOBCH; // EP6 FIFO total byte count H +xdata at 0xE6B0 volatile BYTE EP6FIFOBCL; // EP6 FIFO total byte count L +xdata at 0xE6B1 volatile BYTE EP8FIFOBCH; // EP8 FIFO total byte count H +xdata at 0xE6B2 volatile BYTE EP8FIFOBCL; // EP8 FIFO total byte count L +xdata at 0xE6B3 volatile BYTE SUDPTRH; // Setup Data Pointer high address byte +xdata at 0xE6B4 volatile BYTE SUDPTRL; // Setup Data Pointer low address byte +xdata at 0xE6B5 volatile BYTE SUDPTRCTL; // Setup Data Pointer Auto Mode +xdata at 0xE6B8 volatile BYTE SETUPDAT[8]; // 8 bytes of SETUP data + +// GPIF + +xdata at 0xE6C0 volatile BYTE GPIFWFSELECT; // Waveform Selector +xdata at 0xE6C1 volatile BYTE GPIFIDLECS; // GPIF Done, GPIF IDLE drive mode +xdata at 0xE6C2 volatile BYTE GPIFIDLECTL; // Inactive Bus, CTL states +xdata at 0xE6C3 volatile BYTE GPIFCTLCFG; // CTL OUT pin drive +xdata at 0xE6C4 volatile BYTE GPIFADRH; // GPIF Address H +xdata at 0xE6C5 volatile BYTE GPIFADRL; // GPIF Address L + +xdata at 0xE6CE volatile BYTE GPIFTCB3; // GPIF Transaction Count Byte 3 +xdata at 0xE6CF volatile BYTE GPIFTCB2; // GPIF Transaction Count Byte 2 +xdata at 0xE6D0 volatile BYTE GPIFTCB1; // GPIF Transaction Count Byte 1 +xdata at 0xE6D1 volatile BYTE GPIFTCB0; // GPIF Transaction Count Byte 0 + +#define EP2GPIFTCH GPIFTCB1 // these are here for backwards compatibility +#define EP2GPIFTCL GPIFTCB0 // +#define EP4GPIFTCH GPIFTCB1 // these are here for backwards compatibility +#define EP4GPIFTCL GPIFTCB0 // +#define EP6GPIFTCH GPIFTCB1 // these are here for backwards compatibility +#define EP6GPIFTCL GPIFTCB0 // +#define EP8GPIFTCH GPIFTCB1 // these are here for backwards compatibility +#define EP8GPIFTCL GPIFTCB0 // + +xdata at 0xE6D2 volatile BYTE EP2GPIFFLGSEL; // EP2 GPIF Flag select +xdata at 0xE6D3 volatile BYTE EP2GPIFPFSTOP; // Stop GPIF EP2 transaction on prog. flag +xdata at 0xE6D4 volatile BYTE EP2GPIFTRIG; // EP2 FIFO Trigger +xdata at 0xE6DA volatile BYTE EP4GPIFFLGSEL; // EP4 GPIF Flag select +xdata at 0xE6DB volatile BYTE EP4GPIFPFSTOP; // Stop GPIF EP4 transaction on prog. flag +xdata at 0xE6DC volatile BYTE EP4GPIFTRIG; // EP4 FIFO Trigger +xdata at 0xE6E2 volatile BYTE EP6GPIFFLGSEL; // EP6 GPIF Flag select +xdata at 0xE6E3 volatile BYTE EP6GPIFPFSTOP; // Stop GPIF EP6 transaction on prog. flag +xdata at 0xE6E4 volatile BYTE EP6GPIFTRIG; // EP6 FIFO Trigger +xdata at 0xE6EA volatile BYTE EP8GPIFFLGSEL; // EP8 GPIF Flag select +xdata at 0xE6EB volatile BYTE EP8GPIFPFSTOP; // Stop GPIF EP8 transaction on prog. flag +xdata at 0xE6EC volatile BYTE EP8GPIFTRIG; // EP8 FIFO Trigger +xdata at 0xE6F0 volatile BYTE XGPIFSGLDATH; // GPIF Data H (16-bit mode only) +xdata at 0xE6F1 volatile BYTE XGPIFSGLDATLX; // Read/Write GPIF Data L & trigger transac +xdata at 0xE6F2 volatile BYTE XGPIFSGLDATLNOX; // Read GPIF Data L, no transac trigger +xdata at 0xE6F3 volatile BYTE GPIFREADYCFG; // Internal RDY,Sync/Async, RDY5CFG +xdata at 0xE6F4 volatile BYTE GPIFREADYSTAT; // RDY pin states +xdata at 0xE6F5 volatile BYTE GPIFABORT; // Abort GPIF cycles + +// UDMA + +xdata at 0xE6C6 volatile BYTE FLOWSTATE; //Defines GPIF flow state +xdata at 0xE6C7 volatile BYTE FLOWLOGIC; //Defines flow/hold decision criteria +xdata at 0xE6C8 volatile BYTE FLOWEQ0CTL; //CTL states during active flow state +xdata at 0xE6C9 volatile BYTE FLOWEQ1CTL; //CTL states during hold flow state +xdata at 0xE6CA volatile BYTE FLOWHOLDOFF; +xdata at 0xE6CB volatile BYTE FLOWSTB; //CTL/RDY Signal to use as master data strobe +xdata at 0xE6CC volatile BYTE FLOWSTBEDGE; //Defines active master strobe edge +xdata at 0xE6CD volatile BYTE FLOWSTBHPERIOD; //Half Period of output master strobe +xdata at 0xE60C volatile BYTE GPIFHOLDAMOUNT; //Data delay shift +xdata at 0xE67D volatile BYTE UDMACRCH; //CRC Upper byte +xdata at 0xE67E volatile BYTE UDMACRCL; //CRC Lower byte +xdata at 0xE67F volatile BYTE UDMACRCQUAL; //UDMA In only, host terminated use only + + +// Debug/Test +// The following registers are for Cypress's internal testing purposes only. +// These registers are not documented in the datasheet or the Technical Reference +// Manual as they were not designed for end user application usage +xdata at 0xE6F8 volatile BYTE DBUG; // Debug +xdata at 0xE6F9 volatile BYTE TESTCFG; // Test configuration +xdata at 0xE6FA volatile BYTE USBTEST; // USB Test Modes +xdata at 0xE6FB volatile BYTE CT1; // Chirp Test--Override +xdata at 0xE6FC volatile BYTE CT2; // Chirp Test--FSM +xdata at 0xE6FD volatile BYTE CT3; // Chirp Test--Control Signals +xdata at 0xE6FE volatile BYTE CT4; // Chirp Test--Inputs + +// Endpoint Buffers + +xdata at 0xE740 volatile BYTE EP0BUF[64]; // EP0 IN-OUT buffer +xdata at 0xE780 volatile BYTE EP1OUTBUF[64]; // EP1-OUT buffer +xdata at 0xE7C0 volatile BYTE EP1INBUF[64]; // EP1-IN buffer +xdata at 0xF000 volatile BYTE EP2FIFOBUF[1024]; // 512/1024-byte EP2 buffer (IN or OUT) +xdata at 0xF400 volatile BYTE EP4FIFOBUF[1024]; // 512 byte EP4 buffer (IN or OUT) +xdata at 0xF800 volatile BYTE EP6FIFOBUF[1024]; // 512/1024-byte EP6 buffer (IN or OUT) +xdata at 0xFC00 volatile BYTE EP8FIFOBUF[1024]; // 512 byte EP8 buffer (IN or OUT) + +// Error Correction Code (ECC) Registers (FX2LP/FX1 only) + +xdata at 0xE628 volatile BYTE ECCCFG; // ECC Configuration +xdata at 0xE629 volatile BYTE ECCRESET; // ECC Reset +xdata at 0xE62A volatile BYTE ECC1B0; // ECC1 Byte 0 +xdata at 0xE62B volatile BYTE ECC1B1; // ECC1 Byte 1 +xdata at 0xE62C volatile BYTE ECC1B2; // ECC1 Byte 2 +xdata at 0xE62D volatile BYTE ECC2B0; // ECC2 Byte 0 +xdata at 0xE62E volatile BYTE ECC2B1; // ECC2 Byte 1 +xdata at 0xE62F volatile BYTE ECC2B2; // ECC2 Byte 2 + +// Feature Registers (FX2LP/FX1 only) +xdata at 0xE50D volatile BYTE GPCR2; // Chip Features + +#undef EXTERN +#undef _AT_ + +/*----------------------------------------------------------------------------- + Special Function Registers (SFRs) + The byte registers and bits defined in the following list are based + on the Synopsis definition of the 8051 Special Function Registers for EZ-USB. + If you modify the register definitions below, please regenerate the file + "ezregs.inc" which includes the same basic information for assembly inclusion. +-----------------------------------------------------------------------------*/ + +sfr at 0x80 IOA; + /* IOA */ + sbit at (0x80 + 0) PA0; + sbit at (0x80 + 1) PA1; + sbit at (0x80 + 2) PA2; + sbit at (0x80 + 3) PA3; + + sbit at (0x80 + 4) PA4; + sbit at (0x80 + 5) PA5; + sbit at (0x80 + 6) PA6; + sbit at (0x80 + 7) PA7; +sfr at 0x81 SP; +sfr at 0x82 DPL; +sfr at 0x83 DPH; +sfr at 0x84 DPL1; +sfr at 0x85 DPH1; +sfr at 0x86 DPS; + /* DPS */ + // sbit SEL = 0x86+0; +sfr at 0x87 PCON; + /* PCON */ + //sbit IDLE = 0x87+0; + //sbit STOP = 0x87+1; + //sbit GF0 = 0x87+2; + //sbit GF1 = 0x87+3; + //sbit SMOD0 = 0x87+7; +sfr at 0x88 TCON; + /* TCON */ + sbit at (0x88+0) IT0; + sbit at (0x88+1) IE0; + sbit at (0x88+2) IT1; + sbit at (0x88+3) IE1; + sbit at (0x88+4) TR0; + sbit at (0x88+5) TF0; + sbit at (0x88+6) TR1; + sbit at (0x88+7) TF1; +sfr at 0x89 TMOD; + /* TMOD */ + //sbit M00 = 0x89+0; + //sbit M10 = 0x89+1; + //sbit CT0 = 0x89+2; + //sbit GATE0 = 0x89+3; + //sbit M01 = 0x89+4; + //sbit M11 = 0x89+5; + //sbit CT1 = 0x89+6; + //sbit GATE1 = 0x89+7; +sfr at 0x8A TL0; +sfr at 0x8B TL1; +sfr at 0x8C TH0; +sfr at 0x8D TH1; +sfr at 0x8E CKCON; + /* CKCON */ + //sbit MD0 = 0x89+0; + //sbit MD1 = 0x89+1; + //sbit MD2 = 0x89+2; + //sbit T0M = 0x89+3; + //sbit T1M = 0x89+4; + //sbit T2M = 0x89+5; +sfr at 0x8F SPC_FNC; // Was WRS in Reg320 + /* CKCON */ + //sbit WRS = 0x8F+0; +sfr at 0x90 IOB; + /* IOB */ + sbit at (0x90 + 0) PB0; + sbit at (0x90 + 1) PB1; + sbit at (0x90 + 2) PB2; + sbit at (0x90 + 3) PB3; + + sbit at (0x90 + 4) PB4; + sbit at (0x90 + 5) PB5; + sbit at (0x90 + 6) PB6; + sbit at (0x90 + 7) PB7; +sfr at 0x91 EXIF; // EXIF Bit Values differ from Reg320 + /* EXIF */ + //sbit USBINT = 0x91+4; + //sbit I2CINT = 0x91+5; + //sbit IE4 = 0x91+6; + //sbit IE5 = 0x91+7; +sfr at 0x92 MPAGE; +sfr at 0x98 SCON0; + /* SCON0 */ + sbit at (0x98+0) RI; + sbit at (0x98+1) TI; + sbit at (0x98+2) RB8; + sbit at (0x98+3) TB8; + sbit at (0x98+4) REN; + sbit at (0x98+5) SM2; + sbit at (0x98+6) SM1; + sbit at (0x98+7) SM0; +sfr at 0x99 SBUF0; + +#define AUTOPTR1H AUTOPTRH1 // for backwards compatibility with examples +#define AUTOPTR1L AUTOPTRL1 // for backwards compatibility with examples +#define APTR1H AUTOPTRH1 // for backwards compatibility with examples +#define APTR1L AUTOPTRL1 // for backwards compatibility with examples + +// this is how they are defined in the TRM +sfr at 0x9A AUTOPTRH1; +sfr at 0x9B AUTOPTRL1; +sfr at 0x9D AUTOPTRH2; +sfr at 0x9E AUTOPTRL2; + +sfr at 0xA0 IOC; + /* IOC */ + sbit at (0xA0 + 0) PC0; + sbit at (0xA0 + 1) PC1; + sbit at (0xA0 + 2) PC2; + sbit at (0xA0 + 3) PC3; + + sbit at (0xA0 + 4) PC4; + sbit at (0xA0 + 5) PC5; + sbit at (0xA0 + 6) PC6; + sbit at (0xA0 + 7) PC7; +sfr at 0xA1 INT2CLR; +sfr at 0xA2 INT4CLR; + +sfr at 0xA8 IE; + /* IE */ + sbit at (0xA8+0) EX0; + sbit at (0xA8+1) ET0; + sbit at (0xA8+2) EX1; + sbit at (0xA8+3) ET1; + sbit at (0xA8+4) ES0; + sbit at (0xA8+5) ET2; + sbit at (0xA8+6) ES1; + sbit at (0xA8+7) EA; + +sfr at 0xAA EP2468STAT; + /* EP2468STAT */ + //sbit EP2E = 0xAA+0; + //sbit EP2F = 0xAA+1; + //sbit EP4E = 0xAA+2; + //sbit EP4F = 0xAA+3; + //sbit EP6E = 0xAA+4; + //sbit EP6F = 0xAA+5; + //sbit EP8E = 0xAA+6; + //sbit EP8F = 0xAA+7; + +sfr at 0xAB EP24FIFOFLGS; +sfr at 0xAC EP68FIFOFLGS; +sfr at 0xAF AUTOPTRSETUP; + /* AUTOPTRSETUP */ + // sbit EXTACC = 0xAF+0; + // sbit APTR1FZ = 0xAF+1; + // sbit APTR2FZ = 0xAF+2; + +sfr at 0xB0 IOD; + /* IOD */ + sbit at (0xB0 + 0) PD0; + sbit at (0xB0 + 1) PD1; + sbit at (0xB0 + 2) PD2; + sbit at (0xB0 + 3) PD3; + + sbit at (0xB0 + 4) PD4; + sbit at (0xB0 + 5) PD5; + sbit at (0xB0 + 6) PD6; + sbit at (0xB0 + 7) PD7; +sfr at 0xB1 IOE; +sfr at 0xB2 OEA; +sfr at 0xB3 OEB; +sfr at 0xB4 OEC; +sfr at 0xB5 OED; +sfr at 0xB6 OEE; + +sfr at 0xB8 IP; + /* IP */ + sbit at (0xB8+0) PX0; + sbit at (0xB8+1) PT0; + sbit at (0xB8+2) PX1; + sbit at (0xB8+3) PT1; + sbit at (0xB8+4) PS0; + sbit at (0xB8+5) PT2; + sbit at (0xB8+6) PS1; + +sfr at 0xBA EP01STAT; +sfr at 0xBB GPIFTRIG; + +sfr at 0xBD GPIFSGLDATH; +sfr at 0xBE GPIFSGLDATLX; +sfr at 0xBF GPIFSGLDATLNOX; + +sfr at 0xC0 SCON1; + /* SCON1 */ + sbit at (0xC0+0) RI1; + sbit at (0xC0+1) TI1; + sbit at (0xC0+2) RB81; + sbit at (0xC0+3) TB81; + sbit at (0xC0+4) REN1; + sbit at (0xC0+5) SM21; + sbit at (0xC0+6) SM11; + sbit at (0xC0+7) SM01; +sfr at 0xC1 SBUF1; +sfr at 0xC8 T2CON; + /* T2CON */ + sbit at (0xC8+0) CP_RL2; + sbit at (0xC8+1) C_T2; + sbit at (0xC8+2) TR2; + sbit at (0xC8+3) EXEN2; + sbit at (0xC8+4) TCLK; + sbit at (0xC8+5) RCLK; + sbit at (0xC8+6) EXF2; + sbit at (0xC8+7) TF2; +sfr at 0xCA RCAP2L; +sfr at 0xCB RCAP2H; +sfr at 0xCC TL2; +sfr at 0xCD TH2; +sfr at 0xD0 PSW; + /* PSW */ + sbit at (0xD0+0) P; + sbit at (0xD0+1) FL; + sbit at (0xD0+2) OV; + sbit at (0xD0+3) RS0; + sbit at (0xD0+4) RS1; + sbit at (0xD0+5) F0; + sbit at (0xD0+6) AC; + sbit at (0xD0+7) CY; +sfr at 0xD8 EICON; // Was WDCON in DS80C320; Bit Values differ from Reg320 + /* EICON */ + sbit at (0xD8+3) INT6; + sbit at (0xD8+4) RESI; + sbit at (0xD8+5) ERESI; + sbit at (0xD8+7) SMOD1; +sfr at 0xE0 ACC; +sfr at 0xE8 EIE; // EIE Bit Values differ from Reg320 + /* EIE */ + sbit at (0xE8+0) EUSB; + sbit at (0xE8+1) EI2C; + sbit at (0xE8+2) EIEX4; + sbit at (0xE8+3) EIEX5; + sbit at (0xE8+4) EIEX6; +sfr at 0xF0 B; +sfr at 0xF8 EIP; // EIP Bit Values differ from Reg320 + /* EIP */ + sbit at (0xF8+0) PUSB; + sbit at (0xF8+1) PI2C; + sbit at (0xF8+2) EIPX4; + sbit at (0xF8+3) EIPX5; + sbit at (0xF8+4) EIPX6; + +/*----------------------------------------------------------------------------- + Bit Masks +-----------------------------------------------------------------------------*/ + +/* CPU Control & Status Register (CPUCS) */ +#define bmPRTCSTB bmBIT5 +#define bmCLKSPD (bmBIT4 | bmBIT3) +#define bmCLKSPD1 bmBIT4 +#define bmCLKSPD0 bmBIT3 +#define bmCLKINV bmBIT2 +#define bmCLKOE bmBIT1 +#define bm8051RES bmBIT0 +/* Port Alternate Configuration Registers */ +/* Port A (PORTACFG) */ +#define bmFLAGD bmBIT7 +#define bmINT1 bmBIT1 +#define bmINT0 bmBIT0 +/* Port C (PORTCCFG) */ +#define bmGPIFA7 bmBIT7 +#define bmGPIFA6 bmBIT6 +#define bmGPIFA5 bmBIT5 +#define bmGPIFA4 bmBIT4 +#define bmGPIFA3 bmBIT3 +#define bmGPIFA2 bmBIT2 +#define bmGPIFA1 bmBIT1 +#define bmGPIFA0 bmBIT0 +/* Port E (PORTECFG) */ +#define bmGPIFA8 bmBIT7 +#define bmT2EX bmBIT6 +#define bmINT6 bmBIT5 +#define bmRXD1OUT bmBIT4 +#define bmRXD0OUT bmBIT3 +#define bmT2OUT bmBIT2 +#define bmT1OUT bmBIT1 +#define bmT0OUT bmBIT0 + +/* I2C Control & Status Register (I2CS) */ +#define bmSTART bmBIT7 +#define bmSTOP bmBIT6 +#define bmLASTRD bmBIT5 +#define bmID (bmBIT4 | bmBIT3) +#define bmBERR bmBIT2 +#define bmACK bmBIT1 +#define bmDONE bmBIT0 +/* I2C Control Register (I2CTL) */ +#define bmSTOPIE bmBIT1 +#define bm400KHZ bmBIT0 +/* Interrupt 2 (USB) Autovector Register (INT2IVEC) */ +#define bmIV4 bmBIT6 +#define bmIV3 bmBIT5 +#define bmIV2 bmBIT4 +#define bmIV1 bmBIT3 +#define bmIV0 bmBIT2 +/* USB Interrupt Request & Enable Registers (USBIE/USBIRQ) */ +#define bmEP0ACK bmBIT6 +#define bmHSGRANT bmBIT5 +#define bmURES bmBIT4 +#define bmSUSP bmBIT3 +#define bmSUTOK bmBIT2 +#define bmSOF bmBIT1 +#define bmSUDAV bmBIT0 +/* Breakpoint register (BREAKPT) */ +#define bmBREAK bmBIT3 +#define bmBPPULSE bmBIT2 +#define bmBPEN bmBIT1 +/* Interrupt 2 & 4 Setup (INTSETUP) */ +#define bmAV2EN bmBIT3 +#define INT4IN bmBIT1 +#define bmAV4EN bmBIT0 +/* USB Control & Status Register (USBCS) */ +#define bmHSM bmBIT7 +#define bmDISCON bmBIT3 +#define bmNOSYNSOF bmBIT2 +#define bmRENUM bmBIT1 +#define bmSIGRESUME bmBIT0 +/* Wakeup Control and Status Register (WAKEUPCS) */ +#define bmWU2 bmBIT7 +#define bmWU bmBIT6 +#define bmWU2POL bmBIT5 +#define bmWUPOL bmBIT4 +#define bmDPEN bmBIT2 +#define bmWU2EN bmBIT1 +#define bmWUEN bmBIT0 +/* End Point 0 Control & Status Register (EP0CS) */ +#define bmHSNAK bmBIT7 +/* End Point 0-1 Control & Status Registers (EP0CS/EP1OUTCS/EP1INCS) */ +#define bmEPBUSY bmBIT1 +#define bmEPSTALL bmBIT0 +/* End Point 2-8 Control & Status Registers (EP2CS/EP4CS/EP6CS/EP8CS) */ +#define bmNPAK (bmBIT6 | bmBIT5 | bmBIT4) +#define bmEPFULL bmBIT3 +#define bmEPEMPTY bmBIT2 +/* Endpoint Status (EP2468STAT) SFR bits */ +#define bmEP8FULL bmBIT7 +#define bmEP8EMPTY bmBIT6 +#define bmEP6FULL bmBIT5 +#define bmEP6EMPTY bmBIT4 +#define bmEP4FULL bmBIT3 +#define bmEP4EMPTY bmBIT2 +#define bmEP2FULL bmBIT1 +#define bmEP2EMPTY bmBIT0 +/* SETUP Data Pointer Auto Mode (SUDPTRCTL) */ +#define bmSDPAUTO bmBIT0 +/* Endpoint Data Toggle Control (TOGCTL) */ +#define bmQUERYTOGGLE bmBIT7 +#define bmSETTOGGLE bmBIT6 +#define bmRESETTOGGLE bmBIT5 +#define bmTOGCTLEPMASK bmBIT3 | bmBIT2 | bmBIT1 | bmBIT0 +/* IBN (In Bulk Nak) enable and request bits (IBNIE/IBNIRQ) */ +#define bmEP8IBN bmBIT5 +#define bmEP6IBN bmBIT4 +#define bmEP4IBN bmBIT3 +#define bmEP2IBN bmBIT2 +#define bmEP1IBN bmBIT1 +#define bmEP0IBN bmBIT0 + +/* PING-NAK enable and request bits (NAKIE/NAKIRQ) */ +#define bmEP8PING bmBIT7 +#define bmEP6PING bmBIT6 +#define bmEP4PING bmBIT5 +#define bmEP2PING bmBIT4 +#define bmEP1PING bmBIT3 +#define bmEP0PING bmBIT2 +#define bmIBN bmBIT0 + +/* Interface Configuration bits (IFCONFIG) */ +#define bmIFCLKSRC bmBIT7 +#define bm3048MHZ bmBIT6 +#define bmIFCLKOE bmBIT5 +#define bmIFCLKPOL bmBIT4 +#define bmASYNC bmBIT3 +#define bmGSTATE bmBIT2 +#define bmIFCFG1 bmBIT1 +#define bmIFCFG0 bmBIT0 +#define bmIFCFGMASK (bmIFCFG0 | bmIFCFG1) +#define bmIFGPIF bmIFCFG1 + +/* EP 2468 FIFO Configuration bits (EP2FIFOCFG,EP4FIFOCFG,EP6FIFOCFG,EP8FIFOCFG) */ +#define bmINFM bmBIT6 +#define bmOEP bmBIT5 +#define bmAUTOOUT bmBIT4 +#define bmAUTOIN bmBIT3 +#define bmZEROLENIN bmBIT2 +#define bmWORDWIDE bmBIT0 + +/* Chip Revision Control Bits (REVCTL) - used to ebable/disable revision specidic + features */ +#define bmNOAUTOARM bmBIT1 +#define bmSKIPCOMMIT bmBIT0 + +/* Fifo Reset bits (FIFORESET) */ +#define bmNAKALL bmBIT7 + +/* Chip Feature Register (GPCR2) */ +#define bmFULLSPEEDONLY bmBIT4 + +#endif /* FX2REGS_H */ diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/fx2sdly.h.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/fx2sdly.h.svn-base new file mode 100644 index 0000000..b4835c5 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/fx2sdly.h.svn-base @@ -0,0 +1,241 @@ +// **** Auto-generated using genfx2hrd.sh from CY3684 EZ USB FX2LP Development Kit headers +//----------------------------------------------------------------------------- +// File: fx2sdly.h +// Contents: EZ-USB FX2 Synchronization Delay (SYNCDELAY) Macro +// +// Enter with _IFREQ = IFCLK in kHz +// Enter with _CFREQ = CLKOUT in kHz +// +// Copyright (c) 2001 Cypress Semiconductor, All rights reserved +//----------------------------------------------------------------------------- +#define _nop_() do { _asm nop; _endasm; } while(0) + + // Registers which require a synchronization delay, see section 15.14 + // FIFORESET FIFOPINPOLAR + // INPKTEND OUTPKTEND + // EPxBCH:L REVCTL + // GPIFTCB3 GPIFTCB2 + // GPIFTCB1 GPIFTCB0 + // EPxFIFOPFH:L EPxAUTOINLENH:L + // EPxFIFOCFG EPxGPIFFLGSEL + // PINFLAGSxx EPxFIFOIRQ + // EPxFIFOIE GPIFIRQ + // GPIFIE GPIFADRH:L + // UDMACRCH:L EPxGPIFTRIG + // GPIFTRIG + + // Note: The pre-REVE EPxGPIFTCH/L register are affected, as well... + // ...these have been replaced by GPIFTC[B3:B0] registers + +// _IFREQ can be in the range of: 5000 to 48000 +#ifndef _IFREQ +#define _IFREQ 48000 // IFCLK frequency in kHz +#endif + +// CFREQ can be any one of: 48000, 24000, or 12000 +#ifndef _CFREQ +#define _CFREQ 48000 // CLKOUT frequency in kHz +#endif + +#if( _IFREQ < 5000 ) +#error "_IFREQ too small! Valid Range: 5000 to 48000..." +#endif + +#if( _IFREQ > 48000 ) +#error "_IFREQ too large! Valid Range: 5000 to 48000..." +#endif + +#if( _CFREQ != 48000 ) +#if( _CFREQ != 24000 ) +#if( _CFREQ != 12000 ) +#error "_CFREQ invalid! Valid values: 48000, 24000, 12000..." +#endif +#endif +#endif + +// Synchronization Delay formula: see TRM section 15-14 +#define _SCYCL ( 3*(_CFREQ) + 5*(_IFREQ) - 1 ) / ( 2*(_IFREQ) ) + +#if( _SCYCL == 1 ) +#define SYNCDELAY _nop_( ) +#endif + +#if( _SCYCL == 2 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 3 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 4 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 5 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 6 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 7 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 8 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 9 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 10 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 11 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 12 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 13 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 14 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 15 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 16 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/fx2usb-interface.c.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/fx2usb-interface.c.svn-base new file mode 100644 index 0000000..f7523e1 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/fx2usb-interface.c.svn-base @@ -0,0 +1,212 @@ +/* + * xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB + * + * Copyright (C) 2011 RIEGL Research ForschungsGmbH + * Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include <stdio.h> +#include <errno.h> +#include <string.h> +#include "fx2usb-interface.h" + +usb_dev_handle *fx2usb_open(int vendor_id, int device_id, char *dev) +{ + struct usb_bus *b; + struct usb_device *d; + char *dd = NULL; + int devlen; + + if (dev) { + devlen = strlen(dev); + dd = devlen > 8 ? &dev[devlen-8] : "|xxx|xxx"; + } + + for (b = usb_get_busses(); b; b = b->next) { + for (d = b->devices; d; d = d->next) { + if (dd) { + if (dd[0] == '/' && !strncmp(dd+1, b->dirname, 3) && + dd[4] == '/' && !strncmp(dd+5, d->filename, 3)) + return usb_open(d); + } else + if (vendor_id || device_id) { + if ((d->descriptor.idVendor == vendor_id) && (d->descriptor.idProduct == device_id)) + return usb_open(d); + } else { + // The Xilinx Platform Cable USB Vendor/Device IDs + if ((d->descriptor.idVendor == 0x03FD) && (d->descriptor.idProduct == 0x0009)) + return usb_open(d); + if ((d->descriptor.idVendor == 0x03FD) && (d->descriptor.idProduct == 0x000D)) + return usb_open(d); + if ((d->descriptor.idVendor == 0x03FD) && (d->descriptor.idProduct == 0x000F)) + return usb_open(d); + // The plain CY7C68013 dev kit Vendor/Device IDs + if ((d->descriptor.idVendor == 0x04b4) && (d->descriptor.idProduct == 0x8613)) + return usb_open(d); + } + } + } + + return NULL; +} + +static int fx2usb_fwload_ctrl_msg(usb_dev_handle *dh, int addr, const void *data, int len) +{ + int ret = usb_control_msg(dh, 0x40, 0xA0, addr, 0, (char*)data, len, 1000); + if (ret != len) + fprintf(stderr, "fx2usb_fwload_ctrl_msg: usb_control_msg for addr=0x%04X, len=%d returned %d: %s\n", addr, len, ret, ret >= 0 ? "NO ERROR" : usb_strerror()); + return ret == len ? 0 : -1; +} + +int fx2usb_upload_ihex(usb_dev_handle *dh, FILE *fp) +{ + uint8_t on = 1, off = 0; + + // assert reset + if (fx2usb_fwload_ctrl_msg(dh, 0xE600, &on, 1) < 0) { + fprintf(stderr, "fx2usb_upload_ihex: can't assert reset!\n"); + return -1; + } + + // parse and upload ihex file + char line[1024]; + int linecount = 0; + while (fgets(line, sizeof(line), fp) != NULL) + { + linecount++; + + if (line[0] != ':') + continue; + + uint8_t cksum = 0; + uint8_t ldata[512]; + int lsize = 0; + + while (sscanf(line+1+lsize*2, "%2hhx", &ldata[lsize]) == 1) { + cksum += ldata[lsize]; + lsize++; + } + + if (lsize < 5) { + fprintf(stderr, "fx2usb_upload_ihex: ihex line %d: record is to short!\n", linecount); + return -1; + } + + if (ldata[0] != lsize-5) { + fprintf(stderr, "fx2usb_upload_ihex: ihex line %d: size does not match record length!\n", linecount); + return -1; + } + + cksum -= ldata[lsize-1]; + cksum = ~cksum + 1; + + if (cksum != ldata[lsize-1]) { + fprintf(stderr, "fx2usb_upload_ihex: ihex line %d: cksum error!\n", linecount); + return -1; + } + + if (fx2usb_fwload_ctrl_msg(dh, (ldata[1] << 8) | ldata[2], &ldata[4], ldata[0]) < 0) { + fprintf(stderr, "fx2usb_upload_ihex: ihex line %d: error in fx2usb communication!\n", linecount); + return -1; + } + } + + // release reset + if (fx2usb_fwload_ctrl_msg(dh, 0xE600, &off, 1) < 0) { + fprintf(stderr, "fx2usb_upload_ihex: can't release reset!\n"); + return -1; + } + + return 0; +} + +int fx2usb_claim(usb_dev_handle *dh) +{ +#ifdef LIBUSB_HAS_DETACH_KERNEL_DRIVER_NP + usb_detach_kernel_driver_np(dh, 0); +#endif + if (usb_claim_interface(dh, 0) < 0) { + fprintf(stderr, "fx2usb_claim: claiming interface 0 failed: %s!\n", usb_strerror()); + return -1; + } + if (usb_set_altinterface(dh, 1) < 0) { + usb_release_interface(dh, 0); + fprintf(stderr, "fx2usb_claim: setting alternate interface 1 failed: %s!\n", usb_strerror()); + return -1; + } + return 0; +} + +void fx2usb_release(usb_dev_handle *dh) +{ + usb_release_interface(dh, 0); +} + +void fx2usb_flush(usb_dev_handle *dh) +{ + while (1) + { + unsigned char readbuf[2] = { 0, 0 }; + int ret = usb_bulk_read(dh, 1, (char*)readbuf, 2, 10); + if (ret <= 0) + return; + fprintf(stderr, "Unexpected data word from device: 0x%02x 0x%02x (%d)\n", readbuf[0], readbuf[1], ret); + } +} + +int fx2usb_send_chunk(usb_dev_handle *dh, int ep, const void *data, int len) +{ + int ret; +#if 0 + if (ep == 2) { + int i; + fprintf(stderr, "<ep2:%4d bytes> ...", len); + for (i = len-16; i < len; i++) { + if (i < 0) + continue; + fprintf(stderr, " %02x", ((unsigned char*)data)[i]); + } + fprintf(stderr, "\n"); + } +#endif +retry_write: + ret = usb_bulk_write(dh, ep, data, len, 1000); + if (ret == -ETIMEDOUT) { + fprintf(stderr, "fx2usb_recv_chunk: usb write timeout -> retry\n"); + fx2usb_flush(dh); + goto retry_write; + } + if (ret != len) + fprintf(stderr, "fx2usb_send_chunk: write of %d bytes to ep %d returned %d: %s\n", len, ep, ret, ret >= 0 ? "NO ERROR" : usb_strerror()); + return ret == len ? 0 : -1; +} + +int fx2usb_recv_chunk(usb_dev_handle *dh, int ep, void *data, int len, int *ret_len) +{ + int ret; +retry_read: + ret = usb_bulk_read(dh, ep, data, len, 1000); + if (ret == -ETIMEDOUT) { + fprintf(stderr, "fx2usb_recv_chunk: usb read timeout -> retry\n"); + goto retry_read; + } + if (ret > 0 && ret_len != NULL) + len = *ret_len = ret; + if (ret != len) + fprintf(stderr, "fx2usb_recv_chunk: read of %d bytes from ep %d returned %d: %s\n", len, ep, ret, ret >= 0 ? "NO ERROR" : usb_strerror()); + return ret == len ? 0 : -1; +} + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/fx2usb-interface.h.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/fx2usb-interface.h.svn-base new file mode 100644 index 0000000..ece9adf --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/fx2usb-interface.h.svn-base @@ -0,0 +1,37 @@ +/* + * xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB + * + * Copyright (C) 2011 RIEGL Research ForschungsGmbH + * Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef FX2USB_INTERFACE_H +#define FX2USB_INTERFACE_H + +#include <usb.h> +#include <stdio.h> + +usb_dev_handle *fx2usb_open(int vendor_id, int device_id, char *dev); +int fx2usb_upload_ihex(usb_dev_handle *dh, FILE *fp); +int fx2usb_claim(usb_dev_handle *dh); +void fx2usb_release(usb_dev_handle *dh); + +void fx2usb_flush(usb_dev_handle *dh); +int fx2usb_send_chunk(usb_dev_handle *dh, int ep, const void *data, int len); +int fx2usb_recv_chunk(usb_dev_handle *dh, int ep, void *data, int len, int *ret_len); + +#endif /* FX2USB_INTERFACE_H */ + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/genfx2hrd.sh.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/genfx2hrd.sh.svn-base new file mode 100644 index 0000000..0cfd376 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/genfx2hrd.sh.svn-base @@ -0,0 +1,45 @@ +#!/bin/bash +# +# xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB +# +# Copyright (C) 2011 RIEGL Research ForschungsGmbH +# Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +ORIG_HDR_DIR="$HOME/.wine/drive_c/Cypress/USB/Target/Inc/" + +{ echo "// **** Auto-generated using genfx2hrd.sh from CY3684 EZ USB FX2LP Development Kit headers" +sed -r ' + # OLD: EXTERN xdata volatile BYTE CPUCS _AT_ 0xE600; + # NEW: xdata at 0xE600 volatile BYTE CPUCS; + s/^EXTERN xdata volatile BYTE ([^ ]+)( +)_AT_ +([^ ;]+);/xdata at \3 volatile BYTE \1;\2/; + + # OLD: sfr IOA = 0x80; + # NEW: sfr at 0x80 IOA; + s/^sfr ([^ ]+)( +)= ([^ ;]+);/sfr at \3 \1;\2/; + + # OLD: sbit PA0 = 0x80 + 0; + # NEW: sbit at (0x80 + 0) IOA; + s/^( *)sbit ([^ ]+)( +)= ([^;]+);/\1sbit at (\4) \2;\3/; +' < "$ORIG_HDR_DIR/fx2regs.h"; } > fx2regs.h + +# hotfix line ending in Fx2.h +{ echo "// **** Auto-generated using genfx2hrd.sh from CY3684 EZ USB FX2LP Development Kit headers" +sed -r 's,\\ *,\\,;' < "$ORIG_HDR_DIR/Fx2.h"; } > fx2.h + +# we do not have intrins.h but it seams quite clear what _nop_() does.. +{ echo "// **** Auto-generated using genfx2hrd.sh from CY3684 EZ USB FX2LP Development Kit headers" +sed 's,^#include "intrins.h",#define _nop_() do { _asm nop; _endasm; } while(0),' < "$ORIG_HDR_DIR/fx2sdly.h"; } > fx2sdly.h + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/gpifprog.c.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/gpifprog.c.svn-base new file mode 100644 index 0000000..ea7c2e4 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/gpifprog.c.svn-base @@ -0,0 +1,292 @@ +// This program configures the General Programmable Interface (GPIF) for FX2. +// Please do not modify sections of text which are marked as "DO NOT EDIT ...". +// +// DO NOT EDIT ... +// GPIF Initialization +// Interface Timing Sync +// Internal Ready Init IntRdy=1 +// CTL Out Tristate-able Binary +// SingleWrite WF Select 1 +// SingleRead WF Select 0 +// FifoWrite WF Select 3 +// FifoRead WF Select 2 +// Data Bus Idle Drive Tristate +// END DO NOT EDIT + +// DO NOT EDIT ... +// GPIF Wave Names +// Wave 0 = Single R +// Wave 1 = Single W +// Wave 2 = FIFO Slo +// Wave 3 = FIFO Wri + +// GPIF Ctrl Outputs Level +// CTL 0 = CTL0 CMOS +// CTL 1 = CTL1 CMOS +// CTL 2 = CTL2 CMOS +// CTL 3 = CTL3 CMOS +// CTL 4 = CTL4 CMOS +// CTL 5 = CTL5 CMOS + +// GPIF Rdy Inputs +// RDY0 = RDY0 +// RDY1 = RDY1 +// RDY2 = RDY2 +// RDY3 = RDY3 +// RDY4 = RDY4 +// RDY5 = TCXpire +// FIFOFlag = FIFOFlag +// IntReady = IntReady +// END DO NOT EDIT +// DO NOT EDIT ... +// +// GPIF Waveform 0: Single R +// +// Interval 0 1 2 3 4 5 6 Idle (7) +// _________ _________ _________ _________ _________ _________ _________ _________ +// +// AddrMode Same Val Same Val Same Val Same Val Same Val Same Val Same Val +// DataMode NO Data NO Data NO Data NO Data NO Data NO Data NO Data +// NextData SameData SameData SameData SameData SameData SameData SameData +// Int Trig No Int No Int No Int No Int No Int No Int No Int +// IF/Wait Wait 1 Wait 1 Wait 1 Wait 1 Wait 1 Wait 1 Wait 1 +// Term A +// LFunc +// Term B +// Branch1 +// Branch0 +// Re-Exec +// Sngl/CRC Default Default Default Default Default Default Default +// CTL0 1 1 1 1 1 1 1 1 +// CTL1 1 1 1 1 1 1 1 1 +// CTL2 1 1 1 1 1 1 1 1 +// CTL3 0 0 0 0 0 0 0 0 +// CTL4 0 0 0 0 0 0 0 0 +// CTL5 0 0 0 0 0 0 0 0 +// +// END DO NOT EDIT +// DO NOT EDIT ... +// +// GPIF Waveform 1: Single W +// +// Interval 0 1 2 3 4 5 6 Idle (7) +// _________ _________ _________ _________ _________ _________ _________ _________ +// +// AddrMode Same Val Same Val Same Val Same Val Same Val Same Val Same Val +// DataMode Activate NO Data NO Data NO Data NO Data NO Data NO Data +// NextData SameData NextData SameData SameData SameData SameData SameData +// Int Trig No Int No Int No Int No Int No Int No Int No Int +// IF/Wait Wait 1 Wait 1 Wait 1 Wait 1 IF Wait 1 Wait 1 +// Term A FIFOFlag +// LFunc AND +// Term B FIFOFlag +// Branch1 ThenIdle +// Branch0 ElseIdle +// Re-Exec No +// Sngl/CRC Default Default Default Default Default Default Default +// CTL0 0 1 1 1 1 1 1 1 +// CTL1 1 1 0 1 1 1 1 1 +// CTL2 1 0 1 0 1 1 1 1 +// CTL3 0 0 0 0 0 0 0 0 +// CTL4 0 0 0 0 0 0 0 0 +// CTL5 0 0 0 0 0 0 0 0 +// +// END DO NOT EDIT +// DO NOT EDIT ... +// +// GPIF Waveform 2: FIFO Slo +// +// Interval 0 1 2 3 4 5 6 Idle (7) +// _________ _________ _________ _________ _________ _________ _________ _________ +// +// AddrMode Same Val Same Val Same Val Same Val Same Val Same Val Same Val +// DataMode NO Data Activate NO Data NO Data NO Data NO Data NO Data +// NextData SameData SameData NextData SameData SameData SameData SameData +// Int Trig No Int No Int No Int No Int No Int No Int No Int +// IF/Wait Wait 254 Wait 1 Wait 254 IF Wait 1 Wait 1 Wait 1 +// Term A TCXpire +// LFunc AND +// Term B TCXpire +// Branch1 ThenIdle +// Branch0 Else 0 +// Re-Exec No +// Sngl/CRC Default Default Default Default Default Default Default +// CTL0 1 0 1 1 1 1 1 1 +// CTL1 1 1 1 1 1 1 1 1 +// CTL2 1 1 1 0 0 0 0 1 +// CTL3 0 0 0 0 0 0 0 0 +// CTL4 0 0 0 0 0 0 0 0 +// CTL5 0 0 0 0 0 0 0 0 +// +// END DO NOT EDIT +// DO NOT EDIT ... +// +// GPIF Waveform 3: FIFO Wri +// +// Interval 0 1 2 3 4 5 6 Idle (7) +// _________ _________ _________ _________ _________ _________ _________ _________ +// +// AddrMode Same Val Same Val Same Val Same Val Same Val Same Val Same Val +// DataMode Activate NO Data NO Data NO Data NO Data NO Data NO Data +// NextData SameData NextData SameData SameData SameData SameData SameData +// Int Trig No Int No Int No Int No Int No Int No Int No Int +// IF/Wait Wait 1 Wait 1 Wait 1 IF Wait 1 Wait 1 Wait 1 +// Term A TCXpire +// LFunc AND +// Term B TCXpire +// Branch1 ThenIdle +// Branch0 Else 0 +// Re-Exec No +// Sngl/CRC Default Default Default Default Default Default Default +// CTL0 0 1 1 1 1 1 1 1 +// CTL1 1 1 0 1 1 1 1 1 +// CTL2 1 0 1 0 0 0 0 1 +// CTL3 0 0 0 0 0 0 0 0 +// CTL4 0 0 0 0 0 0 0 0 +// CTL5 0 0 0 0 0 0 0 0 +// +// END DO NOT EDIT + +// GPIF Program Code + +// DO NOT EDIT ... +#include "fx2.h" +#include "fx2regs.h" +#include "fx2sdly.h" // SYNCDELAY macro +// END DO NOT EDIT + +// DO NOT EDIT ... +const char xdata WaveData[128] = +{ +// Wave 0 +/* LenBr */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07, +/* Opcode*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* Output*/ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, +/* LFun */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, +// Wave 1 +/* LenBr */ 0x01, 0x01, 0x01, 0x01, 0x3F, 0x01, 0x01, 0x07, +/* Opcode*/ 0x02, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +/* Output*/ 0x06, 0x03, 0x05, 0x03, 0x07, 0x07, 0x07, 0x07, +/* LFun */ 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x3F, +// Wave 2 +/* LenBr */ 0xFE, 0x01, 0xFE, 0x38, 0x01, 0x01, 0x01, 0x07, +/* Opcode*/ 0x00, 0x02, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, +/* Output*/ 0x07, 0x06, 0x07, 0x03, 0x03, 0x03, 0x03, 0x07, +/* LFun */ 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x3F, +// Wave 3 +/* LenBr */ 0x01, 0x01, 0x01, 0x38, 0x01, 0x01, 0x01, 0x07, +/* Opcode*/ 0x02, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +/* Output*/ 0x06, 0x03, 0x05, 0x03, 0x03, 0x03, 0x03, 0x07, +/* LFun */ 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x3F, +}; +// END DO NOT EDIT + +// DO NOT EDIT ... +const char xdata FlowStates[36] = +{ +/* Wave 0 FlowStates */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/* Wave 1 FlowStates */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/* Wave 2 FlowStates */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/* Wave 3 FlowStates */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +// END DO NOT EDIT + +// DO NOT EDIT ... +const char xdata InitData[7] = +{ +/* Regs */ 0xE0,0x00,0x00,0x07,0xEA,0x4E,0x00 +}; +// END DO NOT EDIT + +// TO DO: You may add additional code below. + +void GpifInit( void ) +{ + BYTE i; + + // Registers which require a synchronization delay, see section 15.14 + // FIFORESET FIFOPINPOLAR + // INPKTEND OUTPKTEND + // EPxBCH:L REVCTL + // GPIFTCB3 GPIFTCB2 + // GPIFTCB1 GPIFTCB0 + // EPxFIFOPFH:L EPxAUTOINLENH:L + // EPxFIFOCFG EPxGPIFFLGSEL + // PINFLAGSxx EPxFIFOIRQ + // EPxFIFOIE GPIFIRQ + // GPIFIE GPIFADRH:L + // UDMACRCH:L EPxGPIFTRIG + // GPIFTRIG + + // Note: The pre-REVE EPxGPIFTCH/L register are affected, as well... + // ...these have been replaced by GPIFTC[B3:B0] registers + + // 8051 doesn't have access to waveform memories 'til + // the part is in GPIF mode. + + IFCONFIG = 0xEA; + // IFCLKSRC=1 , FIFOs executes on internal clk source + // xMHz=1 , 48MHz internal clk rate + // IFCLKOE=0 , Don't drive IFCLK pin signal at 48MHz + // IFCLKPOL=0 , Don't invert IFCLK pin signal from internal clk + // ASYNC=1 , master samples asynchronous + // GSTATE=1 , Drive GPIF states out on PORTE[2:0], debug WF + // IFCFG[1:0]=10, FX2 in GPIF master mode + + GPIFABORT = 0xFF; // abort any waveforms pending + + GPIFREADYCFG = InitData[ 0 ]; + GPIFCTLCFG = InitData[ 1 ]; + GPIFIDLECS = InitData[ 2 ]; + GPIFIDLECTL = InitData[ 3 ]; + GPIFWFSELECT = InitData[ 5 ]; + GPIFREADYSTAT = InitData[ 6 ]; + + // use dual autopointer feature... + AUTOPTRSETUP = 0x07; // inc both pointers, + // ...warning: this introduces pdata hole(s) + // ...at E67B (XAUTODAT1) and E67C (XAUTODAT2) + + // source + AUTOPTRH1 = MSB( &WaveData ); + AUTOPTRL1 = LSB( &WaveData ); + + // destination + AUTOPTRH2 = 0xE4; + AUTOPTRL2 = 0x00; + + // transfer + for ( i = 0x00; i < 128; i++ ) + { + EXTAUTODAT2 = EXTAUTODAT1; + } + +// Configure GPIF Address pins, output initial value, + PORTCCFG = 0xFF; // [7:0] as alt. func. GPIFADR[7:0] + OEC = 0xFF; // and as outputs + PORTECFG |= 0x80; // [8] as alt. func. GPIFADR[8] + OEE |= 0x80; // and as output + +// ...OR... tri-state GPIFADR[8:0] pins +// PORTCCFG = 0x00; // [7:0] as port I/O +// OEC = 0x00; // and as inputs +// PORTECFG &= 0x7F; // [8] as port I/O +// OEE &= 0x7F; // and as input + +// GPIF address pins update when GPIFADRH/L written + SYNCDELAY; // + GPIFADRH = 0x00; // bits[7:1] always 0 + SYNCDELAY; // + GPIFADRL = 0x00; // point to PERIPHERAL address 0x0000 + +// Configure GPIF FlowStates registers for Wave 0 of WaveData + FLOWSTATE = FlowStates[ 0 ]; + FLOWLOGIC = FlowStates[ 1 ]; + FLOWEQ0CTL = FlowStates[ 2 ]; + FLOWEQ1CTL = FlowStates[ 3 ]; + FLOWHOLDOFF = FlowStates[ 4 ]; + FLOWSTB = FlowStates[ 5 ]; + FLOWSTBEDGE = FlowStates[ 6 ]; + FLOWSTBHPERIOD = FlowStates[ 7 ]; +} + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/hardware.sh.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/hardware.sh.svn-base new file mode 100644 index 0000000..e4c9579 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/hardware.sh.svn-base @@ -0,0 +1,100 @@ +#!/bin/bash +# +# xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB +# +# Copyright (C) 2011 RIEGL Research ForschungsGmbH +# Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +. /opt/Xilinx/13.1/ISE_DS/settings32.sh + +cat > hardware.prj <<- EOT + verilog work "hardware.v" +EOT + +cat > hardware.lso <<- EOT + work +EOT + +cat > hardware.xst <<- EOT + set -tmpdir "xilinx/projnav.tmp" + set -xsthdpdir "xilinx" + run + -ifn hardware.prj + -ifmt mixed + -ofn hardware + -ofmt NGC + -p xbr + -top top + -opt_mode Speed + -opt_level 1 + -iuc NO + -lso hardware.lso + -keep_hierarchy YES + -netlist_hierarchy as_optimized + -rtlview Yes + -hierarchy_separator / + -bus_delimiter <> + -case maintain + -verilog2001 YES + -fsm_extract YES -fsm_encoding Auto + -safe_implementation No + -mux_extract YES + -resource_sharing YES + -iobuf YES + -pld_mp YES + -pld_xp YES + -pld_ce YES + -wysiwyg NO + -equivalent_register_removal YES +EOT + +cat > hardware.cmd <<- EOT + setMode -bs + setCable -port svf -file "hardware.svf" + addDevice -p 1 -file "hardware.jed" + Erase -p 1 + Program -p 1 -e -v + Verify -p 1 + quit +EOT + +cat > erasecpld.cmd <<- EOT + setMode -bs + setCable -port svf -file "erasecpld.svf" + addDevice -p 1 -file "hardware.jed" + Erase -p 1 + quit +EOT + +set -ex + +mkdir -p xilinx/projnav.tmp/ +xst -ifn "hardware.xst" -ofn "hardware.syr" + +mkdir -p xilinx/_ngo/ +ngdbuild -dd xilinx/_ngo -uc hardware.ucf -p xc2c256-VQ100-6 hardware.ngc hardware.ngd + +cpldfit -p xc2c256-7-VQ100 -ofmt verilog -optimize density -htmlrpt -loc on -slew fast -init low \ + -inputs 32 -pterms 28 -unused keeper -terminate keeper -iostd LVCMOS18 hardware.ngd + +hprep6 -i hardware + +impact -batch hardware.cmd +sed -i '\,^// Date:, d;' hardware.svf + +impact -batch erasecpld.cmd +sed -i '\,^// Date:, d;' erasecpld.svf + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/hardware.ucf.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/hardware.ucf.svn-base new file mode 100644 index 0000000..cbafb9a --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/hardware.ucf.svn-base @@ -0,0 +1,59 @@ +# +# xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB +# +# Copyright (C) 2011 RIEGL Research ForschungsGmbH +# Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +NET "clk" LOC = "23" | IOSTANDARD = LVCMOS33; + +NET "tck" LOC = "66" | IOSTANDARD = LVCMOS33; +NET "tms" LOC = "67" | IOSTANDARD = LVCMOS33; +NET "tdi" LOC = "68" | IOSTANDARD = LVCMOS33; +NET "tdo" LOC = "27" | IOSTANDARD = LVCMOS33; +NET "init" LOC = "28" | IOSTANDARD = LVCMOS33; +NET "init_b" LOC = "70" | IOSTANDARD = LVCMOS33; + +NET "fd0" LOC = "32" | IOSTANDARD = LVCMOS33; +NET "fd1" LOC = "33" | IOSTANDARD = LVCMOS33; +NET "fd2" LOC = "34" | IOSTANDARD = LVCMOS33; +NET "fd3" LOC = "35" | IOSTANDARD = LVCMOS33; +NET "fd4" LOC = "36" | IOSTANDARD = LVCMOS33; +NET "fd5" LOC = "37" | IOSTANDARD = LVCMOS33; +NET "fd6" LOC = "39" | IOSTANDARD = LVCMOS33; +NET "fd7" LOC = "40" | IOSTANDARD = LVCMOS33; + +NET "ctl0" LOC = "22" | IOSTANDARD = LVCMOS33; +NET "ctl1" LOC = "53" | IOSTANDARD = LVCMOS33; +NET "ctl2" LOC = "54" | IOSTANDARD = LVCMOS33; + +NET "pc0" LOC = "14" | IOSTANDARD = LVCMOS33; +NET "pc1" LOC = "15" | IOSTANDARD = LVCMOS33; +NET "pc2" LOC = "16" | IOSTANDARD = LVCMOS33; +NET "pc3" LOC = "17" | IOSTANDARD = LVCMOS33; +NET "pc4" LOC = "18" | IOSTANDARD = LVCMOS33; +NET "pc5" LOC = "19" | IOSTANDARD = LVCMOS33; +NET "pc6" LOC = "29" | IOSTANDARD = LVCMOS33; +NET "pc7" LOC = "30" | IOSTANDARD = LVCMOS33; + +NET "pd0" LOC = "41" | IOSTANDARD = LVCMOS33; +NET "pd1" LOC = "42" | IOSTANDARD = LVCMOS33; +NET "pd2" LOC = "43" | IOSTANDARD = LVCMOS33; +NET "pd3" LOC = "44" | IOSTANDARD = LVCMOS33; +NET "pd4" LOC = "46" | IOSTANDARD = LVCMOS33; +NET "pd5" LOC = "49" | IOSTANDARD = LVCMOS33; +NET "pd6" LOC = "50" | IOSTANDARD = LVCMOS33; +NET "pd7" LOC = "52" | IOSTANDARD = LVCMOS33; + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/hardware.v.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/hardware.v.svn-base new file mode 100644 index 0000000..09713fb --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/hardware.v.svn-base @@ -0,0 +1,141 @@ +/* + * xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB + * + * Copyright (C) 2011 RIEGL Research ForschungsGmbH + * Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +module top( + clk, + tck, tms, tdi, tdo, init, init_b, + fd0, fd1, fd2, fd3, fd4, fd5, fd6, fd7, + ctl0, ctl1, ctl2, + pc0, pc1, pc2, pc3, pc4, pc5, pc6, pc7, + pd0, pd1, pd2, pd3, pd4, pd5, pd6, pd7 +); + +// General Signal +input clk; + +// JTAG Interface +output tck, tms, tdi, init; +input tdo, init_b; + +// GPIF Interface +input fd0, fd1, fd2, fd3, fd4, fd5, fd6, fd7; +input ctl0, ctl1, ctl2; + +// The entire PC and PD regs for various flags +output pc0, pc1, pc2, pc3, pc4, pc5, pc6, pc7; +input pd0, pd1, pd2, pd3, pd4, pd5, pd6, pd7; + +// simple direct i/o mappings +assign pc3 = tdo; +assign pc1 = init_b; +assign init = pd2; + +// checksum +wire chksum_rst, chksum_clk; +reg [23:0] chksum_buffer; +always @(posedge chksum_clk) begin + if (chksum_rst) + chksum_buffer <= + `include "hardware_cksum_vl.inc" + ; + else + chksum_buffer <= chksum_buffer << 1; +end +assign chksum_rst = pd0; +assign chksum_clk = pd1; +assign pc2 = chksum_buffer[23]; + +// main engine +reg [3:0] sync; +reg [7:0] lastbyte; +reg go_exec0, go_exec1, set_sync, err; +reg reg_tck, reg_tms, reg_tdi, reg_tdo, reg_tdo_en; +always @(negedge clk) begin + go_exec0 <= 0; + go_exec1 <= 0; + if (!ctl0) begin + lastbyte <= { fd7, fd6, fd5, fd4, fd3, fd2, fd1, fd0 }; + go_exec0 <= 1; + end + if (!ctl1) begin + lastbyte <= lastbyte >> 4; + go_exec0 <= 1; + end + if (!ctl2) begin + go_exec1 <= 1; + end + if (go_exec0) begin + reg_tdo_en <= 0; + if (set_sync) begin + sync <= lastbyte[3:0]; + set_sync <= 0; + end else + if (lastbyte[3:0] == 0) begin + /* NOP */ + end else + if (lastbyte[3:0] == 1) begin + /* Set sync signal in next insn */ + set_sync <= 1; + end else + if (lastbyte[3:1] == 1) begin + /* reserved */ + end else + if (lastbyte[3:2] == 1) begin + /* transaction with or without TDO check */ + reg_tck <= 0; + reg_tdo <= 'bx; + reg_tms <= lastbyte[1]; + reg_tdi <= lastbyte[0]; + end else + if (lastbyte[3] == 1) begin + /* transaction with TDO check */ + reg_tck <= 0; + reg_tdo <= lastbyte[2]; + reg_tms <= lastbyte[1]; + reg_tdi <= lastbyte[0]; + reg_tdo_en <= 1; + end + end + if (go_exec1) begin + reg_tck <= 1; + if (reg_tdo_en && tdo != reg_tdo) + err <= 1; + end + if (pd3) begin + /* RESET ERR */ + err <= 0; + end + if (pd4) begin + /* RESET SYNC */ + set_sync <= 0; + sync <= 0; + end +end +assign tck = reg_tck; +assign tms = reg_tms; +assign tdi = reg_tdi; +assign pc7 = sync[3]; +assign pc6 = sync[2]; +assign pc5 = sync[1]; +assign pc4 = sync[0]; +assign pc0 = err; + +endmodule + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/prep_erasecpld.svf.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/prep_erasecpld.svf.svn-base new file mode 100644 index 0000000..d3c1e7f --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/prep_erasecpld.svf.svn-base @@ -0,0 +1,82 @@ +// Created using Xilinx Cse Software [ISE - 13.1] + +TRST OFF; +ENDIR IDLE; +ENDDR IDLE; +STATE RESET; +STATE IDLE; +FREQUENCY 1E6 HZ; +//Operation: Erase -p 0 +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) SMASK (ff) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f6d4f093) MASK (0fff8fff) ; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +//Boundary Scan Chain Contents +//Position 1: xc2c256 +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) ; +SDR 32 TDI (00000000) TDO (f6d4f093) ; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +// Loading devices with 'enable' or 'bypass' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +// Loading devices with 'erase' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (ed) SMASK (ff) ; +ENDIR IDLE; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRPAUSE; +RUNTEST DRPAUSE 20 TCK; +STATE IDLE; +RUNTEST IDLE 100000 TCK; +STATE DRPAUSE; +RUNTEST DRPAUSE 5000 TCK; +RUNTEST IDLE 1 TCK; +// Loading devices with 'init' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IDLE; +RUNTEST IDLE 20 TCK; +// Loading devices with 'init' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRUPDATE IDLE; +RUNTEST 800 TCK; +ENDIR IDLE; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (c0) ; +RUNTEST 100 TCK; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (c0) ; +RUNTEST 100 TCK; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +SIR 8 TDI (ff) ; +SDR 1 TDI (00) SMASK (01) ; diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/prep_firmware.ihx.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/prep_firmware.ihx.svn-base new file mode 100644 index 0000000..3ba6f24 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/prep_firmware.ihx.svn-base @@ -0,0 +1,323 @@ +:03000000020008F3 +:0300610002000397 +:05000300120B4A80FE13 +:0D00640090E60174EAF090E6F574FFF0906C +:0E0071000C58E49390E6F3F0900C59E4939051 +:0D007F00E6C3F0900C5AE49390E6C1F090B7 +:0E008C000C5BE49390E6C2F0900C5DE4939060 +:0E009A00E6C0F0900C5EE49390E6F4F075AFD3 +:0800A800077AB47B0B8B9A7AF6 +:0A00B000B47B0B7B008A9B759DE476 +:0500BA00759E007A00B4 +:0300BF00BA800004 +:0E00C200500C90E67BE0FB90E67CF00A80EFAD +:0E00D00090E67174FFF075B4FF90E672E0FAEE +:0E00DE004480F043B68000000090E6C4E4F0D9 +:0E00EC0000000090E6C5E4F0900C34E4939020 +:0D00FA00E6C6F0900C35E49390E6C7F09058 +:0E0107000C36E49390E6C8F0900C37E4939029 +:0D011500E6C9F0900C38E49390E6CAF09033 +:0E0122000C39E49390E6CBF0900C3AE4939005 +:0D013000E6CCF0900C3BE49390E6CDF0227D +:0E013D000000000000000000000000000000B4 +:0B014B00000000000000000000002287 +:04015600AA82AB834B +:09015A008A048B051ABAFF011B8F +:08016300EC4D60297C007D00D9 +:0E016B00C3EC94E8ED940350E6C002C003C05C +:0E01790004C00512013DD005D004D003D00211 +:0901870074032CFCE43DFD80DB57 +:01019000224C +:0D01910090E6007410F090E61274A8F09053 +:0D019E00E613E4F090E614F090E615F09002 +:0E01AB00E6047480F000000090E6047402F098 +:0D01B90000000090E6047404F000000090C7 +:0E01C600E6047406F000000090E6047408F0F1 +:0E01D40000000090E604E4F000000090E61841 +:0E01E200E0FA54FEF000000090E619E0FA5436 +:0E01F000FEF000000090E61AE0FA54FEF00067 +:0E01FE00000090E61BE0FA54FEF00000001234 +:0E020C00006490E670E4F075B22B75800090EF +:0E021A00E671E4F075B40075A00075B51F75AF +:0E022800B000D28390006412015675B658756E +:04023600B1587A0041 +:03023A00BA1000F7 +:0E023D005013C00212013D53B1F712013DD023 +:07024B000243B1080A80E83C +:010252002289 +:0E025300C28390006412015690E6F574FFF02D +:0D02610000000090E6007402F00000009024 +:0E026E00E6017480F000000090E61274A2F029 +:0D027C0000000090E61374A0F00000009058 +:0E028900E61474A2F000000090E61574A0F0D8 +:0D02970000000090E6187405F000000090D3 +:0E02A400E6197405F000000090E61A7405F0EB +:0D02B20000000090E61B7405F000000090B5 +:0E02BF00E6047480F000000090E6047402F083 +:0D02CD0000000090E6047404F000000090B2 +:0E02DA00E6047406F000000090E6047408F0DC +:0E02E80000000090E604E4F0000000758000C5 +:0E02F60075A00075B00075B10075B20075B44A +:0D0304000075B50075B60090E670E4F0904D +:0A031100E671F075B2017A007B007E +:0E031B00C3EA9403EB9400504BD2807CB87D73 +:010329000BC8 +:0E032A00C002C003C004C00512013DD005D0C2 +:0A03380004D003D0021CBCFF011D1D +:0A034200EC4D70E4C2817CB87D0B25 +:0E034C00C002C003C004C00512013DD005D0A0 +:0A035A0004D003D0021CBCFF011DFB +:0B036400EC4D70E40ABA00AF0B80AC57 +:03036F0075B20064 +:0E03720090E6A1E0FA20E10990E68D74FFF01C +:030380000000007A +:0E03830090E6A3E0FA20E2E790E69174FFF026 +:0503910000000080DC0B +:0C039600AA82740F5A900C5F93F582222B +:0503A200AA82BA300040 +:0D03A700400BEA24C64006EA24D0F582226D +:0303B400BA61002B +:0D03B700400BEA2499400674A92AF5822221 +:0303C400BA41003B +:0D03C700400BEA24B9400674C92AF58222D1 +:0403D400758200220C +:0E03D800E582FA700B90E6C0744EF000000053 +:0203E60080197C +:0E03E80090E6C0744AF000000090E440EAF095 +:0B03F60000000090E442EAF00000006C +:0E04010090E7C0744FF000000090E7C1744B0C +:0E040F00F000000090E7C27420F000000090A2 +:0E041D00E7C37428F000000090E7C47454F0A8 +:0E042B00000000EAC4540FFB740F5BF582C0A2 +:0E04390002120396AB82D00290E7C5EBF000F2 +:0D0447000000740F5AF582120396AA8290ED +:0E045400E7C6EAF000000090E7C77429F00048 +:0C046200000090E68F7408F000000022FB +:05046E0075B1587A0091 +:03047300BA1000BC +:0E0476005013C00212013D53B1F712013DD0E8 +:070484000243B1080A80E801 +:0C048B0090E6C0744EF000000075080000 +:0E049700C285C281C28075B01900000043B05A +:0904A5000200000075B0007A00AD +:0A04AE00EA2470FBE4340CFC7D80AE +:0E04B8008B828C838DF0120B94FB6012EA2471 +:0E04C600C0F582E434E7F583EBF00000000A95 +:0204D40080D8CE +:0904D60090E68FEAF0000000221C +:0E04DF00AA8290E7C0744FF000000090E7C1C1 +:0E04ED00744BF000000090E7C27420F0000095 +:0E04FB000090E7C37428F000000090E7C4747E +:0D05090057F00000008A82120396AA82902B +:0E051600E7C5EAF000000090E7C67429F00087 +:0C052400000090E68F7407F00000002239 +:0E053000AA8290E7C07454F000000090E7C16A +:0E053E007449F000000090E7C2744DF0000018 +:0E054C000090E7C37445F000000090E7C4740F +:0E055A004FF000000090E7C57455F00000005F +:0E05680090E7C67454F000000090E7C77421BD +:0E057600F000000090E7C87420F00000009034 +:0E058400E7C97453F000000090E7CA743DF020 +:0D059200000000E5A0C4540FF582C0021265 +:0E059F000396AB82D00290E7CBEBF000000099 +:0E05AD0090E7CC7420F000000090E7CD742899 +:0E05BB00F000000090E7CE7457F00000008AB8 +:0E05C90082120396AA8290E7CFEAF0000000AB +:0E05D70090E7D07429F000000090E68F7411B8 +:0505E500F000000022FF +:0605EA00AA827B007C00E8 +:0D05F000C3EB94E8EC9403504C7D007E00BA +:0E05FD00C3ED94E8EE94035038E5A0C4540F0B +:09060B00FFB502058A820204DF3A +:0E06140090E6A3E0FF20E21BD280C002C003EC +:0E062200C004C005C006120B08D006D005D0DB +:0706300004D003D002C280D8 +:070637000DBD00C20E80BFE3 +:07063E000BBB00AE0C80AB0A +:050645008A820205306D +:0E064A00D2B0C2B1000000D2B1000000C2B0B8 +:04065800C2B17A00B1 +:03065C00BA0600DB +:06065F0050477B007C0007 +:03066500BC0400D2 +:0E0668005017EB2BFDA2A2E433FE4DFB000069 +:0B06760000D2B1000000C2B10C80E413 +:0E068100EA24C0FCE434E7FD8B82C002C00412 +:0E068F00C005120396AB82D005D004D0028CB9 +:0B069D00828D83EBF00000000A80B4A7 +:0E06A80090E7C67420F000000090E7C77428A9 +:0E06B600F000000090E7C87443F000000090D0 +:0E06C400E7C97429F000000090E68F740AF078 +:0406D2000000002202 +:0E06D600E582FA24FF928590E7C0744FF00091 +:0E06E400000090E7C1744BF000000090E7C2E8 +:0E06F2007420F000000090E7C37428F00000B0 +:0E0700000090E7C47442F0000000EA60047A42 +:03070E0031800235 +:020711007A303C +:0E07130090E7C5EAF000000090E7C67429F0F8 +:0D07210000000090E68F7407F00000002239 +:0E072E00E582FA24FF92B290E7C0744FF0000B +:0E073C00000090E7C1744BF000000090E7C28F +:0E074A007420F000000090E7C37428F0000057 +:0E0758000090E7C47449F0000000EA60047AE3 +:03076600318002DD +:020769007A30E4 +:0E076B0090E7C5EAF000000090E7C67429F0A0 +:0D07790000000090E68F7407F000000022E1 +:0707860030A0047A3180026B +:02078D007A30C0 +:0C078F0090E7C0EAF0000000E5086004FC +:04079B007A3180022D +:02079F007A30AE +:0E07A10090E7C1EAF000000030A1047A318038 +:0107AF000247 +:0207B0007A309D +:0E07B20090E7C2EAF00000003082047A318045 +:0107C0000236 +:0207C1007A308C +:0E07C30090E7C3EAF000000030A3047A318012 +:0107D1000225 +:0207D2007A307B +:0E07D40090E7C4EAF0000000E5B130E5047AD9 +:0307E20031800261 +:0207E5007A3068 +:0E07E70090E7C5EAF0000000E5A0C4540FF54D +:0E07F50082120396AA8290E7C6EAF000000086 +:0E08030090E7C77420F000000090E7C874284A +:0E081100F000000090E7C97453F00000009062 +:0E081F00E7CA7429F000000090E68F740BF019 +:0C082D0000000075080075B00800000015 +:0708390000000053B0F7229C +:0708400030A0047A318002B0 +:020847007A3005 +:0C08490090E7C0EAF0000000E508600441 +:040855007A31800272 +:020859007A30F3 +:0E085B0090E7C1EAF000000030A1047A31807D +:01086900028C +:02086A007A30E2 +:0E086C0090E7C2EAF00000003082047A31808A +:01087A00027B +:02087B007A30D1 +:0E087D0090E7C3EAF000000030A3047A318057 +:01088B00026A +:02088C007A30C0 +:0E088E0090E7C4EAF0000000E5B130E5047A1E +:03089C00318002A6 +:02089F007A30AD +:0E08A10090E7C5EAF0000000E5A0C4540FF592 +:0E08AF0082120396AA8290E7C6EAF0000000CB +:0E08BD0090E7C77420F000000090E7C8742890 +:0E08CB00F000000090E7C97450F000000090AB +:0E08D900E7CA7429F000000090E68F740BF05F +:0408E70000000022EB +:0A08EB00AA82E509600475090022E5 +:0408F500EA70012282 +:0708F900BA01047509012298 +:0E090000740C5AFBBB0428EA30E10543B11029 +:02090E00800364 +:0309100053B1EFF1 +:09091300EA30E00543B140800325 +:03091C0053B1BF15 +:0E091F0000000053B1F712013D43B108000083 +:02092D000022A6 +:0E092F0074085AFBBB0848EA30E10543B110DA +:02093D00800335 +:03093F0053B1EFC2 +:09094200EA30E00543B1408003F6 +:03094B0053B1BFE6 +:0E094E0000000053B1F7C00212013DD0024379 +:0D095C00B108000000530204E4BA000104D9 +:0B096900FA742055B1FBE4BB00010450 +:07097400FBEAB5030280035A +:03097B00750801FB +:01097E002256 +:07097F00AA827509007B014B +:0E098600C3EB9A502CEB2480F582E434E7F5A5 +:0E09940083E0FC740F5CF582C002C003C00457 +:0E09A2001208EBD004ECC4540FF5821208EBDF +:0709B000D003D0020B80CF41 +:0109B700221D +:0E09B80090E7C0744FF000000090E7C1744B50 +:0E09C600F000000090E7C27420F000000090E6 +:0E09D400E7C37428F000000090E7C47458F0E8 +:0D09E20000000090E7C57429F000000090AF +:0E09EF00E68F7406F000000090E68D74FFF0B5 +:0609FD000000000202539D +:0E0A030090E68DE0FA90E780E0FBBB542BBA42 +:0E0A1100032890E781E0F5821203A2E582C47B +:0E0A1F0054F0FC90E782E0F582C0041203A2BE +:0E0A2D00AD82D004ED4CF5821203D8020AFE11 +:0C0A3B00BB5209BA010612046E020AFE4A +:0D0A4700BB5712BA020F90E781E0F5821252 +:060A540003A21205EA02F4 +:020A5A000AFE92 +:0C0A5C00BB4309BA010612064A020AFE5A +:0E0A6800BB4215BA021290E781E0FCE4BC31FB +:020A7600010479 +:080A7800F5821206D6020AFE07 +:0E0A8000BB4914BA021190E781E0FCE4BC31DE +:020A8E00010461 +:070A9000F58212072E8067BA +:0B0A9700BB5308BA0105120786805C03 +:0B0AA200BB5008BA010512084080514B +:0A0AAD00BB4A078A8212097F8047C6 +:080AB700BB58051209B8803F8D +:0E0ABF0090E7C07445F000000090E7C174524B +:0E0ACD00F000000090E7C27452F000000090AC +:0E0ADB00E7C3744FF000000090E7C47452F0BF +:0D0AE90000000090E7C57421F000000090AF +:080AF600E68F7406F000000019 +:0A0AFE0090E68D74FFF00000002266 +:0E0B080090E690E0FB7A0090E691E0FC7D0024 +:0E0B16004202ED4203EA4B700A90E69174FF32 +:050B2400F000000022BA +:0E0B2900E5BB30E7FB90E690E090E6D0F09060 +:0D0B3700E691E090E6D1F090E691E4F090B8 +:060B4400E6D474FFF0226C +:0C0B4A0075080012019190E69174FFF014 +:0D0B560000000090E69174FFF00000009098 +:0E0B6300E69174FFF000000090E69174FFF040 +:030B710000000081 +:0E0B740090E6A1E0FA20E107D281120A03C246 +:010B820081F1 +:0E0B830090E6A3E0FA20E2E9D280120B08C24D +:030B91008080E081 +:0E0BB400010101010101010700000000000025 +:0E0BC2000000070707070707070700000000ED +:0E0BD0000000003F010101013F010107020486 +:0E0BDE000000010000000603050307070707DB +:0E0BEC00000000003600003FFE01FE3801014F +:0E0BFA000107000204010000000007060703C7 +:0E0C0800030303070000002D0000003F010160 +:0E0C1600013801010107020400010000000086 +:0E0C240006030503030303070000002D000074 +:020C3200003F81 +:0E0C34000000000000000000000000000000B2 +:0E0C42000000000000000000000000000000A4 +:080C500000000000000000009C +:070C5800E0000007EA4E0076 +:0E0C5F00303132333435363738394142434470 +:030C6D00454600F9 +:070C70004F4B202852290020 +:06003700E478FFF6D8FD9D +:080015007900E94400601B7A48 +:05001D0000900C777853 +:030022000075A0C6 +:0A00250020E493F2A308B8000205DE +:08002F00A0D9F4DAF275A0FF7C +:08003D007800E84400600A7934 +:030045000075A0A3 +:0600480020E4F309D8FCDE +:08004E007800E84400600C7921 +:0B00560000902000E4F0A3D8FCD9FAD1 +:03000800758109F6 +:0A000B00120BB0E58260030200034F +:0E0B940020F71430F6148883A88220F507E6B7 +:060BA200A8837583002208 +:030BA800E280F7F1 +:030BAB00E49322AE +:020BAE00E02243 +:040BB0007582002228 +:00000001FF diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/prep_hardware.svf.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/prep_hardware.svf.svn-base new file mode 100644 index 0000000..3abddc0 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/prep_hardware.svf.svn-base @@ -0,0 +1,2972 @@ +// Created using Xilinx Cse Software [ISE - 13.1] + +TRST OFF; +ENDIR IDLE; +ENDDR IDLE; +STATE RESET; +STATE IDLE; +FREQUENCY 1E6 HZ; +//Operation: Erase -p 0 +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) SMASK (ff) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f6d4f093) MASK (0fff8fff) ; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +//Boundary Scan Chain Contents +//Position 1: xc2c256 +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) ; +SDR 32 TDI (00000000) TDO (f6d4f093) ; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +// Loading devices with 'enable' or 'bypass' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +// Loading devices with 'erase' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (ed) SMASK (ff) ; +ENDIR IDLE; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRPAUSE; +RUNTEST DRPAUSE 20 TCK; +STATE IDLE; +RUNTEST IDLE 100000 TCK; +STATE DRPAUSE; +RUNTEST DRPAUSE 5000 TCK; +RUNTEST IDLE 1 TCK; +// Loading devices with 'init' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IDLE; +RUNTEST IDLE 20 TCK; +// Loading devices with 'init' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRUPDATE IDLE; +RUNTEST 800 TCK; +ENDIR IDLE; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (c0) ; +RUNTEST 100 TCK; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (c0) ; +RUNTEST 100 TCK; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +SIR 8 TDI (ff) ; +SDR 1 TDI (00) SMASK (01) ; +//Operation: Program -p 0 -e -v +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f6d4f093) MASK (0fff8fff) ; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +//Boundary Scan Chain Contents +//Position 1: xc2c256 +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) ; +SDR 32 TDI (00000000) TDO (f6d4f093) ; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +// Loading devices with 'enable' or 'bypass' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +// Loading devices with 'erase' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (ed) SMASK (ff) ; +ENDIR IDLE; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRPAUSE; +RUNTEST DRPAUSE 20 TCK; +STATE IDLE; +RUNTEST IDLE 100000 TCK; +STATE DRPAUSE; +RUNTEST DRPAUSE 5000 TCK; +RUNTEST IDLE 1 TCK; +// Loading devices with 'init' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IDLE; +RUNTEST IDLE 20 TCK; +// Loading devices with 'init' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRUPDATE IDLE; +RUNTEST 800 TCK; +ENDIR IDLE; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (c0) ; +RUNTEST 100 TCK; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (c0) ; +RUNTEST 100 TCK; +// Loading devices with 'enable' or 'bypass' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +// Programming. +// Loading devices with 'program' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (ea) ; +SDR 1371 TDI (000729ffffffffffffff3ffffffffffffffff9fffff9edfffffffffffffffffffffffffffffeffffffffffc3f81fffffffffffffffffffffffffffffffdfffff5fffffffffffffffffffffffffffffffffffffff554079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) SMASK (07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +ENDIR IDLE; +RUNTEST 10000 TCK; +SDR 1371 TDI (0407ffff5ffffff7fffffffffffffffffffff9fffffbefddffffffffff7fffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffffffdfffffdf7fffffffffffffffffffffffffffffffffffffffbff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (060167fdffffffffffff5ffffffffffffffffbfffffbfbffffffffffffffffffffffffffffffffffffffff9a967fffffffffffffffffffffffffffffffdfffffddffffffffffffffffffffffffffffffffffffffeff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (020728d37ffffffffffffffffffffffffffff9fffffbef7dffffffffffffffffffffdfffffffffffffffffc3f81fffffffffffffffffffffffffffffffdfffffffffdfdffffffffffffffffffffffffffffffffebfe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81e607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0307fffff4d535d354d7fffffffff7fffffff9fffefbff7dfffffffffffffffffdffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (070167bfffff7ffffffffffffffffffffffff9fffffbef7dffffffffffffffffffefffffffffffffffffff9b167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (050729bfffffffffffffffffdffbfffffffff9fffff9edffffffffffffffffffffffffffffffffffbfffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0107ffffff77fffffffffffffffffffffffff9fffffbef7dfffffffffffffffffffffffffffffbffffffffffbfffffffffffffffffffffffffffffffffdfffffffffdfdffffffffffffffffffffffffffffffffffafff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (018567ffffffffffff77fffffffffffffffff9fffff9edfffffffffffffffffffffffffffffffff7ffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0587292efffffffffffffffffffffffffffff9fffffbfb7dffffffffffffffbfffffffffffffffffffffffc3981fffffffffffffffffffffffffffffffdfffffdfdfffffffffffffffffffffffffffffffffffffcf2061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81e607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0787ffdffdfffffffffffffffffffffffffff9fffffbeffffffffffdfdfbffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffffffdfffffddffffffffffffffffffeffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (038167fffffffefffffffffffffffffffffff9fffef9dfffffffffffff7df7df7df7df7df7df7df7dfffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (028729fffffffffddffffffffffffffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0687ffffffffffffffdffffffffffffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (048167ffffffffffffff5ffffffbfffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (008601ffffffddfffffffffffffffffffffff9fffffbef7dffffffffffffffffffffffffffbfffffffffffc3981fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (00c7fff7fffffffffdfffffffffffffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffffbf3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (04c167ffedb36db6cdb7fffffffff7fffffbb9fffffdfdfffffffffffffffffffffffffff7ffffffffffff9b167fffffffffffffffffffffffffffffffdfffffdf7fffffffffffffffffffffffffffffffffffff6db9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (06c769fffffffffffffffffffffffffffffffdfffffdfdfffffffffffffffffffffffeffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff83ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (02c7fffffffff7fffffffffffffffffffffff9fafffdfdffffffffffffffefffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (03c1e7ffffffffff4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe7879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (07c769ffffffffd5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff83ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (05c7ffffffffebfffffd5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (01c1e7ffffd2bfffffffffffffffffffffffffffffffffe4ffffffffffffffffffffffffffffffffffffff9e9e7ffffffffffffffffffffffffffffffffffffffffe2bfffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe7879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (014769ffcaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff83ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0547ffeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0741e7ffffffffffffd7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffab9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe7879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0347694bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeafe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff83ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0247fffffffffffffffffffffffffffffffffdffffffff7dfffffffffffffffeffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0641ffffffffffff7ffffffffffffffffffff9fffff9bdfffffffffffffffffffffffffdffffffffffffff9e9e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe7879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (044641ffffffffdffffffffffffffffffffffbebffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0047fffffffffffffffdfffffffffffffffffbffffebffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0061e7fffffdfffffffffffffffffffffffffbebffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (046601ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff819e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0667febffffffffffffffffffffffffffffffbffffebffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (026567fffffffffffffedffffffffffffffffafbffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98859ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (036729ffffdffffffffffffffffffffffffffbebffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0767ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (056367fffffffffff7fffffffffffffffffffbebffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (016729fff7fffffffffffffffffffffffffffbebffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe521e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (01e7fffffffffffffffffffffffffffffffffdfffffddffffffffffffffffffffffffffffffffffffffbffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (05e167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (07e729ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (03e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (02e167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (06e729ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe521e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (04e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (00e167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9b167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (00a781fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f80abaffffffffffffffffffffffffffffbffffebfffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (04a3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffbfffffffffbfffffbfbffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff77ffffffffffffffff +fffffffffffffffffffffffeffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (06a167fffffffffffffffff7fffffffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167d7fffffffffffffffffffffffffffffbfffffffffbfbffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (02a781fffffffffffffffffffefffffffffffbffffffffbbfffffffffffffffffffffffffffffffffffffe07f816deffffffffffffffffffffffffffffbfffffbeffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (03a3fffffffffffffffffbefbeffeffefffffbfffffbbfffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffbfffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff7dfffffffffffffffd +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (07a167fffffffffffffffbfffffffffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167fdfffffffffffffffffffffffffffffbfffffbefffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffff7fffff7dffffffffffffffff +ffffffffffffffffffffffefe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (05a781fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81ffd7fffffffffffffffffffffffffffbfffffffffbfbfffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffff7fffff7dffffffffffffffff +effeffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (01a3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (012167ffffffffffffffffffdffffffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167ff7ffffffffffffffffffffffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffff7fffff77fffffffffffffffffffffffffffffffffffffeffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (052781ffffffffffffffffffffffeffffffffbffffffffbbfffffffffffffffffffffffffffffffffffffe07f813dbffffffffffffffffffffffffffffbfffffbfbfffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0723ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ff7ffffffffffffffffffffffffffffffbfffffbefffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff7dffffffffffffffff +fffffffffffffffffffffffbffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (032167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (022781fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07929fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0623ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (042167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a063ffffffffffffffffffff7ffffffffffafbffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (002781fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07929fffbfffffffffffffffffffffffffffbffffebfffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0033ffffffffffffffffffffffffffff7ffffbfffffbfbffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (043167ff7ffffffffffffffffffffffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a063ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0637c1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1ffffffffffffffffffffffffdffffffbfffffbeffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff83ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0233ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0331e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe7879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (07374ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff83ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0537ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ff53afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0133e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe7879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (01b74ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff83ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (05b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffdffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (07b5e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7fffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffff6e7879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (03b74ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff83ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (02b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (06b5e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe7879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (04b74ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f981fffffffffffffffffffffff7fffffffbfbbffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff959e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (00b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffff0effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8fe) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (00f3e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e467ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffde059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (04f781fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0798ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (06f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (02f167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a263ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (03f70ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07981fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff959e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (07f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffff0effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (05f367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a467ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffde059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (01f781fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff959e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0173ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffff0effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (057167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a07bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffde059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (07770ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0377ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (027567ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (067781fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0473ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (007167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe) ; +RUNTEST 10000 TCK; +// Loading devices with 'init' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IDLE; +RUNTEST IDLE 20 TCK; +// Loading devices with 'init' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRUPDATE IDLE; +RUNTEST 800 TCK; +ENDIR IDLE; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (c0) ; +RUNTEST 100 TCK; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (c0) ; +RUNTEST 100 TCK; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'enable' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +//Loading device with 'enable' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +// Verification. +// Loading device with a 'verify' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (ee) ; +ENDDR DRPAUSE; +SDR 7 TDI (00) SMASK (7f) ; +ENDIR IDLE; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729ffffffffffffff3fffffff +fffffffff9fffff9edfffffffffffffffffffffffffffffeffffffffffc3f81fffffffffffffffffffffffffffffffdfffff5fffffffffffffffffffffffffffffffffffffff554079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (40) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffff5ffffff7ffffffffffff +fffffffff9fffffbefddffffffffff7fffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffffffdfffffdf7fffffffffffffffffffffffffffffffffffffffbff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (60) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167fdffffffffffff5fffffff +fffffffffbfffffbfbffffffffffffffffffffffffffffffffffffffff9a967fffffffffffffffffffffffffffffffdfffffddffffffffffffffffffffffffffffffffffffffeff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (20) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0728d37fffffffffffffffffff +fffffffff9fffffbef7dffffffffffffffffffffdfffffffffffffffffc3f81fffffffffffffffffffffffffffffffdfffffffffdfdffffffffffffffffffffffffffffffffebfe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e607ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (30) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07fffff4d535d354d7ffffffff +f7fffffff9fffefbff7dfffffffffffffffffdffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (70) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167bfffff7fffffffffffffff +fffffffff9fffffbef7dffffffffffffffffffefffffffffffffffffff9b167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (50) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729bfffffffffffffffffdffb +fffffffff9fffff9edffffffffffffffffffffffffffffffffffbfffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (10) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffff77ffffffffffffffff +fffffffff9fffffbef7dfffffffffffffffffffffffffffffbffffffffffbfffffffffffffffffffffffffffffffffdfffffffffdfdffffffffffffffffffffffffffffffffffafff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (18) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0567ffffffffffff77ffffffff +fffffffff9fffff9edfffffffffffffffffffffffffffffffff7ffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (58) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07292effffffffffffffffffff +fffffffff9fffffbfb7dffffffffffffffbfffffffffffffffffffffffc3981fffffffffffffffffffffffffffffffdfffffdfdfffffffffffffffffffffffffffffffffffffcf2061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e607ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (78) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffdffdffffffffffffffffff +fffffffff9fffffbeffffffffffdfdfbffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffffffdfffffddffffffffffffffffffeffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (38) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167fffffffeffffffffffffff +fffffffff9fffef9dfffffffffffff7df7df7df7df7df7df7df7dfffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (28) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729fffffffffddfffffffffff +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (68) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffdfffffffff +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (48) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffff5ffffffb +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (08) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0601ffffffddffffffffffffff +fffffffff9fffffbef7dffffffffffffffffffffffffffbfffffffffffc3981fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07fff7fffffffffdffffffffff +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffffbf3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffedb36db6cdb7ffffffff +f7fffffbb9fffffdfdfffffffffffffffffffffffffff7ffffffffffff9b167fffffffffffffffffffffffffffffffdfffffdf7fffffffffffffffffffffffffffffffffffff6db9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0769ffffffffffffffffffffff +fffffffffdfffffdfdfffffffffffffffffffffffeffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd86ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07fffffffff7ffffffffffffff +fffffffff9fafffdfdffffffffffffffefffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7ffffffffff4affffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0769ffffffffd5ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffebfffffd5fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7ffffd2bfffffffffffffff +ffffffffffffffffffe4ffffffffffffffffffffffffffffffffffffff9e9e7ffffffffffffffffffffffffffffffffffffffffe2bfffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe0000000000001f6000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe0000000000001fc000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (14) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0769ffcaffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe0000000000000f6000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe0000000000001f0000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (54) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffeeffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (74) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7ffffffffffffd7ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffab9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (34) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07694bffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeafe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (24) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +fffffffffdffffffff7dfffffffffffffffeffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (64) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01ffffffffffff7fffffffffff +fffffffff9fffff9bdfffffffffffffffffffffffffdffffffffffffff9e9e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (44) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0641ffffffffdfffffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff67ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (04) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07fffffffffffffffdffffffff +fffffffffbffffebffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (06) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7fffffdffffffffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e79fff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (46) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0601ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff819e07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (66) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07febfffffffffffffffffffff +fffffffffbffffebffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (26) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0567fffffffffffffedfffffff +fffffffffafbffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (36) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729ffffdfffffffffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (76) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (56) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0367fffffffffff7ffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (16) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729fff7ffffffffffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe521e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +fffffffffdfffffddffffffffffffffffffffffffffffffffffffffbffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe521e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9b167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f80abaffffffffffffffffffffffffffffbffffebfffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffbfffffffffbfffffbfbffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff77fffffffffffffffffffffffffffffffffffffffeffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167fffffffffffffffff7ffff +fffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167d7fffffffffffffffffffffffffffffbfffffffffbfbffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781fffffffffffffffffffeff +fffffffffbffffffffbbfffffffffffffffffffffffffffffffffffffe07f816deffffffffffffffffffffffffffffbfffffbeffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03fffffffffffffffffbefbeff +effefffffbfffffbbfffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffbfffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff7dfffffffffffffffdffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167fffffffffffffffbffffff +fffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167fdfffffffffffffffffffffffffffffbfffffbefffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffff7fffff7dffffffffffffffffffffffffffffffffffffffefe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81ffd7fffffffffffffffffffffffffffbfffffffffbfbfffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffff7fffff7dffffffffffffffffeffeffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (12) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffdfff +fffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167ff7ffffffffffffffffffffffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffff7fffff77fffffffffffffffffffffffffffffffffffffeffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (52) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +effffffffbffffffffbbfffffffffffffffffffffffffffffffffffffe07f813dbffffffffffffffffffffffffffffbfffffbfbfffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (72) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ff7ffffffffffffffffffffffffffffffbfffffbefffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff7dfffffffffffffffffffffffffffffffffffffffbffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (32) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (22) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07929fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (62) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (42) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a063ffffffffffffffffffff7ffffffffffafbffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (02) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07929fffbfffffffffffffffffffffffffffbffffebfffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (03) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffff7ffffbfffffbfbffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (43) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ff7fffffffffffffffffff +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a063ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (63) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07c1ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1ffffffffffffffffffffffffdffffffbfffffbeffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd86ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (23) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (33) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (73) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (074fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (53) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ff53afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (13) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (074fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (05e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7fffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6e7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (074fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (05e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (074fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f981fffffffffffffffffffffff7fffffffbfbbffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff959e07ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08) MASK (09bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0efffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8fe) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e467ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde059fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe79ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0798ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a263ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (070fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07981fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff959e07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0efffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0367ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a467ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde059fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff959e07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (17) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0efffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (57) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a07bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde059fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (77) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (070fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (37) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (27) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0567ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (67) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (47) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (07) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0967ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a659ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe69) MASK (07fdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +eff9ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfe) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (05) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) MASK (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (45) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +// masking lower UES bits. +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) MASK (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) ; +RUNTEST 100 TCK; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IDLE; +RUNTEST IDLE 20 TCK; +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRUPDATE IDLE; +RUNTEST 800 TCK; +ENDIR IDLE; +//Loading device with 'conld' instruction. +SIR 8 TDI (c0) ; +RUNTEST IDLE 100 TCK; +//Loading device with 'enable' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +// Setting Done bit ... +// Loading device with a 'program' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (ea) ; +SDR 1371 TDI (005ffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +ENDIR IDLE; +RUNTEST 10000 TCK; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IDLE; +RUNTEST IDLE 20 TCK; +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRUPDATE IDLE; +RUNTEST 800 TCK; +ENDIR IDLE; +//Loading device with 'conld' instruction. +SIR 8 TDI (c0) ; +RUNTEST IDLE 100 TCK; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f6d4f093) MASK (0fff8fff) ; +//Check for Done bit. +SIR 8 TDI (ff) TDO (05) MASK (07) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +SIR 8 TDI (ff) ; +SDR 1 TDI (00) SMASK (01) ; +//Operation: Verify -p 0 +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f6d4f093) MASK (0fff8fff) ; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +//Boundary Scan Chain Contents +//Position 1: xc2c256 +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) ; +SDR 32 TDI (00000000) TDO (f6d4f093) ; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +//Loading device with 'bypass' instruction. +SIR 8 TDI (ff) ; +//Loading device with 'enable' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +//Loading device with 'enable' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +//Loading device with 'enable' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +// Verification. +// Loading device with a 'verify' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (ee) ; +ENDDR DRPAUSE; +SDR 7 TDI (00) SMASK (7f) ; +ENDIR IDLE; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729ffffffffffffff3fffffff +fffffffff9fffff9edfffffffffffffffffffffffffffffeffffffffffc3f81fffffffffffffffffffffffffffffffdfffff5fffffffffffffffffffffffffffffffffffffff554079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (40) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffff5ffffff7ffffffffffff +fffffffff9fffffbefddffffffffff7fffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffffffdfffffdf7fffffffffffffffffffffffffffffffffffffffbff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (60) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167fdffffffffffff5fffffff +fffffffffbfffffbfbffffffffffffffffffffffffffffffffffffffff9a967fffffffffffffffffffffffffffffffdfffffddffffffffffffffffffffffffffffffffffffffeff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (20) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0728d37fffffffffffffffffff +fffffffff9fffffbef7dffffffffffffffffffffdfffffffffffffffffc3f81fffffffffffffffffffffffffffffffdfffffffffdfdffffffffffffffffffffffffffffffffebfe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e607ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (30) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07fffff4d535d354d7ffffffff +f7fffffff9fffefbff7dfffffffffffffffffdffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (70) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167bfffff7fffffffffffffff +fffffffff9fffffbef7dffffffffffffffffffefffffffffffffffffff9b167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (50) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729bfffffffffffffffffdffb +fffffffff9fffff9edffffffffffffffffffffffffffffffffffbfffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (10) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffff77ffffffffffffffff +fffffffff9fffffbef7dfffffffffffffffffffffffffffffbffffffffffbfffffffffffffffffffffffffffffffffdfffffffffdfdffffffffffffffffffffffffffffffffffafff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (18) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0567ffffffffffff77ffffffff +fffffffff9fffff9edfffffffffffffffffffffffffffffffff7ffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (58) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07292effffffffffffffffffff +fffffffff9fffffbfb7dffffffffffffffbfffffffffffffffffffffffc3981fffffffffffffffffffffffffffffffdfffffdfdfffffffffffffffffffffffffffffffffffffcf2061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e607ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (78) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffdffdffffffffffffffffff +fffffffff9fffffbeffffffffffdfdfbffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffffffdfffffddffffffffffffffffffeffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (38) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167fffffffeffffffffffffff +fffffffff9fffef9dfffffffffffff7df7df7df7df7df7df7df7dfffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (28) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729fffffffffddfffffffffff +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (68) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffdfffffffff +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (48) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffff5ffffffb +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (08) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0601ffffffddffffffffffffff +fffffffff9fffffbef7dffffffffffffffffffffffffffbfffffffffffc3981fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07fff7fffffffffdffffffffff +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffffbf3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffedb36db6cdb7ffffffff +f7fffffbb9fffffdfdfffffffffffffffffffffffffff7ffffffffffff9b167fffffffffffffffffffffffffffffffdfffffdf7fffffffffffffffffffffffffffffffffffff6db9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0769ffffffffffffffffffffff +fffffffffdfffffdfdfffffffffffffffffffffffeffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd86ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07fffffffff7ffffffffffffff +fffffffff9fafffdfdffffffffffffffefffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7ffffffffff4affffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0769ffffffffd5ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffebfffffd5fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7ffffd2bfffffffffffffff +ffffffffffffffffffe4ffffffffffffffffffffffffffffffffffffff9e9e7ffffffffffffffffffffffffffffffffffffffffe2bfffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe0000000000001f6000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe0000000000001fc000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (14) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0769ffcaffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe0000000000000f6000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe0000000000001f0000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (54) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffeeffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (74) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7ffffffffffffd7ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffab9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (34) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07694bffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeafe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (24) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +fffffffffdffffffff7dfffffffffffffffeffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (64) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01ffffffffffff7fffffffffff +fffffffff9fffff9bdfffffffffffffffffffffffffdffffffffffffff9e9e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (44) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0641ffffffffdfffffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff67ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (04) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07fffffffffffffffdffffffff +fffffffffbffffebffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (06) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7fffffdffffffffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e79fff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (46) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0601ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff819e07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (66) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07febfffffffffffffffffffff +fffffffffbffffebffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (26) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0567fffffffffffffedfffffff +fffffffffafbffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (36) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729ffffdfffffffffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (76) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (56) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0367fffffffffff7ffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (16) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729fff7ffffffffffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe521e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +fffffffffdfffffddffffffffffffffffffffffffffffffffffffffbffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe521e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9b167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f80abaffffffffffffffffffffffffffffbffffebfffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffbfffffffffbfffffbfbffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff77fffffffffffffffffffffffffffffffffffffffeffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167fffffffffffffffff7ffff +fffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167d7fffffffffffffffffffffffffffffbfffffffffbfbffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781fffffffffffffffffffeff +fffffffffbffffffffbbfffffffffffffffffffffffffffffffffffffe07f816deffffffffffffffffffffffffffffbfffffbeffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03fffffffffffffffffbefbeff +effefffffbfffffbbfffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffbfffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff7dfffffffffffffffdffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167fffffffffffffffbffffff +fffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167fdfffffffffffffffffffffffffffffbfffffbefffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffff7fffff7dffffffffffffffffffffffffffffffffffffffefe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81ffd7fffffffffffffffffffffffffffbfffffffffbfbfffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffff7fffff7dffffffffffffffffeffeffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (12) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffdfff +fffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167ff7ffffffffffffffffffffffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffff7fffff77fffffffffffffffffffffffffffffffffffffeffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (52) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +effffffffbffffffffbbfffffffffffffffffffffffffffffffffffffe07f813dbffffffffffffffffffffffffffffbfffffbfbfffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (72) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ff7ffffffffffffffffffffffffffffffbfffffbefffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff7dfffffffffffffffffffffffffffffffffffffffbffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (32) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (22) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07929fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (62) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (42) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a063ffffffffffffffffffff7ffffffffffafbffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (02) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07929fffbfffffffffffffffffffffffffffbffffebfffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (03) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffff7ffffbfffffbfbffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (43) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ff7fffffffffffffffffff +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a063ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (63) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07c1ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1ffffffffffffffffffffffffdffffffbfffffbeffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd86ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (23) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (33) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (73) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (074fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (53) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ff53afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (13) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (074fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (05e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7fffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6e7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (074fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (05e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (074fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f981fffffffffffffffffffffff7fffffffbfbbffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff959e07ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08) MASK (09bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0efffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8fe) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e467ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde059fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe79ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0798ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a263ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (070fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07981fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff959e07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0efffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0367ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a467ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde059fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff959e07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (17) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0efffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (57) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a07bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde059fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (77) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (070fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (37) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (27) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0567ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (67) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (47) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (07) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0967ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a659ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe69) MASK (07fdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +eff9ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfe) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (05) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) MASK (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (45) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +// masking lower UES bits. +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) MASK (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) ; +RUNTEST 100 TCK; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IDLE; +RUNTEST IDLE 20 TCK; +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRUPDATE IDLE; +RUNTEST 800 TCK; +ENDIR IDLE; +//Loading device with 'conld' instruction. +SIR 8 TDI (c0) ; +RUNTEST IDLE 100 TCK; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f6d4f093) MASK (0fff8fff) ; +//Check for Done bit. +SIR 8 TDI (ff) TDO (05) MASK (07) ; +//Loading device with 'conld' instruction. +SIR 8 TDI (c0) ; +RUNTEST IDLE 100 TCK; +//Loading device with 'bypass' instruction. +SIR 8 TDI (ff) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +SIR 8 TDI (ff) ; +SDR 1 TDI (00) SMASK (01) ; diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/reset-probe-impact.sh.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/reset-probe-impact.sh.svn-base new file mode 100644 index 0000000..b5804a4 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/reset-probe-impact.sh.svn-base @@ -0,0 +1,41 @@ +#!/bin/bash +# +# Reset probe to Xilinx Firmware using 'impact' +# (see README file for details) +# + +ISEDIR="/opt/Xilinx/11.3/ISE" + +finddev() { + for id in 03fd:0009 03fd:000d 03fd:000f 04b4:8613; do lsusb -d $id; done | \ + head -n 1 | sed -r 's,^Bus ([0-9]+) Device ([0-9]+).*,/dev/bus/usb/\1/\2,' +} + +v() { + echo "+ $*" + "$@" +} + +batchfile=$( mktemp ) +trap 'rm "$batchfile"' 0 + +cat << EOT > "$batchfile" +setMode -bs +setCable -port usb21 +# identify +quit +EOT + +v fxload -t fx2 -D $(finddev) -I "$ISEDIR"/bin/lin/xusb_emb.hex + +for x in 0 1 2 3 4 5 6 7; do + lsusb -d "03fd:0008" && break + echo "Waiting for probe to re-enumerate.." + sleep 1 +done + +echo -n "Waiting for probe to settle.." +for x in 1 2 3 4 5; do echo -n .; sleep 1; done; echo + +v "$ISEDIR"/bin/lin/impact -batch "$batchfile" + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/xsvftool-xpcu.c.svn-base b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/xsvftool-xpcu.c.svn-base new file mode 100644 index 0000000..b76e2d8 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/.svn/text-base/xsvftool-xpcu.c.svn-base @@ -0,0 +1,720 @@ +/* + * xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB + * + * Copyright (C) 2011 RIEGL Research ForschungsGmbH + * Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#define _GNU_SOURCE + +#include <stdio.h> +#include <string.h> +#include <errno.h> +#include <sys/time.h> + +#include "libxsvf.h" +#include "fx2usb-interface.h" + +#include "filedata.h" + +char *correct_cksum = +#include "hardware_cksum_c.inc" +; + +#define UNUSED __attribute__((unused)) + +/**** BEGIN: http://svn.clifford.at/tools/trunk/examples/check.h ****/ + +// This is to not confuse the VIM syntax highlighting +#define CHECK_VAL_OPEN ( +#define CHECK_VAL_CLOSE ) + +#define CHECK(result, check) \ + CHECK_VAL_OPEN{ \ + typeof(result) _R = (result); \ + if (!(_R check)) { \ + fprintf(stderr, "Error from '%s' (%d %s) in %s:%d.\n", \ + #result, (int)_R, #check, __FILE__, __LINE__); \ + fprintf(stderr, "ERRNO(%d): %s\n", errno, strerror(errno)); \ + abort(); \ + } \ + _R; \ + }CHECK_VAL_CLOSE + +#define CHECK_PTR(result, check) \ + CHECK_VAL_OPEN{ \ + typeof(result) _R = (result); \ + if (!(_R check)) { \ + fprintf(stderr, "Error from '%s' (%p %s) in %s:%d.\n", \ + #result, (void*)_R, #check, __FILE__, __LINE__); \ + fprintf(stderr, "ERRNO(%d): %s\n", errno, strerror(errno)); \ + abort(); \ + } \ + _R; \ + }CHECK_VAL_CLOSE + +/**** END: http://svn.clifford.at/tools/trunk/examples/check.h ****/ + +FILE *file_fp = NULL; + +int usb_vendor_id = 0; +int usb_device_id = 0; +char *usb_device_file = NULL; + +int mode_frequency = 6000; +int mode_async_check = 0; +int mode_internal_cpld = 0; +int mode_8bit_per_cycle = 0; +int mode_hex_rmask = 0; + +usb_dev_handle *fx2usb; +int internal_jtag_scan_test = 0; + +int sync_count; +int tck_cycle_count; +int blocks_without_sync; + +int tdo_check_period_100; +int tdo_check_thisperiod; + +int rmask_bits = 0, rmask_bytes = 0; +unsigned char *rmask_data = NULL; + +/* This constant are used to determine when the error status should be synced. + * Syncinc to often would slow things down, syncinc not often enough might cause + * errors beeing reported by far to late. + */ +#define FORCE_SYNC_AFTER_N_BLOCKS 100 +#define FORCE_SYNC_MIN_PERIOD 10000 +#define FORCE_SYNC_INIT_PERIOD 100000 + +// send larger junks to USB stack and let the kernel split it up +// #define MAXBUF() (mode_internal_cpld ? 50 : mode_8bit_per_cycle ? 500 : 1000) +#define MAXBUF() (mode_internal_cpld ? 50 : 4000) + +unsigned char fx2usb_retbuf[65]; +int fx2usb_retlen; + +unsigned char commandbuf[4096]; +int commandbuf_len; + +static void shrink_8bit_to_4bit() +{ + int i; + if ((commandbuf_len & 1) != 0) + commandbuf[commandbuf_len++] = 0; + for (i = 0; i<commandbuf_len; i++) { + if ((i & 1) == 0) + commandbuf[i >> 1] = (commandbuf[i >> 1] & 0xf0) | commandbuf[i]; + else + commandbuf[i >> 1] = (commandbuf[i >> 1] & 0x0f) | (commandbuf[i] << 4); + } + commandbuf_len = commandbuf_len >> 1; +} + +void fx2usb_command(const char *cmd) +{ + // fprintf(stderr, "Sending FX2USB Command: '%s' => ", cmd); + fx2usb_send_chunk(fx2usb, 1, cmd, strlen(cmd)); + fx2usb_recv_chunk(fx2usb, 1, fx2usb_retbuf, sizeof(fx2usb_retbuf)-1, &fx2usb_retlen); + fx2usb_retbuf[fx2usb_retlen] = 0; + // fprintf(stderr, "'%s'\n", fx2usb_retbuf); + + if (strchr((char*)fx2usb_retbuf, '!') != NULL) { + fprintf(stderr, "Internal ERROR in communication with probe: '%s' => '%s'\n", cmd, fx2usb_retbuf); + abort(); + } +} + +static int xpcu_set_frequency(struct libxsvf_host *h UNUSED, int v); +static int xpcu_pulse_tck(struct libxsvf_host *h UNUSED, int tms, int tdi, int tdo, int rmask UNUSED, int sync); + +static int xpcu_setup(struct libxsvf_host *h UNUSED) +{ + sync_count = 0; + blocks_without_sync = 0; + commandbuf_len = 0; + fx2usb_command("R"); + + if (!mode_internal_cpld) { + fx2usb_command("B1"); + } + + if (mode_frequency) + xpcu_set_frequency(h, mode_frequency * 1000); + + tdo_check_period_100 = FORCE_SYNC_INIT_PERIOD * 100; + tdo_check_thisperiod = 0; + + return 0; +} + +static int xpcu_shutdown(struct libxsvf_host *h UNUSED) +{ + int rc = 0; + if (commandbuf_len != 0) { + fprintf(stderr, "Found %d unsynced commands in command buffer on interface shutdown!\n", commandbuf_len); + commandbuf_len = 0; + rc = -1; + } + fx2usb_command("S"); + if (fx2usb_retbuf[mode_internal_cpld ? 1 : 0] == '1') { + fprintf(stderr, "Found pending errors in interface status on shutdown!\n"); + rc = -1; + } + fx2usb_command("R"); + return rc; +} + +static void xpcu_udelay(struct libxsvf_host *h UNUSED, long usecs, int tms, long num_tck) +{ + struct timeval tv1, tv2; + long rem_usecs; + + if (mode_internal_cpld) + { + if (!mode_8bit_per_cycle) + shrink_8bit_to_4bit(); + unsigned char tempbuf[64]; + tempbuf[0] = 'J'; + memcpy(tempbuf+1, commandbuf, commandbuf_len); + fx2usb_send_chunk(fx2usb, 1, tempbuf, commandbuf_len + 1); + + fx2usb_command("P"); + commandbuf_len = 0; + } + else + { + sync_count = 0x08 | ((sync_count+1) & 0x0f); + commandbuf[commandbuf_len++] = 0x01; + commandbuf[commandbuf_len++] = sync_count; + if (!mode_8bit_per_cycle) + shrink_8bit_to_4bit(); + fx2usb_send_chunk(fx2usb, 2, commandbuf, commandbuf_len); + commandbuf_len = 0; + + char cmd[3]; + snprintf(cmd, 3, "W%x", sync_count); + fx2usb_command(cmd); + } + + gettimeofday(&tv1, NULL); + + while (num_tck > 0) { + xpcu_pulse_tck(h, tms, 0, -1, 0, 0); + num_tck--; + } + + if (mode_internal_cpld) + { + if (!mode_8bit_per_cycle) + shrink_8bit_to_4bit(); + unsigned char tempbuf[64]; + tempbuf[0] = 'J'; + memcpy(tempbuf+1, commandbuf, commandbuf_len); + fx2usb_send_chunk(fx2usb, 1, tempbuf, commandbuf_len + 1); + + fx2usb_command("P"); + commandbuf_len = 0; + } + else + { + sync_count = 0x08 | ((sync_count+1) & 0x0f); + commandbuf[commandbuf_len++] = 0x01; + commandbuf[commandbuf_len++] = sync_count; + if (!mode_8bit_per_cycle) + shrink_8bit_to_4bit(); + fx2usb_send_chunk(fx2usb, 2, commandbuf, commandbuf_len); + commandbuf_len = 0; + + char cmd[3]; + snprintf(cmd, 3, "W%x", sync_count); + fx2usb_command(cmd); + } + + while (usecs > 0) { + gettimeofday(&tv2, NULL); + rem_usecs = usecs - ((tv2.tv_sec - tv1.tv_sec)*1000000 + (tv2.tv_usec - tv1.tv_usec)); + if (rem_usecs <= 0) + break; + usleep(rem_usecs); + } +} + +static int xpcu_getbyte(struct libxsvf_host *h UNUSED) +{ + return fgetc(file_fp); +} + +static int xpcu_pulse_tck(struct libxsvf_host *h UNUSED, int tms, int tdi, int tdo, int rmask, int sync) +{ + int dummy_sync = 0; + + tck_cycle_count++; + + if (tdo >= 0) { + commandbuf[commandbuf_len++] = 0x08 | ((tdo & 1) << 2) | ((tms & 1) << 1) | ((tdi & 1) << 0); + tdo_check_period_100 = (tdo_check_period_100 * 99) / 100 + tdo_check_thisperiod; + tdo_check_thisperiod = 0; + } else { + commandbuf[commandbuf_len++] = 0x04 | ((tms & 1) << 1) | ((tdi & 1) << 0); + } + + if (mode_async_check == 0) + { + if (!sync && tdo >= 0 && (blocks_without_sync > FORCE_SYNC_AFTER_N_BLOCKS || tdo_check_period_100 > FORCE_SYNC_MIN_PERIOD)) + sync = 1; + if (!sync && !mode_internal_cpld && blocks_without_sync > 10*FORCE_SYNC_AFTER_N_BLOCKS && commandbuf_len >= (MAXBUF() - 10)) + dummy_sync = 1; + } + + if (rmask && !sync) + dummy_sync = 1; + + if ((dummy_sync || sync) && !mode_internal_cpld) { + sync_count = 0x08 | ((sync_count+1) & 0x0f); + commandbuf[commandbuf_len++] = 0x01; + commandbuf[commandbuf_len++] = sync_count; + } + + if (commandbuf_len >= (MAXBUF() - 4) || sync || dummy_sync) { + if (!mode_8bit_per_cycle) + shrink_8bit_to_4bit(); + if (mode_internal_cpld) { + unsigned char tempbuf[64]; + tempbuf[0] = 'J'; + memcpy(tempbuf+1, commandbuf, commandbuf_len); + fx2usb_send_chunk(fx2usb, 1, tempbuf, commandbuf_len + 1); + } else { + fx2usb_send_chunk(fx2usb, 2, commandbuf, commandbuf_len); + } + blocks_without_sync++; + commandbuf_len = 0; + } + + if ((sync || dummy_sync) && !mode_internal_cpld) { + char cmd[3]; + snprintf(cmd, 3, "W%x", sync_count); + fx2usb_command(cmd); + } + + if (sync) { + fx2usb_command("S"); + blocks_without_sync = 0; + } + + if (dummy_sync) { + fx2usb_command("P"); + blocks_without_sync = 0; + } + + if (rmask) { + if (rmask_bits >= 8*rmask_bytes) { + int old_rmask_bytes = rmask_bytes; + rmask_bytes = rmask_bytes ? rmask_bytes*2 : 64; + rmask_data = realloc(rmask_data, rmask_bytes); + memset(rmask_data + old_rmask_bytes, 0, rmask_bytes-old_rmask_bytes); + } + if (fx2usb_retbuf[mode_internal_cpld ? 5 : 4] == '1') + rmask_data[rmask_bits/8] |= 1 << (rmask_bits%8); + rmask_bits++; + } + + if (sync) { + if (fx2usb_retbuf[mode_internal_cpld ? 1 : 0] == '1') + return -1; + return fx2usb_retbuf[mode_internal_cpld ? 5 : 4] == '1'; + } + return tdo < 0 ? 1 : tdo; +} + +static int xpcu_sync(struct libxsvf_host *h UNUSED) +{ + if (!mode_internal_cpld) { + sync_count = 0x08 | ((sync_count+1) & 0x0f); + commandbuf[commandbuf_len++] = 0x01; + commandbuf[commandbuf_len++] = sync_count; + } + + if (!mode_8bit_per_cycle) + shrink_8bit_to_4bit(); + if (mode_internal_cpld) { + unsigned char tempbuf[64]; + tempbuf[0] = 'J'; + memcpy(tempbuf+1, commandbuf, commandbuf_len); + fx2usb_send_chunk(fx2usb, 1, tempbuf, commandbuf_len + 1); + } else { + fx2usb_send_chunk(fx2usb, 2, commandbuf, commandbuf_len); + } + commandbuf_len = 0; + + if (!mode_internal_cpld) { + char cmd[3]; + snprintf(cmd, 3, "W%x", sync_count); + fx2usb_command(cmd); + } + + fx2usb_command("S"); + blocks_without_sync = 0; + if (fx2usb_retbuf[mode_internal_cpld ? 1 : 0] == '1') + return -1; + + return 0; +} + +static int xpcu_set_frequency(struct libxsvf_host *h UNUSED, int v) +{ + int freq = 24000000, delay = 0; + + if (mode_internal_cpld) + return 0; + + if (!mode_internal_cpld) { + sync_count = 0x08 | ((sync_count+1) & 0x0f); + commandbuf[commandbuf_len++] = 0x01; + commandbuf[commandbuf_len++] = sync_count; + } + + if (!mode_8bit_per_cycle) + shrink_8bit_to_4bit(); + if (mode_internal_cpld) { + unsigned char tempbuf[64]; + tempbuf[0] = 'J'; + memcpy(tempbuf+1, commandbuf, commandbuf_len); + fx2usb_send_chunk(fx2usb, 1, tempbuf, commandbuf_len + 1); + } else { + fx2usb_send_chunk(fx2usb, 2, commandbuf, commandbuf_len); + } + commandbuf_len = 0; + + if (!mode_internal_cpld) { + char cmd[3]; + snprintf(cmd, 3, "W%x", sync_count); + fx2usb_command(cmd); + } + + while (delay < 250 && v < freq) { + delay++; + freq = 48000000 / (2*delay + 2); + } + + if (v < freq) + fprintf(stderr, "Requested FREQUENCY %dHz is to low! Using minimum value %dHz instead.\n", v, freq); + else if (v-freq > 10) + fprintf(stderr, "Requested FREQUENCY is %dHz. Using %dHz (24MHz/%d) instead.\n", v, freq, delay+1); + + char cmd[4]; + snprintf(cmd, 4, "T%02x", delay); + fx2usb_command(cmd); + + mode_8bit_per_cycle = delay != 0; + + if (!mode_internal_cpld) + { + sync_count = 0x08 | ((sync_count+1) & 0x0f); + commandbuf[commandbuf_len++] = 0x01; + commandbuf[commandbuf_len++] = sync_count; + if (!mode_8bit_per_cycle) + shrink_8bit_to_4bit(); + fx2usb_send_chunk(fx2usb, 2, commandbuf, commandbuf_len); + commandbuf_len = 0; + + char cmd[3]; + snprintf(cmd, 3, "W%x", sync_count); + fx2usb_command(cmd); + } + + return 0; +} + +static void xpcu_report_tapstate(struct libxsvf_host *h UNUSED) +{ + // fprintf(stderr, "[%s]\n", libxsvf_state2str(h->tap_state)); +} + +static void xpcu_report_device(struct libxsvf_host *h UNUSED, unsigned long idcode) +{ + if (internal_jtag_scan_test != 0) { + // CPLD should be: idcode=0x16d4a093, revision=0x1, part=0x6d4a, manufactor=0x049 + if (((idcode >> 12) & 0xffff) == 0x6d4a && ((idcode >> 1) & 0x7ff) == 0x049) + internal_jtag_scan_test += 1; + else + internal_jtag_scan_test += 2; + } else { + printf("idcode=0x%08lx, revision=0x%01lx, part=0x%04lx, manufactor=0x%03lx\n", idcode, + (idcode >> 28) & 0xf, (idcode >> 12) & 0xffff, (idcode >> 1) & 0x7ff); + } +} + +static void xpcu_report_status(struct libxsvf_host *h UNUSED, const char *message UNUSED) +{ + // fprintf(stderr, "[STATUS] %s\n", message); +} + +static void xpcu_report_error(struct libxsvf_host *h UNUSED, const char *file, int line, const char *message) +{ + fprintf(stderr, "[%s:%d] %s\n", file, line, message); +} + +static void *xpcu_realloc(struct libxsvf_host *h UNUSED, void *ptr, int size, enum libxsvf_mem which UNUSED) +{ + return realloc(ptr, size); +} + +static struct libxsvf_host h = { + .udelay = xpcu_udelay, + .setup = xpcu_setup, + .shutdown = xpcu_shutdown, + .getbyte = xpcu_getbyte, + .pulse_tck = xpcu_pulse_tck, + .sync = xpcu_sync, + .set_frequency = xpcu_set_frequency, + .report_tapstate = xpcu_report_tapstate, + .report_device = xpcu_report_device, + .report_status = xpcu_report_status, + .report_error = xpcu_report_error, + .realloc = xpcu_realloc +}; + +const char *progname; + +static void help() +{ + fprintf(stderr, "\n"); + fprintf(stderr, "A JTAG SVF/XSVF Player based on libxsvf for the Xilinx Platform Cable USB\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "xsvftool-xpcu, part of Lib(X)SVF (http://www.clifford.at/libxsvf/).\n"); + fprintf(stderr, "Copyright (C) 2011 RIEGL Research ForschungsGmbH\n"); + fprintf(stderr, "Copyright (C) 2011 Clifford Wolf <clifford@clifford.at>\n"); + fprintf(stderr, "Lib(X)SVF is free software licensed under the ISC license.\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "Usage: %s [ -L | -B ] [ -d <vendor>:<device> | -D <device_file> ] [ -f kHz ] [ -A ] [ -P ]\n", progname); + fprintf(stderr, " %*s { -E | -p | -s svf-file | -x xsvf-file | -c } ...\n", (int)strlen(progname), ""); + fprintf(stderr, "\n"); + fprintf(stderr, " -L, -B\n"); + fprintf(stderr, " Print RMASK bits as hex value (little or big endian)\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -d <vendor>:<device>\n"); + fprintf(stderr, " Open the device with this USB vendor and device ID.\n"); + fprintf(stderr, " (default: 03fd:000d and 04b4:8613\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -D <device_file>\n"); + fprintf(stderr, " Open this USB device (usually something like /dev/bus/usb/012/345)\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -f kHz\n"); + fprintf(stderr, " Run probe with the specified frequency (default=6000, max=24000)\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -A\n"); + fprintf(stderr, " Use full asynchonous error checking\n"); + fprintf(stderr, " (very fast but error reporting might be delayed)\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -P\n"); + fprintf(stderr, " Use CPLD on probe as target device\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -p\n"); + fprintf(stderr, " Force (re-)programming the CPLD on the probe\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -E\n"); + fprintf(stderr, " Erase the CPLD on the probe\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -s svf-file\n"); + fprintf(stderr, " Play the specified SVF file\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -x xsvf-file\n"); + fprintf(stderr, " Play the specified XSVF file\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -c\n"); + fprintf(stderr, " List devices in JTAG chain\n"); + fprintf(stderr, "\n"); + exit(1); +} + +int main(int argc, char **argv) +{ + int rc = 0; + int gotaction = 0; + int opt, i, j; + + int done_initialization = 0; + + progname = argc >= 1 ? argv[0] : "xsvftool-xpcu"; + while ((opt = getopt(argc, argv, "LBd:D:f:APpEs:x:c")) != -1) + { + if (!done_initialization && (opt == 'p' || opt == 'E' || opt == 's' || opt == 'x' || opt == 'c')) + { + usb_init(); + usb_find_busses(); + usb_find_devices(); + + fx2usb = fx2usb_open(usb_vendor_id, usb_device_id, usb_device_file); + if (fx2usb == NULL) { + fprintf(stderr, "Failed to find or open USB device!\n"); + exit(1); + } + CHECK(fx2usb_claim(fx2usb), == 0); + + FILE *ihexf = CHECK_PTR(fmemopen(firmware_ihx, sizeof(firmware_ihx), "r"), != NULL); + CHECK(fx2usb_upload_ihex(fx2usb, ihexf), == 0); + CHECK(fclose(ihexf), == 0); + + i = mode_internal_cpld; + mode_internal_cpld = 1; + internal_jtag_scan_test = 1; + libxsvf_play(&h, LIBXSVF_MODE_SCAN); + + if (internal_jtag_scan_test != 2) { + fprintf(stderr, "Probe (device %s on bus %s) failed internal JTAG scan test!\n", + usb_device(fx2usb)->filename, usb_device(fx2usb)->bus->dirname); + exit(1); + } + mode_internal_cpld = i; + internal_jtag_scan_test = 0; + + fprintf(stderr, "Connected to probe (device %s on bus %s) and passed internal JTAG scan test.\n", + usb_device(fx2usb)->filename, usb_device(fx2usb)->bus->dirname); + + if (opt != 'p' && opt != 'E' && !mode_internal_cpld) { + fx2usb_command("C"); + if (memcmp(correct_cksum, fx2usb_retbuf, 6)) { + fprintf(stderr, "Mismatch in CPLD checksum (is=%.6s, should=%s): reprogramming CPLD on probe..\n", + fx2usb_retbuf, correct_cksum); + i = mode_internal_cpld; + mode_internal_cpld = 1; + file_fp = CHECK_PTR(fmemopen(hardware_svf, sizeof(hardware_svf), "r"), != NULL); + libxsvf_play(&h, LIBXSVF_MODE_SVF); + mode_internal_cpld = i; + fclose(file_fp); + } + } + + done_initialization = 1; + } + + switch (opt) + { + case 'L': + mode_hex_rmask = 1; + break; + case 'B': + mode_hex_rmask = 2; + break; + case 'd': + if (usb_vendor_id || usb_device_id || usb_device_file || fx2usb) + help(); + if (sscanf(optarg, "%x:%x", &usb_vendor_id, &usb_device_id) != 2) + help(); + break; + case 'D': + if (usb_vendor_id || usb_device_id || usb_device_file || fx2usb) + help(); + usb_device_file = strdup(optarg); + break; + case 'f': + mode_frequency = atoi(optarg); + break; + case 'P': + mode_internal_cpld = 1; + break; + case 'A': + mode_async_check = 1; + break; + case 'p': + case 'E': + gotaction = 1; + i = mode_internal_cpld; + mode_internal_cpld = 1; + if (opt == 'p') { + file_fp = CHECK_PTR(fmemopen(hardware_svf, sizeof(hardware_svf), "r"), != NULL); + fprintf(stderr, "(Re-)programming CPLD on the probe..\n"); + } else { + file_fp = CHECK_PTR(fmemopen(erasecpld_svf, sizeof(erasecpld_svf), "r"), != NULL); + fprintf(stderr, "Erasing CPLD on the probe..\n"); + } + libxsvf_play(&h, LIBXSVF_MODE_SVF); + mode_internal_cpld = i; + fclose(file_fp); + break; + case 'x': + case 's': + gotaction = 1; + if (!strcmp(optarg, "-")) + file_fp = stdin; + else + file_fp = fopen(optarg, "rb"); + if (file_fp == NULL) { + fprintf(stderr, "Can't open %s file `%s': %s\n", opt == 's' ? "SVF" : "XSVF", optarg, strerror(errno)); + rc = 1; + break; + } + fprintf(stderr, "Playing %s file `%s'..\n", opt == 's' ? "SVF" : "XSVF", optarg); + if (libxsvf_play(&h, opt == 's' ? LIBXSVF_MODE_SVF : LIBXSVF_MODE_XSVF) < 0) { + fprintf(stderr, "Error while playing %s file `%s'.\n", opt == 's' ? "SVF" : "XSVF", optarg); + rc = 1; + } + if (strcmp(optarg, "-")) + fclose(file_fp); + break; + case 'c': + gotaction = 1; + fprintf(stderr, "Scanning JTAG chain..\n"); + if (libxsvf_play(&h, LIBXSVF_MODE_SCAN) < 0) { + fprintf(stderr, "Error while scanning JTAG chain.\n"); + rc = 1; + } + break; + default: + help(); + break; + } + } + + if (!gotaction) + help(); + + if (rmask_bits > 0) { + fprintf(stderr, "Total number of rmask bits acquired: %d\n", rmask_bits); + if (mode_hex_rmask) { + printf("0x"); + for (i = 0; i < rmask_bits; i += 4) { + int val = 0; + for (j = i; j < i + 4; j++) { + int pos = mode_hex_rmask > 1 ? j : rmask_bits - j - 1; + val = (val << 1) | (rmask_data[pos/8] & (1 << (pos%8)) ? 1 : 0); + } + printf("%x", val); + } + } else { + for (i = 0; i < rmask_bits; i++) + putchar((rmask_data[i / 8] & (1 << (i % 8))) != 0 ? '1' : '0'); + } + putchar('\n'); + } + + if (done_initialization) { + fx2usb_command("X"); + fx2usb_release(fx2usb); + usb_close(fx2usb); + } + + fprintf(stderr, "Total number of JTAG clock cycles performed: %d\n", tck_cycle_count); + if (rc == 0) + fprintf(stderr, "READY.\n"); + else + fprintf(stderr, "TERMINATED WITH ERROR(s)! (see above)\n"); + + return rc; +} + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/Makefile b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/Makefile new file mode 100644 index 0000000..ca0621d --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/Makefile @@ -0,0 +1,97 @@ +# +# xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB +# +# Copyright (C) 2011 RIEGL Research ForschungsGmbH +# Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +USE_PREP_FIRMWARE = 1 +USE_PREP_HARDWARE = 1 + +LIBXSVFDIR=.. + +CC = gcc +CFLAGS = -Wall -Wextra -Werror -Os -ggdb -I$(LIBXSVFDIR) -MD +LDFLAGS = -L$(LIBXSVFDIR) +LDLIBS = -lusb -lreadline -lxsvf + +SDCC = sdcc +SDCFLAGS = -mmcs51 --xram-loc 0x2000 + +all: xsvftool-xpcu + +xsvftool-xpcu: filedata.h hardware_cksum_c.inc $(LIBXSVFDIR)/libxsvf.a xsvftool-xpcu.o fx2usb-interface.o + $(CC) $(LDFLAGS) xsvftool-xpcu.o fx2usb-interface.o $(LDLIBS) -o $@ + +hardware.svf erasecpld.svf: hardware.sh hardware.ucf hardware.v hardware_cksum_vl.inc +ifeq ($(USE_PREP_HARDWARE),1) + cp prep_hardware.svf hardware.svf + cp prep_erasecpld.svf erasecpld.svf +else + bash hardware.sh +endif + +firmware.ihx: firmware.c +ifeq ($(USE_PREP_FIRMWARE),1) + cp prep_firmware.ihx firmware.ihx +else + cpp -MD -MF $(basename $<).d -MT $(basename $<).ihx -o /dev/null $< + $(SDCC) $(SDCFLAGS) $< +endif + +firmware.ihx: gpifprog_fixed.c +gpifprog_fixed.c: gpifprog.c + sed 's/ xdata / /g;' < $< > $@ + +$(LIBXSVFDIR)/libxsvf.a: + $(MAKE) -C $(LIBXSVFDIR) libxsvf.a + +hardware_cksum_vl.inc hardware_cksum_c.inc: hardware.sh hardware.ucf hardware.v + echo "'h$$(cat $^ | md5sum | cut -c1-6 | tr a-z A-Z)" > hardware_cksum_vl.inc + echo "\"$$(cat $^ | md5sum | cut -c1-6 | tr a-z A-Z)\"" > hardware_cksum_c.inc + +filedata.h: hardware.svf erasecpld.svf firmware.ihx + { echo "unsigned char hardware_svf[] = { " && perl -pe 's/(.)/ord($$1).","/sge' hardware.svf && echo "};" && \ + echo "unsigned char erasecpld_svf[] = { " && perl -pe 's/(.)/ord($$1).","/sge' erasecpld.svf && echo "};" && \ + echo "unsigned char firmware_ihx[] = { " && perl -pe 's/(.)/ord($$1).","/sge' firmware.ihx && echo "};"; } | \ + perl -pe 's/(.{70}.*?,)/$$1\n/g' > filedata.h_new + mv filedata.h_new filedata.h + +prep: + make clean + sed -i '/^USE_PREP_/ s/1/0/;' Makefile + make hardware.svf firmware.ihx + cp hardware.svf prep_hardware.svf + cp erasecpld.svf prep_erasecpld.svf + cp firmware.ihx prep_firmware.ihx + sed -i '/^USE_PREP_/ s/0/1/;' Makefile + make clean + +clean: + rm -f firmware.asm firmware.lnk firmware.lst firmware.map + rm -f firmware.mem firmware.rel firmware.rst firmware.sym + rm -f hardware.bld hardware_build.xml hardware.chk hardware.cmd + rm -f hardware.log hardware.lso hardware.mfd hardware.ngc hardware.ngd + rm -f hardware_ngdbuild.xrpt hardware.ngr hardware.pad hardware_pad.csv + rm -f hardware.pnx hardware.prj hardware.rpt hardware.svf hardware.syr + rm -f hardware.vm6 hardware.xml hardware.xst hardware_xst.xrpt + rm -f hardware.cxt hardware.gyd hardware.jed _impactbatch.log tmperr.err + rm -f hardware_cksum_vl.inc hardware_cksum_c.inc gpifprog_fixed.c + rm -rf hardware_html xilinx xlnx_auto_0_xdb _xmsgs + rm -f filedata.h firmware.ihx erasecpld.cmd erasecpld.svf + rm -f xsvftool-xpcu core *.o *.d + +-include *.d + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/README b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/README new file mode 100644 index 0000000..451f25a --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/README @@ -0,0 +1,173 @@ + +xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB +================================================================== + +This program can be used to play SVF and XSVF files on the "Xilinx +Platform Cable USB" family of JTAG probes. + +It is based on the libxsvf library: +http://www.clifford.at/libxsvf/ + +This tool replaces the original CPLD firmware from Xilinx when run +on one of the probes. See the notes below on how to restore the Xilinx +firmware on the CPLD. + +The file 'firmware.c' also contains a brief description of the pin mappings +between the the Cypress CY7C68013A-100AIX and the Xilinx XC2C256-7VQ100 +on the probe as used by this software, as well as a brief description of +the USB protocol this software is using. + +With this software it is possible to use JTAG clock speeds up to 24 MHz. +But with the high frequencies there are "gaps" in the transmission resulting +in an effective transfer rate of approx 6 MBit/s. + +This tool contains firmware for the CY7C68013A-100AIX (firmware.c) and for the +XC2C256-7VQ100 (hardware.v) on the probe. Some more exotic tools are needed to +build these. So pre-compiled versions of this firmware images are distributed +along with the xsvftool-xpcu source code. You need to set the USE_PREP_* config +options in the Makefile to '0' if you prefer building the firmware yourself. + + +xsvftool-xpcu vs. Xilinx USB cable driver +----------------------------------------- + +When installed, the Xilinx "USB cable driver" tries to load its own FX2 firmware +to the probes as soon as the probe is connected to the system. Once the Xilinx +firmware is loaded into the probe the probe can't be accessed using xsvftool-xpcu. + +So in order to use xsvftool-xpcu with a probe you need to uninstall or disable +the Xilinx driver. This can usually be done by commenting out the udev rules in +the /etc/udev/rules.d/xusbdfwu.rules file. + +A probe that shows up as 03fd:0008 in the lsusb output is running the Xilinx +firmware. You won't be able to access this probe with xsvftool-xpcu unless you +deactivate the Xilinx driver as explained above, disconnect the probe from the +PC and reconnect it. + +You can always load the Xilinx FX2 firmware in the probe manually without using +the udev rules (see "fxload" examples below). + + +Supported and unsupported hardware +---------------------------------- + +This software has been tested using the following probes: + + - A Xilinx Platform Cable USB + - The on-board probe of a Spartan-6 development board + - A self-built clone of the Xilinx Platform Cable USB + +Per default the software recognizes the following USB vendor IDs and device IDs +(VID:PID) as a supported probe: + + 03fd:0009 Xilinx Platform Cable USB + 03fd:000d Xilinx Platform Cable USB (embedded) + 03fd:000f Xilinx Platform Cable USB (low power) + 04b4:8613 Cypress FX2 without configuration PROM + +Currently there is no support for the "Xilinx Platform Cable USB II" in this +software. + + +Notes on device permissions +--------------------------- + +To run xsvftool-xpcu as unprivileged user you need to set the permissions on +the USB device accordingly. E.g.: + + $ lsusb -d 04b4:8613 + Bus 002 Device 021: ID 04b4:8613 Cypress Semiconductor Corp. CY7C68013 EZ-USB FX2 USB 2.0 Development Kit + + $ sudo chmod 0666 /dev/bus/usb/002/021 + + $ ./xsvftool-xpcu -Pc + Scanning JTAG chain.. + idcode=0x16d4a093, revision=0x1, part=0x6d4a, manufactor=0x049 + Total number of JTAG clock cycles performed: 79 + READY. + +Instead of doing this manually each time the device is connected one might +prefer to create a udev rule that does set the permissions automatically: + + $ sudo vi /etc/udev/rules.d/xsvftool-xpcu.rules + # Allow everyone access to the Xilinx Platform Cable USB (see 'man 7 udev' for details) + ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="03fd", ATTR{idProduct}=="0008", MODE:="0666" + ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="03fd", ATTR{idProduct}=="0009", MODE:="0666" + ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="03fd", ATTR{idProduct}=="000d", MODE:="0666" + ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="03fd", ATTR{idProduct}=="000f", MODE:="0666" + ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="04b4", ATTR{idProduct}=="8613", MODE:="0666" + +NOTE: The line for 03fd:0008 is for the re-enumerated device when the original +Xilinx firmware is used on the probe. It is not used nor needed when using +xsvftool-xpcu exclusively, but isn't harmful either. + + +Restore Xilinx CPLD Firmware with "xsvftool-xpcu" +------------------------------------------------- + +The Xilinx ISE comes with XSVF files for programming the CPLD with the Xilinx +firmware. You can simply use "xsvftool-xpcu" to program the CPLD to the original +firmware: + + $ ./xsvftool-xpcu -P -x /opt/Xilinx/13.1/ISE_DS/ISE/data/xusb_emb.fmwr + +After that you need to disconnect and reconnect the probe before you can load +the Xilinx FX2 firmware and use the probe with impact: + + $ lsusb -d 04b4:8613 + Bus 001 Device 106: ID 04b4:8613 Cypress Semiconductor Corp. CY7C68013 EZ-USB FX2 USB 2.0 Development Kit + + $ fxload -t fx2 -D /dev/bus/usb/001/106 -I /opt/Xilinx/13.1/ISE_DS/ISE/bin/lin/xusb_emb.hex + + ### usually you need to wait a few seconds here for the device to re-enumerate and settle ### + $ lsusb -d 03fd:0008 + Bus 001 Device 108: ID 03fd:0008 Xilinx, Inc. + + ### just scan the JTAG chain to test the probe ### + $ /opt/Xilinx/13.1/ISE_DS/ISE/bin/lin/impact -batch /dev/null + > setMode -bs + > setCable -port usb21 + > identify + > quit + +NOTE: Use the *.hex file from the "ISE/bin/lin/" directory! It is different +from the one in the "ISE/data/" directory and only this one seams to work. + + +Restore Xilinx CPLD Firmware with "impact" +------------------------------------------ + +Up to ISE 11 the Xilinx "impact" program did automatically reprogram the CPLD on +the probe whenever needed. Since ISE 12 this does only work when there is already +an (older) Xilinx firmware on the probe. So in order to reprogram the CPLD on +the probe with "impact" you need ISE 11 installed. Then it is possible to +reprogram the CPLD just by loading the fx2 firmware and running impact on the +probe: + + $ lsusb -d 04b4:8613 + Bus 002 Device 021: ID 04b4:8613 Cypress Semiconductor Corp. CY7C68013 EZ-USB FX2 USB 2.0 Development Kit + + $ fxload -t fx2 -D /dev/bus/usb/002/021 -I /opt/Xilinx/11.3/ISE/bin/lin/xusb_emb.hex + + ### usually you need to wait a few seconds here for the device to re-enumerate and settle ### + $ lsusb -d 03fd:0008 + Bus 002 Device 022: ID 03fd:0008 Xilinx, Inc. + + $ vi impatch_batch.cmd + setMode -bs + setCable -port usb21 + quit + + ### this automatically reprograms the CPLD without doing anything else with the probe ### + $ /opt/Xilinx/11.3/ISE/bin/lin/impact -batch impatch_batch.cmd + +The "reset-probe.sh" shell script in this directory (libxsvf/xsvftool-xpcu.src/) +does this automatically: + + $ bash reset-probe-impact.sh + +WARNING: For some reason this procedure fails when the probe has been used with +xsvftool-xpcu between being connected to USB and loading xusb_emb.hex into the +FX2. So disconnect and reconnect the probe before running the reset-probe.sh +script! + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/firmware.c b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/firmware.c new file mode 100644 index 0000000..587d53e --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/firmware.c @@ -0,0 +1,782 @@ +/* + * xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB + * + * Copyright (C) 2011 RIEGL Research ForschungsGmbH + * Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +/* + * Command Reference (EP1) + * ----------------------- + * + * Request: T<nn> + * Response: OK (T<nn>) + * Configure timing for EP2/JTAG transfers + * + * Request: R + * Response: OK (R) + * Perform internal and CPLD reset + * + * Request: W<n> + * Response: OK (W<n>) + * Wait for the CPLD sync signal to become <n> + * + * Request: C + * Response: <nnnnnn> (C) + * Read out the CPLD verilog checksum + * + * Request: B<n> + * Response: OK (B<n>) + * Set BUFFER_OE to <n> + * + * Request: I<n> + * Response: OK (I<n>) + * Set INIT_INT to <n> + * + * Request: S + * Response: <n><m><k><p><x><y><s> (S) + * Read and reset status bits + * (<n> = FX2-JTAG-ERR, <m> = CPLD-JTAG-ERR, <k> = INIT_B_INT, + * <p> = SLOE_INT, <x> = FX2-JTAG-TDO, <y> = CPLD-JTAG-TDO, <s> = SYNC) + * + * Request: P + * Response: <n><m><k><p><x><y><s> (P) + * Peek status bits without resetting them + * + * Request: J<bindata> + * Response: -- NONE -- + * Execute JTAG transaction (4bit/cycle) + * + * Request: X + * Response: OK (X) + * Exit. Restore FX2 default settings and enter endless loop + * + * + * Target JTAG Programming (EP2) + * ----------------------------- + * + * Raw JTAG transaction codes. + * (4bit/cycle when T=0, 8bit/cycle otherwise) + * + * + * JTAG Transaction codes + * ---------------------- + * + * 0000: + * NOP + * + * 0001 xxxx: + * Set sync signal to 'xxxx' (engine on CPLD only) + * + * 001x: + * reserved for future use + * + * 01xy: + * JTAG transaction without TDO check. TMS=x, TDI=y + * + * 1zxy: + * JTAG transaction with TDO check. TDO=z, TMS=x, TDI=y + * + * + * FX2 <-> CPLD Interface + * ---------------------- + * + * FD[7:0] ---> FD[7:0] + * CTL0 ---> STROBE_FD (neg) + * CTL1 ---> STROBE_SHIFT (neg) + * CTL2 ---> STROBE_PUSH (neg) + * + * PC[7:4] <--- SYNC + * PC3 <--- TDO + * PC2 <--- CKSUM + * PC1 <--- INIT_B_INT + * PC0 <--- ERR + * + * PD4 ---> RESET_SYNC + * PD3 ---> RESET_ERR + * PD2 ---> INIT_INT + * PD1 ---> SHIFT_CKSUM + * PD0 ---> RESET_CKSUM + * + * + * Other FX2 Connections + * --------------------- + * + * PA0 ---> LED_GREEN + * PA1 ---> LED_RED + * PA2 <--- SLOE_INT + * PA3 ---> CPLD_PWR + * PA5 ---> BUFFER_OE + * + * IOE[3] ---> CPLD TCK + * IOE[4] ---> CPLD TMS + * IOE[5] <--- CPLD TDO + * IOE[6] ---> CPLD TDI + * + */ + +// #include "fx2.h" +// #include "fx2regs.h" +// #include "fx2sdly.h" +#include "gpifprog_fixed.c" + +// set to '1' on CPLD JTAG error +BYTE state_err; + +// use quad buffering and larger buffers +#define ALL_RESOURCES_ON_EP2 + +void sleep3us(void) +{ + SYNCDELAY; + SYNCDELAY; + SYNCDELAY; + SYNCDELAY; + SYNCDELAY; + SYNCDELAY; + SYNCDELAY; + SYNCDELAY; +} + +void msleep(WORD ms) +{ + WORD i; + while (ms-- > 0) { + for (i = 0; i < 1000; i += 3) + sleep3us(); + } +} + +void setup(void) +{ + BYTE i; + + /* CPU: 48MHz, don't drive CLKOUT */ + CPUCS = 0x10; + +#ifdef ALL_RESOURCES_ON_EP2 + /* Configure the Endpoints (EP2 => 4x 1kB) */ + EP2CFG = 0xA8; // VALID=1, DIR=0, TYPE=10, SIZE=1, BUF=00 + EP4CFG = 0x00; // VALID=0, DIR=0, TYPE=00, SIZE=0, BUF=00 + EP6CFG = 0x00; // VALID=0, DIR=0, TYPE=00, SIZE=0, BUF=00 + EP8CFG = 0x00; // VALID=0, DIR=0, TYPE=00, SIZE=0, BUF=00 +#else + /* Configure the Endpoints (default config) */ + EP2CFG = 0xA2; // VALID=1, DIR=0, TYPE=10, SIZE=0, BUF=10 + EP4CFG = 0xA0; // VALID=1, DIR=0, TYPE=10, SIZE=0, BUF=00 + EP6CFG = 0xA2; // VALID=1, DIR=1, TYPE=10, SIZE=0, BUF=10 + EP8CFG = 0xA0; // VALID=1, DIR=1, TYPE=10, SIZE=0, BUF=00 +#endif + + /* USB FIFO */ + FIFORESET = 0x80; + SYNCDELAY; + FIFORESET = 2; + SYNCDELAY; + FIFORESET = 4; + SYNCDELAY; + FIFORESET = 6; + SYNCDELAY; + FIFORESET = 8; + SYNCDELAY; + FIFORESET = 0; + SYNCDELAY; + + /* Set WORDWIDE=0 for all FIFOs */ + EP2FIFOCFG &= ~bmWORDWIDE; + SYNCDELAY; + EP4FIFOCFG &= ~bmWORDWIDE; + SYNCDELAY; + EP6FIFOCFG &= ~bmWORDWIDE; + SYNCDELAY; + EP8FIFOCFG &= ~bmWORDWIDE; + SYNCDELAY; + + /* Initialize GPIF Subsystem */ + GpifInit(); + + /* Misc signals on port A */ + PORTACFG = 0; + OEA = bmBIT0 | bmBIT1 | bmBIT3 | bmBIT5; + IOA = 0; + + /* FX2 <-> CPLD signals on port C */ + PORTCCFG = 0; + OEC = 0; + IOC = 0; + + /* FX2 <-> CPLD signals on port D */ + OED = bmBIT0 | bmBIT1 | bmBIT2 | bmBIT3 | bmBIT4; + IOD = 0; + + /* TURN ON CPLD VCC */ + PA3 = 1; + msleep(100); + + /* XC2S256 JTAG on port E */ + OEE = bmBIT3|bmBIT4|bmBIT6; + IOE = bmBIT3|bmBIT4|bmBIT6; + + /* Set TAP to logic reset state */ + for (i=0; i<16; i++) { + // TMS is high - just generate a few TCK pulses + sleep3us(); + IOE &= ~bmBIT3; + sleep3us(); + IOE |= bmBIT3; + } + + /* All set up: Let the host find out about the new EP config */ +#if 0 + USBCS |= bmDISCON; + msleep(10); + USBCS &= ~bmDISCON; +#endif +} + +void unsetup(void) +{ + WORD i, j; + + /* 1st TURN OFF CPLD VCC */ + PA3 = 0; + msleep(100); + + /* + * Restore default configuration as good as possible + * + * The idea is that one could load the xilinx firmware without + * the need to reconnect. Unfortunately it doesn't work. Something + * important is still different between the FX2 after reset and + * after running this unsetup() function. + */ + + GPIFABORT = 0xFF; + SYNCDELAY; + + CPUCS = 0x02; + SYNCDELAY; + IFCONFIG = 0x80; + SYNCDELAY; + + EP2CFG = 0xA2; + SYNCDELAY; + EP4CFG = 0xA0; + SYNCDELAY; + EP6CFG = 0xA2; + SYNCDELAY; + EP8CFG = 0xA0; + SYNCDELAY; + + EP2FIFOCFG = 0x05; + SYNCDELAY; + EP4FIFOCFG = 0x05; + SYNCDELAY; + EP6FIFOCFG = 0x05; + SYNCDELAY; + EP8FIFOCFG = 0x05; + SYNCDELAY; + + FIFORESET = 0x80; + SYNCDELAY; + FIFORESET = 2; + SYNCDELAY; + FIFORESET = 4; + SYNCDELAY; + FIFORESET = 6; + SYNCDELAY; + FIFORESET = 8; + SYNCDELAY; + FIFORESET = 0; + SYNCDELAY; + + IOA = 0; + IOC = 0; + IOD = 0; + IOE = 0; + + OEA = 0; + OEC = 0; + OED = 0; + OEE = 0; + + PORTACFG = 0; + PORTCCFG = 0; + + OEA = 1; + for (i=0; i<3; i++) { + PA0 = 1; + for (j=0; j<3000; j++) sleep3us(); + PA1 = 0; + for (j=0; j<3000; j++) sleep3us(); + } + OEA = 0; + + // just ack everything and wait + while (1) { + if((EP1OUTCS & bmBIT1) == 0) { + EP1OUTBC = 0xff; SYNCDELAY; + } + if((EP2CS & bmBIT2) == 0) { + EP2BCL = 0xff; SYNCDELAY; + } + } +} + +BYTE nibble2hex(BYTE v) +{ + return "0123456789ABCDEF"[v&0x0f]; +} + +BYTE hex2nibble(BYTE v) +{ + if (v >= '0' && v <= '9') + return v - '0'; + if (v >= 'a' && v <= 'f') + return 0x0A + v - 'a'; + if (v >= 'A' && v <= 'F') + return 0x0A + v - 'A'; + return 0; +} + +xdata at (0xE400 + 64) volatile BYTE GPIF_WAVE2_LEN0; +xdata at (0xE400 + 66) volatile BYTE GPIF_WAVE2_LEN2; + +void proc_command_t(BYTE t) +{ + if (t == 0) { + GPIFWFSELECT = 0x4E; SYNCDELAY; + } else { + GPIFWFSELECT = 0x4A; SYNCDELAY; + GPIF_WAVE2_LEN0 = t; SYNCDELAY; + GPIF_WAVE2_LEN2 = t; SYNCDELAY; + } + + EP1INBUF[0] = 'O'; SYNCDELAY; + EP1INBUF[1] = 'K'; SYNCDELAY; + EP1INBUF[2] = ' '; SYNCDELAY; + EP1INBUF[3] = '('; SYNCDELAY; + EP1INBUF[4] = 'T'; SYNCDELAY; + EP1INBUF[5] = nibble2hex((t >> 4) & 0x0f); SYNCDELAY; + EP1INBUF[6] = nibble2hex((t >> 0) & 0x0f); SYNCDELAY; + EP1INBUF[7] = ')'; SYNCDELAY; + EP1INBC = 8; SYNCDELAY; +} + +void proc_command_r(void) +{ + BYTE i, *p = "OK (R)"; + + /* Reset TAP to logic reset state */ + IOE = bmBIT3|bmBIT4|bmBIT6; + for (i=0; i<16; i++) { + // TMS is high - just generate a few TCK pulses + sleep3us(); + IOE &= ~bmBIT3; + sleep3us(); + IOE |= bmBIT3; + } + + /* Reset speed to max. */ + GPIFWFSELECT = 0x4E; SYNCDELAY; + + /* Reset JTAG error state */ + state_err = 0; + + /* Reset LEDs and BUFFER_OE */ + PA0 = PA1 = PA5 = 0; + + /* Assert CPLD reset pins */ + IOD = bmBIT0 | bmBIT3 | bmBIT4; + SYNCDELAY; + IOD |= bmBIT1; + SYNCDELAY; + IOD = 0; + + /* Send response */ + for (i = 0; p[i]; i++) { + EP1INBUF[i] = p[i]; SYNCDELAY; + } + EP1INBC = i; SYNCDELAY; +} + +void proc_bulkdata(void); + +void proc_command_w_ok(BYTE v) +{ + EP1INBUF[0] = 'O'; SYNCDELAY; + EP1INBUF[1] = 'K'; SYNCDELAY; + EP1INBUF[2] = ' '; SYNCDELAY; + EP1INBUF[3] = '('; SYNCDELAY; + EP1INBUF[4] = 'W'; SYNCDELAY; + EP1INBUF[5] = nibble2hex(v); SYNCDELAY; + EP1INBUF[6] = ')'; SYNCDELAY; + EP1INBC = 7; SYNCDELAY; +} + +void proc_command_w_timeout(BYTE v) +{ + EP1INBUF[0] = 'T'; SYNCDELAY; + EP1INBUF[1] = 'I'; SYNCDELAY; + EP1INBUF[2] = 'M'; SYNCDELAY; + EP1INBUF[3] = 'E'; SYNCDELAY; + EP1INBUF[4] = 'O'; SYNCDELAY; + EP1INBUF[5] = 'U'; SYNCDELAY; + EP1INBUF[6] = 'T'; SYNCDELAY; + EP1INBUF[7] = '!'; SYNCDELAY; + EP1INBUF[8] = ' '; SYNCDELAY; + EP1INBUF[9] = 'S'; SYNCDELAY; + EP1INBUF[10] = '='; SYNCDELAY; + EP1INBUF[11] = nibble2hex(IOC >> 4); SYNCDELAY; + EP1INBUF[12] = ' '; SYNCDELAY; + EP1INBUF[13] = '('; SYNCDELAY; + EP1INBUF[14] = 'W'; SYNCDELAY; + EP1INBUF[15] = nibble2hex(v); SYNCDELAY; + EP1INBUF[16] = ')'; SYNCDELAY; + EP1INBC = 17; SYNCDELAY; +} + +void proc_command_w(BYTE v) +{ + WORD i, j; + + for (i = 0; i < 1000; i++) + for (j = 0; j < 1000; j++) + { + /* check for wait condition */ + if ((IOC >> 4) == v) { + proc_command_w_ok(v); + return; + } + + /* check for data on EP2 */ + if((EP2CS & bmBIT2) == 0) { + PA0 = 1; + proc_bulkdata(); + PA0 = 0; + } + } + + proc_command_w_timeout(v); +} + +void proc_command_c(void) +{ + BYTE i, j, buf; + + /* Reset chksum register */ + PD0 = 1; + PD1 = 0; + SYNCDELAY; + PD1 = 1; + SYNCDELAY; + PD0 = 0; + PD1 = 0; + + for (i = 0; i < 6; i++) { + buf = 0; + for (j = 0; j < 4; j++) { + buf = buf << 1 | PC2; + SYNCDELAY; + PD1 = 1; + SYNCDELAY; + PD1 = 0; + } + EP1INBUF[i] = nibble2hex(buf); SYNCDELAY; + } + + EP1INBUF[6] = ' '; SYNCDELAY; + EP1INBUF[7] = '('; SYNCDELAY; + EP1INBUF[8] = 'C'; SYNCDELAY; + EP1INBUF[9] = ')'; SYNCDELAY; + EP1INBC = 10; SYNCDELAY; +} + +void proc_command_b(BYTE v) +{ + PA5 = v; + + EP1INBUF[0] = 'O'; SYNCDELAY; + EP1INBUF[1] = 'K'; SYNCDELAY; + EP1INBUF[2] = ' '; SYNCDELAY; + EP1INBUF[3] = '('; SYNCDELAY; + EP1INBUF[4] = 'B'; SYNCDELAY; + EP1INBUF[5] = v ? '1' : '0'; SYNCDELAY; + EP1INBUF[6] = ')'; SYNCDELAY; + EP1INBC = 7; SYNCDELAY; +} + +void proc_command_i(BYTE v) +{ + PD2 = v; + + EP1INBUF[0] = 'O'; SYNCDELAY; + EP1INBUF[1] = 'K'; SYNCDELAY; + EP1INBUF[2] = ' '; SYNCDELAY; + EP1INBUF[3] = '('; SYNCDELAY; + EP1INBUF[4] = 'I'; SYNCDELAY; + EP1INBUF[5] = v ? '1' : '0'; SYNCDELAY; + EP1INBUF[6] = ')'; SYNCDELAY; + EP1INBC = 7; SYNCDELAY; +} + +void proc_command_s(void) +{ + EP1INBUF[0] = PC0 ? '1' : '0'; SYNCDELAY; + EP1INBUF[1] = state_err ? '1' : '0'; SYNCDELAY; + EP1INBUF[2] = PC1 ? '1' : '0'; SYNCDELAY; + EP1INBUF[3] = PA2 ? '1' : '0'; SYNCDELAY; + EP1INBUF[4] = PC3 ? '1' : '0'; SYNCDELAY; + EP1INBUF[5] = (IOE & bmBIT5) ? '1' : '0'; SYNCDELAY; + EP1INBUF[6] = nibble2hex(IOC >> 4); SYNCDELAY; + EP1INBUF[7] = ' '; SYNCDELAY; + EP1INBUF[8] = '('; SYNCDELAY; + EP1INBUF[9] = 'S'; SYNCDELAY; + EP1INBUF[10] = ')'; SYNCDELAY; + EP1INBC = 11; SYNCDELAY; + + // reset error state + state_err = 0; + IOD = bmBIT3; + SYNCDELAY; + SYNCDELAY; + IOD &= ~bmBIT3; +} + +void proc_command_p(void) +{ + EP1INBUF[0] = PC0 ? '1' : '0'; SYNCDELAY; + EP1INBUF[1] = state_err ? '1' : '0'; SYNCDELAY; + EP1INBUF[2] = PC1 ? '1' : '0'; SYNCDELAY; + EP1INBUF[3] = PA2 ? '1' : '0'; SYNCDELAY; + EP1INBUF[4] = PC3 ? '1' : '0'; SYNCDELAY; + EP1INBUF[5] = (IOE & bmBIT5) ? '1' : '0'; SYNCDELAY; + EP1INBUF[6] = nibble2hex(IOC >> 4); SYNCDELAY; + EP1INBUF[7] = ' '; SYNCDELAY; + EP1INBUF[8] = '('; SYNCDELAY; + EP1INBUF[9] = 'P'; SYNCDELAY; + EP1INBUF[10] = ')'; SYNCDELAY; + EP1INBC = 11; SYNCDELAY; +} + +BYTE proc_command_j_exec_skip_next; +void proc_command_j_exec(BYTE cmd) +{ + if (proc_command_j_exec_skip_next) { + proc_command_j_exec_skip_next = 0; + return; + } + if (cmd == 0x00) + return; + if (cmd == 0x01) { + // 0001 xxxx: Set sync signal to 'xxxx' (engine on CPLD only) + proc_command_j_exec_skip_next = 1; + return; + } + if ((cmd & 0x0c) == 0x04) + { + // 01xy: JTAG transaction without TDO check. TMS=x, TDI=y + + /* set tms line */ + if (cmd & 0x02) + IOE |= bmBIT4; + else + IOE &= ~bmBIT4; + + /* set tdi line */ + if (cmd & 0x01) + IOE |= bmBIT6; + else + IOE &= ~bmBIT6; + + /* generate tck pulse */ + SYNCDELAY; + IOE &= ~bmBIT3; + sleep3us(); + IOE |= bmBIT3; + SYNCDELAY; + + return; + } + if ((cmd & 0x08) == 0x08) + { + // 1zxy: JTAG transaction with TDO check. TDO=z, TMS=x, TDI=y + + /* set tms line */ + if (cmd & 0x02) + IOE |= bmBIT4; + else + IOE &= ~bmBIT4; + + /* set tdi line */ + if (cmd & 0x01) + IOE |= bmBIT6; + else + IOE &= ~bmBIT6; + + /* generate tck pulse */ + SYNCDELAY; + IOE &= ~bmBIT3; + sleep3us(); + IOE |= bmBIT3; + SYNCDELAY; + + /* perform tdo check */ + if (((cmd & 0x04) == 0) != ((IOE & bmBIT5) == 0)) + state_err = 1; + + return; + } +} + +void proc_command_j(BYTE len) +{ + BYTE i; + proc_command_j_exec_skip_next = 0; + for (i = 1; i < len; i++) { + BYTE cmd = EP1OUTBUF[i]; + proc_command_j_exec(cmd & 0x0f); + proc_command_j_exec(cmd >> 4); + } +} + +void proc_command_x(void) +{ + EP1INBUF[0] = 'O'; SYNCDELAY; + EP1INBUF[1] = 'K'; SYNCDELAY; + EP1INBUF[2] = ' '; SYNCDELAY; + EP1INBUF[3] = '('; SYNCDELAY; + EP1INBUF[4] = 'X'; SYNCDELAY; + EP1INBUF[5] = ')'; SYNCDELAY; + EP1INBC = 6; SYNCDELAY; + + /* accept new data on EP1OUT */ + EP1OUTBC = 0xff; SYNCDELAY; + + unsetup(); +} + +void proc_command(void) +{ + BYTE len, cmd; + + /* process command(s) */ + len = EP1OUTBC; + cmd = EP1OUTBUF[0]; + + if (cmd == 'T' && len == 3) + proc_command_t((hex2nibble(EP1OUTBUF[1]) << 4) | hex2nibble(EP1OUTBUF[2])); + else if (cmd == 'R' && len == 1) + proc_command_r(); + else if (cmd == 'W' && len == 2) + proc_command_w(hex2nibble(EP1OUTBUF[1])); + else if (cmd == 'C' && len == 1) + proc_command_c(); + else if (cmd == 'B' && len == 2) + proc_command_b(EP1OUTBUF[1] == '1'); + else if (cmd == 'I' && len == 2) + proc_command_i(EP1OUTBUF[1] == '1'); + else if (cmd == 'S' && len == 1) + proc_command_s(); + else if (cmd == 'P' && len == 1) + proc_command_p(); + else if (cmd == 'J') + proc_command_j(len); + else if (cmd == 'X') + proc_command_x(); + else + { + /* send error response */ + EP1INBUF[0] = 'E'; SYNCDELAY; + EP1INBUF[1] = 'R'; SYNCDELAY; + EP1INBUF[2] = 'R'; SYNCDELAY; + EP1INBUF[3] = 'O'; SYNCDELAY; + EP1INBUF[4] = 'R'; SYNCDELAY; + EP1INBUF[5] = '!'; SYNCDELAY; + EP1INBC = 6; SYNCDELAY; + } + + /* accept new data on EP1OUT */ + EP1OUTBC = 0xff; SYNCDELAY; +} + +void proc_bulkdata(void) +{ + WORD len; + + len = (EP2BCH << 8) | EP2BCL; + if (len == 0) + { + /* ignore this and accept data on EP2 */ + EP2BCL = 0xff; SYNCDELAY; + } +#if 0 + else if (len == 1) + { + while ((GPIFTRIG & 0x80) == 0) { /* GPIF is busy */ } + + /* transfer single byte */ + XGPIFSGLDATH = 0; SYNCDELAY; + XGPIFSGLDATLX = EP2FIFOBUF[0]; SYNCDELAY; + + /* accept new data on EP2 */ + EP2BCL = 0xff; SYNCDELAY; + } +#endif + else + { + while ((GPIFTRIG & 0x80) == 0) { /* GPIF is busy */ } + + /* pass pkt to GPIF master */ + EP2GPIFTCH = EP2BCH; + EP2GPIFTCL = EP2BCL; + EP2BCL = 0x00; + EP2GPIFTRIG = 0xff; + } +} + +void main(void) +{ + state_err = 0; + + setup(); + + /* accept data on EP2 */ + EP2BCL = 0xff; SYNCDELAY; // 1st buffer + EP2BCL = 0xff; SYNCDELAY; // 2nd buffer +#ifdef ALL_RESOURCES_ON_EP2 + EP2BCL = 0xff; SYNCDELAY; // 3rd buffer + EP2BCL = 0xff; SYNCDELAY; // 4th buffer +#endif + + while (1) + { + /* check for data on EP1 */ + if((EP1OUTCS & bmBIT1) == 0) { + PA1 = 1; + proc_command(); + PA1 = 0; + } + + /* check for data on EP2 */ + if((EP2CS & bmBIT2) == 0) { + PA0 = 1; + proc_bulkdata(); + PA0 = 0; + } + } +} + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/fx2.h b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/fx2.h new file mode 100644 index 0000000..79db73b --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/fx2.h @@ -0,0 +1,332 @@ +// **** Auto-generated using genfx2hrd.sh from CY3684 EZ USB FX2LP Development Kit headers +//----------------------------------------------------------------------------- +// File: FX2.h +// Contents: EZ-USB FX2/FX2LP/FX1 constants, macros, datatypes, globals, and library +// function prototypes. +// +// $Archive: /USB/Target/Inc/Fx2.h $ +// $Date: 3/23/05 2:30p $ +// $Revision: 16 $ +// +// Copyright (c) 2005 Cypress Semiconductor, All rights reserved +//----------------------------------------------------------------------------- +#ifndef FX2_H //Header sentry +#define FX2_H + +#define INTERNAL_DSCR_ADDR 0x0080 // Relocate Descriptors to 0x80 +#define bmSTRETCH 0x07 +#define FW_STRETCH_VALUE 0x0 // Set stretch to 0 in frameworks + +//----------------------------------------------------------------------------- +// Constants +//----------------------------------------------------------------------------- +#define TRUE 1 +#define FALSE 0 + +#define bmBIT0 0x01 +#define bmBIT1 0x02 +#define bmBIT2 0x04 +#define bmBIT3 0x08 +#define bmBIT4 0x10 +#define bmBIT5 0x20 +#define bmBIT6 0x40 +#define bmBIT7 0x80 + +#define DEVICE_DSCR 0x01 // Descriptor type: Device +#define CONFIG_DSCR 0x02 // Descriptor type: Configuration +#define STRING_DSCR 0x03 // Descriptor type: String +#define INTRFC_DSCR 0x04 // Descriptor type: Interface +#define ENDPNT_DSCR 0x05 // Descriptor type: End Point +#define DEVQUAL_DSCR 0x06 // Descriptor type: Device Qualifier +#define OTHERSPEED_DSCR 0x07 // Descriptor type: Other Speed Configuration + +#define bmBUSPWR bmBIT7 // Config. attribute: Bus powered +#define bmSELFPWR bmBIT6 // Config. attribute: Self powered +#define bmRWU bmBIT5 // Config. attribute: Remote Wakeup + +#define bmEPOUT bmBIT7 +#define bmEPIN 0x00 + +#define EP_CONTROL 0x00 // End Point type: Control +#define EP_ISO 0x01 // End Point type: Isochronous +#define EP_BULK 0x02 // End Point type: Bulk +#define EP_INT 0x03 // End Point type: Interrupt + +#define SUD_SIZE 8 // Setup data packet size + +////////////////////////////////////////////////////////////////////////////// +//Added for HID + +#define SETUP_MASK 0x60 //Used to mask off request type +#define SETUP_STANDARD_REQUEST 0 //Standard Request +#define SETUP_CLASS_REQUEST 0x20 //Class Request +#define SETUP_VENDOR_REQUEST 0x40 //Vendor Request +#define SETUP_RESERVED_REQUEST 0x60 //Reserved or illegal request + +////////////////////////////////////////////////////////////////////////////// + + +#define SC_GET_STATUS 0x00 // Setup command: Get Status +#define SC_CLEAR_FEATURE 0x01 // Setup command: Clear Feature +#define SC_RESERVED 0x02 // Setup command: Reserved +#define SC_SET_FEATURE 0x03 // Setup command: Set Feature +#define SC_SET_ADDRESS 0x05 // Setup command: Set Address +#define SC_GET_DESCRIPTOR 0x06 // Setup command: Get Descriptor +#define SC_SET_DESCRIPTOR 0x07 // Setup command: Set Descriptor +#define SC_GET_CONFIGURATION 0x08 // Setup command: Get Configuration +#define SC_SET_CONFIGURATION 0x09 // Setup command: Set Configuration +#define SC_GET_INTERFACE 0x0a // Setup command: Get Interface +#define SC_SET_INTERFACE 0x0b // Setup command: Set Interface +#define SC_SYNC_FRAME 0x0c // Setup command: Sync Frame +#define SC_ANCHOR_LOAD 0xa0 // Setup command: Anchor load + +#define GD_DEVICE 0x01 // Get descriptor: Device +#define GD_CONFIGURATION 0x02 // Get descriptor: Configuration +#define GD_STRING 0x03 // Get descriptor: String +#define GD_INTERFACE 0x04 // Get descriptor: Interface +#define GD_ENDPOINT 0x05 // Get descriptor: Endpoint +#define GD_DEVICE_QUALIFIER 0x06 // Get descriptor: Device Qualifier +#define GD_OTHER_SPEED_CONFIGURATION 0x07 // Get descriptor: Other Configuration +#define GD_INTERFACE_POWER 0x08 // Get descriptor: Interface Power +#define GD_HID 0x21 // Get descriptor: HID +#define GD_REPORT 0x22 // Get descriptor: Report + +#define GS_DEVICE 0x80 // Get Status: Device +#define GS_INTERFACE 0x81 // Get Status: Interface +#define GS_ENDPOINT 0x82 // Get Status: End Point + +#define FT_DEVICE 0x00 // Feature: Device +#define FT_ENDPOINT 0x02 // Feature: End Point + +#define I2C_IDLE 0 // I2C Status: Idle mode +#define I2C_SENDING 1 // I2C Status: I2C is sending data +#define I2C_RECEIVING 2 // I2C Status: I2C is receiving data +#define I2C_PRIME 3 // I2C Status: I2C is receiving the first byte of a string +#define I2C_STOP 5 // I2C Status: I2C waiting for stop completion +#define I2C_BERROR 6 // I2C Status: I2C error; Bit Error +#define I2C_NACK 7 // I2C Status: I2C error; No Acknowledge +#define I2C_OK 8 // I2C positive return code +#define I2C_WAITSTOP 9 // I2C Status: Wait for STOP complete + +/*----------------------------------------------------------------------------- + Macros +-----------------------------------------------------------------------------*/ + +#define MSB(word) (BYTE)(((WORD)(word) >> 8) & 0xff) +#define LSB(word) (BYTE)((WORD)(word) & 0xff) + +#define SWAP_ENDIAN(word) ((BYTE*)&word)[0] ^= ((BYTE*)&word)[1];\ + ((BYTE*)&word)[1] ^= ((BYTE*)&word)[0];\ + ((BYTE*)&word)[0] ^= ((BYTE*)&word)[1] + +#define EZUSB_IRQ_ENABLE() EUSB = 1 +#define EZUSB_IRQ_DISABLE() EUSB = 0 +#define EZUSB_IRQ_CLEAR() EXIF &= ~0x10 // IE2_ + +#define EZUSB_STALL_EP0() EP0CS |= bmEPSTALL + +// WRITEDELAY() has been replaced by SYNCDELAY; macro in fx2sdly.h +// ...it is here for backwards compatibility... + +// the WRITEDELAY macro compiles to the time equivalent of 3 NOPs. +// It is used in the frameworks to allow for write recovery time +// requirements of certain registers. This is only necessary for +// EZ-USB FX parts. See the EZ-USB FX TRM for +// more information on write recovery time issues. +#define WRITEDELAY() {char writedelaydummy = 0;} +// if this firmware will never run on an EZ-USB FX part replace +// with: +// #define WRITEDELAY() + +// macro to reset and endpoint data toggle +#define EZUSB_RESET_DATA_TOGGLE(ep) TOGCTL = (((ep & 0x80) >> 3) + (ep & 0x0F));\ + TOGCTL |= bmRESETTOGGLE + + +#define EZUSB_ENABLE_RSMIRQ() (EICON |= 0x20) // Enable Resume Interrupt (EPFI_) +#define EZUSB_DISABLE_RSMIRQ() (EICON &= ~0x20) // Disable Resume Interrupt (EPFI_) +#define EZUSB_CLEAR_RSMIRQ() (EICON &= ~0x10) // Clear Resume Interrupt Flag (PFI_) + +#define EZUSB_GETI2CSTATUS() (I2CPckt.status) +#define EZUSB_CLEARI2CSTATUS() if((I2CPckt.status == I2C_BERROR) || (I2CPckt.status == I2C_NACK))\ + I2CPckt.status = I2C_IDLE; + +#define EZUSB_ENABLEBP() (BREAKPT |= bmBPEN) +#define EZUSB_DISABLEBP() (BREAKPT &= ~bmBPEN) +#define EZUSB_CLEARBP() (BREAKPT |= bmBREAK) +#define EZUSB_BP(addr) BPADDRH = (BYTE)(((WORD)addr >> 8) & 0xff);\ + BPADDRL = (BYTE)addr + +#define EZUSB_EXTWAKEUP() (((WAKEUPCS & bmWU2) && (WAKEUPCS & bmWU2EN)) ||\ + ((WAKEUPCS & bmWU) && (WAKEUPCS & bmWUEN))) + +#define EZUSB_HIGHSPEED() (USBCS & bmHSM) + +//----------------------------------------------------------------------------- +// Datatypes +//----------------------------------------------------------------------------- +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef bit BOOL; + +#define INT0_VECT 0 +#define TMR0_VECT 1 +#define INT1_VECT 2 +#define TMR1_VECT 3 +#define COM0_VECT 4 +#define TMR2_VECT 5 +#define WKUP_VECT 6 +#define COM1_VECT 7 +#define USB_VECT 8 +#define I2C_VECT 9 +#define INT4_VECT 10 +#define INT5_VECT 11 +#define INT6_VECT 12 + + +typedef struct +{ + BYTE length; + BYTE type; +}DSCR; + +typedef struct // Device Descriptor +{ + BYTE length; // Descriptor length ( = sizeof(DEVICEDSCR) ) + BYTE type; // Decriptor type (Device = 1) + BYTE spec_ver_minor; // Specification Version (BCD) minor + BYTE spec_ver_major; // Specification Version (BCD) major + BYTE dev_class; // Device class + BYTE sub_class; // Device sub-class + BYTE protocol; // Device sub-sub-class + BYTE max_packet; // Maximum packet size + WORD vendor_id; // Vendor ID + WORD product_id; // Product ID + WORD version_id; // Product version ID + BYTE mfg_str; // Manufacturer string index + BYTE prod_str; // Product string index + BYTE serialnum_str; // Serial number string index + BYTE configs; // Number of configurations +}DEVICEDSCR; + +typedef struct // Device Qualifier Descriptor +{ + BYTE length; // Descriptor length ( = sizeof(DEVICEQUALDSCR) ) + BYTE type; // Decriptor type (Device Qualifier = 6) + BYTE spec_ver_minor; // Specification Version (BCD) minor + BYTE spec_ver_major; // Specification Version (BCD) major + BYTE dev_class; // Device class + BYTE sub_class; // Device sub-class + BYTE protocol; // Device sub-sub-class + BYTE max_packet; // Maximum packet size + BYTE configs; // Number of configurations + BYTE reserved0; +}DEVICEQUALDSCR; + +typedef struct +{ + BYTE length; // Configuration length ( = sizeof(CONFIGDSCR) ) + BYTE type; // Descriptor type (Configuration = 2) + WORD config_len; // Configuration + End Points length + BYTE interfaces; // Number of interfaces + BYTE index; // Configuration number + BYTE config_str; // Configuration string + BYTE attrib; // Attributes (b7 - buspwr, b6 - selfpwr, b5 - rwu + BYTE power; // Power requirement (div 2 ma) +}CONFIGDSCR; + +typedef struct +{ + BYTE length; // Interface descriptor length ( - sizeof(INTRFCDSCR) ) + BYTE type; // Descriptor type (Interface = 4) + BYTE index; // Zero-based index of this interface + BYTE alt_setting; // Alternate setting + BYTE ep_cnt; // Number of end points + BYTE class; // Interface class + BYTE sub_class; // Interface sub class + BYTE protocol; // Interface sub sub class + BYTE interface_str; // Interface descriptor string index +}INTRFCDSCR; + +typedef struct +{ + BYTE length; // End point descriptor length ( = sizeof(ENDPNTDSCR) ) + BYTE type; // Descriptor type (End point = 5) + BYTE addr; // End point address + BYTE ep_type; // End point type + BYTE mp_L; // Maximum packet size + BYTE mp_H; + BYTE interval; // Interrupt polling interval +}ENDPNTDSCR; + +typedef struct +{ + BYTE length; // String descriptor length + BYTE type; // Descriptor type +}STRINGDSCR; + +typedef struct +{ + BYTE cntrl; // End point control register + BYTE bytes; // End point buffer byte count +}EPIOC; + +typedef struct +{ + BYTE length; + BYTE *dat; + BYTE count; + BYTE status; +}I2CPCKT; + +//----------------------------------------------------------------------------- +// Globals +//----------------------------------------------------------------------------- +extern code BYTE USB_AutoVector; + +extern WORD pDeviceDscr; +extern WORD pDeviceQualDscr; +extern WORD pHighSpeedConfigDscr; +extern WORD pFullSpeedConfigDscr; +extern WORD pConfigDscr; +extern WORD pOtherConfigDscr; +extern WORD pStringDscr; + +extern code DEVICEDSCR DeviceDscr; +extern code DEVICEQUALDSCR DeviceQualDscr; +extern code CONFIGDSCR HighSpeedConfigDscr; +extern code CONFIGDSCR FullSpeedConfigDscr; +extern code STRINGDSCR StringDscr; +extern code DSCR UserDscr; + +extern I2CPCKT I2CPckt; + +//----------------------------------------------------------------------------- +// Function Prototypes +//----------------------------------------------------------------------------- + +extern void EZUSB_Renum(void); +extern void EZUSB_Discon(BOOL renum); + +extern void EZUSB_Susp(void); +extern void EZUSB_Resume(void); + +extern void EZUSB_Delay1ms(void); +extern void EZUSB_Delay(WORD ms); + +extern CONFIGDSCR xdata* EZUSB_GetConfigDscr(BYTE ConfigIdx); +extern INTRFCDSCR xdata* EZUSB_GetIntrfcDscr(BYTE ConfigIdx, BYTE IntrfcIdx, BYTE AltSetting); +extern STRINGDSCR xdata* EZUSB_GetStringDscr(BYTE StrIdx); +extern DSCR xdata* EZUSB_GetDscr(BYTE index, DSCR* dscr, BYTE type); + +extern void EZUSB_InitI2C(void); +extern BOOL EZUSB_WriteI2C_(BYTE addr, BYTE length, BYTE xdata *dat); +extern BOOL EZUSB_ReadI2C_(BYTE addr, BYTE length, BYTE xdata *dat); +extern BOOL EZUSB_WriteI2C(BYTE addr, BYTE length, BYTE xdata *dat); +extern BOOL EZUSB_ReadI2C(BYTE addr, BYTE length, BYTE xdata *dat); +extern void EZUSB_WaitForEEPROMWrite(BYTE addr); + +extern void modify_endpoint_stall(BYTE epid, BYTE stall); + +#endif // FX2_H diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/fx2regs.h b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/fx2regs.h new file mode 100644 index 0000000..f0d7f5b --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/fx2regs.h @@ -0,0 +1,687 @@ +// **** Auto-generated using genfx2hrd.sh from CY3684 EZ USB FX2LP Development Kit headers +//----------------------------------------------------------------------------- +// File: FX2regs.h +// Contents: EZ-USB FX2/FX2LP/FX1 register declarations and bit mask definitions. +// +// $Archive: /USB/Target/Inc/fx2regs.h $ +// $Date: 4/13/05 4:29p $ +// $Revision: 42 $ +// +// +// Copyright (c) 2005 Cypress Semiconductor, All rights reserved +//----------------------------------------------------------------------------- + +#ifndef FX2REGS_H /* Header Sentry */ +#define FX2REGS_H + +//----------------------------------------------------------------------------- +// FX2/FX2LP/FX1 Related Register Assignments +//----------------------------------------------------------------------------- + +// The Ez-USB FX2/FX2LP/FX1 registers are defined here. We use fx2regs.h for register +// address allocation by using "#define ALLOCATE_EXTERN". +// When using "#define ALLOCATE_EXTERN", you get (for instance): +// xdata volatile BYTE OUT7BUF[64] _at_ 0x7B40; +// Such lines are created from FX2.h by using the preprocessor. +// Incidently, these lines will not generate any space in the resulting hex +// file; they just bind the symbols to the addresses for compilation. +// You just need to put "#define ALLOCATE_EXTERN" in your main program file; +// i.e. fw.c or a stand-alone C source file. +// Without "#define ALLOCATE_EXTERN", you just get the external reference: +// extern xdata volatile BYTE OUT7BUF[64] ;// 0x7B40; +// This uses the concatenation operator "##" to insert a comment "//" +// to cut off the end of the line, "_at_ 0x7B40;", which is not wanted. + +#ifdef ALLOCATE_EXTERN +#define EXTERN +#define _AT_ _at_ +#else +#define EXTERN extern +#define _AT_ ;/ ## / +#endif + +xdata at 0xE400 volatile BYTE GPIF_WAVE_DATA; +xdata at 0xE480 volatile BYTE RES_WAVEDATA_END; + +// General Configuration + +xdata at 0xE600 volatile BYTE CPUCS; // Control & Status +xdata at 0xE601 volatile BYTE IFCONFIG; // Interface Configuration +xdata at 0xE602 volatile BYTE PINFLAGSAB; // FIFO FLAGA and FLAGB Assignments +xdata at 0xE603 volatile BYTE PINFLAGSCD; // FIFO FLAGC and FLAGD Assignments +xdata at 0xE604 volatile BYTE FIFORESET; // Restore FIFOS to default state +xdata at 0xE605 volatile BYTE BREAKPT; // Breakpoint +xdata at 0xE606 volatile BYTE BPADDRH; // Breakpoint Address H +xdata at 0xE607 volatile BYTE BPADDRL; // Breakpoint Address L +xdata at 0xE608 volatile BYTE UART230; // 230 Kbaud clock for T0,T1,T2 +xdata at 0xE609 volatile BYTE FIFOPINPOLAR; // FIFO polarities +xdata at 0xE60A volatile BYTE REVID; // Chip Revision +xdata at 0xE60B volatile BYTE REVCTL; // Chip Revision Control + +// Endpoint Configuration + +xdata at 0xE610 volatile BYTE EP1OUTCFG; // Endpoint 1-OUT Configuration +xdata at 0xE611 volatile BYTE EP1INCFG; // Endpoint 1-IN Configuration +xdata at 0xE612 volatile BYTE EP2CFG; // Endpoint 2 Configuration +xdata at 0xE613 volatile BYTE EP4CFG; // Endpoint 4 Configuration +xdata at 0xE614 volatile BYTE EP6CFG; // Endpoint 6 Configuration +xdata at 0xE615 volatile BYTE EP8CFG; // Endpoint 8 Configuration +xdata at 0xE618 volatile BYTE EP2FIFOCFG; // Endpoint 2 FIFO configuration +xdata at 0xE619 volatile BYTE EP4FIFOCFG; // Endpoint 4 FIFO configuration +xdata at 0xE61A volatile BYTE EP6FIFOCFG; // Endpoint 6 FIFO configuration +xdata at 0xE61B volatile BYTE EP8FIFOCFG; // Endpoint 8 FIFO configuration +xdata at 0xE620 volatile BYTE EP2AUTOINLENH; // Endpoint 2 Packet Length H (IN only) +xdata at 0xE621 volatile BYTE EP2AUTOINLENL; // Endpoint 2 Packet Length L (IN only) +xdata at 0xE622 volatile BYTE EP4AUTOINLENH; // Endpoint 4 Packet Length H (IN only) +xdata at 0xE623 volatile BYTE EP4AUTOINLENL; // Endpoint 4 Packet Length L (IN only) +xdata at 0xE624 volatile BYTE EP6AUTOINLENH; // Endpoint 6 Packet Length H (IN only) +xdata at 0xE625 volatile BYTE EP6AUTOINLENL; // Endpoint 6 Packet Length L (IN only) +xdata at 0xE626 volatile BYTE EP8AUTOINLENH; // Endpoint 8 Packet Length H (IN only) +xdata at 0xE627 volatile BYTE EP8AUTOINLENL; // Endpoint 8 Packet Length L (IN only) +xdata at 0xE630 volatile BYTE EP2FIFOPFH; // EP2 Programmable Flag trigger H +xdata at 0xE631 volatile BYTE EP2FIFOPFL; // EP2 Programmable Flag trigger L +xdata at 0xE632 volatile BYTE EP4FIFOPFH; // EP4 Programmable Flag trigger H +xdata at 0xE633 volatile BYTE EP4FIFOPFL; // EP4 Programmable Flag trigger L +xdata at 0xE634 volatile BYTE EP6FIFOPFH; // EP6 Programmable Flag trigger H +xdata at 0xE635 volatile BYTE EP6FIFOPFL; // EP6 Programmable Flag trigger L +xdata at 0xE636 volatile BYTE EP8FIFOPFH; // EP8 Programmable Flag trigger H +xdata at 0xE637 volatile BYTE EP8FIFOPFL; // EP8 Programmable Flag trigger L +xdata at 0xE640 volatile BYTE EP2ISOINPKTS; // EP2 (if ISO) IN Packets per frame (1-3) +xdata at 0xE641 volatile BYTE EP4ISOINPKTS; // EP4 (if ISO) IN Packets per frame (1-3) +xdata at 0xE642 volatile BYTE EP6ISOINPKTS; // EP6 (if ISO) IN Packets per frame (1-3) +xdata at 0xE643 volatile BYTE EP8ISOINPKTS; // EP8 (if ISO) IN Packets per frame (1-3) +xdata at 0xE648 volatile BYTE INPKTEND; // Force IN Packet End +xdata at 0xE649 volatile BYTE OUTPKTEND; // Force OUT Packet End + +// Interrupts + +xdata at 0xE650 volatile BYTE EP2FIFOIE; // Endpoint 2 Flag Interrupt Enable +xdata at 0xE651 volatile BYTE EP2FIFOIRQ; // Endpoint 2 Flag Interrupt Request +xdata at 0xE652 volatile BYTE EP4FIFOIE; // Endpoint 4 Flag Interrupt Enable +xdata at 0xE653 volatile BYTE EP4FIFOIRQ; // Endpoint 4 Flag Interrupt Request +xdata at 0xE654 volatile BYTE EP6FIFOIE; // Endpoint 6 Flag Interrupt Enable +xdata at 0xE655 volatile BYTE EP6FIFOIRQ; // Endpoint 6 Flag Interrupt Request +xdata at 0xE656 volatile BYTE EP8FIFOIE; // Endpoint 8 Flag Interrupt Enable +xdata at 0xE657 volatile BYTE EP8FIFOIRQ; // Endpoint 8 Flag Interrupt Request +xdata at 0xE658 volatile BYTE IBNIE; // IN-BULK-NAK Interrupt Enable +xdata at 0xE659 volatile BYTE IBNIRQ; // IN-BULK-NAK interrupt Request +xdata at 0xE65A volatile BYTE NAKIE; // Endpoint Ping NAK interrupt Enable +xdata at 0xE65B volatile BYTE NAKIRQ; // Endpoint Ping NAK interrupt Request +xdata at 0xE65C volatile BYTE USBIE; // USB Int Enables +xdata at 0xE65D volatile BYTE USBIRQ; // USB Interrupt Requests +xdata at 0xE65E volatile BYTE EPIE; // Endpoint Interrupt Enables +xdata at 0xE65F volatile BYTE EPIRQ; // Endpoint Interrupt Requests +xdata at 0xE660 volatile BYTE GPIFIE; // GPIF Interrupt Enable +xdata at 0xE661 volatile BYTE GPIFIRQ; // GPIF Interrupt Request +xdata at 0xE662 volatile BYTE USBERRIE; // USB Error Interrupt Enables +xdata at 0xE663 volatile BYTE USBERRIRQ; // USB Error Interrupt Requests +xdata at 0xE664 volatile BYTE ERRCNTLIM; // USB Error counter and limit +xdata at 0xE665 volatile BYTE CLRERRCNT; // Clear Error Counter EC[3..0] +xdata at 0xE666 volatile BYTE INT2IVEC; // Interupt 2 (USB) Autovector +xdata at 0xE667 volatile BYTE INT4IVEC; // Interupt 4 (FIFOS & GPIF) Autovector +xdata at 0xE668 volatile BYTE INTSETUP; // Interrupt 2&4 Setup + +// Input/Output + +xdata at 0xE670 volatile BYTE PORTACFG; // I/O PORTA Alternate Configuration +xdata at 0xE671 volatile BYTE PORTCCFG; // I/O PORTC Alternate Configuration +xdata at 0xE672 volatile BYTE PORTECFG; // I/O PORTE Alternate Configuration +xdata at 0xE678 volatile BYTE I2CS; // Control & Status +xdata at 0xE679 volatile BYTE I2DAT; // Data +xdata at 0xE67A volatile BYTE I2CTL; // I2C Control +xdata at 0xE67B volatile BYTE XAUTODAT1; // Autoptr1 MOVX access +xdata at 0xE67C volatile BYTE XAUTODAT2; // Autoptr2 MOVX access + +#define EXTAUTODAT1 XAUTODAT1 +#define EXTAUTODAT2 XAUTODAT2 + +// USB Control + +xdata at 0xE680 volatile BYTE USBCS; // USB Control & Status +xdata at 0xE681 volatile BYTE SUSPEND; // Put chip into suspend +xdata at 0xE682 volatile BYTE WAKEUPCS; // Wakeup source and polarity +xdata at 0xE683 volatile BYTE TOGCTL; // Toggle Control +xdata at 0xE684 volatile BYTE USBFRAMEH; // USB Frame count H +xdata at 0xE685 volatile BYTE USBFRAMEL; // USB Frame count L +xdata at 0xE686 volatile BYTE MICROFRAME; // Microframe count, 0-7 +xdata at 0xE687 volatile BYTE FNADDR; // USB Function address + +// Endpoints + +xdata at 0xE68A volatile BYTE EP0BCH; // Endpoint 0 Byte Count H +xdata at 0xE68B volatile BYTE EP0BCL; // Endpoint 0 Byte Count L +xdata at 0xE68D volatile BYTE EP1OUTBC; // Endpoint 1 OUT Byte Count +xdata at 0xE68F volatile BYTE EP1INBC; // Endpoint 1 IN Byte Count +xdata at 0xE690 volatile BYTE EP2BCH; // Endpoint 2 Byte Count H +xdata at 0xE691 volatile BYTE EP2BCL; // Endpoint 2 Byte Count L +xdata at 0xE694 volatile BYTE EP4BCH; // Endpoint 4 Byte Count H +xdata at 0xE695 volatile BYTE EP4BCL; // Endpoint 4 Byte Count L +xdata at 0xE698 volatile BYTE EP6BCH; // Endpoint 6 Byte Count H +xdata at 0xE699 volatile BYTE EP6BCL; // Endpoint 6 Byte Count L +xdata at 0xE69C volatile BYTE EP8BCH; // Endpoint 8 Byte Count H +xdata at 0xE69D volatile BYTE EP8BCL; // Endpoint 8 Byte Count L +xdata at 0xE6A0 volatile BYTE EP0CS; // Endpoint Control and Status +xdata at 0xE6A1 volatile BYTE EP1OUTCS; // Endpoint 1 OUT Control and Status +xdata at 0xE6A2 volatile BYTE EP1INCS; // Endpoint 1 IN Control and Status +xdata at 0xE6A3 volatile BYTE EP2CS; // Endpoint 2 Control and Status +xdata at 0xE6A4 volatile BYTE EP4CS; // Endpoint 4 Control and Status +xdata at 0xE6A5 volatile BYTE EP6CS; // Endpoint 6 Control and Status +xdata at 0xE6A6 volatile BYTE EP8CS; // Endpoint 8 Control and Status +xdata at 0xE6A7 volatile BYTE EP2FIFOFLGS; // Endpoint 2 Flags +xdata at 0xE6A8 volatile BYTE EP4FIFOFLGS; // Endpoint 4 Flags +xdata at 0xE6A9 volatile BYTE EP6FIFOFLGS; // Endpoint 6 Flags +xdata at 0xE6AA volatile BYTE EP8FIFOFLGS; // Endpoint 8 Flags +xdata at 0xE6AB volatile BYTE EP2FIFOBCH; // EP2 FIFO total byte count H +xdata at 0xE6AC volatile BYTE EP2FIFOBCL; // EP2 FIFO total byte count L +xdata at 0xE6AD volatile BYTE EP4FIFOBCH; // EP4 FIFO total byte count H +xdata at 0xE6AE volatile BYTE EP4FIFOBCL; // EP4 FIFO total byte count L +xdata at 0xE6AF volatile BYTE EP6FIFOBCH; // EP6 FIFO total byte count H +xdata at 0xE6B0 volatile BYTE EP6FIFOBCL; // EP6 FIFO total byte count L +xdata at 0xE6B1 volatile BYTE EP8FIFOBCH; // EP8 FIFO total byte count H +xdata at 0xE6B2 volatile BYTE EP8FIFOBCL; // EP8 FIFO total byte count L +xdata at 0xE6B3 volatile BYTE SUDPTRH; // Setup Data Pointer high address byte +xdata at 0xE6B4 volatile BYTE SUDPTRL; // Setup Data Pointer low address byte +xdata at 0xE6B5 volatile BYTE SUDPTRCTL; // Setup Data Pointer Auto Mode +xdata at 0xE6B8 volatile BYTE SETUPDAT[8]; // 8 bytes of SETUP data + +// GPIF + +xdata at 0xE6C0 volatile BYTE GPIFWFSELECT; // Waveform Selector +xdata at 0xE6C1 volatile BYTE GPIFIDLECS; // GPIF Done, GPIF IDLE drive mode +xdata at 0xE6C2 volatile BYTE GPIFIDLECTL; // Inactive Bus, CTL states +xdata at 0xE6C3 volatile BYTE GPIFCTLCFG; // CTL OUT pin drive +xdata at 0xE6C4 volatile BYTE GPIFADRH; // GPIF Address H +xdata at 0xE6C5 volatile BYTE GPIFADRL; // GPIF Address L + +xdata at 0xE6CE volatile BYTE GPIFTCB3; // GPIF Transaction Count Byte 3 +xdata at 0xE6CF volatile BYTE GPIFTCB2; // GPIF Transaction Count Byte 2 +xdata at 0xE6D0 volatile BYTE GPIFTCB1; // GPIF Transaction Count Byte 1 +xdata at 0xE6D1 volatile BYTE GPIFTCB0; // GPIF Transaction Count Byte 0 + +#define EP2GPIFTCH GPIFTCB1 // these are here for backwards compatibility +#define EP2GPIFTCL GPIFTCB0 // +#define EP4GPIFTCH GPIFTCB1 // these are here for backwards compatibility +#define EP4GPIFTCL GPIFTCB0 // +#define EP6GPIFTCH GPIFTCB1 // these are here for backwards compatibility +#define EP6GPIFTCL GPIFTCB0 // +#define EP8GPIFTCH GPIFTCB1 // these are here for backwards compatibility +#define EP8GPIFTCL GPIFTCB0 // + +xdata at 0xE6D2 volatile BYTE EP2GPIFFLGSEL; // EP2 GPIF Flag select +xdata at 0xE6D3 volatile BYTE EP2GPIFPFSTOP; // Stop GPIF EP2 transaction on prog. flag +xdata at 0xE6D4 volatile BYTE EP2GPIFTRIG; // EP2 FIFO Trigger +xdata at 0xE6DA volatile BYTE EP4GPIFFLGSEL; // EP4 GPIF Flag select +xdata at 0xE6DB volatile BYTE EP4GPIFPFSTOP; // Stop GPIF EP4 transaction on prog. flag +xdata at 0xE6DC volatile BYTE EP4GPIFTRIG; // EP4 FIFO Trigger +xdata at 0xE6E2 volatile BYTE EP6GPIFFLGSEL; // EP6 GPIF Flag select +xdata at 0xE6E3 volatile BYTE EP6GPIFPFSTOP; // Stop GPIF EP6 transaction on prog. flag +xdata at 0xE6E4 volatile BYTE EP6GPIFTRIG; // EP6 FIFO Trigger +xdata at 0xE6EA volatile BYTE EP8GPIFFLGSEL; // EP8 GPIF Flag select +xdata at 0xE6EB volatile BYTE EP8GPIFPFSTOP; // Stop GPIF EP8 transaction on prog. flag +xdata at 0xE6EC volatile BYTE EP8GPIFTRIG; // EP8 FIFO Trigger +xdata at 0xE6F0 volatile BYTE XGPIFSGLDATH; // GPIF Data H (16-bit mode only) +xdata at 0xE6F1 volatile BYTE XGPIFSGLDATLX; // Read/Write GPIF Data L & trigger transac +xdata at 0xE6F2 volatile BYTE XGPIFSGLDATLNOX; // Read GPIF Data L, no transac trigger +xdata at 0xE6F3 volatile BYTE GPIFREADYCFG; // Internal RDY,Sync/Async, RDY5CFG +xdata at 0xE6F4 volatile BYTE GPIFREADYSTAT; // RDY pin states +xdata at 0xE6F5 volatile BYTE GPIFABORT; // Abort GPIF cycles + +// UDMA + +xdata at 0xE6C6 volatile BYTE FLOWSTATE; //Defines GPIF flow state +xdata at 0xE6C7 volatile BYTE FLOWLOGIC; //Defines flow/hold decision criteria +xdata at 0xE6C8 volatile BYTE FLOWEQ0CTL; //CTL states during active flow state +xdata at 0xE6C9 volatile BYTE FLOWEQ1CTL; //CTL states during hold flow state +xdata at 0xE6CA volatile BYTE FLOWHOLDOFF; +xdata at 0xE6CB volatile BYTE FLOWSTB; //CTL/RDY Signal to use as master data strobe +xdata at 0xE6CC volatile BYTE FLOWSTBEDGE; //Defines active master strobe edge +xdata at 0xE6CD volatile BYTE FLOWSTBHPERIOD; //Half Period of output master strobe +xdata at 0xE60C volatile BYTE GPIFHOLDAMOUNT; //Data delay shift +xdata at 0xE67D volatile BYTE UDMACRCH; //CRC Upper byte +xdata at 0xE67E volatile BYTE UDMACRCL; //CRC Lower byte +xdata at 0xE67F volatile BYTE UDMACRCQUAL; //UDMA In only, host terminated use only + + +// Debug/Test +// The following registers are for Cypress's internal testing purposes only. +// These registers are not documented in the datasheet or the Technical Reference +// Manual as they were not designed for end user application usage +xdata at 0xE6F8 volatile BYTE DBUG; // Debug +xdata at 0xE6F9 volatile BYTE TESTCFG; // Test configuration +xdata at 0xE6FA volatile BYTE USBTEST; // USB Test Modes +xdata at 0xE6FB volatile BYTE CT1; // Chirp Test--Override +xdata at 0xE6FC volatile BYTE CT2; // Chirp Test--FSM +xdata at 0xE6FD volatile BYTE CT3; // Chirp Test--Control Signals +xdata at 0xE6FE volatile BYTE CT4; // Chirp Test--Inputs + +// Endpoint Buffers + +xdata at 0xE740 volatile BYTE EP0BUF[64]; // EP0 IN-OUT buffer +xdata at 0xE780 volatile BYTE EP1OUTBUF[64]; // EP1-OUT buffer +xdata at 0xE7C0 volatile BYTE EP1INBUF[64]; // EP1-IN buffer +xdata at 0xF000 volatile BYTE EP2FIFOBUF[1024]; // 512/1024-byte EP2 buffer (IN or OUT) +xdata at 0xF400 volatile BYTE EP4FIFOBUF[1024]; // 512 byte EP4 buffer (IN or OUT) +xdata at 0xF800 volatile BYTE EP6FIFOBUF[1024]; // 512/1024-byte EP6 buffer (IN or OUT) +xdata at 0xFC00 volatile BYTE EP8FIFOBUF[1024]; // 512 byte EP8 buffer (IN or OUT) + +// Error Correction Code (ECC) Registers (FX2LP/FX1 only) + +xdata at 0xE628 volatile BYTE ECCCFG; // ECC Configuration +xdata at 0xE629 volatile BYTE ECCRESET; // ECC Reset +xdata at 0xE62A volatile BYTE ECC1B0; // ECC1 Byte 0 +xdata at 0xE62B volatile BYTE ECC1B1; // ECC1 Byte 1 +xdata at 0xE62C volatile BYTE ECC1B2; // ECC1 Byte 2 +xdata at 0xE62D volatile BYTE ECC2B0; // ECC2 Byte 0 +xdata at 0xE62E volatile BYTE ECC2B1; // ECC2 Byte 1 +xdata at 0xE62F volatile BYTE ECC2B2; // ECC2 Byte 2 + +// Feature Registers (FX2LP/FX1 only) +xdata at 0xE50D volatile BYTE GPCR2; // Chip Features + +#undef EXTERN +#undef _AT_ + +/*----------------------------------------------------------------------------- + Special Function Registers (SFRs) + The byte registers and bits defined in the following list are based + on the Synopsis definition of the 8051 Special Function Registers for EZ-USB. + If you modify the register definitions below, please regenerate the file + "ezregs.inc" which includes the same basic information for assembly inclusion. +-----------------------------------------------------------------------------*/ + +sfr at 0x80 IOA; + /* IOA */ + sbit at (0x80 + 0) PA0; + sbit at (0x80 + 1) PA1; + sbit at (0x80 + 2) PA2; + sbit at (0x80 + 3) PA3; + + sbit at (0x80 + 4) PA4; + sbit at (0x80 + 5) PA5; + sbit at (0x80 + 6) PA6; + sbit at (0x80 + 7) PA7; +sfr at 0x81 SP; +sfr at 0x82 DPL; +sfr at 0x83 DPH; +sfr at 0x84 DPL1; +sfr at 0x85 DPH1; +sfr at 0x86 DPS; + /* DPS */ + // sbit SEL = 0x86+0; +sfr at 0x87 PCON; + /* PCON */ + //sbit IDLE = 0x87+0; + //sbit STOP = 0x87+1; + //sbit GF0 = 0x87+2; + //sbit GF1 = 0x87+3; + //sbit SMOD0 = 0x87+7; +sfr at 0x88 TCON; + /* TCON */ + sbit at (0x88+0) IT0; + sbit at (0x88+1) IE0; + sbit at (0x88+2) IT1; + sbit at (0x88+3) IE1; + sbit at (0x88+4) TR0; + sbit at (0x88+5) TF0; + sbit at (0x88+6) TR1; + sbit at (0x88+7) TF1; +sfr at 0x89 TMOD; + /* TMOD */ + //sbit M00 = 0x89+0; + //sbit M10 = 0x89+1; + //sbit CT0 = 0x89+2; + //sbit GATE0 = 0x89+3; + //sbit M01 = 0x89+4; + //sbit M11 = 0x89+5; + //sbit CT1 = 0x89+6; + //sbit GATE1 = 0x89+7; +sfr at 0x8A TL0; +sfr at 0x8B TL1; +sfr at 0x8C TH0; +sfr at 0x8D TH1; +sfr at 0x8E CKCON; + /* CKCON */ + //sbit MD0 = 0x89+0; + //sbit MD1 = 0x89+1; + //sbit MD2 = 0x89+2; + //sbit T0M = 0x89+3; + //sbit T1M = 0x89+4; + //sbit T2M = 0x89+5; +sfr at 0x8F SPC_FNC; // Was WRS in Reg320 + /* CKCON */ + //sbit WRS = 0x8F+0; +sfr at 0x90 IOB; + /* IOB */ + sbit at (0x90 + 0) PB0; + sbit at (0x90 + 1) PB1; + sbit at (0x90 + 2) PB2; + sbit at (0x90 + 3) PB3; + + sbit at (0x90 + 4) PB4; + sbit at (0x90 + 5) PB5; + sbit at (0x90 + 6) PB6; + sbit at (0x90 + 7) PB7; +sfr at 0x91 EXIF; // EXIF Bit Values differ from Reg320 + /* EXIF */ + //sbit USBINT = 0x91+4; + //sbit I2CINT = 0x91+5; + //sbit IE4 = 0x91+6; + //sbit IE5 = 0x91+7; +sfr at 0x92 MPAGE; +sfr at 0x98 SCON0; + /* SCON0 */ + sbit at (0x98+0) RI; + sbit at (0x98+1) TI; + sbit at (0x98+2) RB8; + sbit at (0x98+3) TB8; + sbit at (0x98+4) REN; + sbit at (0x98+5) SM2; + sbit at (0x98+6) SM1; + sbit at (0x98+7) SM0; +sfr at 0x99 SBUF0; + +#define AUTOPTR1H AUTOPTRH1 // for backwards compatibility with examples +#define AUTOPTR1L AUTOPTRL1 // for backwards compatibility with examples +#define APTR1H AUTOPTRH1 // for backwards compatibility with examples +#define APTR1L AUTOPTRL1 // for backwards compatibility with examples + +// this is how they are defined in the TRM +sfr at 0x9A AUTOPTRH1; +sfr at 0x9B AUTOPTRL1; +sfr at 0x9D AUTOPTRH2; +sfr at 0x9E AUTOPTRL2; + +sfr at 0xA0 IOC; + /* IOC */ + sbit at (0xA0 + 0) PC0; + sbit at (0xA0 + 1) PC1; + sbit at (0xA0 + 2) PC2; + sbit at (0xA0 + 3) PC3; + + sbit at (0xA0 + 4) PC4; + sbit at (0xA0 + 5) PC5; + sbit at (0xA0 + 6) PC6; + sbit at (0xA0 + 7) PC7; +sfr at 0xA1 INT2CLR; +sfr at 0xA2 INT4CLR; + +sfr at 0xA8 IE; + /* IE */ + sbit at (0xA8+0) EX0; + sbit at (0xA8+1) ET0; + sbit at (0xA8+2) EX1; + sbit at (0xA8+3) ET1; + sbit at (0xA8+4) ES0; + sbit at (0xA8+5) ET2; + sbit at (0xA8+6) ES1; + sbit at (0xA8+7) EA; + +sfr at 0xAA EP2468STAT; + /* EP2468STAT */ + //sbit EP2E = 0xAA+0; + //sbit EP2F = 0xAA+1; + //sbit EP4E = 0xAA+2; + //sbit EP4F = 0xAA+3; + //sbit EP6E = 0xAA+4; + //sbit EP6F = 0xAA+5; + //sbit EP8E = 0xAA+6; + //sbit EP8F = 0xAA+7; + +sfr at 0xAB EP24FIFOFLGS; +sfr at 0xAC EP68FIFOFLGS; +sfr at 0xAF AUTOPTRSETUP; + /* AUTOPTRSETUP */ + // sbit EXTACC = 0xAF+0; + // sbit APTR1FZ = 0xAF+1; + // sbit APTR2FZ = 0xAF+2; + +sfr at 0xB0 IOD; + /* IOD */ + sbit at (0xB0 + 0) PD0; + sbit at (0xB0 + 1) PD1; + sbit at (0xB0 + 2) PD2; + sbit at (0xB0 + 3) PD3; + + sbit at (0xB0 + 4) PD4; + sbit at (0xB0 + 5) PD5; + sbit at (0xB0 + 6) PD6; + sbit at (0xB0 + 7) PD7; +sfr at 0xB1 IOE; +sfr at 0xB2 OEA; +sfr at 0xB3 OEB; +sfr at 0xB4 OEC; +sfr at 0xB5 OED; +sfr at 0xB6 OEE; + +sfr at 0xB8 IP; + /* IP */ + sbit at (0xB8+0) PX0; + sbit at (0xB8+1) PT0; + sbit at (0xB8+2) PX1; + sbit at (0xB8+3) PT1; + sbit at (0xB8+4) PS0; + sbit at (0xB8+5) PT2; + sbit at (0xB8+6) PS1; + +sfr at 0xBA EP01STAT; +sfr at 0xBB GPIFTRIG; + +sfr at 0xBD GPIFSGLDATH; +sfr at 0xBE GPIFSGLDATLX; +sfr at 0xBF GPIFSGLDATLNOX; + +sfr at 0xC0 SCON1; + /* SCON1 */ + sbit at (0xC0+0) RI1; + sbit at (0xC0+1) TI1; + sbit at (0xC0+2) RB81; + sbit at (0xC0+3) TB81; + sbit at (0xC0+4) REN1; + sbit at (0xC0+5) SM21; + sbit at (0xC0+6) SM11; + sbit at (0xC0+7) SM01; +sfr at 0xC1 SBUF1; +sfr at 0xC8 T2CON; + /* T2CON */ + sbit at (0xC8+0) CP_RL2; + sbit at (0xC8+1) C_T2; + sbit at (0xC8+2) TR2; + sbit at (0xC8+3) EXEN2; + sbit at (0xC8+4) TCLK; + sbit at (0xC8+5) RCLK; + sbit at (0xC8+6) EXF2; + sbit at (0xC8+7) TF2; +sfr at 0xCA RCAP2L; +sfr at 0xCB RCAP2H; +sfr at 0xCC TL2; +sfr at 0xCD TH2; +sfr at 0xD0 PSW; + /* PSW */ + sbit at (0xD0+0) P; + sbit at (0xD0+1) FL; + sbit at (0xD0+2) OV; + sbit at (0xD0+3) RS0; + sbit at (0xD0+4) RS1; + sbit at (0xD0+5) F0; + sbit at (0xD0+6) AC; + sbit at (0xD0+7) CY; +sfr at 0xD8 EICON; // Was WDCON in DS80C320; Bit Values differ from Reg320 + /* EICON */ + sbit at (0xD8+3) INT6; + sbit at (0xD8+4) RESI; + sbit at (0xD8+5) ERESI; + sbit at (0xD8+7) SMOD1; +sfr at 0xE0 ACC; +sfr at 0xE8 EIE; // EIE Bit Values differ from Reg320 + /* EIE */ + sbit at (0xE8+0) EUSB; + sbit at (0xE8+1) EI2C; + sbit at (0xE8+2) EIEX4; + sbit at (0xE8+3) EIEX5; + sbit at (0xE8+4) EIEX6; +sfr at 0xF0 B; +sfr at 0xF8 EIP; // EIP Bit Values differ from Reg320 + /* EIP */ + sbit at (0xF8+0) PUSB; + sbit at (0xF8+1) PI2C; + sbit at (0xF8+2) EIPX4; + sbit at (0xF8+3) EIPX5; + sbit at (0xF8+4) EIPX6; + +/*----------------------------------------------------------------------------- + Bit Masks +-----------------------------------------------------------------------------*/ + +/* CPU Control & Status Register (CPUCS) */ +#define bmPRTCSTB bmBIT5 +#define bmCLKSPD (bmBIT4 | bmBIT3) +#define bmCLKSPD1 bmBIT4 +#define bmCLKSPD0 bmBIT3 +#define bmCLKINV bmBIT2 +#define bmCLKOE bmBIT1 +#define bm8051RES bmBIT0 +/* Port Alternate Configuration Registers */ +/* Port A (PORTACFG) */ +#define bmFLAGD bmBIT7 +#define bmINT1 bmBIT1 +#define bmINT0 bmBIT0 +/* Port C (PORTCCFG) */ +#define bmGPIFA7 bmBIT7 +#define bmGPIFA6 bmBIT6 +#define bmGPIFA5 bmBIT5 +#define bmGPIFA4 bmBIT4 +#define bmGPIFA3 bmBIT3 +#define bmGPIFA2 bmBIT2 +#define bmGPIFA1 bmBIT1 +#define bmGPIFA0 bmBIT0 +/* Port E (PORTECFG) */ +#define bmGPIFA8 bmBIT7 +#define bmT2EX bmBIT6 +#define bmINT6 bmBIT5 +#define bmRXD1OUT bmBIT4 +#define bmRXD0OUT bmBIT3 +#define bmT2OUT bmBIT2 +#define bmT1OUT bmBIT1 +#define bmT0OUT bmBIT0 + +/* I2C Control & Status Register (I2CS) */ +#define bmSTART bmBIT7 +#define bmSTOP bmBIT6 +#define bmLASTRD bmBIT5 +#define bmID (bmBIT4 | bmBIT3) +#define bmBERR bmBIT2 +#define bmACK bmBIT1 +#define bmDONE bmBIT0 +/* I2C Control Register (I2CTL) */ +#define bmSTOPIE bmBIT1 +#define bm400KHZ bmBIT0 +/* Interrupt 2 (USB) Autovector Register (INT2IVEC) */ +#define bmIV4 bmBIT6 +#define bmIV3 bmBIT5 +#define bmIV2 bmBIT4 +#define bmIV1 bmBIT3 +#define bmIV0 bmBIT2 +/* USB Interrupt Request & Enable Registers (USBIE/USBIRQ) */ +#define bmEP0ACK bmBIT6 +#define bmHSGRANT bmBIT5 +#define bmURES bmBIT4 +#define bmSUSP bmBIT3 +#define bmSUTOK bmBIT2 +#define bmSOF bmBIT1 +#define bmSUDAV bmBIT0 +/* Breakpoint register (BREAKPT) */ +#define bmBREAK bmBIT3 +#define bmBPPULSE bmBIT2 +#define bmBPEN bmBIT1 +/* Interrupt 2 & 4 Setup (INTSETUP) */ +#define bmAV2EN bmBIT3 +#define INT4IN bmBIT1 +#define bmAV4EN bmBIT0 +/* USB Control & Status Register (USBCS) */ +#define bmHSM bmBIT7 +#define bmDISCON bmBIT3 +#define bmNOSYNSOF bmBIT2 +#define bmRENUM bmBIT1 +#define bmSIGRESUME bmBIT0 +/* Wakeup Control and Status Register (WAKEUPCS) */ +#define bmWU2 bmBIT7 +#define bmWU bmBIT6 +#define bmWU2POL bmBIT5 +#define bmWUPOL bmBIT4 +#define bmDPEN bmBIT2 +#define bmWU2EN bmBIT1 +#define bmWUEN bmBIT0 +/* End Point 0 Control & Status Register (EP0CS) */ +#define bmHSNAK bmBIT7 +/* End Point 0-1 Control & Status Registers (EP0CS/EP1OUTCS/EP1INCS) */ +#define bmEPBUSY bmBIT1 +#define bmEPSTALL bmBIT0 +/* End Point 2-8 Control & Status Registers (EP2CS/EP4CS/EP6CS/EP8CS) */ +#define bmNPAK (bmBIT6 | bmBIT5 | bmBIT4) +#define bmEPFULL bmBIT3 +#define bmEPEMPTY bmBIT2 +/* Endpoint Status (EP2468STAT) SFR bits */ +#define bmEP8FULL bmBIT7 +#define bmEP8EMPTY bmBIT6 +#define bmEP6FULL bmBIT5 +#define bmEP6EMPTY bmBIT4 +#define bmEP4FULL bmBIT3 +#define bmEP4EMPTY bmBIT2 +#define bmEP2FULL bmBIT1 +#define bmEP2EMPTY bmBIT0 +/* SETUP Data Pointer Auto Mode (SUDPTRCTL) */ +#define bmSDPAUTO bmBIT0 +/* Endpoint Data Toggle Control (TOGCTL) */ +#define bmQUERYTOGGLE bmBIT7 +#define bmSETTOGGLE bmBIT6 +#define bmRESETTOGGLE bmBIT5 +#define bmTOGCTLEPMASK bmBIT3 | bmBIT2 | bmBIT1 | bmBIT0 +/* IBN (In Bulk Nak) enable and request bits (IBNIE/IBNIRQ) */ +#define bmEP8IBN bmBIT5 +#define bmEP6IBN bmBIT4 +#define bmEP4IBN bmBIT3 +#define bmEP2IBN bmBIT2 +#define bmEP1IBN bmBIT1 +#define bmEP0IBN bmBIT0 + +/* PING-NAK enable and request bits (NAKIE/NAKIRQ) */ +#define bmEP8PING bmBIT7 +#define bmEP6PING bmBIT6 +#define bmEP4PING bmBIT5 +#define bmEP2PING bmBIT4 +#define bmEP1PING bmBIT3 +#define bmEP0PING bmBIT2 +#define bmIBN bmBIT0 + +/* Interface Configuration bits (IFCONFIG) */ +#define bmIFCLKSRC bmBIT7 +#define bm3048MHZ bmBIT6 +#define bmIFCLKOE bmBIT5 +#define bmIFCLKPOL bmBIT4 +#define bmASYNC bmBIT3 +#define bmGSTATE bmBIT2 +#define bmIFCFG1 bmBIT1 +#define bmIFCFG0 bmBIT0 +#define bmIFCFGMASK (bmIFCFG0 | bmIFCFG1) +#define bmIFGPIF bmIFCFG1 + +/* EP 2468 FIFO Configuration bits (EP2FIFOCFG,EP4FIFOCFG,EP6FIFOCFG,EP8FIFOCFG) */ +#define bmINFM bmBIT6 +#define bmOEP bmBIT5 +#define bmAUTOOUT bmBIT4 +#define bmAUTOIN bmBIT3 +#define bmZEROLENIN bmBIT2 +#define bmWORDWIDE bmBIT0 + +/* Chip Revision Control Bits (REVCTL) - used to ebable/disable revision specidic + features */ +#define bmNOAUTOARM bmBIT1 +#define bmSKIPCOMMIT bmBIT0 + +/* Fifo Reset bits (FIFORESET) */ +#define bmNAKALL bmBIT7 + +/* Chip Feature Register (GPCR2) */ +#define bmFULLSPEEDONLY bmBIT4 + +#endif /* FX2REGS_H */ diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/fx2sdly.h b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/fx2sdly.h new file mode 100644 index 0000000..b4835c5 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/fx2sdly.h @@ -0,0 +1,241 @@ +// **** Auto-generated using genfx2hrd.sh from CY3684 EZ USB FX2LP Development Kit headers +//----------------------------------------------------------------------------- +// File: fx2sdly.h +// Contents: EZ-USB FX2 Synchronization Delay (SYNCDELAY) Macro +// +// Enter with _IFREQ = IFCLK in kHz +// Enter with _CFREQ = CLKOUT in kHz +// +// Copyright (c) 2001 Cypress Semiconductor, All rights reserved +//----------------------------------------------------------------------------- +#define _nop_() do { _asm nop; _endasm; } while(0) + + // Registers which require a synchronization delay, see section 15.14 + // FIFORESET FIFOPINPOLAR + // INPKTEND OUTPKTEND + // EPxBCH:L REVCTL + // GPIFTCB3 GPIFTCB2 + // GPIFTCB1 GPIFTCB0 + // EPxFIFOPFH:L EPxAUTOINLENH:L + // EPxFIFOCFG EPxGPIFFLGSEL + // PINFLAGSxx EPxFIFOIRQ + // EPxFIFOIE GPIFIRQ + // GPIFIE GPIFADRH:L + // UDMACRCH:L EPxGPIFTRIG + // GPIFTRIG + + // Note: The pre-REVE EPxGPIFTCH/L register are affected, as well... + // ...these have been replaced by GPIFTC[B3:B0] registers + +// _IFREQ can be in the range of: 5000 to 48000 +#ifndef _IFREQ +#define _IFREQ 48000 // IFCLK frequency in kHz +#endif + +// CFREQ can be any one of: 48000, 24000, or 12000 +#ifndef _CFREQ +#define _CFREQ 48000 // CLKOUT frequency in kHz +#endif + +#if( _IFREQ < 5000 ) +#error "_IFREQ too small! Valid Range: 5000 to 48000..." +#endif + +#if( _IFREQ > 48000 ) +#error "_IFREQ too large! Valid Range: 5000 to 48000..." +#endif + +#if( _CFREQ != 48000 ) +#if( _CFREQ != 24000 ) +#if( _CFREQ != 12000 ) +#error "_CFREQ invalid! Valid values: 48000, 24000, 12000..." +#endif +#endif +#endif + +// Synchronization Delay formula: see TRM section 15-14 +#define _SCYCL ( 3*(_CFREQ) + 5*(_IFREQ) - 1 ) / ( 2*(_IFREQ) ) + +#if( _SCYCL == 1 ) +#define SYNCDELAY _nop_( ) +#endif + +#if( _SCYCL == 2 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 3 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 4 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 5 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 6 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 7 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 8 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 9 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 10 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 11 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 12 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 13 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 14 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 15 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif + +#if( _SCYCL == 16 ) +#define SYNCDELAY _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ); \ + _nop_( ) +#endif diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/fx2usb-interface.c b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/fx2usb-interface.c new file mode 100644 index 0000000..f7523e1 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/fx2usb-interface.c @@ -0,0 +1,212 @@ +/* + * xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB + * + * Copyright (C) 2011 RIEGL Research ForschungsGmbH + * Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include <stdio.h> +#include <errno.h> +#include <string.h> +#include "fx2usb-interface.h" + +usb_dev_handle *fx2usb_open(int vendor_id, int device_id, char *dev) +{ + struct usb_bus *b; + struct usb_device *d; + char *dd = NULL; + int devlen; + + if (dev) { + devlen = strlen(dev); + dd = devlen > 8 ? &dev[devlen-8] : "|xxx|xxx"; + } + + for (b = usb_get_busses(); b; b = b->next) { + for (d = b->devices; d; d = d->next) { + if (dd) { + if (dd[0] == '/' && !strncmp(dd+1, b->dirname, 3) && + dd[4] == '/' && !strncmp(dd+5, d->filename, 3)) + return usb_open(d); + } else + if (vendor_id || device_id) { + if ((d->descriptor.idVendor == vendor_id) && (d->descriptor.idProduct == device_id)) + return usb_open(d); + } else { + // The Xilinx Platform Cable USB Vendor/Device IDs + if ((d->descriptor.idVendor == 0x03FD) && (d->descriptor.idProduct == 0x0009)) + return usb_open(d); + if ((d->descriptor.idVendor == 0x03FD) && (d->descriptor.idProduct == 0x000D)) + return usb_open(d); + if ((d->descriptor.idVendor == 0x03FD) && (d->descriptor.idProduct == 0x000F)) + return usb_open(d); + // The plain CY7C68013 dev kit Vendor/Device IDs + if ((d->descriptor.idVendor == 0x04b4) && (d->descriptor.idProduct == 0x8613)) + return usb_open(d); + } + } + } + + return NULL; +} + +static int fx2usb_fwload_ctrl_msg(usb_dev_handle *dh, int addr, const void *data, int len) +{ + int ret = usb_control_msg(dh, 0x40, 0xA0, addr, 0, (char*)data, len, 1000); + if (ret != len) + fprintf(stderr, "fx2usb_fwload_ctrl_msg: usb_control_msg for addr=0x%04X, len=%d returned %d: %s\n", addr, len, ret, ret >= 0 ? "NO ERROR" : usb_strerror()); + return ret == len ? 0 : -1; +} + +int fx2usb_upload_ihex(usb_dev_handle *dh, FILE *fp) +{ + uint8_t on = 1, off = 0; + + // assert reset + if (fx2usb_fwload_ctrl_msg(dh, 0xE600, &on, 1) < 0) { + fprintf(stderr, "fx2usb_upload_ihex: can't assert reset!\n"); + return -1; + } + + // parse and upload ihex file + char line[1024]; + int linecount = 0; + while (fgets(line, sizeof(line), fp) != NULL) + { + linecount++; + + if (line[0] != ':') + continue; + + uint8_t cksum = 0; + uint8_t ldata[512]; + int lsize = 0; + + while (sscanf(line+1+lsize*2, "%2hhx", &ldata[lsize]) == 1) { + cksum += ldata[lsize]; + lsize++; + } + + if (lsize < 5) { + fprintf(stderr, "fx2usb_upload_ihex: ihex line %d: record is to short!\n", linecount); + return -1; + } + + if (ldata[0] != lsize-5) { + fprintf(stderr, "fx2usb_upload_ihex: ihex line %d: size does not match record length!\n", linecount); + return -1; + } + + cksum -= ldata[lsize-1]; + cksum = ~cksum + 1; + + if (cksum != ldata[lsize-1]) { + fprintf(stderr, "fx2usb_upload_ihex: ihex line %d: cksum error!\n", linecount); + return -1; + } + + if (fx2usb_fwload_ctrl_msg(dh, (ldata[1] << 8) | ldata[2], &ldata[4], ldata[0]) < 0) { + fprintf(stderr, "fx2usb_upload_ihex: ihex line %d: error in fx2usb communication!\n", linecount); + return -1; + } + } + + // release reset + if (fx2usb_fwload_ctrl_msg(dh, 0xE600, &off, 1) < 0) { + fprintf(stderr, "fx2usb_upload_ihex: can't release reset!\n"); + return -1; + } + + return 0; +} + +int fx2usb_claim(usb_dev_handle *dh) +{ +#ifdef LIBUSB_HAS_DETACH_KERNEL_DRIVER_NP + usb_detach_kernel_driver_np(dh, 0); +#endif + if (usb_claim_interface(dh, 0) < 0) { + fprintf(stderr, "fx2usb_claim: claiming interface 0 failed: %s!\n", usb_strerror()); + return -1; + } + if (usb_set_altinterface(dh, 1) < 0) { + usb_release_interface(dh, 0); + fprintf(stderr, "fx2usb_claim: setting alternate interface 1 failed: %s!\n", usb_strerror()); + return -1; + } + return 0; +} + +void fx2usb_release(usb_dev_handle *dh) +{ + usb_release_interface(dh, 0); +} + +void fx2usb_flush(usb_dev_handle *dh) +{ + while (1) + { + unsigned char readbuf[2] = { 0, 0 }; + int ret = usb_bulk_read(dh, 1, (char*)readbuf, 2, 10); + if (ret <= 0) + return; + fprintf(stderr, "Unexpected data word from device: 0x%02x 0x%02x (%d)\n", readbuf[0], readbuf[1], ret); + } +} + +int fx2usb_send_chunk(usb_dev_handle *dh, int ep, const void *data, int len) +{ + int ret; +#if 0 + if (ep == 2) { + int i; + fprintf(stderr, "<ep2:%4d bytes> ...", len); + for (i = len-16; i < len; i++) { + if (i < 0) + continue; + fprintf(stderr, " %02x", ((unsigned char*)data)[i]); + } + fprintf(stderr, "\n"); + } +#endif +retry_write: + ret = usb_bulk_write(dh, ep, data, len, 1000); + if (ret == -ETIMEDOUT) { + fprintf(stderr, "fx2usb_recv_chunk: usb write timeout -> retry\n"); + fx2usb_flush(dh); + goto retry_write; + } + if (ret != len) + fprintf(stderr, "fx2usb_send_chunk: write of %d bytes to ep %d returned %d: %s\n", len, ep, ret, ret >= 0 ? "NO ERROR" : usb_strerror()); + return ret == len ? 0 : -1; +} + +int fx2usb_recv_chunk(usb_dev_handle *dh, int ep, void *data, int len, int *ret_len) +{ + int ret; +retry_read: + ret = usb_bulk_read(dh, ep, data, len, 1000); + if (ret == -ETIMEDOUT) { + fprintf(stderr, "fx2usb_recv_chunk: usb read timeout -> retry\n"); + goto retry_read; + } + if (ret > 0 && ret_len != NULL) + len = *ret_len = ret; + if (ret != len) + fprintf(stderr, "fx2usb_recv_chunk: read of %d bytes from ep %d returned %d: %s\n", len, ep, ret, ret >= 0 ? "NO ERROR" : usb_strerror()); + return ret == len ? 0 : -1; +} + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/fx2usb-interface.h b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/fx2usb-interface.h new file mode 100644 index 0000000..ece9adf --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/fx2usb-interface.h @@ -0,0 +1,37 @@ +/* + * xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB + * + * Copyright (C) 2011 RIEGL Research ForschungsGmbH + * Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef FX2USB_INTERFACE_H +#define FX2USB_INTERFACE_H + +#include <usb.h> +#include <stdio.h> + +usb_dev_handle *fx2usb_open(int vendor_id, int device_id, char *dev); +int fx2usb_upload_ihex(usb_dev_handle *dh, FILE *fp); +int fx2usb_claim(usb_dev_handle *dh); +void fx2usb_release(usb_dev_handle *dh); + +void fx2usb_flush(usb_dev_handle *dh); +int fx2usb_send_chunk(usb_dev_handle *dh, int ep, const void *data, int len); +int fx2usb_recv_chunk(usb_dev_handle *dh, int ep, void *data, int len, int *ret_len); + +#endif /* FX2USB_INTERFACE_H */ + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/genfx2hrd.sh b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/genfx2hrd.sh new file mode 100644 index 0000000..0cfd376 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/genfx2hrd.sh @@ -0,0 +1,45 @@ +#!/bin/bash +# +# xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB +# +# Copyright (C) 2011 RIEGL Research ForschungsGmbH +# Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +ORIG_HDR_DIR="$HOME/.wine/drive_c/Cypress/USB/Target/Inc/" + +{ echo "// **** Auto-generated using genfx2hrd.sh from CY3684 EZ USB FX2LP Development Kit headers" +sed -r ' + # OLD: EXTERN xdata volatile BYTE CPUCS _AT_ 0xE600; + # NEW: xdata at 0xE600 volatile BYTE CPUCS; + s/^EXTERN xdata volatile BYTE ([^ ]+)( +)_AT_ +([^ ;]+);/xdata at \3 volatile BYTE \1;\2/; + + # OLD: sfr IOA = 0x80; + # NEW: sfr at 0x80 IOA; + s/^sfr ([^ ]+)( +)= ([^ ;]+);/sfr at \3 \1;\2/; + + # OLD: sbit PA0 = 0x80 + 0; + # NEW: sbit at (0x80 + 0) IOA; + s/^( *)sbit ([^ ]+)( +)= ([^;]+);/\1sbit at (\4) \2;\3/; +' < "$ORIG_HDR_DIR/fx2regs.h"; } > fx2regs.h + +# hotfix line ending in Fx2.h +{ echo "// **** Auto-generated using genfx2hrd.sh from CY3684 EZ USB FX2LP Development Kit headers" +sed -r 's,\\ *,\\,;' < "$ORIG_HDR_DIR/Fx2.h"; } > fx2.h + +# we do not have intrins.h but it seams quite clear what _nop_() does.. +{ echo "// **** Auto-generated using genfx2hrd.sh from CY3684 EZ USB FX2LP Development Kit headers" +sed 's,^#include "intrins.h",#define _nop_() do { _asm nop; _endasm; } while(0),' < "$ORIG_HDR_DIR/fx2sdly.h"; } > fx2sdly.h + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/gpifprog.c b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/gpifprog.c new file mode 100644 index 0000000..ea7c2e4 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/gpifprog.c @@ -0,0 +1,292 @@ +// This program configures the General Programmable Interface (GPIF) for FX2. +// Please do not modify sections of text which are marked as "DO NOT EDIT ...". +// +// DO NOT EDIT ... +// GPIF Initialization +// Interface Timing Sync +// Internal Ready Init IntRdy=1 +// CTL Out Tristate-able Binary +// SingleWrite WF Select 1 +// SingleRead WF Select 0 +// FifoWrite WF Select 3 +// FifoRead WF Select 2 +// Data Bus Idle Drive Tristate +// END DO NOT EDIT + +// DO NOT EDIT ... +// GPIF Wave Names +// Wave 0 = Single R +// Wave 1 = Single W +// Wave 2 = FIFO Slo +// Wave 3 = FIFO Wri + +// GPIF Ctrl Outputs Level +// CTL 0 = CTL0 CMOS +// CTL 1 = CTL1 CMOS +// CTL 2 = CTL2 CMOS +// CTL 3 = CTL3 CMOS +// CTL 4 = CTL4 CMOS +// CTL 5 = CTL5 CMOS + +// GPIF Rdy Inputs +// RDY0 = RDY0 +// RDY1 = RDY1 +// RDY2 = RDY2 +// RDY3 = RDY3 +// RDY4 = RDY4 +// RDY5 = TCXpire +// FIFOFlag = FIFOFlag +// IntReady = IntReady +// END DO NOT EDIT +// DO NOT EDIT ... +// +// GPIF Waveform 0: Single R +// +// Interval 0 1 2 3 4 5 6 Idle (7) +// _________ _________ _________ _________ _________ _________ _________ _________ +// +// AddrMode Same Val Same Val Same Val Same Val Same Val Same Val Same Val +// DataMode NO Data NO Data NO Data NO Data NO Data NO Data NO Data +// NextData SameData SameData SameData SameData SameData SameData SameData +// Int Trig No Int No Int No Int No Int No Int No Int No Int +// IF/Wait Wait 1 Wait 1 Wait 1 Wait 1 Wait 1 Wait 1 Wait 1 +// Term A +// LFunc +// Term B +// Branch1 +// Branch0 +// Re-Exec +// Sngl/CRC Default Default Default Default Default Default Default +// CTL0 1 1 1 1 1 1 1 1 +// CTL1 1 1 1 1 1 1 1 1 +// CTL2 1 1 1 1 1 1 1 1 +// CTL3 0 0 0 0 0 0 0 0 +// CTL4 0 0 0 0 0 0 0 0 +// CTL5 0 0 0 0 0 0 0 0 +// +// END DO NOT EDIT +// DO NOT EDIT ... +// +// GPIF Waveform 1: Single W +// +// Interval 0 1 2 3 4 5 6 Idle (7) +// _________ _________ _________ _________ _________ _________ _________ _________ +// +// AddrMode Same Val Same Val Same Val Same Val Same Val Same Val Same Val +// DataMode Activate NO Data NO Data NO Data NO Data NO Data NO Data +// NextData SameData NextData SameData SameData SameData SameData SameData +// Int Trig No Int No Int No Int No Int No Int No Int No Int +// IF/Wait Wait 1 Wait 1 Wait 1 Wait 1 IF Wait 1 Wait 1 +// Term A FIFOFlag +// LFunc AND +// Term B FIFOFlag +// Branch1 ThenIdle +// Branch0 ElseIdle +// Re-Exec No +// Sngl/CRC Default Default Default Default Default Default Default +// CTL0 0 1 1 1 1 1 1 1 +// CTL1 1 1 0 1 1 1 1 1 +// CTL2 1 0 1 0 1 1 1 1 +// CTL3 0 0 0 0 0 0 0 0 +// CTL4 0 0 0 0 0 0 0 0 +// CTL5 0 0 0 0 0 0 0 0 +// +// END DO NOT EDIT +// DO NOT EDIT ... +// +// GPIF Waveform 2: FIFO Slo +// +// Interval 0 1 2 3 4 5 6 Idle (7) +// _________ _________ _________ _________ _________ _________ _________ _________ +// +// AddrMode Same Val Same Val Same Val Same Val Same Val Same Val Same Val +// DataMode NO Data Activate NO Data NO Data NO Data NO Data NO Data +// NextData SameData SameData NextData SameData SameData SameData SameData +// Int Trig No Int No Int No Int No Int No Int No Int No Int +// IF/Wait Wait 254 Wait 1 Wait 254 IF Wait 1 Wait 1 Wait 1 +// Term A TCXpire +// LFunc AND +// Term B TCXpire +// Branch1 ThenIdle +// Branch0 Else 0 +// Re-Exec No +// Sngl/CRC Default Default Default Default Default Default Default +// CTL0 1 0 1 1 1 1 1 1 +// CTL1 1 1 1 1 1 1 1 1 +// CTL2 1 1 1 0 0 0 0 1 +// CTL3 0 0 0 0 0 0 0 0 +// CTL4 0 0 0 0 0 0 0 0 +// CTL5 0 0 0 0 0 0 0 0 +// +// END DO NOT EDIT +// DO NOT EDIT ... +// +// GPIF Waveform 3: FIFO Wri +// +// Interval 0 1 2 3 4 5 6 Idle (7) +// _________ _________ _________ _________ _________ _________ _________ _________ +// +// AddrMode Same Val Same Val Same Val Same Val Same Val Same Val Same Val +// DataMode Activate NO Data NO Data NO Data NO Data NO Data NO Data +// NextData SameData NextData SameData SameData SameData SameData SameData +// Int Trig No Int No Int No Int No Int No Int No Int No Int +// IF/Wait Wait 1 Wait 1 Wait 1 IF Wait 1 Wait 1 Wait 1 +// Term A TCXpire +// LFunc AND +// Term B TCXpire +// Branch1 ThenIdle +// Branch0 Else 0 +// Re-Exec No +// Sngl/CRC Default Default Default Default Default Default Default +// CTL0 0 1 1 1 1 1 1 1 +// CTL1 1 1 0 1 1 1 1 1 +// CTL2 1 0 1 0 0 0 0 1 +// CTL3 0 0 0 0 0 0 0 0 +// CTL4 0 0 0 0 0 0 0 0 +// CTL5 0 0 0 0 0 0 0 0 +// +// END DO NOT EDIT + +// GPIF Program Code + +// DO NOT EDIT ... +#include "fx2.h" +#include "fx2regs.h" +#include "fx2sdly.h" // SYNCDELAY macro +// END DO NOT EDIT + +// DO NOT EDIT ... +const char xdata WaveData[128] = +{ +// Wave 0 +/* LenBr */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07, +/* Opcode*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* Output*/ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, +/* LFun */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, +// Wave 1 +/* LenBr */ 0x01, 0x01, 0x01, 0x01, 0x3F, 0x01, 0x01, 0x07, +/* Opcode*/ 0x02, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +/* Output*/ 0x06, 0x03, 0x05, 0x03, 0x07, 0x07, 0x07, 0x07, +/* LFun */ 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x3F, +// Wave 2 +/* LenBr */ 0xFE, 0x01, 0xFE, 0x38, 0x01, 0x01, 0x01, 0x07, +/* Opcode*/ 0x00, 0x02, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, +/* Output*/ 0x07, 0x06, 0x07, 0x03, 0x03, 0x03, 0x03, 0x07, +/* LFun */ 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x3F, +// Wave 3 +/* LenBr */ 0x01, 0x01, 0x01, 0x38, 0x01, 0x01, 0x01, 0x07, +/* Opcode*/ 0x02, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +/* Output*/ 0x06, 0x03, 0x05, 0x03, 0x03, 0x03, 0x03, 0x07, +/* LFun */ 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x3F, +}; +// END DO NOT EDIT + +// DO NOT EDIT ... +const char xdata FlowStates[36] = +{ +/* Wave 0 FlowStates */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/* Wave 1 FlowStates */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/* Wave 2 FlowStates */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/* Wave 3 FlowStates */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +// END DO NOT EDIT + +// DO NOT EDIT ... +const char xdata InitData[7] = +{ +/* Regs */ 0xE0,0x00,0x00,0x07,0xEA,0x4E,0x00 +}; +// END DO NOT EDIT + +// TO DO: You may add additional code below. + +void GpifInit( void ) +{ + BYTE i; + + // Registers which require a synchronization delay, see section 15.14 + // FIFORESET FIFOPINPOLAR + // INPKTEND OUTPKTEND + // EPxBCH:L REVCTL + // GPIFTCB3 GPIFTCB2 + // GPIFTCB1 GPIFTCB0 + // EPxFIFOPFH:L EPxAUTOINLENH:L + // EPxFIFOCFG EPxGPIFFLGSEL + // PINFLAGSxx EPxFIFOIRQ + // EPxFIFOIE GPIFIRQ + // GPIFIE GPIFADRH:L + // UDMACRCH:L EPxGPIFTRIG + // GPIFTRIG + + // Note: The pre-REVE EPxGPIFTCH/L register are affected, as well... + // ...these have been replaced by GPIFTC[B3:B0] registers + + // 8051 doesn't have access to waveform memories 'til + // the part is in GPIF mode. + + IFCONFIG = 0xEA; + // IFCLKSRC=1 , FIFOs executes on internal clk source + // xMHz=1 , 48MHz internal clk rate + // IFCLKOE=0 , Don't drive IFCLK pin signal at 48MHz + // IFCLKPOL=0 , Don't invert IFCLK pin signal from internal clk + // ASYNC=1 , master samples asynchronous + // GSTATE=1 , Drive GPIF states out on PORTE[2:0], debug WF + // IFCFG[1:0]=10, FX2 in GPIF master mode + + GPIFABORT = 0xFF; // abort any waveforms pending + + GPIFREADYCFG = InitData[ 0 ]; + GPIFCTLCFG = InitData[ 1 ]; + GPIFIDLECS = InitData[ 2 ]; + GPIFIDLECTL = InitData[ 3 ]; + GPIFWFSELECT = InitData[ 5 ]; + GPIFREADYSTAT = InitData[ 6 ]; + + // use dual autopointer feature... + AUTOPTRSETUP = 0x07; // inc both pointers, + // ...warning: this introduces pdata hole(s) + // ...at E67B (XAUTODAT1) and E67C (XAUTODAT2) + + // source + AUTOPTRH1 = MSB( &WaveData ); + AUTOPTRL1 = LSB( &WaveData ); + + // destination + AUTOPTRH2 = 0xE4; + AUTOPTRL2 = 0x00; + + // transfer + for ( i = 0x00; i < 128; i++ ) + { + EXTAUTODAT2 = EXTAUTODAT1; + } + +// Configure GPIF Address pins, output initial value, + PORTCCFG = 0xFF; // [7:0] as alt. func. GPIFADR[7:0] + OEC = 0xFF; // and as outputs + PORTECFG |= 0x80; // [8] as alt. func. GPIFADR[8] + OEE |= 0x80; // and as output + +// ...OR... tri-state GPIFADR[8:0] pins +// PORTCCFG = 0x00; // [7:0] as port I/O +// OEC = 0x00; // and as inputs +// PORTECFG &= 0x7F; // [8] as port I/O +// OEE &= 0x7F; // and as input + +// GPIF address pins update when GPIFADRH/L written + SYNCDELAY; // + GPIFADRH = 0x00; // bits[7:1] always 0 + SYNCDELAY; // + GPIFADRL = 0x00; // point to PERIPHERAL address 0x0000 + +// Configure GPIF FlowStates registers for Wave 0 of WaveData + FLOWSTATE = FlowStates[ 0 ]; + FLOWLOGIC = FlowStates[ 1 ]; + FLOWEQ0CTL = FlowStates[ 2 ]; + FLOWEQ1CTL = FlowStates[ 3 ]; + FLOWHOLDOFF = FlowStates[ 4 ]; + FLOWSTB = FlowStates[ 5 ]; + FLOWSTBEDGE = FlowStates[ 6 ]; + FLOWSTBHPERIOD = FlowStates[ 7 ]; +} + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/hardware.sh b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/hardware.sh new file mode 100644 index 0000000..e4c9579 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/hardware.sh @@ -0,0 +1,100 @@ +#!/bin/bash +# +# xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB +# +# Copyright (C) 2011 RIEGL Research ForschungsGmbH +# Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +. /opt/Xilinx/13.1/ISE_DS/settings32.sh + +cat > hardware.prj <<- EOT + verilog work "hardware.v" +EOT + +cat > hardware.lso <<- EOT + work +EOT + +cat > hardware.xst <<- EOT + set -tmpdir "xilinx/projnav.tmp" + set -xsthdpdir "xilinx" + run + -ifn hardware.prj + -ifmt mixed + -ofn hardware + -ofmt NGC + -p xbr + -top top + -opt_mode Speed + -opt_level 1 + -iuc NO + -lso hardware.lso + -keep_hierarchy YES + -netlist_hierarchy as_optimized + -rtlview Yes + -hierarchy_separator / + -bus_delimiter <> + -case maintain + -verilog2001 YES + -fsm_extract YES -fsm_encoding Auto + -safe_implementation No + -mux_extract YES + -resource_sharing YES + -iobuf YES + -pld_mp YES + -pld_xp YES + -pld_ce YES + -wysiwyg NO + -equivalent_register_removal YES +EOT + +cat > hardware.cmd <<- EOT + setMode -bs + setCable -port svf -file "hardware.svf" + addDevice -p 1 -file "hardware.jed" + Erase -p 1 + Program -p 1 -e -v + Verify -p 1 + quit +EOT + +cat > erasecpld.cmd <<- EOT + setMode -bs + setCable -port svf -file "erasecpld.svf" + addDevice -p 1 -file "hardware.jed" + Erase -p 1 + quit +EOT + +set -ex + +mkdir -p xilinx/projnav.tmp/ +xst -ifn "hardware.xst" -ofn "hardware.syr" + +mkdir -p xilinx/_ngo/ +ngdbuild -dd xilinx/_ngo -uc hardware.ucf -p xc2c256-VQ100-6 hardware.ngc hardware.ngd + +cpldfit -p xc2c256-7-VQ100 -ofmt verilog -optimize density -htmlrpt -loc on -slew fast -init low \ + -inputs 32 -pterms 28 -unused keeper -terminate keeper -iostd LVCMOS18 hardware.ngd + +hprep6 -i hardware + +impact -batch hardware.cmd +sed -i '\,^// Date:, d;' hardware.svf + +impact -batch erasecpld.cmd +sed -i '\,^// Date:, d;' erasecpld.svf + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/hardware.ucf b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/hardware.ucf new file mode 100644 index 0000000..cbafb9a --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/hardware.ucf @@ -0,0 +1,59 @@ +# +# xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB +# +# Copyright (C) 2011 RIEGL Research ForschungsGmbH +# Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +NET "clk" LOC = "23" | IOSTANDARD = LVCMOS33; + +NET "tck" LOC = "66" | IOSTANDARD = LVCMOS33; +NET "tms" LOC = "67" | IOSTANDARD = LVCMOS33; +NET "tdi" LOC = "68" | IOSTANDARD = LVCMOS33; +NET "tdo" LOC = "27" | IOSTANDARD = LVCMOS33; +NET "init" LOC = "28" | IOSTANDARD = LVCMOS33; +NET "init_b" LOC = "70" | IOSTANDARD = LVCMOS33; + +NET "fd0" LOC = "32" | IOSTANDARD = LVCMOS33; +NET "fd1" LOC = "33" | IOSTANDARD = LVCMOS33; +NET "fd2" LOC = "34" | IOSTANDARD = LVCMOS33; +NET "fd3" LOC = "35" | IOSTANDARD = LVCMOS33; +NET "fd4" LOC = "36" | IOSTANDARD = LVCMOS33; +NET "fd5" LOC = "37" | IOSTANDARD = LVCMOS33; +NET "fd6" LOC = "39" | IOSTANDARD = LVCMOS33; +NET "fd7" LOC = "40" | IOSTANDARD = LVCMOS33; + +NET "ctl0" LOC = "22" | IOSTANDARD = LVCMOS33; +NET "ctl1" LOC = "53" | IOSTANDARD = LVCMOS33; +NET "ctl2" LOC = "54" | IOSTANDARD = LVCMOS33; + +NET "pc0" LOC = "14" | IOSTANDARD = LVCMOS33; +NET "pc1" LOC = "15" | IOSTANDARD = LVCMOS33; +NET "pc2" LOC = "16" | IOSTANDARD = LVCMOS33; +NET "pc3" LOC = "17" | IOSTANDARD = LVCMOS33; +NET "pc4" LOC = "18" | IOSTANDARD = LVCMOS33; +NET "pc5" LOC = "19" | IOSTANDARD = LVCMOS33; +NET "pc6" LOC = "29" | IOSTANDARD = LVCMOS33; +NET "pc7" LOC = "30" | IOSTANDARD = LVCMOS33; + +NET "pd0" LOC = "41" | IOSTANDARD = LVCMOS33; +NET "pd1" LOC = "42" | IOSTANDARD = LVCMOS33; +NET "pd2" LOC = "43" | IOSTANDARD = LVCMOS33; +NET "pd3" LOC = "44" | IOSTANDARD = LVCMOS33; +NET "pd4" LOC = "46" | IOSTANDARD = LVCMOS33; +NET "pd5" LOC = "49" | IOSTANDARD = LVCMOS33; +NET "pd6" LOC = "50" | IOSTANDARD = LVCMOS33; +NET "pd7" LOC = "52" | IOSTANDARD = LVCMOS33; + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/hardware.v b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/hardware.v new file mode 100644 index 0000000..09713fb --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/hardware.v @@ -0,0 +1,141 @@ +/* + * xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB + * + * Copyright (C) 2011 RIEGL Research ForschungsGmbH + * Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +module top( + clk, + tck, tms, tdi, tdo, init, init_b, + fd0, fd1, fd2, fd3, fd4, fd5, fd6, fd7, + ctl0, ctl1, ctl2, + pc0, pc1, pc2, pc3, pc4, pc5, pc6, pc7, + pd0, pd1, pd2, pd3, pd4, pd5, pd6, pd7 +); + +// General Signal +input clk; + +// JTAG Interface +output tck, tms, tdi, init; +input tdo, init_b; + +// GPIF Interface +input fd0, fd1, fd2, fd3, fd4, fd5, fd6, fd7; +input ctl0, ctl1, ctl2; + +// The entire PC and PD regs for various flags +output pc0, pc1, pc2, pc3, pc4, pc5, pc6, pc7; +input pd0, pd1, pd2, pd3, pd4, pd5, pd6, pd7; + +// simple direct i/o mappings +assign pc3 = tdo; +assign pc1 = init_b; +assign init = pd2; + +// checksum +wire chksum_rst, chksum_clk; +reg [23:0] chksum_buffer; +always @(posedge chksum_clk) begin + if (chksum_rst) + chksum_buffer <= + `include "hardware_cksum_vl.inc" + ; + else + chksum_buffer <= chksum_buffer << 1; +end +assign chksum_rst = pd0; +assign chksum_clk = pd1; +assign pc2 = chksum_buffer[23]; + +// main engine +reg [3:0] sync; +reg [7:0] lastbyte; +reg go_exec0, go_exec1, set_sync, err; +reg reg_tck, reg_tms, reg_tdi, reg_tdo, reg_tdo_en; +always @(negedge clk) begin + go_exec0 <= 0; + go_exec1 <= 0; + if (!ctl0) begin + lastbyte <= { fd7, fd6, fd5, fd4, fd3, fd2, fd1, fd0 }; + go_exec0 <= 1; + end + if (!ctl1) begin + lastbyte <= lastbyte >> 4; + go_exec0 <= 1; + end + if (!ctl2) begin + go_exec1 <= 1; + end + if (go_exec0) begin + reg_tdo_en <= 0; + if (set_sync) begin + sync <= lastbyte[3:0]; + set_sync <= 0; + end else + if (lastbyte[3:0] == 0) begin + /* NOP */ + end else + if (lastbyte[3:0] == 1) begin + /* Set sync signal in next insn */ + set_sync <= 1; + end else + if (lastbyte[3:1] == 1) begin + /* reserved */ + end else + if (lastbyte[3:2] == 1) begin + /* transaction with or without TDO check */ + reg_tck <= 0; + reg_tdo <= 'bx; + reg_tms <= lastbyte[1]; + reg_tdi <= lastbyte[0]; + end else + if (lastbyte[3] == 1) begin + /* transaction with TDO check */ + reg_tck <= 0; + reg_tdo <= lastbyte[2]; + reg_tms <= lastbyte[1]; + reg_tdi <= lastbyte[0]; + reg_tdo_en <= 1; + end + end + if (go_exec1) begin + reg_tck <= 1; + if (reg_tdo_en && tdo != reg_tdo) + err <= 1; + end + if (pd3) begin + /* RESET ERR */ + err <= 0; + end + if (pd4) begin + /* RESET SYNC */ + set_sync <= 0; + sync <= 0; + end +end +assign tck = reg_tck; +assign tms = reg_tms; +assign tdi = reg_tdi; +assign pc7 = sync[3]; +assign pc6 = sync[2]; +assign pc5 = sync[1]; +assign pc4 = sync[0]; +assign pc0 = err; + +endmodule + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/prep_erasecpld.svf b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/prep_erasecpld.svf new file mode 100644 index 0000000..d3c1e7f --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/prep_erasecpld.svf @@ -0,0 +1,82 @@ +// Created using Xilinx Cse Software [ISE - 13.1] + +TRST OFF; +ENDIR IDLE; +ENDDR IDLE; +STATE RESET; +STATE IDLE; +FREQUENCY 1E6 HZ; +//Operation: Erase -p 0 +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) SMASK (ff) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f6d4f093) MASK (0fff8fff) ; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +//Boundary Scan Chain Contents +//Position 1: xc2c256 +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) ; +SDR 32 TDI (00000000) TDO (f6d4f093) ; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +// Loading devices with 'enable' or 'bypass' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +// Loading devices with 'erase' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (ed) SMASK (ff) ; +ENDIR IDLE; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRPAUSE; +RUNTEST DRPAUSE 20 TCK; +STATE IDLE; +RUNTEST IDLE 100000 TCK; +STATE DRPAUSE; +RUNTEST DRPAUSE 5000 TCK; +RUNTEST IDLE 1 TCK; +// Loading devices with 'init' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IDLE; +RUNTEST IDLE 20 TCK; +// Loading devices with 'init' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRUPDATE IDLE; +RUNTEST 800 TCK; +ENDIR IDLE; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (c0) ; +RUNTEST 100 TCK; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (c0) ; +RUNTEST 100 TCK; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +SIR 8 TDI (ff) ; +SDR 1 TDI (00) SMASK (01) ; diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/prep_firmware.ihx b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/prep_firmware.ihx new file mode 100644 index 0000000..3ba6f24 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/prep_firmware.ihx @@ -0,0 +1,323 @@ +:03000000020008F3 +:0300610002000397 +:05000300120B4A80FE13 +:0D00640090E60174EAF090E6F574FFF0906C +:0E0071000C58E49390E6F3F0900C59E4939051 +:0D007F00E6C3F0900C5AE49390E6C1F090B7 +:0E008C000C5BE49390E6C2F0900C5DE4939060 +:0E009A00E6C0F0900C5EE49390E6F4F075AFD3 +:0800A800077AB47B0B8B9A7AF6 +:0A00B000B47B0B7B008A9B759DE476 +:0500BA00759E007A00B4 +:0300BF00BA800004 +:0E00C200500C90E67BE0FB90E67CF00A80EFAD +:0E00D00090E67174FFF075B4FF90E672E0FAEE +:0E00DE004480F043B68000000090E6C4E4F0D9 +:0E00EC0000000090E6C5E4F0900C34E4939020 +:0D00FA00E6C6F0900C35E49390E6C7F09058 +:0E0107000C36E49390E6C8F0900C37E4939029 +:0D011500E6C9F0900C38E49390E6CAF09033 +:0E0122000C39E49390E6CBF0900C3AE4939005 +:0D013000E6CCF0900C3BE49390E6CDF0227D +:0E013D000000000000000000000000000000B4 +:0B014B00000000000000000000002287 +:04015600AA82AB834B +:09015A008A048B051ABAFF011B8F +:08016300EC4D60297C007D00D9 +:0E016B00C3EC94E8ED940350E6C002C003C05C +:0E01790004C00512013DD005D004D003D00211 +:0901870074032CFCE43DFD80DB57 +:01019000224C +:0D01910090E6007410F090E61274A8F09053 +:0D019E00E613E4F090E614F090E615F09002 +:0E01AB00E6047480F000000090E6047402F098 +:0D01B90000000090E6047404F000000090C7 +:0E01C600E6047406F000000090E6047408F0F1 +:0E01D40000000090E604E4F000000090E61841 +:0E01E200E0FA54FEF000000090E619E0FA5436 +:0E01F000FEF000000090E61AE0FA54FEF00067 +:0E01FE00000090E61BE0FA54FEF00000001234 +:0E020C00006490E670E4F075B22B75800090EF +:0E021A00E671E4F075B40075A00075B51F75AF +:0E022800B000D28390006412015675B658756E +:04023600B1587A0041 +:03023A00BA1000F7 +:0E023D005013C00212013D53B1F712013DD023 +:07024B000243B1080A80E83C +:010252002289 +:0E025300C28390006412015690E6F574FFF02D +:0D02610000000090E6007402F00000009024 +:0E026E00E6017480F000000090E61274A2F029 +:0D027C0000000090E61374A0F00000009058 +:0E028900E61474A2F000000090E61574A0F0D8 +:0D02970000000090E6187405F000000090D3 +:0E02A400E6197405F000000090E61A7405F0EB +:0D02B20000000090E61B7405F000000090B5 +:0E02BF00E6047480F000000090E6047402F083 +:0D02CD0000000090E6047404F000000090B2 +:0E02DA00E6047406F000000090E6047408F0DC +:0E02E80000000090E604E4F0000000758000C5 +:0E02F60075A00075B00075B10075B20075B44A +:0D0304000075B50075B60090E670E4F0904D +:0A031100E671F075B2017A007B007E +:0E031B00C3EA9403EB9400504BD2807CB87D73 +:010329000BC8 +:0E032A00C002C003C004C00512013DD005D0C2 +:0A03380004D003D0021CBCFF011D1D +:0A034200EC4D70E4C2817CB87D0B25 +:0E034C00C002C003C004C00512013DD005D0A0 +:0A035A0004D003D0021CBCFF011DFB +:0B036400EC4D70E40ABA00AF0B80AC57 +:03036F0075B20064 +:0E03720090E6A1E0FA20E10990E68D74FFF01C +:030380000000007A +:0E03830090E6A3E0FA20E2E790E69174FFF026 +:0503910000000080DC0B +:0C039600AA82740F5A900C5F93F582222B +:0503A200AA82BA300040 +:0D03A700400BEA24C64006EA24D0F582226D +:0303B400BA61002B +:0D03B700400BEA2499400674A92AF5822221 +:0303C400BA41003B +:0D03C700400BEA24B9400674C92AF58222D1 +:0403D400758200220C +:0E03D800E582FA700B90E6C0744EF000000053 +:0203E60080197C +:0E03E80090E6C0744AF000000090E440EAF095 +:0B03F60000000090E442EAF00000006C +:0E04010090E7C0744FF000000090E7C1744B0C +:0E040F00F000000090E7C27420F000000090A2 +:0E041D00E7C37428F000000090E7C47454F0A8 +:0E042B00000000EAC4540FFB740F5BF582C0A2 +:0E04390002120396AB82D00290E7C5EBF000F2 +:0D0447000000740F5AF582120396AA8290ED +:0E045400E7C6EAF000000090E7C77429F00048 +:0C046200000090E68F7408F000000022FB +:05046E0075B1587A0091 +:03047300BA1000BC +:0E0476005013C00212013D53B1F712013DD0E8 +:070484000243B1080A80E801 +:0C048B0090E6C0744EF000000075080000 +:0E049700C285C281C28075B01900000043B05A +:0904A5000200000075B0007A00AD +:0A04AE00EA2470FBE4340CFC7D80AE +:0E04B8008B828C838DF0120B94FB6012EA2471 +:0E04C600C0F582E434E7F583EBF00000000A95 +:0204D40080D8CE +:0904D60090E68FEAF0000000221C +:0E04DF00AA8290E7C0744FF000000090E7C1C1 +:0E04ED00744BF000000090E7C27420F0000095 +:0E04FB000090E7C37428F000000090E7C4747E +:0D05090057F00000008A82120396AA82902B +:0E051600E7C5EAF000000090E7C67429F00087 +:0C052400000090E68F7407F00000002239 +:0E053000AA8290E7C07454F000000090E7C16A +:0E053E007449F000000090E7C2744DF0000018 +:0E054C000090E7C37445F000000090E7C4740F +:0E055A004FF000000090E7C57455F00000005F +:0E05680090E7C67454F000000090E7C77421BD +:0E057600F000000090E7C87420F00000009034 +:0E058400E7C97453F000000090E7CA743DF020 +:0D059200000000E5A0C4540FF582C0021265 +:0E059F000396AB82D00290E7CBEBF000000099 +:0E05AD0090E7CC7420F000000090E7CD742899 +:0E05BB00F000000090E7CE7457F00000008AB8 +:0E05C90082120396AA8290E7CFEAF0000000AB +:0E05D70090E7D07429F000000090E68F7411B8 +:0505E500F000000022FF +:0605EA00AA827B007C00E8 +:0D05F000C3EB94E8EC9403504C7D007E00BA +:0E05FD00C3ED94E8EE94035038E5A0C4540F0B +:09060B00FFB502058A820204DF3A +:0E06140090E6A3E0FF20E21BD280C002C003EC +:0E062200C004C005C006120B08D006D005D0DB +:0706300004D003D002C280D8 +:070637000DBD00C20E80BFE3 +:07063E000BBB00AE0C80AB0A +:050645008A820205306D +:0E064A00D2B0C2B1000000D2B1000000C2B0B8 +:04065800C2B17A00B1 +:03065C00BA0600DB +:06065F0050477B007C0007 +:03066500BC0400D2 +:0E0668005017EB2BFDA2A2E433FE4DFB000069 +:0B06760000D2B1000000C2B10C80E413 +:0E068100EA24C0FCE434E7FD8B82C002C00412 +:0E068F00C005120396AB82D005D004D0028CB9 +:0B069D00828D83EBF00000000A80B4A7 +:0E06A80090E7C67420F000000090E7C77428A9 +:0E06B600F000000090E7C87443F000000090D0 +:0E06C400E7C97429F000000090E68F740AF078 +:0406D2000000002202 +:0E06D600E582FA24FF928590E7C0744FF00091 +:0E06E400000090E7C1744BF000000090E7C2E8 +:0E06F2007420F000000090E7C37428F00000B0 +:0E0700000090E7C47442F0000000EA60047A42 +:03070E0031800235 +:020711007A303C +:0E07130090E7C5EAF000000090E7C67429F0F8 +:0D07210000000090E68F7407F00000002239 +:0E072E00E582FA24FF92B290E7C0744FF0000B +:0E073C00000090E7C1744BF000000090E7C28F +:0E074A007420F000000090E7C37428F0000057 +:0E0758000090E7C47449F0000000EA60047AE3 +:03076600318002DD +:020769007A30E4 +:0E076B0090E7C5EAF000000090E7C67429F0A0 +:0D07790000000090E68F7407F000000022E1 +:0707860030A0047A3180026B +:02078D007A30C0 +:0C078F0090E7C0EAF0000000E5086004FC +:04079B007A3180022D +:02079F007A30AE +:0E07A10090E7C1EAF000000030A1047A318038 +:0107AF000247 +:0207B0007A309D +:0E07B20090E7C2EAF00000003082047A318045 +:0107C0000236 +:0207C1007A308C +:0E07C30090E7C3EAF000000030A3047A318012 +:0107D1000225 +:0207D2007A307B +:0E07D40090E7C4EAF0000000E5B130E5047AD9 +:0307E20031800261 +:0207E5007A3068 +:0E07E70090E7C5EAF0000000E5A0C4540FF54D +:0E07F50082120396AA8290E7C6EAF000000086 +:0E08030090E7C77420F000000090E7C874284A +:0E081100F000000090E7C97453F00000009062 +:0E081F00E7CA7429F000000090E68F740BF019 +:0C082D0000000075080075B00800000015 +:0708390000000053B0F7229C +:0708400030A0047A318002B0 +:020847007A3005 +:0C08490090E7C0EAF0000000E508600441 +:040855007A31800272 +:020859007A30F3 +:0E085B0090E7C1EAF000000030A1047A31807D +:01086900028C +:02086A007A30E2 +:0E086C0090E7C2EAF00000003082047A31808A +:01087A00027B +:02087B007A30D1 +:0E087D0090E7C3EAF000000030A3047A318057 +:01088B00026A +:02088C007A30C0 +:0E088E0090E7C4EAF0000000E5B130E5047A1E +:03089C00318002A6 +:02089F007A30AD +:0E08A10090E7C5EAF0000000E5A0C4540FF592 +:0E08AF0082120396AA8290E7C6EAF0000000CB +:0E08BD0090E7C77420F000000090E7C8742890 +:0E08CB00F000000090E7C97450F000000090AB +:0E08D900E7CA7429F000000090E68F740BF05F +:0408E70000000022EB +:0A08EB00AA82E509600475090022E5 +:0408F500EA70012282 +:0708F900BA01047509012298 +:0E090000740C5AFBBB0428EA30E10543B11029 +:02090E00800364 +:0309100053B1EFF1 +:09091300EA30E00543B140800325 +:03091C0053B1BF15 +:0E091F0000000053B1F712013D43B108000083 +:02092D000022A6 +:0E092F0074085AFBBB0848EA30E10543B110DA +:02093D00800335 +:03093F0053B1EFC2 +:09094200EA30E00543B1408003F6 +:03094B0053B1BFE6 +:0E094E0000000053B1F7C00212013DD0024379 +:0D095C00B108000000530204E4BA000104D9 +:0B096900FA742055B1FBE4BB00010450 +:07097400FBEAB5030280035A +:03097B00750801FB +:01097E002256 +:07097F00AA827509007B014B +:0E098600C3EB9A502CEB2480F582E434E7F5A5 +:0E09940083E0FC740F5CF582C002C003C00457 +:0E09A2001208EBD004ECC4540FF5821208EBDF +:0709B000D003D0020B80CF41 +:0109B700221D +:0E09B80090E7C0744FF000000090E7C1744B50 +:0E09C600F000000090E7C27420F000000090E6 +:0E09D400E7C37428F000000090E7C47458F0E8 +:0D09E20000000090E7C57429F000000090AF +:0E09EF00E68F7406F000000090E68D74FFF0B5 +:0609FD000000000202539D +:0E0A030090E68DE0FA90E780E0FBBB542BBA42 +:0E0A1100032890E781E0F5821203A2E582C47B +:0E0A1F0054F0FC90E782E0F582C0041203A2BE +:0E0A2D00AD82D004ED4CF5821203D8020AFE11 +:0C0A3B00BB5209BA010612046E020AFE4A +:0D0A4700BB5712BA020F90E781E0F5821252 +:060A540003A21205EA02F4 +:020A5A000AFE92 +:0C0A5C00BB4309BA010612064A020AFE5A +:0E0A6800BB4215BA021290E781E0FCE4BC31FB +:020A7600010479 +:080A7800F5821206D6020AFE07 +:0E0A8000BB4914BA021190E781E0FCE4BC31DE +:020A8E00010461 +:070A9000F58212072E8067BA +:0B0A9700BB5308BA0105120786805C03 +:0B0AA200BB5008BA010512084080514B +:0A0AAD00BB4A078A8212097F8047C6 +:080AB700BB58051209B8803F8D +:0E0ABF0090E7C07445F000000090E7C174524B +:0E0ACD00F000000090E7C27452F000000090AC +:0E0ADB00E7C3744FF000000090E7C47452F0BF +:0D0AE90000000090E7C57421F000000090AF +:080AF600E68F7406F000000019 +:0A0AFE0090E68D74FFF00000002266 +:0E0B080090E690E0FB7A0090E691E0FC7D0024 +:0E0B16004202ED4203EA4B700A90E69174FF32 +:050B2400F000000022BA +:0E0B2900E5BB30E7FB90E690E090E6D0F09060 +:0D0B3700E691E090E6D1F090E691E4F090B8 +:060B4400E6D474FFF0226C +:0C0B4A0075080012019190E69174FFF014 +:0D0B560000000090E69174FFF00000009098 +:0E0B6300E69174FFF000000090E69174FFF040 +:030B710000000081 +:0E0B740090E6A1E0FA20E107D281120A03C246 +:010B820081F1 +:0E0B830090E6A3E0FA20E2E9D280120B08C24D +:030B91008080E081 +:0E0BB400010101010101010700000000000025 +:0E0BC2000000070707070707070700000000ED +:0E0BD0000000003F010101013F010107020486 +:0E0BDE000000010000000603050307070707DB +:0E0BEC00000000003600003FFE01FE3801014F +:0E0BFA000107000204010000000007060703C7 +:0E0C0800030303070000002D0000003F010160 +:0E0C1600013801010107020400010000000086 +:0E0C240006030503030303070000002D000074 +:020C3200003F81 +:0E0C34000000000000000000000000000000B2 +:0E0C42000000000000000000000000000000A4 +:080C500000000000000000009C +:070C5800E0000007EA4E0076 +:0E0C5F00303132333435363738394142434470 +:030C6D00454600F9 +:070C70004F4B202852290020 +:06003700E478FFF6D8FD9D +:080015007900E94400601B7A48 +:05001D0000900C777853 +:030022000075A0C6 +:0A00250020E493F2A308B8000205DE +:08002F00A0D9F4DAF275A0FF7C +:08003D007800E84400600A7934 +:030045000075A0A3 +:0600480020E4F309D8FCDE +:08004E007800E84400600C7921 +:0B00560000902000E4F0A3D8FCD9FAD1 +:03000800758109F6 +:0A000B00120BB0E58260030200034F +:0E0B940020F71430F6148883A88220F507E6B7 +:060BA200A8837583002208 +:030BA800E280F7F1 +:030BAB00E49322AE +:020BAE00E02243 +:040BB0007582002228 +:00000001FF diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/prep_hardware.svf b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/prep_hardware.svf new file mode 100644 index 0000000..3abddc0 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/prep_hardware.svf @@ -0,0 +1,2972 @@ +// Created using Xilinx Cse Software [ISE - 13.1] + +TRST OFF; +ENDIR IDLE; +ENDDR IDLE; +STATE RESET; +STATE IDLE; +FREQUENCY 1E6 HZ; +//Operation: Erase -p 0 +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) SMASK (ff) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f6d4f093) MASK (0fff8fff) ; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +//Boundary Scan Chain Contents +//Position 1: xc2c256 +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) ; +SDR 32 TDI (00000000) TDO (f6d4f093) ; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +// Loading devices with 'enable' or 'bypass' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +// Loading devices with 'erase' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (ed) SMASK (ff) ; +ENDIR IDLE; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRPAUSE; +RUNTEST DRPAUSE 20 TCK; +STATE IDLE; +RUNTEST IDLE 100000 TCK; +STATE DRPAUSE; +RUNTEST DRPAUSE 5000 TCK; +RUNTEST IDLE 1 TCK; +// Loading devices with 'init' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IDLE; +RUNTEST IDLE 20 TCK; +// Loading devices with 'init' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRUPDATE IDLE; +RUNTEST 800 TCK; +ENDIR IDLE; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (c0) ; +RUNTEST 100 TCK; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (c0) ; +RUNTEST 100 TCK; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +SIR 8 TDI (ff) ; +SDR 1 TDI (00) SMASK (01) ; +//Operation: Program -p 0 -e -v +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f6d4f093) MASK (0fff8fff) ; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +//Boundary Scan Chain Contents +//Position 1: xc2c256 +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) ; +SDR 32 TDI (00000000) TDO (f6d4f093) ; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +// Loading devices with 'enable' or 'bypass' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +// Loading devices with 'erase' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (ed) SMASK (ff) ; +ENDIR IDLE; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRPAUSE; +RUNTEST DRPAUSE 20 TCK; +STATE IDLE; +RUNTEST IDLE 100000 TCK; +STATE DRPAUSE; +RUNTEST DRPAUSE 5000 TCK; +RUNTEST IDLE 1 TCK; +// Loading devices with 'init' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IDLE; +RUNTEST IDLE 20 TCK; +// Loading devices with 'init' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRUPDATE IDLE; +RUNTEST 800 TCK; +ENDIR IDLE; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (c0) ; +RUNTEST 100 TCK; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (c0) ; +RUNTEST 100 TCK; +// Loading devices with 'enable' or 'bypass' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +// Programming. +// Loading devices with 'program' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (ea) ; +SDR 1371 TDI (000729ffffffffffffff3ffffffffffffffff9fffff9edfffffffffffffffffffffffffffffeffffffffffc3f81fffffffffffffffffffffffffffffffdfffff5fffffffffffffffffffffffffffffffffffffff554079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) SMASK (07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +ENDIR IDLE; +RUNTEST 10000 TCK; +SDR 1371 TDI (0407ffff5ffffff7fffffffffffffffffffff9fffffbefddffffffffff7fffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffffffdfffffdf7fffffffffffffffffffffffffffffffffffffffbff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (060167fdffffffffffff5ffffffffffffffffbfffffbfbffffffffffffffffffffffffffffffffffffffff9a967fffffffffffffffffffffffffffffffdfffffddffffffffffffffffffffffffffffffffffffffeff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (020728d37ffffffffffffffffffffffffffff9fffffbef7dffffffffffffffffffffdfffffffffffffffffc3f81fffffffffffffffffffffffffffffffdfffffffffdfdffffffffffffffffffffffffffffffffebfe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81e607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0307fffff4d535d354d7fffffffff7fffffff9fffefbff7dfffffffffffffffffdffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (070167bfffff7ffffffffffffffffffffffff9fffffbef7dffffffffffffffffffefffffffffffffffffff9b167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (050729bfffffffffffffffffdffbfffffffff9fffff9edffffffffffffffffffffffffffffffffffbfffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0107ffffff77fffffffffffffffffffffffff9fffffbef7dfffffffffffffffffffffffffffffbffffffffffbfffffffffffffffffffffffffffffffffdfffffffffdfdffffffffffffffffffffffffffffffffffafff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (018567ffffffffffff77fffffffffffffffff9fffff9edfffffffffffffffffffffffffffffffff7ffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0587292efffffffffffffffffffffffffffff9fffffbfb7dffffffffffffffbfffffffffffffffffffffffc3981fffffffffffffffffffffffffffffffdfffffdfdfffffffffffffffffffffffffffffffffffffcf2061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81e607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0787ffdffdfffffffffffffffffffffffffff9fffffbeffffffffffdfdfbffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffffffdfffffddffffffffffffffffffeffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (038167fffffffefffffffffffffffffffffff9fffef9dfffffffffffff7df7df7df7df7df7df7df7dfffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (028729fffffffffddffffffffffffffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0687ffffffffffffffdffffffffffffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (048167ffffffffffffff5ffffffbfffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (008601ffffffddfffffffffffffffffffffff9fffffbef7dffffffffffffffffffffffffffbfffffffffffc3981fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (00c7fff7fffffffffdfffffffffffffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffffbf3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (04c167ffedb36db6cdb7fffffffff7fffffbb9fffffdfdfffffffffffffffffffffffffff7ffffffffffff9b167fffffffffffffffffffffffffffffffdfffffdf7fffffffffffffffffffffffffffffffffffff6db9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (06c769fffffffffffffffffffffffffffffffdfffffdfdfffffffffffffffffffffffeffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff83ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (02c7fffffffff7fffffffffffffffffffffff9fafffdfdffffffffffffffefffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (03c1e7ffffffffff4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe7879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (07c769ffffffffd5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff83ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (05c7ffffffffebfffffd5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (01c1e7ffffd2bfffffffffffffffffffffffffffffffffe4ffffffffffffffffffffffffffffffffffffff9e9e7ffffffffffffffffffffffffffffffffffffffffe2bfffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe7879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (014769ffcaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff83ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0547ffeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0741e7ffffffffffffd7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffab9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe7879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0347694bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeafe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff83ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0247fffffffffffffffffffffffffffffffffdffffffff7dfffffffffffffffeffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0641ffffffffffff7ffffffffffffffffffff9fffff9bdfffffffffffffffffffffffffdffffffffffffff9e9e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe7879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (044641ffffffffdffffffffffffffffffffffbebffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0047fffffffffffffffdfffffffffffffffffbffffebffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0061e7fffffdfffffffffffffffffffffffffbebffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (046601ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff819e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0667febffffffffffffffffffffffffffffffbffffebffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (026567fffffffffffffedffffffffffffffffafbffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98859ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (036729ffffdffffffffffffffffffffffffffbebffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0767ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (056367fffffffffff7fffffffffffffffffffbebffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (016729fff7fffffffffffffffffffffffffffbebffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe521e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (01e7fffffffffffffffffffffffffffffffffdfffffddffffffffffffffffffffffffffffffffffffffbffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (05e167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (07e729ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (03e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (02e167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (06e729ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe521e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (04e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (00e167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9b167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (00a781fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f80abaffffffffffffffffffffffffffffbffffebfffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (04a3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffbfffffffffbfffffbfbffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff77ffffffffffffffff +fffffffffffffffffffffffeffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (06a167fffffffffffffffff7fffffffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167d7fffffffffffffffffffffffffffffbfffffffffbfbffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (02a781fffffffffffffffffffefffffffffffbffffffffbbfffffffffffffffffffffffffffffffffffffe07f816deffffffffffffffffffffffffffffbfffffbeffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (03a3fffffffffffffffffbefbeffeffefffffbfffffbbfffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffbfffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff7dfffffffffffffffd +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (07a167fffffffffffffffbfffffffffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167fdfffffffffffffffffffffffffffffbfffffbefffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffff7fffff7dffffffffffffffff +ffffffffffffffffffffffefe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (05a781fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81ffd7fffffffffffffffffffffffffffbfffffffffbfbfffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffff7fffff7dffffffffffffffff +effeffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (01a3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (012167ffffffffffffffffffdffffffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167ff7ffffffffffffffffffffffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffff7fffff77fffffffffffffffffffffffffffffffffffffeffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (052781ffffffffffffffffffffffeffffffffbffffffffbbfffffffffffffffffffffffffffffffffffffe07f813dbffffffffffffffffffffffffffffbfffffbfbfffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0723ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ff7ffffffffffffffffffffffffffffffbfffffbefffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff7dffffffffffffffff +fffffffffffffffffffffffbffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (032167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (022781fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07929fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0623ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (042167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a063ffffffffffffffffffff7ffffffffffafbffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (002781fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07929fffbfffffffffffffffffffffffffffbffffebfffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0033ffffffffffffffffffffffffffff7ffffbfffffbfbffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (043167ff7ffffffffffffffffffffffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a063ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0637c1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1ffffffffffffffffffffffffdffffffbfffffbeffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff83ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0233ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0331e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe7879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (07374ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff83ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0537ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ff53afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0133e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe7879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (01b74ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff83ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (05b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffdffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (07b5e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7fffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffff6e7879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (03b74ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff83ff07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (02b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (06b5e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe7879ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (04b74ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f981fffffffffffffffffffffff7fffffffbfbbffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff959e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (00b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffff0effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8fe) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (00f3e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e467ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffde059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (04f781fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0798ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (06f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (02f167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a263ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (03f70ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07981fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff959e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (07f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffff0effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (05f367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a467ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffde059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (01f781fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff959e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0173ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffff0effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (057167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a07bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffde059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (07770ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0377ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (027567ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (067781fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff81fe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0473ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (007167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffe6859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe) ; +RUNTEST 10000 TCK; +SDR 1371 TDI (0457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe) ; +RUNTEST 10000 TCK; +// Loading devices with 'init' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IDLE; +RUNTEST IDLE 20 TCK; +// Loading devices with 'init' or 'bypass' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRUPDATE IDLE; +RUNTEST 800 TCK; +ENDIR IDLE; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (c0) ; +RUNTEST 100 TCK; +// Loading devices with 'conld' or 'bypass' instruction. +SIR 8 TDI (c0) ; +RUNTEST 100 TCK; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'enable' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +//Loading device with 'enable' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +// Verification. +// Loading device with a 'verify' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (ee) ; +ENDDR DRPAUSE; +SDR 7 TDI (00) SMASK (7f) ; +ENDIR IDLE; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729ffffffffffffff3fffffff +fffffffff9fffff9edfffffffffffffffffffffffffffffeffffffffffc3f81fffffffffffffffffffffffffffffffdfffff5fffffffffffffffffffffffffffffffffffffff554079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (40) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffff5ffffff7ffffffffffff +fffffffff9fffffbefddffffffffff7fffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffffffdfffffdf7fffffffffffffffffffffffffffffffffffffffbff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (60) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167fdffffffffffff5fffffff +fffffffffbfffffbfbffffffffffffffffffffffffffffffffffffffff9a967fffffffffffffffffffffffffffffffdfffffddffffffffffffffffffffffffffffffffffffffeff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (20) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0728d37fffffffffffffffffff +fffffffff9fffffbef7dffffffffffffffffffffdfffffffffffffffffc3f81fffffffffffffffffffffffffffffffdfffffffffdfdffffffffffffffffffffffffffffffffebfe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e607ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (30) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07fffff4d535d354d7ffffffff +f7fffffff9fffefbff7dfffffffffffffffffdffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (70) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167bfffff7fffffffffffffff +fffffffff9fffffbef7dffffffffffffffffffefffffffffffffffffff9b167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (50) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729bfffffffffffffffffdffb +fffffffff9fffff9edffffffffffffffffffffffffffffffffffbfffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (10) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffff77ffffffffffffffff +fffffffff9fffffbef7dfffffffffffffffffffffffffffffbffffffffffbfffffffffffffffffffffffffffffffffdfffffffffdfdffffffffffffffffffffffffffffffffffafff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (18) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0567ffffffffffff77ffffffff +fffffffff9fffff9edfffffffffffffffffffffffffffffffff7ffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (58) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07292effffffffffffffffffff +fffffffff9fffffbfb7dffffffffffffffbfffffffffffffffffffffffc3981fffffffffffffffffffffffffffffffdfffffdfdfffffffffffffffffffffffffffffffffffffcf2061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e607ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (78) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffdffdffffffffffffffffff +fffffffff9fffffbeffffffffffdfdfbffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffffffdfffffddffffffffffffffffffeffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (38) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167fffffffeffffffffffffff +fffffffff9fffef9dfffffffffffff7df7df7df7df7df7df7df7dfffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (28) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729fffffffffddfffffffffff +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (68) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffdfffffffff +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (48) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffff5ffffffb +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (08) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0601ffffffddffffffffffffff +fffffffff9fffffbef7dffffffffffffffffffffffffffbfffffffffffc3981fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07fff7fffffffffdffffffffff +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffffbf3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffedb36db6cdb7ffffffff +f7fffffbb9fffffdfdfffffffffffffffffffffffffff7ffffffffffff9b167fffffffffffffffffffffffffffffffdfffffdf7fffffffffffffffffffffffffffffffffffff6db9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0769ffffffffffffffffffffff +fffffffffdfffffdfdfffffffffffffffffffffffeffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd86ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07fffffffff7ffffffffffffff +fffffffff9fafffdfdffffffffffffffefffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7ffffffffff4affffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0769ffffffffd5ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffebfffffd5fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7ffffd2bfffffffffffffff +ffffffffffffffffffe4ffffffffffffffffffffffffffffffffffffff9e9e7ffffffffffffffffffffffffffffffffffffffffe2bfffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe0000000000001f6000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe0000000000001fc000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (14) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0769ffcaffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe0000000000000f6000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe0000000000001f0000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (54) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffeeffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (74) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7ffffffffffffd7ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffab9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (34) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07694bffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeafe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (24) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +fffffffffdffffffff7dfffffffffffffffeffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (64) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01ffffffffffff7fffffffffff +fffffffff9fffff9bdfffffffffffffffffffffffffdffffffffffffff9e9e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (44) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0641ffffffffdfffffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff67ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (04) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07fffffffffffffffdffffffff +fffffffffbffffebffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (06) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7fffffdffffffffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e79fff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (46) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0601ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff819e07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (66) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07febfffffffffffffffffffff +fffffffffbffffebffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (26) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0567fffffffffffffedfffffff +fffffffffafbffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (36) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729ffffdfffffffffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (76) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (56) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0367fffffffffff7ffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (16) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729fff7ffffffffffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe521e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +fffffffffdfffffddffffffffffffffffffffffffffffffffffffffbffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe521e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9b167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f80abaffffffffffffffffffffffffffffbffffebfffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffbfffffffffbfffffbfbffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff77fffffffffffffffffffffffffffffffffffffffeffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167fffffffffffffffff7ffff +fffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167d7fffffffffffffffffffffffffffffbfffffffffbfbffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781fffffffffffffffffffeff +fffffffffbffffffffbbfffffffffffffffffffffffffffffffffffffe07f816deffffffffffffffffffffffffffffbfffffbeffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03fffffffffffffffffbefbeff +effefffffbfffffbbfffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffbfffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff7dfffffffffffffffdffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167fffffffffffffffbffffff +fffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167fdfffffffffffffffffffffffffffffbfffffbefffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffff7fffff7dffffffffffffffffffffffffffffffffffffffefe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81ffd7fffffffffffffffffffffffffffbfffffffffbfbfffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffff7fffff7dffffffffffffffffeffeffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (12) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffdfff +fffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167ff7ffffffffffffffffffffffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffff7fffff77fffffffffffffffffffffffffffffffffffffeffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (52) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +effffffffbffffffffbbfffffffffffffffffffffffffffffffffffffe07f813dbffffffffffffffffffffffffffffbfffffbfbfffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (72) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ff7ffffffffffffffffffffffffffffffbfffffbefffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff7dfffffffffffffffffffffffffffffffffffffffbffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (32) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (22) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07929fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (62) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (42) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a063ffffffffffffffffffff7ffffffffffafbffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (02) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07929fffbfffffffffffffffffffffffffffbffffebfffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (03) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffff7ffffbfffffbfbffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (43) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ff7fffffffffffffffffff +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a063ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (63) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07c1ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1ffffffffffffffffffffffffdffffffbfffffbeffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd86ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (23) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (33) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (73) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (074fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (53) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ff53afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (13) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (074fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (05e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7fffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6e7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (074fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (05e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (074fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f981fffffffffffffffffffffff7fffffffbfbbffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff959e07ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08) MASK (09bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0efffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8fe) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e467ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde059fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe79ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0798ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a263ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (070fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07981fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff959e07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0efffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0367ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a467ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde059fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff959e07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (17) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0efffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (57) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a07bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde059fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (77) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (070fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (37) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (27) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0567ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (67) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (47) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (07) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0967ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a659ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe69) MASK (07fdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +eff9ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfe) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (05) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) MASK (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (45) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +// masking lower UES bits. +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) MASK (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) ; +RUNTEST 100 TCK; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IDLE; +RUNTEST IDLE 20 TCK; +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRUPDATE IDLE; +RUNTEST 800 TCK; +ENDIR IDLE; +//Loading device with 'conld' instruction. +SIR 8 TDI (c0) ; +RUNTEST IDLE 100 TCK; +//Loading device with 'enable' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +// Setting Done bit ... +// Loading device with a 'program' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (ea) ; +SDR 1371 TDI (005ffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +ENDIR IDLE; +RUNTEST 10000 TCK; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IDLE; +RUNTEST IDLE 20 TCK; +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRUPDATE IDLE; +RUNTEST 800 TCK; +ENDIR IDLE; +//Loading device with 'conld' instruction. +SIR 8 TDI (c0) ; +RUNTEST IDLE 100 TCK; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f6d4f093) MASK (0fff8fff) ; +//Check for Done bit. +SIR 8 TDI (ff) TDO (05) MASK (07) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +SIR 8 TDI (ff) ; +SDR 1 TDI (00) SMASK (01) ; +//Operation: Verify -p 0 +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f6d4f093) MASK (0fff8fff) ; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +//Boundary Scan Chain Contents +//Position 1: xc2c256 +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) ; +SDR 32 TDI (00000000) TDO (f6d4f093) ; +//Check for Read/Write Protect. +SIR 8 TDI (ff) TDO (01) MASK (03) ; +//Loading device with 'bypass' instruction. +SIR 8 TDI (ff) ; +//Loading device with 'enable' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +//Loading device with 'enable' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +//Loading device with 'enable' instruction. +SIR 8 TDI (e8) ; +RUNTEST 200 TCK; +// Verification. +// Loading device with a 'verify' instruction. +ENDIR IRPAUSE; +SIR 8 TDI (ee) ; +ENDDR DRPAUSE; +SDR 7 TDI (00) SMASK (7f) ; +ENDIR IDLE; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729ffffffffffffff3fffffff +fffffffff9fffff9edfffffffffffffffffffffffffffffeffffffffffc3f81fffffffffffffffffffffffffffffffdfffff5fffffffffffffffffffffffffffffffffffffff554079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (40) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffff5ffffff7ffffffffffff +fffffffff9fffffbefddffffffffff7fffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffffffdfffffdf7fffffffffffffffffffffffffffffffffffffffbff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (60) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167fdffffffffffff5fffffff +fffffffffbfffffbfbffffffffffffffffffffffffffffffffffffffff9a967fffffffffffffffffffffffffffffffdfffffddffffffffffffffffffffffffffffffffffffffeff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (20) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0728d37fffffffffffffffffff +fffffffff9fffffbef7dffffffffffffffffffffdfffffffffffffffffc3f81fffffffffffffffffffffffffffffffdfffffffffdfdffffffffffffffffffffffffffffffffebfe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e607ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (30) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07fffff4d535d354d7ffffffff +f7fffffff9fffefbff7dfffffffffffffffffdffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (70) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167bfffff7fffffffffffffff +fffffffff9fffffbef7dffffffffffffffffffefffffffffffffffffff9b167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (50) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729bfffffffffffffffffdffb +fffffffff9fffff9edffffffffffffffffffffffffffffffffffbfffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (10) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffff77ffffffffffffffff +fffffffff9fffffbef7dfffffffffffffffffffffffffffffbffffffffffbfffffffffffffffffffffffffffffffffdfffffffffdfdffffffffffffffffffffffffffffffffffafff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (18) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0567ffffffffffff77ffffffff +fffffffff9fffff9edfffffffffffffffffffffffffffffffff7ffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (58) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07292effffffffffffffffffff +fffffffff9fffffbfb7dffffffffffffffbfffffffffffffffffffffffc3981fffffffffffffffffffffffffffffffdfffffdfdfffffffffffffffffffffffffffffffffffffcf2061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e607ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (78) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffdffdffffffffffffffffff +fffffffff9fffffbeffffffffffdfdfbffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffffffdfffffddffffffffffffffffffeffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (38) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167fffffffeffffffffffffff +fffffffff9fffef9dfffffffffffff7df7df7df7df7df7df7df7dfffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (28) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729fffffffffddfffffffffff +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (68) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffdfffffffff +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (48) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffff5ffffffb +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (08) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0601ffffffddffffffffffffff +fffffffff9fffffbef7dffffffffffffffffffffffffffbfffffffffffc3981fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07fff7fffffffffdffffffffff +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffffbf3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffedb36db6cdb7ffffffff +f7fffffbb9fffffdfdfffffffffffffffffffffffffff7ffffffffffff9b167fffffffffffffffffffffffffffffffdfffffdf7fffffffffffffffffffffffffffffffffffff6db9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0769ffffffffffffffffffffff +fffffffffdfffffdfdfffffffffffffffffffffffeffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd86ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07fffffffff7ffffffffffffff +fffffffff9fafffdfdffffffffffffffefffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7ffffffffff4affffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0769ffffffffd5ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffebfffffd5fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1c) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7ffffd2bfffffffffffffff +ffffffffffffffffffe4ffffffffffffffffffffffffffffffffffffff9e9e7ffffffffffffffffffffffffffffffffffffffffe2bfffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe0000000000001f6000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe0000000000001fc000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (14) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0769ffcaffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe0000000000000f6000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe0000000000001f0000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (54) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffeeffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (74) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7ffffffffffffd7ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffab9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (34) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07694bffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbfc1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeafe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (24) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +fffffffffdffffffff7dfffffffffffffffeffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (64) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01ffffffffffff7fffffffffff +fffffffff9fffff9bdfffffffffffffffffffffffffdffffffffffffff9e9e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (44) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0641ffffffffdfffffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffffcbfc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff67ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (04) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07fffffffffffffffdffffffff +fffffffffbffffebffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (06) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7fffffdffffffffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffff9f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e79fff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (46) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0601ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff819e07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (66) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07febfffffffffffffffffffff +fffffffffbffffebffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (26) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0567fffffffffffffedfffffff +fffffffffafbffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98859ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (36) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729ffffdfffffffffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (76) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (56) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0367fffffffffff7ffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (16) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729fff7ffffffffffffffffff +fffffffffbebffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe521e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +fffffffffdfffffddffffffffffffffffffffffffffffffffffffffbffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a967ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0729ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe521e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc38ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0e) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9b167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f80abaffffffffffffffffffffffffffffbffffebfffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffbfffffffffbfffffbfbffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff77fffffffffffffffffffffffffffffffffffffffeffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167fffffffffffffffff7ffff +fffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167d7fffffffffffffffffffffffffffffbfffffffffbfbffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781fffffffffffffffffffeff +fffffffffbffffffffbbfffffffffffffffffffffffffffffffffffffe07f816deffffffffffffffffffffffffffffbfffffbeffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03fffffffffffffffffbefbeff +effefffffbfffffbbfffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffbfffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff7dfffffffffffffffdffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167fffffffffffffffbffffff +fffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167fdfffffffffffffffffffffffffffffbfffffbefffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffff7fffff7dffffffffffffffffffffffffffffffffffffffefe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81ffd7fffffffffffffffffffffffffffbfffffffffbfbfffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffff7fffff7dffffffffffffffffeffeffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1a) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (12) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffdfff +fffffffffbffffffffbbffffffffffffffffffffffffffffffffffffff9a167ff7ffffffffffffffffffffffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffff7fffff77fffffffffffffffffffffffffffffffffffffeffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (52) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +effffffffbffffffffbbfffffffffffffffffffffffffffffffffffffe07f813dbffffffffffffffffffffffffffffbfffffbfbfffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (72) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ff7ffffffffffffffffffffffffffffffbfffffbefffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffff7fffff7dfffffffffffffffffffffffffffffffffffffffbffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (32) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (22) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07929fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (62) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (42) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a063ffffffffffffffffffff7ffffffffffafbffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (02) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07929fffbfffffffffffffffffffffffffffbffffebfffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (03) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffff7ffffbfffffbfbffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (43) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ff7fffffffffffffffffff +fffffffffbfffffbbfffffffffffffffffffffffffffffffffffffffff9a063ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (63) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07c1ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1ffffffffffffffffffffffffdffffffbfffffbeffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd86ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (23) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (33) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (01e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (73) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (074fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (53) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ff53afffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (13) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (074fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (05e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7fffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6e7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffff8000000000000000000000007fffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (074fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffc1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f9f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ff07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83e) MASK (09bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffffff61bffffffffffffffffffffffffffffe000000000000000000000001fffffffffffffffffffffffffff +ff666fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd86fffffffffffffffffffffffffffff8000000000000000000000007ffffffffffffffffffffffffffffd9) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e03fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80fc07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (05e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e079ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7879fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78) MASK (0e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe79e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +e79f9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e79e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e7) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (074fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0f981fffffffffffffffffffffff7fffffffbfbbffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff959e07ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08) MASK (09bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0b) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0efffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8fe) MASK (0f01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (0f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9e467ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde059fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0e79fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe79ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (4f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0798ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (6f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (2f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a263ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (3f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (070fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07981fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff959e07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (7f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0efffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (5f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0367ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a467ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde059fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (1f) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079a9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff959e07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (17) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0efffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (57) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0167ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a07bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde059fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (77) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (070fffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (37) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (07ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (27) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0567ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a059ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe68) MASK (0ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (67) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0781ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07f81fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe079e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fe07ffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81e) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (47) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (03ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) MASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (07) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0967ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a659ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6859fffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe69) MASK (07fdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +eff9ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfe) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (05) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) MASK (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) ; +RUNTEST 100 TCK; +ENDDR DRPAUSE; +SDR 7 TDI (45) SMASK (7f) ; +RUNTEST DRPAUSE 20 TCK; +ENDDR IDLE; +RUNTEST IDLE 100 TCK; +// masking lower UES bits. +SDR 1364 TDI (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) SMASK (0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) TDO (0fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) MASK (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) ; +RUNTEST 100 TCK; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IDLE; +RUNTEST IDLE 20 TCK; +ENDIR IRPAUSE; +SIR 8 TDI (f0) SMASK (ff) ; +STATE IREXIT2 IRUPDATE DRSELECT DRCAPTURE DREXIT1 DRUPDATE IDLE; +RUNTEST 800 TCK; +ENDIR IDLE; +//Loading device with 'conld' instruction. +SIR 8 TDI (c0) ; +RUNTEST IDLE 100 TCK; +//Loading device with 'idcode' instruction. +SIR 8 TDI (01) ; +SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f6d4f093) MASK (0fff8fff) ; +//Check for Done bit. +SIR 8 TDI (ff) TDO (05) MASK (07) ; +//Loading device with 'conld' instruction. +SIR 8 TDI (c0) ; +RUNTEST IDLE 100 TCK; +//Loading device with 'bypass' instruction. +SIR 8 TDI (ff) ; +TIR 0 ; +HIR 0 ; +HDR 0 ; +TDR 0 ; +TIR 0 ; +HIR 0 ; +TDR 0 ; +HDR 0 ; +SIR 8 TDI (ff) ; +SDR 1 TDI (00) SMASK (01) ; diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/reset-probe-impact.sh b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/reset-probe-impact.sh new file mode 100644 index 0000000..b5804a4 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/reset-probe-impact.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# +# Reset probe to Xilinx Firmware using 'impact' +# (see README file for details) +# + +ISEDIR="/opt/Xilinx/11.3/ISE" + +finddev() { + for id in 03fd:0009 03fd:000d 03fd:000f 04b4:8613; do lsusb -d $id; done | \ + head -n 1 | sed -r 's,^Bus ([0-9]+) Device ([0-9]+).*,/dev/bus/usb/\1/\2,' +} + +v() { + echo "+ $*" + "$@" +} + +batchfile=$( mktemp ) +trap 'rm "$batchfile"' 0 + +cat << EOT > "$batchfile" +setMode -bs +setCable -port usb21 +# identify +quit +EOT + +v fxload -t fx2 -D $(finddev) -I "$ISEDIR"/bin/lin/xusb_emb.hex + +for x in 0 1 2 3 4 5 6 7; do + lsusb -d "03fd:0008" && break + echo "Waiting for probe to re-enumerate.." + sleep 1 +done + +echo -n "Waiting for probe to settle.." +for x in 1 2 3 4 5; do echo -n .; sleep 1; done; echo + +v "$ISEDIR"/bin/lin/impact -batch "$batchfile" + diff --git a/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/xsvftool-xpcu.c b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/xsvftool-xpcu.c new file mode 100644 index 0000000..b76e2d8 --- /dev/null +++ b/fpga/xilinx/programmer/dependencies/libxsvf/xsvftool-xpcu.src/xsvftool-xpcu.c @@ -0,0 +1,720 @@ +/* + * xsvftool-xpcu - An (X)SVF player for the Xilinx Platform Cable USB + * + * Copyright (C) 2011 RIEGL Research ForschungsGmbH + * Copyright (C) 2011 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#define _GNU_SOURCE + +#include <stdio.h> +#include <string.h> +#include <errno.h> +#include <sys/time.h> + +#include "libxsvf.h" +#include "fx2usb-interface.h" + +#include "filedata.h" + +char *correct_cksum = +#include "hardware_cksum_c.inc" +; + +#define UNUSED __attribute__((unused)) + +/**** BEGIN: http://svn.clifford.at/tools/trunk/examples/check.h ****/ + +// This is to not confuse the VIM syntax highlighting +#define CHECK_VAL_OPEN ( +#define CHECK_VAL_CLOSE ) + +#define CHECK(result, check) \ + CHECK_VAL_OPEN{ \ + typeof(result) _R = (result); \ + if (!(_R check)) { \ + fprintf(stderr, "Error from '%s' (%d %s) in %s:%d.\n", \ + #result, (int)_R, #check, __FILE__, __LINE__); \ + fprintf(stderr, "ERRNO(%d): %s\n", errno, strerror(errno)); \ + abort(); \ + } \ + _R; \ + }CHECK_VAL_CLOSE + +#define CHECK_PTR(result, check) \ + CHECK_VAL_OPEN{ \ + typeof(result) _R = (result); \ + if (!(_R check)) { \ + fprintf(stderr, "Error from '%s' (%p %s) in %s:%d.\n", \ + #result, (void*)_R, #check, __FILE__, __LINE__); \ + fprintf(stderr, "ERRNO(%d): %s\n", errno, strerror(errno)); \ + abort(); \ + } \ + _R; \ + }CHECK_VAL_CLOSE + +/**** END: http://svn.clifford.at/tools/trunk/examples/check.h ****/ + +FILE *file_fp = NULL; + +int usb_vendor_id = 0; +int usb_device_id = 0; +char *usb_device_file = NULL; + +int mode_frequency = 6000; +int mode_async_check = 0; +int mode_internal_cpld = 0; +int mode_8bit_per_cycle = 0; +int mode_hex_rmask = 0; + +usb_dev_handle *fx2usb; +int internal_jtag_scan_test = 0; + +int sync_count; +int tck_cycle_count; +int blocks_without_sync; + +int tdo_check_period_100; +int tdo_check_thisperiod; + +int rmask_bits = 0, rmask_bytes = 0; +unsigned char *rmask_data = NULL; + +/* This constant are used to determine when the error status should be synced. + * Syncinc to often would slow things down, syncinc not often enough might cause + * errors beeing reported by far to late. + */ +#define FORCE_SYNC_AFTER_N_BLOCKS 100 +#define FORCE_SYNC_MIN_PERIOD 10000 +#define FORCE_SYNC_INIT_PERIOD 100000 + +// send larger junks to USB stack and let the kernel split it up +// #define MAXBUF() (mode_internal_cpld ? 50 : mode_8bit_per_cycle ? 500 : 1000) +#define MAXBUF() (mode_internal_cpld ? 50 : 4000) + +unsigned char fx2usb_retbuf[65]; +int fx2usb_retlen; + +unsigned char commandbuf[4096]; +int commandbuf_len; + +static void shrink_8bit_to_4bit() +{ + int i; + if ((commandbuf_len & 1) != 0) + commandbuf[commandbuf_len++] = 0; + for (i = 0; i<commandbuf_len; i++) { + if ((i & 1) == 0) + commandbuf[i >> 1] = (commandbuf[i >> 1] & 0xf0) | commandbuf[i]; + else + commandbuf[i >> 1] = (commandbuf[i >> 1] & 0x0f) | (commandbuf[i] << 4); + } + commandbuf_len = commandbuf_len >> 1; +} + +void fx2usb_command(const char *cmd) +{ + // fprintf(stderr, "Sending FX2USB Command: '%s' => ", cmd); + fx2usb_send_chunk(fx2usb, 1, cmd, strlen(cmd)); + fx2usb_recv_chunk(fx2usb, 1, fx2usb_retbuf, sizeof(fx2usb_retbuf)-1, &fx2usb_retlen); + fx2usb_retbuf[fx2usb_retlen] = 0; + // fprintf(stderr, "'%s'\n", fx2usb_retbuf); + + if (strchr((char*)fx2usb_retbuf, '!') != NULL) { + fprintf(stderr, "Internal ERROR in communication with probe: '%s' => '%s'\n", cmd, fx2usb_retbuf); + abort(); + } +} + +static int xpcu_set_frequency(struct libxsvf_host *h UNUSED, int v); +static int xpcu_pulse_tck(struct libxsvf_host *h UNUSED, int tms, int tdi, int tdo, int rmask UNUSED, int sync); + +static int xpcu_setup(struct libxsvf_host *h UNUSED) +{ + sync_count = 0; + blocks_without_sync = 0; + commandbuf_len = 0; + fx2usb_command("R"); + + if (!mode_internal_cpld) { + fx2usb_command("B1"); + } + + if (mode_frequency) + xpcu_set_frequency(h, mode_frequency * 1000); + + tdo_check_period_100 = FORCE_SYNC_INIT_PERIOD * 100; + tdo_check_thisperiod = 0; + + return 0; +} + +static int xpcu_shutdown(struct libxsvf_host *h UNUSED) +{ + int rc = 0; + if (commandbuf_len != 0) { + fprintf(stderr, "Found %d unsynced commands in command buffer on interface shutdown!\n", commandbuf_len); + commandbuf_len = 0; + rc = -1; + } + fx2usb_command("S"); + if (fx2usb_retbuf[mode_internal_cpld ? 1 : 0] == '1') { + fprintf(stderr, "Found pending errors in interface status on shutdown!\n"); + rc = -1; + } + fx2usb_command("R"); + return rc; +} + +static void xpcu_udelay(struct libxsvf_host *h UNUSED, long usecs, int tms, long num_tck) +{ + struct timeval tv1, tv2; + long rem_usecs; + + if (mode_internal_cpld) + { + if (!mode_8bit_per_cycle) + shrink_8bit_to_4bit(); + unsigned char tempbuf[64]; + tempbuf[0] = 'J'; + memcpy(tempbuf+1, commandbuf, commandbuf_len); + fx2usb_send_chunk(fx2usb, 1, tempbuf, commandbuf_len + 1); + + fx2usb_command("P"); + commandbuf_len = 0; + } + else + { + sync_count = 0x08 | ((sync_count+1) & 0x0f); + commandbuf[commandbuf_len++] = 0x01; + commandbuf[commandbuf_len++] = sync_count; + if (!mode_8bit_per_cycle) + shrink_8bit_to_4bit(); + fx2usb_send_chunk(fx2usb, 2, commandbuf, commandbuf_len); + commandbuf_len = 0; + + char cmd[3]; + snprintf(cmd, 3, "W%x", sync_count); + fx2usb_command(cmd); + } + + gettimeofday(&tv1, NULL); + + while (num_tck > 0) { + xpcu_pulse_tck(h, tms, 0, -1, 0, 0); + num_tck--; + } + + if (mode_internal_cpld) + { + if (!mode_8bit_per_cycle) + shrink_8bit_to_4bit(); + unsigned char tempbuf[64]; + tempbuf[0] = 'J'; + memcpy(tempbuf+1, commandbuf, commandbuf_len); + fx2usb_send_chunk(fx2usb, 1, tempbuf, commandbuf_len + 1); + + fx2usb_command("P"); + commandbuf_len = 0; + } + else + { + sync_count = 0x08 | ((sync_count+1) & 0x0f); + commandbuf[commandbuf_len++] = 0x01; + commandbuf[commandbuf_len++] = sync_count; + if (!mode_8bit_per_cycle) + shrink_8bit_to_4bit(); + fx2usb_send_chunk(fx2usb, 2, commandbuf, commandbuf_len); + commandbuf_len = 0; + + char cmd[3]; + snprintf(cmd, 3, "W%x", sync_count); + fx2usb_command(cmd); + } + + while (usecs > 0) { + gettimeofday(&tv2, NULL); + rem_usecs = usecs - ((tv2.tv_sec - tv1.tv_sec)*1000000 + (tv2.tv_usec - tv1.tv_usec)); + if (rem_usecs <= 0) + break; + usleep(rem_usecs); + } +} + +static int xpcu_getbyte(struct libxsvf_host *h UNUSED) +{ + return fgetc(file_fp); +} + +static int xpcu_pulse_tck(struct libxsvf_host *h UNUSED, int tms, int tdi, int tdo, int rmask, int sync) +{ + int dummy_sync = 0; + + tck_cycle_count++; + + if (tdo >= 0) { + commandbuf[commandbuf_len++] = 0x08 | ((tdo & 1) << 2) | ((tms & 1) << 1) | ((tdi & 1) << 0); + tdo_check_period_100 = (tdo_check_period_100 * 99) / 100 + tdo_check_thisperiod; + tdo_check_thisperiod = 0; + } else { + commandbuf[commandbuf_len++] = 0x04 | ((tms & 1) << 1) | ((tdi & 1) << 0); + } + + if (mode_async_check == 0) + { + if (!sync && tdo >= 0 && (blocks_without_sync > FORCE_SYNC_AFTER_N_BLOCKS || tdo_check_period_100 > FORCE_SYNC_MIN_PERIOD)) + sync = 1; + if (!sync && !mode_internal_cpld && blocks_without_sync > 10*FORCE_SYNC_AFTER_N_BLOCKS && commandbuf_len >= (MAXBUF() - 10)) + dummy_sync = 1; + } + + if (rmask && !sync) + dummy_sync = 1; + + if ((dummy_sync || sync) && !mode_internal_cpld) { + sync_count = 0x08 | ((sync_count+1) & 0x0f); + commandbuf[commandbuf_len++] = 0x01; + commandbuf[commandbuf_len++] = sync_count; + } + + if (commandbuf_len >= (MAXBUF() - 4) || sync || dummy_sync) { + if (!mode_8bit_per_cycle) + shrink_8bit_to_4bit(); + if (mode_internal_cpld) { + unsigned char tempbuf[64]; + tempbuf[0] = 'J'; + memcpy(tempbuf+1, commandbuf, commandbuf_len); + fx2usb_send_chunk(fx2usb, 1, tempbuf, commandbuf_len + 1); + } else { + fx2usb_send_chunk(fx2usb, 2, commandbuf, commandbuf_len); + } + blocks_without_sync++; + commandbuf_len = 0; + } + + if ((sync || dummy_sync) && !mode_internal_cpld) { + char cmd[3]; + snprintf(cmd, 3, "W%x", sync_count); + fx2usb_command(cmd); + } + + if (sync) { + fx2usb_command("S"); + blocks_without_sync = 0; + } + + if (dummy_sync) { + fx2usb_command("P"); + blocks_without_sync = 0; + } + + if (rmask) { + if (rmask_bits >= 8*rmask_bytes) { + int old_rmask_bytes = rmask_bytes; + rmask_bytes = rmask_bytes ? rmask_bytes*2 : 64; + rmask_data = realloc(rmask_data, rmask_bytes); + memset(rmask_data + old_rmask_bytes, 0, rmask_bytes-old_rmask_bytes); + } + if (fx2usb_retbuf[mode_internal_cpld ? 5 : 4] == '1') + rmask_data[rmask_bits/8] |= 1 << (rmask_bits%8); + rmask_bits++; + } + + if (sync) { + if (fx2usb_retbuf[mode_internal_cpld ? 1 : 0] == '1') + return -1; + return fx2usb_retbuf[mode_internal_cpld ? 5 : 4] == '1'; + } + return tdo < 0 ? 1 : tdo; +} + +static int xpcu_sync(struct libxsvf_host *h UNUSED) +{ + if (!mode_internal_cpld) { + sync_count = 0x08 | ((sync_count+1) & 0x0f); + commandbuf[commandbuf_len++] = 0x01; + commandbuf[commandbuf_len++] = sync_count; + } + + if (!mode_8bit_per_cycle) + shrink_8bit_to_4bit(); + if (mode_internal_cpld) { + unsigned char tempbuf[64]; + tempbuf[0] = 'J'; + memcpy(tempbuf+1, commandbuf, commandbuf_len); + fx2usb_send_chunk(fx2usb, 1, tempbuf, commandbuf_len + 1); + } else { + fx2usb_send_chunk(fx2usb, 2, commandbuf, commandbuf_len); + } + commandbuf_len = 0; + + if (!mode_internal_cpld) { + char cmd[3]; + snprintf(cmd, 3, "W%x", sync_count); + fx2usb_command(cmd); + } + + fx2usb_command("S"); + blocks_without_sync = 0; + if (fx2usb_retbuf[mode_internal_cpld ? 1 : 0] == '1') + return -1; + + return 0; +} + +static int xpcu_set_frequency(struct libxsvf_host *h UNUSED, int v) +{ + int freq = 24000000, delay = 0; + + if (mode_internal_cpld) + return 0; + + if (!mode_internal_cpld) { + sync_count = 0x08 | ((sync_count+1) & 0x0f); + commandbuf[commandbuf_len++] = 0x01; + commandbuf[commandbuf_len++] = sync_count; + } + + if (!mode_8bit_per_cycle) + shrink_8bit_to_4bit(); + if (mode_internal_cpld) { + unsigned char tempbuf[64]; + tempbuf[0] = 'J'; + memcpy(tempbuf+1, commandbuf, commandbuf_len); + fx2usb_send_chunk(fx2usb, 1, tempbuf, commandbuf_len + 1); + } else { + fx2usb_send_chunk(fx2usb, 2, commandbuf, commandbuf_len); + } + commandbuf_len = 0; + + if (!mode_internal_cpld) { + char cmd[3]; + snprintf(cmd, 3, "W%x", sync_count); + fx2usb_command(cmd); + } + + while (delay < 250 && v < freq) { + delay++; + freq = 48000000 / (2*delay + 2); + } + + if (v < freq) + fprintf(stderr, "Requested FREQUENCY %dHz is to low! Using minimum value %dHz instead.\n", v, freq); + else if (v-freq > 10) + fprintf(stderr, "Requested FREQUENCY is %dHz. Using %dHz (24MHz/%d) instead.\n", v, freq, delay+1); + + char cmd[4]; + snprintf(cmd, 4, "T%02x", delay); + fx2usb_command(cmd); + + mode_8bit_per_cycle = delay != 0; + + if (!mode_internal_cpld) + { + sync_count = 0x08 | ((sync_count+1) & 0x0f); + commandbuf[commandbuf_len++] = 0x01; + commandbuf[commandbuf_len++] = sync_count; + if (!mode_8bit_per_cycle) + shrink_8bit_to_4bit(); + fx2usb_send_chunk(fx2usb, 2, commandbuf, commandbuf_len); + commandbuf_len = 0; + + char cmd[3]; + snprintf(cmd, 3, "W%x", sync_count); + fx2usb_command(cmd); + } + + return 0; +} + +static void xpcu_report_tapstate(struct libxsvf_host *h UNUSED) +{ + // fprintf(stderr, "[%s]\n", libxsvf_state2str(h->tap_state)); +} + +static void xpcu_report_device(struct libxsvf_host *h UNUSED, unsigned long idcode) +{ + if (internal_jtag_scan_test != 0) { + // CPLD should be: idcode=0x16d4a093, revision=0x1, part=0x6d4a, manufactor=0x049 + if (((idcode >> 12) & 0xffff) == 0x6d4a && ((idcode >> 1) & 0x7ff) == 0x049) + internal_jtag_scan_test += 1; + else + internal_jtag_scan_test += 2; + } else { + printf("idcode=0x%08lx, revision=0x%01lx, part=0x%04lx, manufactor=0x%03lx\n", idcode, + (idcode >> 28) & 0xf, (idcode >> 12) & 0xffff, (idcode >> 1) & 0x7ff); + } +} + +static void xpcu_report_status(struct libxsvf_host *h UNUSED, const char *message UNUSED) +{ + // fprintf(stderr, "[STATUS] %s\n", message); +} + +static void xpcu_report_error(struct libxsvf_host *h UNUSED, const char *file, int line, const char *message) +{ + fprintf(stderr, "[%s:%d] %s\n", file, line, message); +} + +static void *xpcu_realloc(struct libxsvf_host *h UNUSED, void *ptr, int size, enum libxsvf_mem which UNUSED) +{ + return realloc(ptr, size); +} + +static struct libxsvf_host h = { + .udelay = xpcu_udelay, + .setup = xpcu_setup, + .shutdown = xpcu_shutdown, + .getbyte = xpcu_getbyte, + .pulse_tck = xpcu_pulse_tck, + .sync = xpcu_sync, + .set_frequency = xpcu_set_frequency, + .report_tapstate = xpcu_report_tapstate, + .report_device = xpcu_report_device, + .report_status = xpcu_report_status, + .report_error = xpcu_report_error, + .realloc = xpcu_realloc +}; + +const char *progname; + +static void help() +{ + fprintf(stderr, "\n"); + fprintf(stderr, "A JTAG SVF/XSVF Player based on libxsvf for the Xilinx Platform Cable USB\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "xsvftool-xpcu, part of Lib(X)SVF (http://www.clifford.at/libxsvf/).\n"); + fprintf(stderr, "Copyright (C) 2011 RIEGL Research ForschungsGmbH\n"); + fprintf(stderr, "Copyright (C) 2011 Clifford Wolf <clifford@clifford.at>\n"); + fprintf(stderr, "Lib(X)SVF is free software licensed under the ISC license.\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "Usage: %s [ -L | -B ] [ -d <vendor>:<device> | -D <device_file> ] [ -f kHz ] [ -A ] [ -P ]\n", progname); + fprintf(stderr, " %*s { -E | -p | -s svf-file | -x xsvf-file | -c } ...\n", (int)strlen(progname), ""); + fprintf(stderr, "\n"); + fprintf(stderr, " -L, -B\n"); + fprintf(stderr, " Print RMASK bits as hex value (little or big endian)\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -d <vendor>:<device>\n"); + fprintf(stderr, " Open the device with this USB vendor and device ID.\n"); + fprintf(stderr, " (default: 03fd:000d and 04b4:8613\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -D <device_file>\n"); + fprintf(stderr, " Open this USB device (usually something like /dev/bus/usb/012/345)\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -f kHz\n"); + fprintf(stderr, " Run probe with the specified frequency (default=6000, max=24000)\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -A\n"); + fprintf(stderr, " Use full asynchonous error checking\n"); + fprintf(stderr, " (very fast but error reporting might be delayed)\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -P\n"); + fprintf(stderr, " Use CPLD on probe as target device\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -p\n"); + fprintf(stderr, " Force (re-)programming the CPLD on the probe\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -E\n"); + fprintf(stderr, " Erase the CPLD on the probe\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -s svf-file\n"); + fprintf(stderr, " Play the specified SVF file\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -x xsvf-file\n"); + fprintf(stderr, " Play the specified XSVF file\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -c\n"); + fprintf(stderr, " List devices in JTAG chain\n"); + fprintf(stderr, "\n"); + exit(1); +} + +int main(int argc, char **argv) +{ + int rc = 0; + int gotaction = 0; + int opt, i, j; + + int done_initialization = 0; + + progname = argc >= 1 ? argv[0] : "xsvftool-xpcu"; + while ((opt = getopt(argc, argv, "LBd:D:f:APpEs:x:c")) != -1) + { + if (!done_initialization && (opt == 'p' || opt == 'E' || opt == 's' || opt == 'x' || opt == 'c')) + { + usb_init(); + usb_find_busses(); + usb_find_devices(); + + fx2usb = fx2usb_open(usb_vendor_id, usb_device_id, usb_device_file); + if (fx2usb == NULL) { + fprintf(stderr, "Failed to find or open USB device!\n"); + exit(1); + } + CHECK(fx2usb_claim(fx2usb), == 0); + + FILE *ihexf = CHECK_PTR(fmemopen(firmware_ihx, sizeof(firmware_ihx), "r"), != NULL); + CHECK(fx2usb_upload_ihex(fx2usb, ihexf), == 0); + CHECK(fclose(ihexf), == 0); + + i = mode_internal_cpld; + mode_internal_cpld = 1; + internal_jtag_scan_test = 1; + libxsvf_play(&h, LIBXSVF_MODE_SCAN); + + if (internal_jtag_scan_test != 2) { + fprintf(stderr, "Probe (device %s on bus %s) failed internal JTAG scan test!\n", + usb_device(fx2usb)->filename, usb_device(fx2usb)->bus->dirname); + exit(1); + } + mode_internal_cpld = i; + internal_jtag_scan_test = 0; + + fprintf(stderr, "Connected to probe (device %s on bus %s) and passed internal JTAG scan test.\n", + usb_device(fx2usb)->filename, usb_device(fx2usb)->bus->dirname); + + if (opt != 'p' && opt != 'E' && !mode_internal_cpld) { + fx2usb_command("C"); + if (memcmp(correct_cksum, fx2usb_retbuf, 6)) { + fprintf(stderr, "Mismatch in CPLD checksum (is=%.6s, should=%s): reprogramming CPLD on probe..\n", + fx2usb_retbuf, correct_cksum); + i = mode_internal_cpld; + mode_internal_cpld = 1; + file_fp = CHECK_PTR(fmemopen(hardware_svf, sizeof(hardware_svf), "r"), != NULL); + libxsvf_play(&h, LIBXSVF_MODE_SVF); + mode_internal_cpld = i; + fclose(file_fp); + } + } + + done_initialization = 1; + } + + switch (opt) + { + case 'L': + mode_hex_rmask = 1; + break; + case 'B': + mode_hex_rmask = 2; + break; + case 'd': + if (usb_vendor_id || usb_device_id || usb_device_file || fx2usb) + help(); + if (sscanf(optarg, "%x:%x", &usb_vendor_id, &usb_device_id) != 2) + help(); + break; + case 'D': + if (usb_vendor_id || usb_device_id || usb_device_file || fx2usb) + help(); + usb_device_file = strdup(optarg); + break; + case 'f': + mode_frequency = atoi(optarg); + break; + case 'P': + mode_internal_cpld = 1; + break; + case 'A': + mode_async_check = 1; + break; + case 'p': + case 'E': + gotaction = 1; + i = mode_internal_cpld; + mode_internal_cpld = 1; + if (opt == 'p') { + file_fp = CHECK_PTR(fmemopen(hardware_svf, sizeof(hardware_svf), "r"), != NULL); + fprintf(stderr, "(Re-)programming CPLD on the probe..\n"); + } else { + file_fp = CHECK_PTR(fmemopen(erasecpld_svf, sizeof(erasecpld_svf), "r"), != NULL); + fprintf(stderr, "Erasing CPLD on the probe..\n"); + } + libxsvf_play(&h, LIBXSVF_MODE_SVF); + mode_internal_cpld = i; + fclose(file_fp); + break; + case 'x': + case 's': + gotaction = 1; + if (!strcmp(optarg, "-")) + file_fp = stdin; + else + file_fp = fopen(optarg, "rb"); + if (file_fp == NULL) { + fprintf(stderr, "Can't open %s file `%s': %s\n", opt == 's' ? "SVF" : "XSVF", optarg, strerror(errno)); + rc = 1; + break; + } + fprintf(stderr, "Playing %s file `%s'..\n", opt == 's' ? "SVF" : "XSVF", optarg); + if (libxsvf_play(&h, opt == 's' ? LIBXSVF_MODE_SVF : LIBXSVF_MODE_XSVF) < 0) { + fprintf(stderr, "Error while playing %s file `%s'.\n", opt == 's' ? "SVF" : "XSVF", optarg); + rc = 1; + } + if (strcmp(optarg, "-")) + fclose(file_fp); + break; + case 'c': + gotaction = 1; + fprintf(stderr, "Scanning JTAG chain..\n"); + if (libxsvf_play(&h, LIBXSVF_MODE_SCAN) < 0) { + fprintf(stderr, "Error while scanning JTAG chain.\n"); + rc = 1; + } + break; + default: + help(); + break; + } + } + + if (!gotaction) + help(); + + if (rmask_bits > 0) { + fprintf(stderr, "Total number of rmask bits acquired: %d\n", rmask_bits); + if (mode_hex_rmask) { + printf("0x"); + for (i = 0; i < rmask_bits; i += 4) { + int val = 0; + for (j = i; j < i + 4; j++) { + int pos = mode_hex_rmask > 1 ? j : rmask_bits - j - 1; + val = (val << 1) | (rmask_data[pos/8] & (1 << (pos%8)) ? 1 : 0); + } + printf("%x", val); + } + } else { + for (i = 0; i < rmask_bits; i++) + putchar((rmask_data[i / 8] & (1 << (i % 8))) != 0 ? '1' : '0'); + } + putchar('\n'); + } + + if (done_initialization) { + fx2usb_command("X"); + fx2usb_release(fx2usb); + usb_close(fx2usb); + } + + fprintf(stderr, "Total number of JTAG clock cycles performed: %d\n", tck_cycle_count); + if (rc == 0) + fprintf(stderr, "READY.\n"); + else + fprintf(stderr, "TERMINATED WITH ERROR(s)! (see above)\n"); + + return rc; +} + diff --git a/fpga/xilinx/programmer/svfplayer/xsvf-rpi.c b/fpga/xilinx/programmer/svfplayer/xsvf-rpi.c new file mode 100644 index 0000000..c46e4d7 --- /dev/null +++ b/fpga/xilinx/programmer/svfplayer/xsvf-rpi.c @@ -0,0 +1,542 @@ +/* + * Lib(X)SVF - A library for implementing SVF and XSVF JTAG players + * + * Copyright (C) 2009 RIEGL Research ForschungsGmbH + * Copyright (C) 2009 Clifford Wolf <clifford@clifford.at> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "libxsvf.h" + +#include <sys/time.h> +#include <unistd.h> +#include <string.h> +#include <stdlib.h> +#include <stdio.h> +#include <errno.h> + + +/** BEGIN: Low-Level I/O Implementation **/ + +#ifdef XSVFTOOL_RLMS_VLINE + +// Simple example with MPC8349E GPIO pins +// (RIEGL LMS V-Line motherboard) + +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/mman.h> +#include <fcntl.h> + +#define IO_PORT_ADDR 0xE0000C00 + +struct io_layout { + unsigned long tdi:1; + unsigned long tdo:1; + unsigned long tms:1; + unsigned long tck:1; + unsigned long reserved:28; +}; + +static volatile struct io_layout *io_direction; +static volatile struct io_layout *io_opendrain; +static volatile struct io_layout *io_data; + +static void io_setup(void) +{ + /* open /dev/mem device file */ + int fd = open("/dev/mem", O_RDWR); + if (fd < 0) { + fprintf(stderr, "Can't open /dev/mem: %s\n", strerror(errno)); + exit(1); + } + + /* calculate offsets to page and within page */ + unsigned long psize = getpagesize(); + unsigned long off_inpage = IO_PORT_ADDR % psize; + unsigned long off_topage = IO_PORT_ADDR - off_inpage; + unsigned long mapsize = off_inpage + sizeof(struct io_layout) * 3; + + /* map it into logical memory */ + void *io_addr_map = mmap(0, mapsize, PROT_WRITE, MAP_SHARED, fd, off_topage); + if (io_addr_map == MAP_FAILED) { + fprintf(stderr, "Can't map physical memory: %s\n", strerror(errno)); + exit(1); + } + + /* calculate register addresses */ + io_direction = io_addr_map + off_inpage; + io_opendrain = io_addr_map + off_inpage + 4; + io_data = io_addr_map + off_inpage + 8; + + /* set direction reg */ + io_direction->tms = 1; + io_direction->tck = 1; + io_direction->tdo = 0; + io_direction->tdi = 1; + + /* set open drain reg */ + io_opendrain->tms = 0; + io_opendrain->tck = 0; + io_opendrain->tdo = 0; + io_opendrain->tdi = 0; + +#ifdef HAVE_TRST + /* for boards with TRST, must be driven high */ + io_data->trst = 1; + io_direction->trst = 1; + io_opendrain->trst = 0; +#endif +} + +static void io_shutdown(void) +{ + /* set all to z-state */ + io_direction->tms = 0; + io_direction->tck = 0; + io_direction->tdo = 0; + io_direction->tdi = 0; + +#ifdef HAVE_TRST + /* for boards with TRST, assuming there is a pull-down resistor */ + io_direction->trst = 0; +#endif +} + +static void io_tms(int val) +{ + io_data->tms = val; +} + +static void io_tdi(int val) +{ + io_data->tdi = val; +} + +static void io_tck(int val) +{ + io_data->tck = val; + // usleep(1); +} + +static void io_sck(int val) +{ + /* not available */ +} + +static void io_trst(int val) +{ + /* not available */ +} + +static int io_tdo() +{ + return io_data->tdo ? 1 : 0; +} + +#else + +static void io_setup(void) +{ +} + +static void io_shutdown(void) +{ +} + +static void io_tms(int val) +{ +} + +static void io_tdi(int val) +{ +} + +static void io_tck(int val) +{ +} + +static void io_sck(int val) +{ +} + +static void io_trst(int val) +{ +} + +static int io_tdo() +{ + return -1; +} + +#endif + +/** END: Low-Level I/O Implementation **/ + + +struct udata_s { + FILE *f; + int verbose; + int clockcount; + int bitcount_tdi; + int bitcount_tdo; + int retval_i; + int retval[256]; +}; + +static int h_setup(struct libxsvf_host *h) +{ + struct udata_s *u = h->user_data; + if (u->verbose >= 2) { + fprintf(stderr, "[SETUP]\n"); + fflush(stderr); + } + io_setup(); + return 0; +} + +static int h_shutdown(struct libxsvf_host *h) +{ + struct udata_s *u = h->user_data; + if (u->verbose >= 2) { + fprintf(stderr, "[SHUTDOWN]\n"); + fflush(stderr); + } + io_shutdown(); + return 0; +} + +static void h_udelay(struct libxsvf_host *h, long usecs, int tms, long num_tck) +{ + struct udata_s *u = h->user_data; + if (u->verbose >= 3) { + fprintf(stderr, "[DELAY:%ld, TMS:%d, NUM_TCK:%ld]\n", usecs, tms, num_tck); + fflush(stderr); + } + if (num_tck > 0) { + struct timeval tv1, tv2; + gettimeofday(&tv1, NULL); + io_tms(tms); + while (num_tck > 0) { + io_tck(0); + io_tck(1); + num_tck--; + } + gettimeofday(&tv2, NULL); + if (tv2.tv_sec > tv1.tv_sec) { + usecs -= (1000000 - tv1.tv_usec) + (tv2.tv_sec - tv1.tv_sec - 1) * 1000000; + tv1.tv_usec = 0; + } + usecs -= tv2.tv_usec - tv1.tv_usec; + if (u->verbose >= 3) { + fprintf(stderr, "[DELAY_AFTER_TCK:%ld]\n", usecs > 0 ? usecs : 0); + fflush(stderr); + } + } + if (usecs > 0) { + usleep(usecs); + } +} + +static int h_getbyte(struct libxsvf_host *h) +{ + struct udata_s *u = h->user_data; + return fgetc(u->f); +} + +static int h_pulse_tck(struct libxsvf_host *h, int tms, int tdi, int tdo, int rmask, int sync) +{ + struct udata_s *u = h->user_data; + + io_tms(tms); + + if (tdi >= 0) { + u->bitcount_tdi++; + io_tdi(tdi); + } + + io_tck(0); + io_tck(1); + + int line_tdo = io_tdo(); + int rc = line_tdo >= 0 ? line_tdo : 0; + + if (rmask == 1 && u->retval_i < 256) + u->retval[u->retval_i++] = line_tdo; + + if (tdo >= 0 && line_tdo >= 0) { + u->bitcount_tdo++; + if (tdo != line_tdo) + rc = -1; + } + + if (u->verbose >= 4) { + fprintf(stderr, "[TMS:%d, TDI:%d, TDO_ARG:%d, TDO_LINE:%d, RMASK:%d, RC:%d]\n", tms, tdi, tdo, line_tdo, rmask, rc); + } + + u->clockcount++; + return rc; +} + +static void h_pulse_sck(struct libxsvf_host *h) +{ + struct udata_s *u = h->user_data; + if (u->verbose >= 4) { + fprintf(stderr, "[SCK]\n"); + } + io_sck(0); + io_sck(1); +} + +static void h_set_trst(struct libxsvf_host *h, int v) +{ + struct udata_s *u = h->user_data; + if (u->verbose >= 4) { + fprintf(stderr, "[TRST:%d]\n", v); + } + io_trst(v); +} + +static int h_set_frequency(struct libxsvf_host *h, int v) +{ + fprintf(stderr, "WARNING: Setting JTAG clock frequency to %d ignored!\n", v); + return 0; +} + +static void h_report_tapstate(struct libxsvf_host *h) +{ + struct udata_s *u = h->user_data; + if (u->verbose >= 3) { + fprintf(stderr, "[%s]\n", libxsvf_state2str(h->tap_state)); + } +} + +static void h_report_device(struct libxsvf_host *h, unsigned long idcode) +{ + // struct udata_s *u = h->user_data; + printf("idcode=0x%08lx, revision=0x%01lx, part=0x%04lx, manufactor=0x%03lx\n", idcode, + (idcode >> 28) & 0xf, (idcode >> 12) & 0xffff, (idcode >> 1) & 0x7ff); +} + +static void h_report_status(struct libxsvf_host *h, const char *message) +{ + struct udata_s *u = h->user_data; + if (u->verbose >= 2) { + fprintf(stderr, "[STATUS] %s\n", message); + } +} + +static void h_report_error(struct libxsvf_host *h, const char *file, int line, const char *message) +{ + fprintf(stderr, "[%s:%d] %s\n", file, line, message); +} + +static int realloc_maxsize[LIBXSVF_MEM_NUM]; + +static void *h_realloc(struct libxsvf_host *h, void *ptr, int size, enum libxsvf_mem which) +{ + struct udata_s *u = h->user_data; + if (size > realloc_maxsize[which]) + realloc_maxsize[which] = size; + if (u->verbose >= 3) { + fprintf(stderr, "[REALLOC:%s:%d]\n", libxsvf_mem2str(which), size); + } + return realloc(ptr, size); +} + +static struct udata_s u; + +static struct libxsvf_host h = { + .udelay = h_udelay, + .setup = h_setup, + .shutdown = h_shutdown, + .getbyte = h_getbyte, + .pulse_tck = h_pulse_tck, + .pulse_sck = h_pulse_sck, + .set_trst = h_set_trst, + .set_frequency = h_set_frequency, + .report_tapstate = h_report_tapstate, + .report_device = h_report_device, + .report_status = h_report_status, + .report_error = h_report_error, + .realloc = h_realloc, + .user_data = &u +}; + +const char *progname; + +static void copyleft() +{ + static int already_printed = 0; + if (already_printed) + return; + fprintf(stderr, "xsvftool-gpio, part of Lib(X)SVF (http://www.clifford.at/libxsvf/).\n"); + fprintf(stderr, "Copyright (C) 2009 RIEGL Research ForschungsGmbH\n"); + fprintf(stderr, "Copyright (C) 2009 Clifford Wolf <clifford@clifford.at>\n"); + fprintf(stderr, "Lib(X)SVF is free software licensed under the ISC license.\n"); + already_printed = 1; +} + +static void help() +{ + copyleft(); + fprintf(stderr, "\n"); + fprintf(stderr, "Usage: %s [ -r funcname ] [ -v ... ] [ -L | -B ] { -s svf-file | -x xsvf-file | -c } ...\n", progname); + fprintf(stderr, "\n"); + fprintf(stderr, " -r funcname\n"); + fprintf(stderr, " Dump C-code for pseudo-allocator based on example files\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -v, -vv, -vvv, -vvvv\n"); + fprintf(stderr, " Verbose, more verbose and even more verbose\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -L, -B\n"); + fprintf(stderr, " Print RMASK bits as hex value (little or big endian)\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -s svf-file\n"); + fprintf(stderr, " Play the specified SVF file\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -x xsvf-file\n"); + fprintf(stderr, " Play the specified XSVF file\n"); + fprintf(stderr, "\n"); + fprintf(stderr, " -c\n"); + fprintf(stderr, " List devices in JTAG chain\n"); + fprintf(stderr, "\n"); + exit(1); +} + +int main(int argc, char **argv) +{ + int rc = 0; + int gotaction = 0; + int hex_mode = 0; + const char *realloc_name = NULL; + int opt, i, j; + + progname = argc >= 1 ? argv[0] : "xvsftool"; + while ((opt = getopt(argc, argv, "r:vLBx:s:c")) != -1) + { + switch (opt) + { + case 'r': + realloc_name = optarg; + break; + case 'v': + copyleft(); + u.verbose++; + break; + case 'x': + case 's': + gotaction = 1; + if (u.verbose) + fprintf(stderr, "Playing %s file `%s'.\n", opt == 's' ? "SVF" : "XSVF", optarg); + if (!strcmp(optarg, "-")) + u.f = stdin; + else + u.f = fopen(optarg, "rb"); + if (u.f == NULL) { + fprintf(stderr, "Can't open %s file `%s': %s\n", opt == 's' ? "SVF" : "XSVF", optarg, strerror(errno)); + rc = 1; + break; + } + if (libxsvf_play(&h, opt == 's' ? LIBXSVF_MODE_SVF : LIBXSVF_MODE_XSVF) < 0) { + fprintf(stderr, "Error while playing %s file `%s'.\n", opt == 's' ? "SVF" : "XSVF", optarg); + rc = 1; + } + if (strcmp(optarg, "-")) + fclose(u.f); + break; + case 'c': + gotaction = 1; + if (libxsvf_play(&h, LIBXSVF_MODE_SCAN) < 0) { + fprintf(stderr, "Error while scanning JTAG chain.\n"); + rc = 1; + } + break; + case 'L': + hex_mode = 1; + break; + case 'B': + hex_mode = 2; + break; + default: + help(); + break; + } + } + + if (!gotaction) + help(); + + if (u.verbose) { + fprintf(stderr, "Total number of clock cycles: %d\n", u.clockcount); + fprintf(stderr, "Number of significant TDI bits: %d\n", u.bitcount_tdi); + fprintf(stderr, "Number of significant TDO bits: %d\n", u.bitcount_tdo); + if (rc == 0) { + fprintf(stderr, "Finished without errors.\n"); + } else { + fprintf(stderr, "Finished with errors!\n"); + } + } + + if (u.retval_i) { + if (hex_mode) { + printf("0x"); + for (i=0; i < u.retval_i; i+=4) { + int val = 0; + for (j=i; j<i+4; j++) + val = val << 1 | u.retval[hex_mode > 1 ? j : u.retval_i - j - 1]; + printf("%x", val); + } + } else { + printf("%d rmask bits:", u.retval_i); + for (i=0; i < u.retval_i; i++) + printf(" %d", u.retval[i]); + } + printf("\n"); + } + + if (realloc_name) { + int num = 0; + for (i = 0; i < LIBXSVF_MEM_NUM; i++) { + if (realloc_maxsize[i] > 0) + num = i+1; + } + printf("void *%s(void *h, void *ptr, int size, int which) {\n", realloc_name); + for (i = 0; i < num; i++) { + if (realloc_maxsize[i] > 0) + printf("\tstatic unsigned char buf_%s[%d];\n", libxsvf_mem2str(i), realloc_maxsize[i]); + } + printf("\tstatic unsigned char *buflist[%d] = {", num); + for (i = 0; i < num; i++) { + if (realloc_maxsize[i] > 0) + printf("%sbuf_%s", i ? ", " : " ", libxsvf_mem2str(i)); + else + printf("%s(void*)0", i ? ", " : " "); + } + printf(" };\n\tstatic int sizelist[%d] = {", num); + for (i = 0; i < num; i++) { + if (realloc_maxsize[i] > 0) + printf("%ssizeof(buf_%s)", i ? ", " : " ", libxsvf_mem2str(i)); + else + printf("%s0", i ? ", " : " "); + } + printf(" };\n"); + printf("\treturn which < %d && size <= sizelist[which] ? buflist[which] : (void*)0;\n", num); + printf("};\n"); + } + + return rc; +} + |