Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: JTAG, SVF формат данных
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам
SM
Поясните мне пожалуйста, зачем в SVF в HIR/HDR/TIR/TDR/SIR/SDR нужен параметр SMASK? Что по нему должно делаться? Я понимаю, что он обозначает маску незначащих бит во входном потоке данных. Но зачем это нужно? Ведь никаких сравнений со входным потоком не может производиться, он тупо прогружается в DR/IR.
Leonid.K.
Цитата(SM @ May 19 2009, 21:01) *
Поясните мне пожалуйста, зачем в SVF в HIR/HDR/TIR/TDR/SIR/SDR нужен параметр SMASK? Что по нему должно делаться? Я понимаю, что он обозначает маску незначащих бит во входном потоке данных. Но зачем это нужно? Ведь никаких сравнений со входным потоком не может производиться, он тупо прогружается в DR/IR.

Уважаемый SM.
Ниже представлен ответ моего коллеги, д-ра Ами Городецкого.

Ответ на Ваш вопрос содержится в одной из статей нашего цикла введения
в технологии граничного сканирования в журнале Производство Электроники,
в номере 8 за 2007 год. Там, в частности, объяснено, что маска - это не параметр,
а входной вектор данных, наряду со входным вектором TDI и вектором ожидаемых
реакций схемы TDO. Цитирую: "Маской SVF называется вектор, состоящий из единиц
и нулей, длина которого равна длине выходного вектора реакций, ожидаемого на
контакте TDO в рамках данного оператора SVF. Разряд вектора реакций SVF,
маска которого равна 1, является тестовым и предназначен для сравнения с
соответствующим разрядом выходного вектора реакций, получаемого на TDO.
Разряд вектора реакций SVF, маска которого равна 0, не является тестовым и
сравниваться с соответствующим разрядом выходного вектора реакций
на TDO не будет." Полная статья приложена, а все остальные статьи цикла мы Вам вышлем
бесплатно, если Вы обратитесь к нам по адресу info@Start-Test.com.

Удачи.
SM
Цитата(Leonid.K. @ Jun 5 2009, 19:49) *
Разряд вектора реакций SVF, маска которого равна 0, не является тестовым и
сравниваться с соответствующим разрядом выходного вектора реакций
на TDO не будет.

Спасибо, конечно, но это Вы рассказали про MASK, это и так ясно, и вопроса про MASK не было. А вопрос был про SMASK - о нем в статье вообще не упомянуто ни слова.
Leonid.K.
Цитата(SM @ Jun 5 2009, 19:02) *
Спасибо, конечно, но это Вы рассказали про MASK, это и так ясно, и вопроса про MASK не было. А вопрос был про SMASK - о нем в статье вообще не упомянуто ни слова.



"Это" я рассказал про любую маску в SVF: MASK - для выходного потока TDO, а SMASK - для входного потока TDI. Ваше непонимание роли масок следует из Вашей же фразы о том, что "он тупо прогружается в DR/IR" ... Стоит обратить внимание на то, что в технологии ГС ничего и никуда тупо не погружается! Вы представляете себе ГС-цепочку лишь из одного элемента, в этом случае Вам SMASK действительно ни к чему. Но если у Вас два и более элементов в цепочке, Вам необходимо указать, что именно во входном потоке к последующим элементам не имеет к ним никакого отношения, но является выходным потоком предыдущих - в этом смысл SMASK.

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

Dr. JTAG (Ами Городецкий)
SM
Цитата(Leonid.K. @ Jun 6 2009, 11:45) *
"Это" я рассказал про любую маску в SVF: MASK - для выходного потока TDO, а SMASK - для входного потока TDI. Ваше непонимание роли масок следует из Вашей же фразы о том, что "он тупо прогружается в DR/IR" ... Стоит обратить внимание на то, что в технологии ГС ничего и никуда тупо не погружается!

