Bdyssh! // Бдыщщь!

Сегодня вас ждёт приятная неожиданность, %username%!

Подключение ПО программатора в Xilinx ISE Webpack / Integration of external EEPROM programmer software into Xilinx ISE Webpack

This is now production-quality document. Tested many times on lin & lin64 at ISE 13.3-14.4

Я написал примерную инструкцию, как подключить программатор к ПО Xilinx ISE Webpack.

Мне неизвестно, рассчитано ли это ПО вообще на подключение программаторов третьих фирм. Но мне это необходимо по определению, ведь я не использую JTAG.

I write the instruction manual, how to integrate your DIY EEPROM programmer to Xilinx ISE Webpack software.

I do not know if this documented at all. But i definetely need it, due to i am never use JTAG.


This step-by-step instruction manual was written in help to integrate your
EEPROM/FLASH programming software into existing XILINX ISE Webpack installation.
This will replace original 'bitgen'.
Live programming supported, even with translation of our program messages to
ISE while programming. But i do not do anything for it: it hopefully working
Date: oct 2012 - 06/14/2013
License: Free
Status: Production quality

sudo cp /opt/Xilinx/14.4/ISE_DS/ISE/data/projnav/scripts/dpm_bitgenTasks.tcl

sudo gedit /opt/Xilinx/14.4/ISE_DS/ISE/data/projnav/scripts/dpm_bitgenTasks.tcl

 set sExe "bitgen"
Replace to:
 set sExe "bitgen2"

Compile your own executable, name it 'bitgen2', place to folder where original
'bitgen' is: ex. 'sudo nautilus /opt/Xilinx/14.4/ISE_DS/ISE/bin/lin64'

Your executable should run original 'bitgen', then do its own tasks.
I found useful code which not only run external executeble, but read its output
and pass to us, and terminate our code when 'error' words found in output.
This is example only. You may find the complete code in my Programmer software
source code.
        char commandline[512];
        sprintf(commandline, "/opt/Xilinx/13.4/ISE_DS/ISE/bin/lin/bitgen %s", s);
        printf("Jopka: launch '%s'\n",commandline);
        //      system((char *)temp);  its work

        /* Open the command for reading. */
        fp = popen(commandline, "r");
        if (fp == NULL) {
                printf("Jopka: Failed to run command '%s'\n",commandline);
                return EXIT_FAILURE;

        /* Read the output a line at a time - output it. */
        while (fgets(path, sizeof(path)-1, fp) != NULL) {
                //          printf("Jopka: Command output: %s", path);
                printf("%s", path);
                if (strncmp(path, "ERROR", 5)==0)
                        //                  printf("*** err ***\n");

        /* close */

        if (err==1) {
                printf("Jopka: errors found, quitting.\n");
                return EXIT_FAILURE;

Please note, if you find more efficient and cute way to do anything mentioned
in this article, ex. for not to define full path to 'bitgen', please write
Thank you!