Вот повесть из трех частей.
Часть первая "Все мастдай!"
Наши блоки обычно представляют из себя PC104 и соответственно ISA модули к неей подключенные. Изначально задумывалось посредством PC-LPT-JTAG платы на лету перешивать. Дошло до софта, решил написать SVF плейер под QNX. Я в жизни столько не матерился, сколько за те две недели. Особенный трепет у меня вызывал такой глюк. ID плисок читается нормально, все остальное нагибается, ошибся в управлении JTAG машины состояний. В итоге заработала. Но вот незадача на одной плате с наводками напряженка оказалась и вся цепочка не работает. В итоге задвинули на время идею.
Чась вторая "Приятная"
В наших крейтах иногда до 1000 контактов доходит. В ручную две монтажницы один крейт тестируют дня два, и то "этот провод отсюда туда" а вот куда еще не важно. В общем задался я целью сделать некоторое устройство позволяющее проверить наличие контакта каждый с каждым на сколько нужно контактов да еще и при желании чтоб порядок сопротивления контакта можно было оценить (1 или 10 или 100). Решил сделать так. В XPLA3 разместить два сдвиговых регистра один на выход, другой на вход. На одном из выходов появляется лог. уровень, через регулируемый промежуток времени защелкиваю входной регистр, выдвигаю его и смотрю куда дошол сигнал, по интервалу времени между включением выхода и защелкиванием входа можно судить о сопротивлении (забыл сказать на каждый вход посадил по кондеру чтоб увеличить постоянную времени). Пришли плисы, стал делать, оказалось выходы с третьим состоянием не у всех буферов есть. Что делать, решил в качестве выходного регистра использовать JTAG регистр пограничного сканирования. Принялся за дело. Долго пялился как баран на свои исходники по SVF плейеру, стал переносить на ATmega128, опять нашел неточности управления JTAG машиной сотояний (почему работало?). Во время написания программы которая проверяет соответствия сигналов и ячеек регистра JTAG, чуть мозги не вывихнул. В итоге все отладил, проверил пару крейтов, поставил в угол (наверное там чегонибудь уже отпало)
Часть третья "Чудовищная"
Решили мы снова вернуться к конфигурированию/верификации на лету. Предложил я следующее. На каждой плате поставить по AT90s8535, их в свою очередь объеденить в одну последовательную шину и подключить к LPT. Далее с PC можно творить все что хочеш. Недельку возился с протоколом "взаимопонимания" и "уважения" всех всеми. Далее решил повторить SVF плейер только через эти "удлиннители". Вдруг оказывается что произошли изменения в формате SVF, стали спользовать комманды позиционирования устройства в цепи. Далее опускаю эволюцию мысли, в итоге по соображениям быстродействия пришел к оперированию с бинарниками прошивок. Реализую нужные JTAG комманды, вроде все железно, подпрограммы проверены. Испытываю на двух разных платах с одиночными чипами. Читаю ID xc18v02 - все ок, читаю содержимое xc18v02 - все ок, читаю ID xc95216 - все ок, читаю содержимое xc95216 - нифига. Ну тут долго ставил эксперименты в результате которых сжег (причем по непонятной причине, после цикла прграммирования кристалл перестает опознаваться по JTAG) 5 CPLDшек

После такого, забил на CPLD, сфокусировался на PROM и FPGA. Стал экспериментировать с цепью из двух xc18v02 и двух Spartan2, тоже происходили странности, оказалось ОПЯТЬ ошибки в управлении машиной состояния JTAG.
Так что я бы не стал сильно обольщаться по поводу работоспособности