Извините, но Вы не поняли смысла сленгового словечка "тупо". Поясняю - это значит, что согласно спецификации SVF Rev.E все, что указано в параметре TDI будет выдвинуто с выхода TDO тап-контроллера.
Цитата(Leonid.K. @ Jun 6 2009, 11:45) *
"Это" я рассказал про любую маску в SVF: MASK - для выходного потока TDO, а SMASK - для входного потока TDI. Ваше
Вы представляете себе ГС-цепочку лишь из одного элемента, в этом случае Вам SMASK действительно ни к чему. Но если у Вас два и более элементов в цепочке, Вам необходимо указать, что именно во входном потоке к последующим элементам не имеет к ним никакого отношения, но является выходным потоком предыдущих - в этом смысл SMASK.

Опять же, по спецификации SVF Rev.E для этих целей задаются преамбула (header) HIR/HDR и постамбула (trailer) TIR/TDR. А не SMASK. И, к тому же, при проигрывании SVF-файла на TDO тап-контроллера не может физически ничего попасть, что является частью потока предыдущих, так как на TDO тап-контроллера выдается исключительно то, что указано в параметре TDI SVF-файла, а длина регистра сдвига тап-контроллера равна указанной в SVF в первом параметре SIR/SDR, и равна длине потоков TDO, TDI, MASK и SMASK (ну плюс еще регистры преамбулы и постамбулы, если они есть, они удовлетворяют тем же требованиям, но и для них тоже SMASK может быть).

Так что вопрос остался полностью открыт - какие действия надо предпринимать в SVF-плеере с параметром SMASK. И я ожидаю ответа типа такого:
"MASK накладывается по лог. И на принятый входной поток тап-контроллера и на поток, указанный в параметре TDO, после чего производится сравнение обоих потоков"
вот, по аналогии с этим, что делать в плеере с SMASK? (в стандарте я этого просто не обнаружил)
Oldring
Цитата(SM @ Jun 6 2009, 13:46) *
Так что вопрос остался полностью открыт - какие действия надо предпринимать в SVF-плеере с параметром SMASK.


IMHO игнорировать. Чтобы понять причины появления этого параметра нужно допрашивать авторов стандарта. Кому они хотели передавать информацию о том, что некоторые входные биты на результат теста не влияют?
SM
Цитата(Oldring @ Jun 6 2009, 14:57) *
IMHO игнорировать. Чтобы понять причины появления этого параметра нужно допрашивать авторов стандарта. Кому они хотели передавать информацию о том, что некоторые входные биты на результат теста не влияют?

Ну так и у меня то же IMHO. Пока так и делаю. И вопрос у меня, собственно, именно такой - кому и зачем... Ну а допрос авторов стандарта, тоже IMHO, не реален smile.gif

Одна из догадок, что это, возможно, полезно, если указан PIOMAP и хочется графически отобразить сигналы в случае ошибки, чтобы подсветить то, что значимое, и скрыть незначимое. Но это так, на уровне догадок.
Leonid.K.
Цитата(SM @ Jun 6 2009, 14:05) *
Ну так и у меня то же IMHO. Пока так и делаю. И вопрос у меня, собственно, именно такой - кому и зачем... Ну а допрос авторов стандарта, тоже IMHO, не реален smile.gif

Одна из догадок, что это, возможно, полезно, если указан PIOMAP и хочется графически отобразить сигналы в случае ошибки, чтобы подсветить то, что значимое, и скрыть незначимое. Но это так, на уровне догадок.


Господа.
Не надо ломать головы и копья.
В приложенных документах совершенно точно определены цели и задачи операнда SMASK. Наслаждайтесь.
SM
Цитата(Leonid.K. @ Jun 6 2009, 17:28) *
Господа.
Не надо ломать головы и копья.
В приложенных документах совершенно точно определены цели и задачи операнда SMASK. Наслаждайтесь.

