Doka 1 20 июля, 2006 Опубликовано 20 июля, 2006 · Жалоба наткнулся на BILBO при поисках в контексте желания использовать LFSR для задач тестирования. про BILBO (Built-In-Logic-Block-Observation) слышу впервые. вроде бы понятно что енто такое, но вот в каких случаях применяются и чем этот BILBO реально лучше в данной области? притом, почти везде изложение от LFSR идет сразу к BILBO.. у кого-нить есть реальный опыт использования? где бы об этом более подробно почитать? А то словосочетание "BILBO BIST" как-то плохо гуглится в РуНете.. М.б. у нас используется русскоязычный эквивалент названия сей методологии?? ссылки для ознакомления: Logic BIST Architectures http://www.ece.wisc.edu/~va/COURSE/lec26.ppt A Novel BIST Architecture With Built-in Self Check http://eprint.iitd.ac.in/dspace/bitstream/...ullanov1996.pdf Design for ‘X’ (интересный документ о концепциях тестирования аппаратуры на различных стадиях) http://www.itiv.uni-karlsruhe.de/download/...esign_for_x.pdf BILBO sandwich project & assignment wants to get students more familiar to BILBO BIST techniques: BILBO sandwich project http://www.eeng.dcu.ie/~ee404/Projects/bsp/index.html BILBO sandwich assignment http://www.eeng.dcu.ie/~ee404/Projects/bsa/index.html исходник: http://www.eeng.dcu.ie/~ee404/Projects/bsp/bilbo1_test.vhd Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
acex2 0 20 июля, 2006 Опубликовано 20 июля, 2006 · Жалоба Ничего сложного в BILBO нет - это классическая регулярная DFT структура, которая может работать в 4 режимах: - параллельного регистра - сдвигового регистра - генератора псевдослучайных последовательностей (LFSR) - многоканального сигнатурного анализатора (MISR) Выбор режима задается двумя битами. Работает все это примерно так: в штатном режиме BILBO используется как обычный параллельный регистр в схеме. Когда нужно провести тестирование, BILBO на входе (перед тестирумой подсхемой) переключается в режим LFSR, BILBO на выходе переключается в режим MISR. Во входную BILBO загоняется начальное значение генератора (путем его временного переключения в режим сдвигового регистра), прогоняется определенное число тактов, потом полученная сигнатура с выходного BILBO выводится наружу или в модуль BIST для проверки путем переключения в режим сдвигового регистра. В теории примерно так. За счет того, что структура может выполнять все 4 основные операции, экономится место на кристалле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Doka 1 25 июля, 2006 Опубликовано 25 июля, 2006 (изменено) · Жалоба Ничего сложного в BILBO нет - это классическая регулярная DFT структура, которая может работать в 4 режимах: - параллельного регистра - сдвигового регистра - генератора псевдослучайных последовательностей (LFSR) - многоканального сигнатурного анализатора (MISR) Выбор режима задается двумя битами. Работает все это примерно так: в штатном режиме BILBO используется как обычный параллельный регистр в схеме. Когда нужно провести тестирование, BILBO на входе (перед тестирумой подсхемой) переключается в режим LFSR, BILBO на выходе переключается в режим MISR. Во входную BILBO загоняется начальное значение генератора (путем его временного переключения в режим сдвигового регистра), прогоняется определенное число тактов, потом полученная сигнатура с выходного BILBO выводится наружу или в модуль BIST для проверки путем переключения в режим сдвигового регистра. спасибо за сообщение. действительно теперь ясно. штука довольно интересная. переложил на верилог модуль из ссылки-примера. но есть две непонятки: строчка в которой LFSR - непонятная вовсе конструкция (1й раз вижу в классическом LFSR XOR с тремя разными сигналами): aux = {aux[1] ^ flip_flops[0] ^ z[1], aux[0] ^ z[2], flip_flops[3] ^ z[3]}; непойму - зачем в реж.MISR XORить вдвигаемый разряд?! 2'b01: flip_flops <= {flip_flops[2:0],aux[2] ^ z[0]}; // MISR mode В теории примерно так. За счет того, что структура может выполнять все 4 основные операции, экономится место на кристалле. да, действительно, поигрался с вышеприведенным примером - довольно компактно (и по трассам тоже - загрузка/выгрузка по последовательному интервейсу -одна линия сюда - одна обратно) //============================================================ код полностью: // bilbo.v module bilbo_test( input rst, input clk, input scan_in, output scan_out, // inout input [1:0] b, input [3:0] z, output [3:0] q); reg [3:0] flip_flops; wire [2:0] aux; always @ (posedge clk or negedge rst) if (!rst) flip_flops <= 0; else //if (ce) case(b) // synopsys full_case parallel_case 2'b00: flip_flops <= {flip_flops[2:0],scan_in}; // SHIFT mode 2'b01: flip_flops <= {flip_flops[2:0],aux[2] ^ z[0]}; // MISR mode 2'b10: flip_flops <= 4'b0000; // RESET mode 2'b11: flip_flops <= z; // PARALLEL LOAD mode endcase assign q = flip_flops; assign q = flip_flops; assign scan_out = flip_flops[3]; assign aux = {aux[1] ^ flip_flops[0] ^ z[1], aux[0] ^ z[2], flip_flops[3] ^ z[3]}; endmodule Изменено 25 июля, 2006 пользователем Doka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
disel 0 26 июля, 2006 Опубликовано 26 июля, 2006 (изменено) · Жалоба строчка в которой LFSR - непонятная вовсе конструкция (1й раз вижу в классическом LFSR XOR с тремя разными сигналами): aux = {aux[1] ^ flip_flops[0] ^ z[1], aux[0] ^ z[2], flip_flops[3] ^ z[3]}; Это не LFSR, а MISR. непойму - зачем в реж.MISR XORить вдвигаемый разряд?! 2'b01: flip_flops <= {flip_flops[2:0],aux[2] ^ z[0]}; // MISR mode Происходит умножение (в смысле Галуа) входных данных на полином. Результатом является искомая сигнатура. Изменено 26 июля, 2006 пользователем disel Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться