Jump to content

    

синтез цифровой схемы: c падами или без?

Рецепт простой. Сначала добавлять житаг/баундари скан, а потом прошивать все atpg скан цепями

Share this post


Link to post
Share on other sites

Уточнение.

Все цифровые выходы должны быть предустановлены в определённое значение (чтоб аналог на борту не вырубил чип) и оно не должно меняться во время ATPG.

JTAG интерфейс предполагается использовать для скана в\из цепочек. Т.е JTAG  должен работать как обычно. 

Подключать цепочки на пины нельзя.

Так кто-то пробовал сделать и запихать в Encounter Test?

 

 

Share this post


Link to post
Share on other sites

Исключительно из любопытства: как вы сoбираетесь задействовать эту цепочку? Ведь чтобы использовать ее неинвазивно, надо прокрутить машину состояний тап-контроллера в режим INTEST, а потом  ходить по состояниям, в которых переключаются режимы shift и update. Получается, что длины векторов будут намного больше числа элементов в цепи, а определенные фрагменты вектора (хождение по машине состояний житаг) придется писать вручную  - слабо верится, что atpg генератор такое умеет. К тому же, одного сигнала tdi недостаточно, чтобы ходить по машине состояний; надо еще управлять и tms. Принимая все это во внимание,  существуют куда более простые способы увеличить покрытие на интерфейсах, чем развлечения с баундари скан и житагом.

Share this post


Link to post
Share on other sites
On ‎3‎/‎26‎/‎2019 at 8:39 PM, Aleх said:

 надо прокрутить машину состояний тап-контроллера в режим INTEST, а потом  ходить по состояниям, в которых переключаются режимы shift и update. 

Именно так.  дергать порти JTAG. Подключать скан цепочки к TDI, вдувать их внутрь , идти в CAPTURE и опять скан...

On ‎3‎/‎26‎/‎2019 at 8:39 PM, Aleх said:

Получается, что длины векторов будут намного больше числа элементов в цепи

Не получается. Обычно длинна даже фрагментированной цепочки пару сотен флопов. А сколько тех состояний JTAG....

On ‎3‎/‎26‎/‎2019 at 8:39 PM, Aleх said:

определенные фрагменты вектора (хождение по машине состояний житаг) придется писать вручную  - слабо верится, что atpg генератор такое умеет. 

Да EncounterTest имеет возможность настройки каждой фазы ATPG процесса. Напр. можно скан фазу можно описать как последовательность JTAG переходов в скан, вдувание бита с клок пульсом, ...., в конце опять последовательность JTAG переходов в начальное состояние.

Дальше тулза сама будет применять эту последовательность в каждом тест векторе.

Да немножко больше время... процента на 0.1% от общего время скана....

И-да, мож уже JTAG тулзи сразу понимают, т.е. вместо дерганья битами самому можно сказать - JTAG  иди в скан. Никто не в курсе?

On ‎3‎/‎26‎/‎2019 at 8:39 PM, Aleх said:

 К тому же, одного сигнала tdi недостаточно, чтобы ходить по машине состояний; надо еще управлять и tms. 

...и клоком, и ресетом... Не вижу в чём тут трудность?

On ‎3‎/‎26‎/‎2019 at 8:39 PM, Aleх said:

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

поделитесь пожалуйста

И на всяк случай уточню пару ограничений:

- Пинов кроме JTAG на корпусе чипа нет. SOIC-8

- Надо ещё и аналогом полностью управлять уметь и желательно через тот-же JTAG . Аналог тоже ведь тестировать надо...

Share this post


Link to post
Share on other sites

Для проверки каких то специфичных вещей через джитаг, в нем предусмотрены инструкции пользователя в качестве дополнения к стандартным id/intest/extest/sample/preload. Адресное пространство и ширина регистров почти не ограничены. Пишете свой BIST  для проверки аналога, командные и статусные регистры этого BIST располагаете в адресном пространстве житаг, пишете спецификацию для  подключения этих регистров к тап контроллеру с помощью синтезатора. И получаете фактически бэкдор внутрь миикросхемы.  Через этот бэкдор можно организовать доступ к чему угодно: к регистрам процессора, чтения содержимого ОЗУ, или отсыл пакетов по PCIE. Все упирается в вашу фантазию и скорость интерфейса житаг. Вектора для таких регистров пользователя придется писать руками, поскольку кроме машины состояний тап контроллера появляются еще состояния ваших BIST. Можно делать не BIST, а просто командные и статусные регистры для дерганья проводками, но в любом случае - алгоритм работы этой структуры знает только автор. Через адаптер житаг можно не просто гонять одиночные вектора, а организовать целый мониторинг с контролем в реальном времени (нужно писать свой софт). Ну и наверно можно эти вектора гонять на вафертестере вместе с обычным Atpg в целях отбраковки.