Господин, то, что в SMASK определяются биты входного (с точки зрения тестируемого устройства) потока, влияющие на результат тестирования и не влияющие - это и без Ваших документов понятно было. И привешивать спецификацию смысла не было никакого, она и так прочитана вдоль и поперек. Вы вообще вопрос-то читали? Я ведь не спрашивал, что определяет SMASK, я это знаю, я хочу получить ответ на вопрос "а зачем это нужно, и кому".
Leonid.K.
Цитата(SM @ Jun 6 2009, 23:42) *
Господин, то, что в SMASK определяются биты входного (с точки зрения тестируемого устройства) потока, влияющие на результат тестирования и не влияющие - это и без Ваших документов понятно было. И привешивать спецификацию смысла не было никакого, она и так прочитана вдоль и поперек. Вы вообще вопрос-то читали? Я ведь не спрашивал, что определяет SMASK, я это знаю, я хочу получить ответ на вопрос "а зачем это нужно, и кому".


Уважаемый, гуру SM.
Читать вдоль и поперек, не всегда означает понимать прочитанное.
Если Вам в лом просто сказать, спасибо, можете не говорить.
Но если даже после прочтения спецификации от ASSET, написанной одним из разработчиков стандарта Беном Беннетом, Вы задаете подобные вопросы, боюсь, что ни уважаемый форум, ни Dr.JTAG Вам не помогут.

Удачи в освоении матчасти.
SM
Цитата(Leonid.K. @ Jun 7 2009, 09:00) *
Если Вам в лом просто сказать, спасибо, можете не говорить.

Мне не в лом сказать спасибо, если мне кто-то помогает. Но за вывешивания доков, которые и так на каждом углу висят, и не дают ответа на поставленный вопрос, извините, спасибо не будет. Что задает MASK - ответ они дают. Зачем нужен MASK - дают. Что задает SMASK - дают. А вот зачем нужен SMASK, как не крутите, не дают. И если Вы этого сами не знаете, так и не отвечайте доками, в которых об этом ни слова. Если Вы не читали спецификацию сами - вот привожу цитату про SMASK из нее:
Цитата
Specifies that TDI data is don't care, expressed as a hex string. A ‘1’ in a specific bit position indicates the TDI data in that bit position is a care. A ‘0’ indicates a don't care. If this parameter is not resent, the mask used will equal the last previously specified SMASK value specified for the SDR/SIR statement. SDR and SIR SMASK values are ”remembered” independently. If a scan command changes the length of the last scan of the same type and the SMASK parameter is absent, the smask pattern used is all cares. The SMASK will be used even if the TDI parameter is not present


Да, тут описано как хранить SMASK и как вести себя при указании параметра и без указания, да, тут написано, что он обозначает незначащие биты в потоке TDI, но тут ни слова нет, а зачем все это нужно вообще. Больше в стандарте про SMASK ничего нет. Кроме порядка следования бит LSB->MSB.
Leonid.K.
Цитата(SM @ Jun 7 2009, 11:14) *
Мне не в лом сказать спасибо, если мне кто-то помогает. Но за вывешивания доков, которые и так на каждом углу висят, и не дают ответа на поставленный вопрос, извините, спасибо не будет. Что задает MASK - ответ они дают. Зачем нужен MASK - дают. Что задает SMASK - дают. А вот зачем нужен SMASK, как не крутите, не дают. И если Вы этого сами не знаете, так и не отвечайте доками, в которых об этом ни слова. Если Вы не читали спецификацию сами - вот привожу цитату про SMASK из нее:


Да, тут описано как хранить SMASK и как вести себя при указании параметра и без указания, да, тут написано, что он обозначает незначащие биты в потоке TDI, но тут ни слова нет, а зачем все это нужно вообще. Больше в стандарте про SMASK ничего нет. Кроме порядка следования бит LSB->MSB.


If a

new scan command is specified which changes the

length of the data pattern with respect to a previous

scan, the SMASK parameter must be specified, otherwise

the default SMASK pattern used is undefined and

is an error. The SMASK will be used even if the TDI

parameter is not present.

SM
Ну и что? Перевожу (если Вы сами не в состоянии):

Если в новой команде сканирования происходит смена длины потока, то должна быть указана новая SMASK, иначе будет взята SMASK, принятая по умолчанию. SMASK используется и в том случае, если не указан параметр TDI.

