Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: BILBO (Built-In-Logic-Block-Observation) с чем едят?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Doka
наткнулся на 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
Ничего сложного в BILBO нет - это классическая регулярная DFT структура, которая может работать в 4 режимах:
- параллельного регистра
- сдвигового регистра
- генератора псевдослучайных последовательностей (LFSR)
- многоканального сигнатурного анализатора (MISR)

Выбор режима задается двумя битами. Работает все это примерно так: в штатном режиме BILBO используется как обычный параллельный регистр в схеме. Когда нужно провести тестирование, BILBO на входе (перед тестирумой подсхемой) переключается в режим LFSR, BILBO на выходе переключается в режим MISR. Во входную BILBO загоняется начальное значение генератора (путем его временного переключения в режим сдвигового регистра), прогоняется определенное число тактов, потом полученная сигнатура с выходного BILBO выводится наружу или в модуль BIST для проверки путем переключения в режим сдвигового регистра.

В теории примерно так. За счет того, что структура может выполнять все 4 основные операции, экономится место на кристалле.
Doka
Цитата(acex2 @ Jul 20 2006, 20:57) *
Ничего сложного в 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



Цитата(acex2 @ Jul 20 2006, 20:57) *
В теории примерно так. За счет того, что структура может выполнять все 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
disel
Цитата(Doka @ Jul 26 2006, 01:36) *
строчка в которой LFSR - непонятная вовсе конструкция (1й раз вижу в классическом LFSR XOR с тремя разными сигналами):
Код
aux = {aux[1] ^ flip_flops[0] ^ z[1],  aux[0] ^ z[2],  flip_flops[3] ^ z[3]};

Это не LFSR, а MISR.

Цитата(Doka @ Jul 26 2006, 01:36) *
непойму - зачем в реж.MISR XORить вдвигаемый разряд?!
Код
2'b01: flip_flops <= {flip_flops[2:0],aux[2] ^ z[0]};    // MISR mode


Происходит умножение (в смысле Галуа) входных данных на полином. Результатом является искомая сигнатура.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.