Что касаетается увеличения покрытия, то первое, как уже писал - прошить все сканом, включая джитаг. Поскольку сканы - это браковочные тесты, а джитаг  предназначен скорее для отладки на плате, а не браковки. Второй вариант - прямо в RtL выходы ядра завести на его же входы через мультиплексор, управляемый TESTMODE. Получится, что выходы ядра могут тестировать входы. Третий вариант - специально созданый для таких целей стандарт IEEE 1500 shadowrapper (сам никогда это не делал)

Edited by Aleх

Share this post


Link to post
Share on other sites
On ‎3‎/‎29‎/‎2019 at 6:12 AM, Aleх said:

Для проверки каких то специфичных вещей через джитаг, в нем предусмотрены инструкции пользователя в качестве дополнения к стандартным id/intest/extest/sample/preload...... Пишете свой BIST  для проверки аналога....Ну и наверно можно эти вектора гонять на вафертестере вместе с обычным Atpg в целях отбраковки.

В основном для этого JTAG  и нужен.

On ‎3‎/‎29‎/‎2019 at 6:12 AM, Aleх said:

Что касаетается увеличения покрытия, то первое, как уже писал - прошить все сканом, включая джитаг. 

Если прошить боундари цепочку сканом, то скан цепочка будет случайным образом дергать аналог - очевидно что єто не допустимо. 

Как при этом задать "ATPG режим"  аналога вокруг? 

Как извне подключится к скан цепочке - падов то 8 всего?

Если прошить "всё" сканом (включая TAP), то тут проблема в потере управляемости чипом - JTAG  прошит и не существует.

On ‎3‎/‎29‎/‎2019 at 6:12 AM, Aleх said:

Второй вариант - прямо в RtL выходы ядра завести на его же входы через мультиплексор, управляемый TESTMODE. 

Типичное решение...

Первая проблема та-же что и в первом варианте - дерганье аналога во время ATPG. 

Вторая - тайминг пасы с 300 выходов на 150 входов через весь кристалл.... не разгонишь скан тест аднако. 

Третья - чем устанавливать этот TESTMODE? Как с TESTMODE выходить и сколько это занимает времени?

On ‎3‎/‎29‎/‎2019 at 6:12 AM, Aleх said:

Третий вариант - специально созданый для таких целей стандарт IEEE 1500 shadowrapper (сам никогда это не делал)

По сути IEEE 1500 это обёртки вокруг блоков цифры, чтобы можно было через JTAG манипулировать отдельным блоком (напр. шит флеш). С ATPG никак не связано а уш тем более с увеличением фолт кавереджа.

On ‎3‎/‎29‎/‎2019 at 6:12 AM, Aleх said:

BIST  

Built In Self Test - Самотестирование аналога невозможно по одной простой причине - внутри чипа нет измерителя напряжения классом 0.01%

Но похоже вы имели ввиду функциональный тест аналога через JTAG . Собственно для этого баундари цепочка и нужна вокруг цифры.

==================================

Напомню изначальный вопрос:

Кто ни будь использовал JTAG боундари скан при генерации ATPG чтобы стимулировать входы и читать выходы цифры вместе со встроенными в цифру скан цепями?

Share this post


Link to post
Share on other sites

Выводы скан обычно либо шарят общий пин с выводами логики(кроме TESTMODE), либо имеют собственные пины, которые просто не развариваются (тест можно прогнать только на пластине). Я так понимаю, вы хотите тестировать закорпусированый чип. Jtag, это совсем другая штука, которая изначально была разработана для теста паек на печатной плате, и обязана иметь свой интерфейс - 4 вывода.

Итого, если всего выводов у микросхемы 8, из которых 2 - земля/питание (или запитка от сигнальных входов идет?), то в оставшиеся 6 надо впихнуть житаг (4 вывода), TESTMODE для отбраковки закорпусированых микросхем, аналог (?) .. очень любопытная микросхема получается. Я бы житаг вообще выкинул, и оставил бы только скан (serial in, out, testmode) - 3 вывода, которые в режиме test паркуют интерфейс с аналогом, и сканируют только цифру, а в рабочем режиме на этих же выводах организовал бы что то вроде логического RS-232 интерфейса с возможностью тестировать аналог - перехватывать управление, считывать данные с ацп и т.д. (вы не написали, что подразумеваете под аналогом,  могу только гадать). Тогда можно было бы на тестере и покрытие проверить, и прогнать функциональный тест аналога через rs232. Если честно, я так и не понял что нужно для теста аналога. То ли только провода дергать, то ли еще логическое состояние считывать, то ли ставить первое в зависимость от второго (селф-тест).