В моем плеере в процессе парсинга SVF-файла все полностью соответствует этому требованию. Если указана - берется указанная, если не указана - берется по умолчанию. Если TDI не указано - маску не сбрасываю, а оставляю.

Ну, блин, храню я ее в какой-то внутренней структуре, ну меняю я ее по этому правилу, НО ЗАЧЕМ ОНА НУЖНА? ГДЕ ЕЕ И ДЛЯ ЧЕГО ИСПОЛЬЗОВАТЬ?>
Leonid.K.
Цитата(SM @ Jun 7 2009, 12:19) *
Ну и что? Перевожу (если Вы сами не в состоянии):

Если в новой команде сканирования происходит смена длины потока, то должна быть указана новая SMASK, иначе будет взята SMASK, принятая по умолчанию. SMASK используется и в том случае, если не указан параметр TDI.

В моем плеере в процессе парсинга SVF-файла все полностью соответствует этому требованию. Если указана - берется указанная, если не указана - берется по умолчанию. Если TDI не указано - маску не сбрасываю, а оставляю.

Ну, блин, храню я ее в какой-то внутренней структуре, ну меняю я ее по этому правилу, НО ЗАЧЕМ ОНА НУЖНА? ГДЕ ЕЕ И ДЛЯ ЧЕГО ИСПОЛЬЗОВАТЬ?>



Если в новой команде сканирования происходит смена длины потока, то обязана быть указана новая SMASK, иначе будет взята неопределенная SMASK, принятая по умолчанию, что является ошибкой. SMASK используется и в том случае, если не указан параметр TDI.

А нужно это для того, чтобы при "проталкивании" данных с TDO предыдущего элемента цепочки на TDI следующего Ваш SVF player позаботился о том, чтобы туда вошли только значащие биты. Это своего рода внутренний КПП.
В отличии от SMASK, MASK является внешним КПП, контроллирующим поток данных на TDO последнего элемента в цепочке.
SM
Цитата(Leonid.K. @ Jun 7 2009, 13:53) *
Если в новой команде сканирования происходит смена длины потока, то обязана быть указана новая SMASK, иначе будет взята неопределенная SMASK, принятая по умолчанию, что является ошибкой. SMASK используется и в том случае, если не указан параметр TDI.

Ой-ой-ой, и где же это сказано, что неуказание SMASK и использование значения по умолчанию является ошибкой? Только не своими словами, а цитату плиз. Во всех SVF файлах, которые генерят мне средства разработки альтеры и lattice я вообще ни одного SMASK никогда не видел, и везде использовано значение по умолчанию. И SMASK по умолчанию отнюдь не неопределенная, в все единицы. If a scan command changes the length of the last scan of the same type and the SMASK parameter is absent, the smask pattern used is all cares.



Цитата(Leonid.K. @ Jun 7 2009, 13:53) *
А нужно это для того, чтобы при "проталкивании" данных с TDO предыдущего элемента цепочки на TDI следующего Ваш SVF player позаботился о том, чтобы туда вошли только значащие биты. Это своего рода внутренний КПП.

Можно как-то по-русски, чтобы понятно было? На конкретном примере.

Вот пример:

HIR 5 TDI(1F);
TIR 8 TDI(FF);
...
...
...
SIR 8 TDI(5C) SMASK(F3);

Я выталкиваю с TDO моего тап контроллера последовательность из 5 бит единиц HIR, потом 8 бит (в порядке их следования от LSB к MSB 0,0,1,1,1,0,1,0), потом 8 бит единиц TIR. Куда конкретно мне применить этот SMASK (F3) и как.
Leonid.K.
Цитата(SM @ Jun 7 2009, 13:24) *
Ой-ой-ой, и где же это сказано, что неуказание SMASK и использование значения по умолчанию является ошибкой? Только не своими словами, а цитату плиз. Во всех SVF файлах, которые генерят мне средства разработки альтеры и lattice я вообще ни одного SMASK никогда не видел, и везде использовано значение по умолчанию. И SMASK по умолчанию отнюдь не неопределенная, в все единицы. If a scan command changes the length of the last scan of the same type and the SMASK parameter is absent, the smask pattern used is all cares.




Можно как-то по-русски, чтобы понятно было? На конкретном примере.

Вот пример:

HIR 5 TDI(1F);
TIR 8 TDI(FF);
...
...
...
SIR 8 TDI(5C) SMASK(F3);

Я выталкиваю с TDO моего тап контроллера последовательность из 5 бит единиц HIR, потом 8 бит (в порядке их следования от LSB к MSB 0,0,1,1,1,0,1,0), потом 8 бит единиц TIR. Куда конкретно мне применить этот SMASK (F3) и как.



If a new scan command is specified which changes the
length of the data pattern with respect to a previous
scan, the SMASK parameter must be specified, otherwise
the default SMASK pattern used is undefined and
is an error.

TDI(5C) 0011 0101
SMASK(F3) 1100 1111
Биты, выделенные красным в TDI не имеют значения, в соответствии с нулями в маске SMASK.
SM
Цитата(Leonid.K. @ Jun 7 2009, 18:40) *
If a new scan command is specified which changes the
length of the data pattern with respect to a previous
scan, the SMASK parameter must be specified, otherwise
the default SMASK pattern used is undefined and
is an error.

Это из какого документа? В спецификации Rev.E (в том числе в той, которую Вы же и привесили http://electronix.ru/forum/index.php?act=a...t&id=33413) такого нет! Более того, там указано совершенно однозначно: "If a scan command changes the length of the last scan of the same type and the SMASK parameter is absent, the smask pattern used is all cares." Если это из апноты ксилинкса, то это свидетельствует лишь о том, что их реализация не соответствует спецификации, и, соответственно, некорректна. (у меня к их апнотам давно доверие потеряно, и это лишнее подтверждение)

Цитата(Leonid.K. @ Jun 7 2009, 18:40) *
TDI(5C) 0011 0101
SMASK(F3) 1100 1111
Биты, выделенные красным в TDI не имеют значения, в соответствии с нулями в маске SMASK.

Ну и я знаю, что они не имеют значения, потому, что в маске там нули, и я не спрашивал, что означает SMASK, на этот вопрос спецификация ответ дает. Вопрос был: Какие конкретные действия должны быть предприняты в плеере с этой маской SMASK?
Leonid.K.
Цитата(SM @ Jun 7 2009, 18:12) *
Это из какого документа? В спецификации Rev.E (в том числе в той, которую Вы же и привесили http://electronix.ru/forum/index.php?act=a...t&id=33413) такого нет! Более того, там указано совершенно однозначно: "If a scan command changes the length of the last scan of the same type and the SMASK parameter is absent, the smask pattern used is all cares." Если это из апноты ксилинкса, то это свидетельствует лишь о том, что их реализация не соответствует спецификации, и, соответственно, некорректна. (у меня к их апнотам давно доверие потеряно, и это лишнее подтверждение)


Ну и я знаю, что они не имеют значения, потому, что в маске там нули, и я не спрашивал, что означает SMASK, на этот вопрос спецификация ответ дает. Вопрос был: Какие конкретные действия должны быть предприняты в плеере с этой маской SMASK?


Доверие, как и Вера, личное дело индивидуума.
А Ваш вопрос я задал командам поддержки Corelis, JT и FLYNN.
Corelis и JT скромно промолчали, а вот Hank Flynn ответил буквально следующее:

The only place where we have used the SMASK bits is in applications where we added buffer bits to equalize the boundary register lengths in parallel JTAG chains of differing lengths and needed a way to identify the beginning and end of actual data. We do not currently add an SMASK field in any SVF files that we generate. For SVF files that onTAP imports, such as programming files, all of the TDI bits are treated as care bits and are scanned in without change. As a result I don’t have a ready explanation as to the utility of the SMASK field.

Так что, в случае с неизменной длиной цепочки этот параметр можно смело игнорировать. Он, собственно, и определен как опциональный.

Удачи. Приятно было пообщаться.
В спорах рождается истина.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.