Edited by Aleх

Share this post


Link to post
Share on other sites

А если использовать стандарт IEEE 1149.7?

 

КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 4 '2010:

Цитата

Основные отличия стандарта 1149.7, называемого также сJTAG (сompact JTAG), следующие:
Уменьшение до двух числа обязательных контактов.
• Соединение «звездой» вместо «цепочки».
• Прямая адресация микросхем.
• Обход микросхем на уровне чипа.
• Дополнительные возможности управления напряжениями питания.

 

Share this post


Link to post
Share on other sites

Был еще один вариант, про который я забыл за давностью лет. Суть сводилась к тому, что если скан цепочка одна, то ее можно подключить к тап контроллеру в виде инструкции пользователя, и гонять тест покрытия используя интерфейс житаг. Т.е. не atpg дергает житагом, а наоборот. Детали помню смутно, но в целом это выглядело так: в тетрамаксе в командном файле менялся протокол махания управляющими сигналами для совместимости с управлением стандартной житаг цепочкой (сигналы шифт,скан, апдейт и пр.). Далее, тулом генерились векторы покрытия для уровня кор. Затем, на верхнем уровне проекта вставлялся тап контроллер,  и к нему подключался интерфейс скан цепи в виде отдельной инструкции. При этом сгенеренные тетрамаксом вектора удлиннялись на один бит. В результате, на тестере тап контроллер сначала переводился в пользовательскую инструкцию, а потом запускались скан векторы. Как то так, в общих чертах. Было это больше 10 лет назад, тулы были древние, а микросхемы маленькие - им достаточно было одной цепочки. 

Share this post


Link to post
Share on other sites

Для чего изначально был придуман JTAG  он уже меньше всего и нужен в микросхеме.

Если он уже есть, то городить любые воркераунды (типа RS232, внешних скан цепей с тестмод-пинами и тд.) смысла мало.

Используя JTAG  можно сразу получить всю мощь тестовых программ разработанных за десятилетия.

Поэтому использовать JTAG  для того чтобы через него гонять и ATPG и функциональные тесты очень даже хорошая мысль.

2 hours ago, Aleх said:

 что то вроде логического RS-232 интерфейса с возможностью тестировать аналог - перехватывать управление, считывать данные с ацп и т.д. (вы не написали, что подразумеваете под аналогом,  могу только гадать). Тогда можно было бы на тестере и покрытие проверить, и прогнать функциональный тест аналога через rs232. 

RS-232 плохая мысль .... Осцилятор откуда брать? 

Если осцилятор на борту (в аналоговой части) то как его оттримировать через RS-232...Битрейт какой ставить если осцилятор имеет разброс +/-40%? 

28 minutes ago, Aleх said:

Был еще один вариант, про который я забыл за давностью лет. Суть сводилась к тому, что если скан цепочка одна, то ее можно подключить к тап контроллеру в виде инструкции пользователя, .... 

Вы правильно подошли к пониманию части вопроса. Скан цепочку цифры подключили. Хоть десять скан цепочек на один вход\выход JTAG  по очереди.

Но, цифра будет дёргать аналог во время теста и вирубит всё (хоть с  мультиплексор на входах\выходах хоть без).

Аналог это типично такое: OSC, PLL, ADC/DAC, BandGap, POR.

Это как можно решить?

Share this post


Link to post
Share on other sites

Я не понимаю, почему в тестовом режиме нельзя заизолировать входы аналога так же, как это делается в лоу паэр флоу? Просто пропускаете логические входы аналога через and или or (в зависимости от безопасного лог. уровня в цепи), второй вход которых заведен на testmode. Это как если бы цифровая часть являлась отключаемым пауер доменом, и ее выходы надо было безопасно заизолировать, а testmode служил бы сигналом отключения питания.

 

p.s.

rs232 допускает очень большие отклонения несущей частоты. В то же время, точность осциллятора на инверторах очень высокая, и можно добиться маленького джиттера. Для коммерческих применений такие генераторы успешно используется, и работают в кремнии на частотах свыше гигагерцах.  Это вполне рядовая вещь, не надо ее недооценивать. Хотя, для военных температур и, скажем, микронного процесса может и правда будут проблемы - я не специалист в аналоге.

Edited by Aleх

Share this post


Link to post
Share on other sites
10 hours ago, Aleх said:

Я не понимаю, почему в тестовом режиме нельзя заизолировать входы аналога так же, как это делается в лоу паэр флоу? Просто пропускаете логические входы аналога через and или or....

Типичное решение...

Плохо тем, что аналоговые дизайнеры не могут сказать в каком положении должны быть все 600 аналоговых входов при ATPG, а в каком при IDDQ...

Из-за одного бита прийдётся полляма $ за метал редизайн отвалить....

Share this post


Link to post
Share on other sites

Таки, а что же вы хотите генерить с помощью ЕТ? 

Чтобы просто получить вектор, который задвигает в житаг баундари скан некое состояние на линиях, можно написать простенькую прогу. На входе у нее будет желаемое состояние входов аналога, а на выходе полный вектор для тестера. Когда я занимался этой темой, то подобные проги и отдельные вектора для джем-плеера писал за 20-30 минут. Полученный вектор грузите тестером в качестве инициализации, а потом гоните свой скан тест.

Непонятно, чего вы хотите от ЕТ. Хотитет генерить  скан векторы с учетом тап контроллера? Боюсь, это не получится. Но никто но мешает написать маленькую прогу, которая патчит вектора,  просто дописывая в начало небольшие  самописные фрагменты. Это несложная задача, на мой взгляд. Проект со сканом через житаг порт, про который я писал выше, использовал в т.ч. и патчинг векторов после atpg, сгенеренных для уровня кор. И таких микросхем у нас было сделано несколько. К сожалению, один скан порт годится только для очень маленьких микросхем, и не дает высокго покрытия. Поэтому от использования житага подобным образом в последствии отказались.

p.s. на самом деле, я никогда не имел дела с iddq так что вероятно просто не понимаю задачи. Прошу извинить, если так.

Edited by Aleх

Share this post


Link to post
Share on other sites

Один скан порт или много никак не влияют на покрытие ATPG. Это влияет на время тестирования, а так как стоимость ATE оборудования совсем не маленькая, то и стараются распараллелить цепочки и уменьшить их длину. Опять же ничто не мешает использовать mux/demux цепочек при тестировании по JTAG и использовать IO пины в testmode при параллельном тестировании. Т.е. тестирование в системе и при производстве.

Share this post


Link to post
Share on other sites
23 hours ago, Aleх said:

Таки, а что же вы хотите генерить с помощью ЕТ? 

Чтобы просто получить вектор, который задвигает в житаг баундари скан некое состояние на линиях, можно написать простенькую прогу. На входе у нее будет желаемое состояние входов аналога, а на выходе полный вектор для тестера. Когда я занимался этой темой, то подобные проги и отдельные вектора для джем-плеера писал за 20-30 минут. Полученный вектор грузите тестером в качестве инициализации, а потом гоните свой скан тест.

Именно поэтому предложение покрыть все сканами было не очень хорошее.

Во вторых, простенькая прога - это время разработки, это закупка компилятора, это затраты на поддержку, это затыки проекта по неделе на каждом баге...

ЕТ всё это умеет сам.

В итоге - для установки начального произвольного состояния аналога у нас получилось использовать боундари цепочку между цифрой и аналогом. 

Осталась проблема:

================

А почему-бы вместо мультиплексора с  выхода-на-вход не использовать туже боундари цепочку и позволить ЕТ самому решать что в неё задвинуть?

А скан цепочку к тому-же JTAG  подключить.

23 hours ago, Aleх said:

К сожалению, один скан порт годится только для очень маленьких микросхем, и не дает высокго покрытия. 

Фолт кавередж точно не зависит одна большая или много маленьких цепочек. Совсем не зависит.

Насчёт много цепочек в паралель наружу....

1) "скан цепочка" для ЕТ это SCAN_IN, SCAN_OUT, SCAN_CLK как минимум

2) При малопиновом корпусе (SOIC-8) особо цепочек не натыкаешь наружу, а внутри может быть и ARM 

3) А вы точно знаете как в бекэнде делать "много" выводов Clock Tree для каждого SCAN_CLK? Так чтобы в тесте это было много деревьев а в рабочем режиме одно сплошное со всеми сбалансированными листьями.

4) А вы у аналогового дизайнера спросили сколько будет стоять много быстрых (время теста = деньги) цифровых буферов на падах, которые ещё и с другими аналоговыми функциями замешаны? В гигагерцовых процах это ваще проблема.

5) А как с подключенными наружу цепочками Delay-Test (тот который проверяет величину задержек между тригерами) делать?

Поэтому лучше один быстрый цифровой порт.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this