Администрирование Разное Файлы SVF Thu, April 18 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Файлы SVF Печать
Добавил(а) microsin   

SVF, или Serial Vector Format, был разработан как независящий от производителя способ представления JTAG-тестов в тестовых файлах (ASCII).

Примечание: все незнакомые термины и сокращения см. в разделе "Словарик" статьи [6].

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

Этот документ (перевод документа [2]) описывает синтаксис файла SVF. SVF в сущности является носителем данных обмена высокоуровневых операций шины IEEE 1149.1. В сущности операции шины IEEE 1149.1 состоят из операций сканирования и переходов между различных стабильных состояний на диаграмме состояний IEEE 1149.1 (см. рисунок ниже). SVF не описывает явно состояние шины IEEE 1149.1 на каждом такте TCK.

AN 129 JTAG state machine fig11

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

SVF это текст ASCII, состоящий из набора операторов SVF. Допускается максимум до 256 символов в строке, хотя один оператор SVF может занимать несколько строк. Каждый оператор состоит из команды и связанных с ней параметров. Каждый оператор SVF завершается точкой с запятой. SVF безразличен к регистру символов (не case sensitive). Комментарии могут быть вставлены в файл SVF после восклицательного знака ! или пары слешей //. Оба варианта, и //, и ! все символы за ними до конца строки делают комментарием.

Данные сканирования в операторе указываются в HEX-формате, и всегда заключаются в круглые скобки. Данные сканирования не могут быть указаны строкой данных, которая больше, чем заданная последовательность бит JTAG-цепочки. Нулевые старшие биты (Most Significant Bit, MSB) в hex-строке не учитываются, когда было детектировано, что строка слишком длинная. Порядок бит данных сканирования следует соглашению, что самый младший бит (Least Significant Bit, LSB, тот что расположен справа в записи числа) это первый бит, который вдвигается в аппаратуру через TDI, и данные сканирования SMASK, а также первый бит, выведенный через TDO и замаскированный данными MASK. Этот порядок бит соответствует спецификации IEEE 1149.1.

Пример оператора SVF:

SDR 64 TDI(0) TDO(0123456789ABCDEF) MASK(0FFFFFFFFFFFFFFF);

В этом примере осуществляется сканирование 64 бит из регистров данных устройств, находящихся в цепочке JTAG (JTAG chain), с вводом 64 нулей и ожиданием чтения в ответ 0x0123456789ABCDEF, где маска 0FFFFFFFFFFFFFFF показывает, что первые 4 бита не имеют значения, однако все остальные важны.

Пример файла SVF:

!Начало тест-программы
TRST OFF;                                 !Запрет сигнала сброса
ENDIR IDLE;                               !Конец скана IR, состояние ожидания
ENDDR IDLE;                               !Конец скана DR, состояние ожидания
HIR  8  TDI (00);                         !8-битный заголовок IR
HDR 16  TDI (FFFF) TDO (FFFF) MASK (FFFF);!16-битный заголовок DR
TIR 16  TDI (0000);                       !16-битный хвост IR
TDR  8  TDI (12);                         !16-битный хвост DR
SIR  8  TDI (41);                         !8-битный скан IR
SDR 32  TDI (ABCD1234) TDO (11112222);    !32-битный скан DR
STATE   DRPAUSE;                          !Переход в стабильное состояние DRPAUSE
RUNTEST 100 TCK ENDSTATE IRPAUSE;         !Запуск RUNBIST на 100 импульсов TCK!
Конец тест-программы

Таблица 1. Полный список команд SVF.

Команда Функция
ENDDR Задает конечное состояние по умолчанию операций сканирования DR (Data Register, регистр данных).
ENDIR Задает конечное состояние по умолчанию операций сканирования IR (Instruction Register, регистр инструкции).
FREQUENCY Задает максимальную тактовую частоту теста для операций IEEE 1149.1 шины.
HDR Header Data Register, задает данные заголовка (header pattern), которые предшествуют началу последующих операций сканирования DR.
HIR Header Instruction Register, задает данные заголовка (header pattern), которые предшествуют началу последующих операций сканирования IR.
PIO Parallel Input/Output, задает параллельные тестовые данные (parallel test pattern).
PIOMAP Parallel Input/Output Map, отображает позиции столбцов на логический вывод.
RUNTEST Переводит шину IEEE 1149.1 в рабочее состояние (run state) на указанное количество тактов или на указанный период времени.
SDR Scan Data Register, выполняет сканирование регистра данных (IEEE 1149.1 Data Register).
SIR Scan Instruction Register, выполняет сканирование регистра инструкции (IEEE 1149.1 Instruction Register).
STATE Переводит шину IEEE 1149.1 в указанное стабильное состояние.
TDR Trailer Data Register, задает данные "хвоста" (trailer pattern), которые добавляются к окончанию последующих операций сканирования DR.
TIR Trailer Instruction Register, задает данные "хвоста" (trailer pattern), которые добавляются к окончанию последующих операций сканирования IR.
TRST Test ReSeT, управляет опциональным сигналом сброса состояния системы JTAG.

[Подробное описание команд SVF]

Каждая команда и её параметры подробнее рассматриваются далее. Параметры это обязательный компонент, кроме тех, которые заключены в квадратные скобки [] - они показывают, что параметр опциональный (т. е. не обязательный). Для этого документа операция сканирования определена как выполнение команд SIR или SDR и любого связанного заголовка (header) или окончания (trailer) команд. Некоторые опциональные параметры команды, такие как MASK, SMASK и TDI, являются связанными ("sticky", они запоминаются из предыдущей команды до тех пор, пока она не будет изменена или не станет неактуальной) - в целях минимизации размера файла SVF. Параметры MASK, SMASK и TDI "запоминаются" отдельно для команд SIR, SDR, HIR, HDR, TIR и TDR. Некоторые команды SVF ссылаются на состояния IEEE 1149.1 TAP. В следующей таблице перечислены все имена состояний SVF для каждого состояния IEEE 1149.1 TAP.

Таблица 2. Соответствие между именами состояний TAP и именами состояний TAP, используемых в SVF.

IEEE 1149.1 TAP State Name SVF TAP State Name
Test-Logic-Reset RESET
Run-Test/Idle IDLE
Select-DR-Scan DRSELECT
Capture-DR DRCAPTURE
Shift-DR DRSHIFT
Exit1-DR DREXIT1
Pause-DR DRPAUSE
Exit2-DR DREXIT2
Update-DR DRUPDATE
Select-IR-Scan IRSELECT
Capture-IR IRCAPTURE
Shift-IR IRSHIFT
Exit1-IR IREXIT1
Pause-IR IRPAUSE
Exit2-IR IREXIT2
Update-IR IRUPDATE

Реальные числа в SVF указываются следующим синтаксисом:

цифры[.цифры][E[+|-]цифры]

Цифры это одна или большее количество десятичных цифр от 0 до 9. Этот синтаксис совпадает с десятичными литералами VHDL, исключая подчеркивания. Таким образом, все следующие записи эквивалентны: 1, 1E0, 1E+0, 1E-0, 1.0, 1.0E0, 1.0E+0 и 1.0E-0, это допустимые real-числа

Пример недопустимой записи:

1., 1.E0, .5 и .5E0

Диапазон и точность чисел real определяется реализацией.

Синтаксис:

ENDDR stable_state;
ENDIR stable_state;

Устанавливает конечное состояние IEEE 1149.1 для операций сканирования.

Параметр stable_state указывает стабильное состояние IEEE 1149.1, в которое шина IEEE 1149.1 будет принудительно переведена по окончании операции сканирования. Допустимы стабильные состояния IRPAUSE, DRPAUSE, RESET, and IDLE.

Команды ENDDR и ENDIR указывают стабильное состояние IEEE 1149.1, в которое шина будет переведена после операций сканирования DR и IR соответственно. Будучи указанной, команда ENDDR/ENDIR остается действующей, пока не будет отменена другой командой ENDDR или ENDIR. После начального запуса оба состояния ENDDR и ENDIR установлены в IDLE.

Примеры:

ENDIR IDLE;
ENDDR DRPAUSE;

Синтаксис:

FREQUENCY [cycles HZ];

Устанавливает максимальную частоту тактов TCK для последующих сканирований (SDR и SIR), изменений состояния (STATE) и операций тестирования (RUNTEST). Новая частота остается действующей до выполнения следующего оператора FREQUENCY или по достижению конца файла. Максимальная безопасная частота может зависить от параметров UUT или любого дизайна RUNBIST или INTEST. Пропуск cycles удаляет любое ограничение на максимальную частоту, разрешая возврат теста на более высокую частоту после того, как она была временно снижена.

Не обязательный параметр cycles задает максимальную частоту в Гц, указанную как реальное число, большее 0.

Значение cycles указывается как real-число. Диапазон и точность поддерживаемых частот определяется реализацией. Реализация, которая не может инициировать свой TCK на указанной частоте или ниже, должна сообщать об ошибке. Если указан параметр cycles, то новая частота вступит в силу перед следующей командой, на которую она повлияет; т. е. перед следующей командой RUNTEST, SDR, SIR или STATE.

Начальная частота зависит от реализации, и возможно указывается пользователем вне файла SVF на основе характеристик UUT. Если это так, то пропуск cycles даст возврат к заданной внешне частоте. Используется ли значение cycles, когда оно превышает заданную извне частоту, определяется реализацией. Каждый файл SVF заканчивается подразумеваемой FREQUENCY; команда, которая была в одном файле SVF, может не влиять на другой файл SVF.

Реализация должна сообщать об ошибке команды RUNTEST, если указана cycles, а команда RUNTEST указывает и TCK run_count, и max_time, которые не могут быть выполнены при заданной максимальной частоте.

Примеры:

SIR 8 TDI(F3) TDO(01) MASK(03);   ! Настройка BIST, полная скорость
FREQUENCY 90E3 HZ;                ! Снижение частоты до 90 кГц
RUNTEST 100000 TCK;               ! Выполнение BIST
FREQUENCY 1E5 HZ;                 ! Увеличение частоты до 100 кГц
RUNTEST 300000 TCK 1 SEC          ! Ошибка! 300000 TCK на частоте 100 кГц займет
   MAXIMUM 2 SEC;                 !    3 секунды, однако максимум задан 2 секунды
FREQUENCY;                        ! Возврат к полной скорости

HDR обозначает Header Data Register, а HIR обозначает Header Instruction Register.

Синтаксис:

HDR length [TDI (tdi)] [TDO (tdo)] [MASK (mask)] [SMASK (smask)];
HIR length [TDI (tdi)] [TDO (tdo)] [MASK (mask)] [SMASK (smask)];

Задает биты данных по умолчанию для заголовка (default header pattern), которые сдвигаются перед каждой операцией сканирования. Эта команда предназначена для того, чтобы позволить набору инструкций сканирования для конкретного компонента IEEE 1149.1 легко адаптироваться к среде, в которой компонент помещен в тракт сканирования, содержащий другие устройства IEEE 1149.1. Заголовок задает, как дополнять операторы сканирования набором начальных бит, которые соответствуют устройствам, расположенным на пути сканирования вне интересующего компонента.

Параметры:

length 32-битное десятичное число, задающее количество сканируемых бит. Установка length в 0 удаляет заголовок.

[TDI (tdi)] Значения (не обязательный параметр), которое вдвигается в UUT, выраженные как hex-данные. Если этого параметра нет, то значение TDI, которое будет вдвигаться, равно значению TDI, заданному последним предыдущим оператором HDR/HIR. Значения TDI для HDR и HIR "запоминаются" независимо. Параметр TDI должен быть указан явно для первой команды, или когда length меняется.

[TDO (tdo)] Значения (не обязательный параметр), которые сравниваются с реальными значениями, которые выдвигаются через TDO, выраженные как hex-данные. Если этот параметр отсутствует, то сравнение не выполняется.

[MASK (mask)] Маска (не обязательный параметр), используемая в процессе сравнения значений параметра TDO и реально выдвинутых из чипа данных, выраженная как hex-строка. Лог. 1 в определенной позиции бита означает, что эта позиция важна для тестирования (должна совпадать). Лог. 0 показывает, что этот бит не имеет значения. Если этого параметра нет, то используемая маска будет такой, как последняя указанная маска в операторе HDR/HIR statement. Значения MASK для команд HDR и HIR "запоминаются" независимо. Если команда заголовка меняет длину последнего заголовка того же типа, и при этом параметр MASK отсутствует, то используется маска со всеми единичками (проверяются на соответствие все биты). Если параметра TDO нет, то MASK не используется.

[SMASK (smask)] Не обязательный параметр. Задает, о каких данных TDI не нужно заботиться. Параметр традиционно указывается как hex-строка. Лог. 1 в определенной позиции бита показывает, что данные в этой позиции важны, 0 показывает обратное. Если этот параметр отсутствует, то подразумевается, что никакие биты не маскируются. Есл значение smask отсутствует, то используется маска из последнего параметра SMASK, указанного для оператора HDR/HIR. Значения SMASK для команд HDR и HIR "запоминаются" независимо. Если команда заголовка меняет длину последнего заголовка того же типа, и параметр SMASK отсутствует, то для smask используются данные, означающие заботу о всех битах. SMASK будет использоваться, даже если параметр TDI отсутствует.

HDR (Header Data Register, заголовок регистра данных) задает данные по умолчанию для заголовка (default header pattern), которые прикрепляются в начало всех последующих команд SDR. HIR (Header Instruction Register, заголовок регистра инструкции) задает данные по умолчанию для заголовка (default header pattern), которые прикрепляются в начало всех последующих команд SIR. Команды заголовка имеют соответствующий набор команд окончания (trailer commands TIR, TDR), описанные далее. Заголовок может быть удален путем установки length в 0.

Для примера предположим, что файл SVF разработан для микросхемы ASIC. ASIC размещена на плате как u3, см. рисунок:

SVF header trailer

Набор операторов SVF был изначально разработан таким образом, чтобы можно было повторно использовать управления ASIC с минимальной модификацией, если операторы header и trailer были определены, чтобы учесть устройства перед и после u3 в цепочке JTAG. В этом примере header-данные были бы определены для устройств u4 и u5, и trailer-данные были бы определены для u2 и u1.

Опциональные (не обязательные) параметры могут быть указаны в любом порядке. Каждый опциональный параметр может быть указан только один раз. Hex-строки, указанные для TDI, TDO, MASK или SMASK, не могут быть значением, которое длиннее параметра length. В hex-строке подразумеваются начальные нули, если они не указаны явно.

Примеры:

HDR 32 TDI(00000010) TDO(81818181) MASK(FFFFFFFF) SMASK(0);
HIR 16 TDI(ABCD);
...
HDR 0;      ! Удаляет предыдущий заголовок сканирования DR.

Синтаксис:

PIO (vector_string);

Задает параллельный вектор тестирования (parallel test vector). Перед этим должен быть определен оператор PIOMAP, и количество символов вектора в операторе PIO должно быть равно количеству логических имен в предварительно определенном операторе PIOMAP.

vector_string Параметр, задающий ориентированный по столбцам набор из одного или большего количества символов вектора. Каждый символ задает направление и состояние указанного вывода для одного вектора тестирования. Определены следующие символы вектора:

H Перевод в лог. 1 (drive-символ).
L Перевод в лог. 0 (drive-символ).
Z Перевод в состояние высокого сопротивления.
U Детектирование лог. 1 (detect-символ).
D Детектирование лог.0 (detect-символ).
X Детектирование не известного состояния (detect-символ).

Примечание: для двунаправленных каналов Z подразумевает отсутствие управления и отсутствие детектирования (no drive/no detect).

Пример:

PIO (HLUDXZHHLL);

Синтаксис:

PIOMAP (direction1 logical_name1 ... [directionn logical_namen]);
PIOMAP (column1 logical_name1 ... [columnn logical_namen]);

Определяет направление I/O и логическое имя для каждого столбца оператора PIO. Оператор PIOMAP требуется, если файл SVF использует оператор PIO. Если PIO используется, то оператор PIOMAP должен быть размещен в файле SVF перед любым оператором SIR, SDR, STATE, RUNTEST или PIO. На файл SVF разрешается только один оператор PIOMAP.

Первая форма PIOMAP определяет направление I/O и логическое имя для каждого столбца, в том порядке символов векторов, которые появляются в операторе PIO. Первый logical_name соответствует первому символу vector_string в операторах PIO, второй logical_name соответствует второму символу, и так далее.

Вторая форма PIOMAP определяет отображение между определенным столбцом в операторе PIO и логическим именем, связанным с этим столбцом. Направление I/O не определено, так что в любом столбце может использоваться любой символ вектора. Эта вторая форма не рекомендуется для текущего использования, потому что направление I/O не может быть проверено.

Параметры:

direction1-n Задает направление I/O логического имени. Направление может быть IN, OUT или INOUT. Столбец с направлением IN это вход для UUT, и этот столбец в операторе PIO может использоваться для drive-символов. Столбец OUT это выход из UUT, и он может использоваться для detect-символов. Столбец INOUT это двунаправленный сигнал, и он может использовать любой символ вектора.

logical_name1-n Строка символов, идентифицирующая логическое имя, связанное со столбцом. Та же самая строка в операторе PIOMAP не может использоваться более одного раза.

column1-n Задает номер столбца оператора PIO. Первый символ в операторе PIO это столбец 1, второй это слолбец 2, и так далее. Номер столбца указывается десятичным числом. Определенный номер столбца не может использоваться более одного раза. Эта форма PIOMAP не рекомендуется для текущего использования.

Примеры:

!Оператор PIOMAP должен быть размещен перед оператором PIO.
PIOMAP (IN  STROBE
        IN  ALE
        OUT DISABLE
        OUT ENABLE
        OUT CLEAR
        IN  SET);
 
PIO (HLUDXZ);
 
!Вектор следующий:
!  STROBE  < - H
!  ALE     < - L
!  DISABLE < - U
!  ENABLE  < - D
!  CLEAR   < - X
!  SET     < - Z

Синтаксис:

RUNTEST [run_state] run_count run_clk [min_time SEC [MAXIMUM max_time SEC]] [ENDSTATE end_state];
RUNTEST [run_state] min_time SEC [MAXIMUM max_time SEC] [ENDSTATE end_state];

Переводит шину IEEE 1149.1 в указанное рабочее состояние на заданное количество тактов - либо Test Clocks (TCK), либо системных тактов (System Clocks), указанное количество времени или могут быть указаны оба этих значения, затем переводит шину в указанное конечное состояние. Это может использоваться для управления операциями RUNBIST в тестируемой системе.

Если первая форма команды RUNTEST выполняется в указанном рабочем состоянии на заданное количество тактов. Опционально можно указать минимальное и максимальное время задержки. Вторая форма команды RUNTEST выполняет тест для минимального и максимального количества секунд. Так как команда RUNTEST генерирует векторы, то TCK выводит импульсы даже если run_count не указан.

Должны быть указаны либо run_count, либо min_time. Если указаны оба этих значения, то должны быть удовлетворены оба этих условия пере тем, как команда RUNTEST завершит свое выполнение. Если превышено max_time, то RUNTEST остановится перед достижением run_count.

Оба значения min_time и max_time указываются как real-числа. Разрешающая способность и диапазон определяются реализацией.

Транслятор должен выдавать предупреждение, если он не может гарантировать максимальное время, когда текущее состояние перед выполнением команды RUNTEST такое же, как run_state, и задано max_time. Транслятор также должен выдать предупреждение о портируемости (portability warning), когда в этих условиях для определенных реализаций может быть нарушено максимальное время. Реализация, которая использует постоянно работающие такты (freerunning TCK), могла бы быть в рабочем состоянии дольше max_time, потому что вошла бы в run_state по окончании предыдущей команды, а не в начале команды RUNTEST.

Параметры:

run_state Не обязательный параметр. Стабильное состояние IEEE 1149.1 в которое будет переведена шина IEEE 1149.1 во время команды RUNTEST. Допустимы состояния IRPAUSE, DRPAUSE, RESET и IDLE. Если шина уже в рабочем состоянии, то не произойдет переход между состояниями. После того, как run_state был указан один раз, последующие команды RUNTEST по умолчанию будут использовать то же самое рабочее состояние по умолчанию, если run_state не был в них указан. Начальное состояние по умолчанию - IDLE. Для получения информации о пути по умолчанию при перемещении от одного состояния IEEE 1149.1 к другому, см. таблицу 3 во врезке с описанием команды STATE.

run_count Не обязательный параметр. Количество тактов, в течение которых шина IEEE 1149.1 будет находиться в рабочем состоянии, выраженное как 32-битное десятичное число без знака, большее 0.

run_clk Не обязательный параметр. Задает используемые такты, либо TCK (Test Clock), либо SCK (System Clock). System Clock относится к тактам в UUT, которые асинхронны по отношению к TCK. System Clock зависит от реализации.

[min_time SEC] Не обязательный параметр. Минимальное время в секундах, которое должна работать команда RUNTEST перед своим завершением.

[MAXIMUM max_time SEC] Не обязательный параметр. Максимальное время в секундах, в течение которого команда RUNTEST может выполняться (в течение этого времени команда должна завершиться). Максимальное время должно быть указано больше минимального времени. Если указаны оба значения, run_count и max_time, и не все такты завершились при достижении max_time, то команда завершится даже если не все запрошенные такты были сформированы. Может или не может быть гарантировано максимальное время, зависит от реализации.

[ENDSTATE end_state] Не обязательный параметр. Стабильное состояние IEEE 1149.1, в которое шина IEEE 1149.1 будет переведена после выполнения указанного количества тактов, ожидания указанного количества времени, или после выполнения обоих этих условий. Допустимы конечные состояния IRPAUSE, DRPAUSE, RESET и IDLE. Если шина уже в конечном состоянии, то никакого перехода между состояниями не произойдет. Если end_state не указано, то будет использовано конечное состояние по умолчанию (default end state). Когда end_state указано, то оно становится состоянием по умолчанию. Когда указано run_state, то новое run_state становится end_state по умолчанию. Когда run_state не указано, то end_state по умолчанию сохраняется действующим. Начальное состояние по умолчанию для end_state будет IDLE.

Примеры:

! Запуск Run-Test/Idle на 1000 импульсов TCK, затем переход в Pause-DR.
RUNTEST 1000 TCK ENDSTATE DRPAUSE;
! Возврат обратно к Run-Test/Idle на 20 SCK, затем переход в Pause-DR.
RUNTEST 20 SCK;
! Запуск Run-Test/Idle на 1000000 TCK или как минимум на 1 секунду,
! затем переход в Pause-DR.
RUNTEST 1000000 TCK 1 SEC;
! Запуск Run-Test/Idle на как минимум 1 мс и максимум 50 мс, затем
! остаться в состоянии Run-Test/Idle.
RUNTEST 10.0E-3 SEC MAXIMUM 50.0E-3 SEC ENDSTATE IDLE;
! Запуск в Pause-DR на как минимум 50 мс, затем переход в Run-Test/Idle.
RUNTEST DRPAUSE 50E-3 SEC ENDSTATE IDLE;
! Запуск в Pause-DR на как минимум 1 секунду, затем переход в Run-Test/Idle.
RUNTEST 1 SEC;
! Запуск в Run-Test/Idle на как минимум 10 мс, затем остаться в
! Run-Test/Idle.
RUNTEST IDLE 1E-2 SEC;

Синтаксис:

SDR length [TDI (tdi)] [TDO (tdo)][MASK (mask)] [SMASK (smask)];
SIR length [TDI (tdi)] [TDO (tdo)][MASK (mask)] [SMASK (smask)];

Задает данные сканирования (scan pattern), которые подаются в регистр (регистры) сканирования проверяемой системы (target).

Параметры:

length 32-битное число без знака, большее нуля, задающее количество сканируемых бит.

[TDI (tdi)] Не обязательный параметр. Значение для сканирования в target, выраженное hex-значением. Если этот параметр отсутствует, то значение TDI для сканирования в target будет равно значению TDI, указанному в последнем предыдущем операторе SDR/SIR. Значения TDI команд SDR и SIR "запоминаются" независимо. Параметр TDI должен быть явно указан для первой команды, или когда length меняется.

[TDO (tdo)] Не обязательный параметр. Значения, которые сравниваются с реальными значениями, которые выводятся из target, выраженные как hex-строка. Если этот параметр отсутствует, то никакое сравнение не происходит. Если параметр TDO отсутствует, то MASK не используется.

[MASK (mask)] Не обязательный параметр. Маска, используемая при сравнении значений TDO со значениями, которые выводятся из target, выраженная как hex-строка. Лог. 1 в определенной позиции бита показывает, что этот бит должен быть проверен на совпадение, лог. 0 показывает, что проверка не нужна. Если этот параметр отсуствует, то будет использоваться маска из последнего заданного значения MASK для оператора SDR/SIR. Значения MASK команд SDR и SIR "запоминаются" независимо. Если команда сканирования меняет length последнего сканирования того же типа, и параметр MASK отсутствует, то будут использоваться такие данные маски, которые обеспечат проверку всех битов. Если параметр TDO отсутствует, то MASK не будет использоваться.

[SMASK (smask)] Не обязательный параметр. Задает, о каких данных TDI не нужно заботиться, в форме hex-строки. Лог. 1 в определенной позиции бита показывает, что этот бит важен в данных TDI, лог. 0 показывает, что этот бит не важен. Если этот параметр отсутствует, то будет использоваться маска, эквивалентная последнему ранее указанному значению SMASK для оператора SDR/SIR. Значения SMASK команд SDR и SIR "запоминаются" независимо. Если команда сканирования меняет length последнего сканирования того же типа, и параметр SMASK отсутствует, то будет использоваться smask, обеспечивающая важность всех бит. SMASK будет использоваться даже если параметр TDI отсутствует.

Оператор SDR (Scan Data Register) задает данные сканирования (scan pattern) для регистра данных тестируемой системы (target Data Register). Оператор SIR (Scan Instruction Register) задает то же самое для регистра инструкций (target Instruction Register).

Перед сканированием значений, указанных в команде SDR или SIR, будут выведены данные заголовка, указанные в последней команде заголовка HDR или HIR, соответственно, и после вывода данных SDR или SIR будут выведены данные, указанные в последней команде трейлера TDR или TIR соответственно.

Опциональные параметры могут быть указаны в любом порядке. Каждый опциональный параметр может быть указан только один раз. Hex-строки, указанные для TDI, TDO, MASK или SMASK, не могут быть значением больше максимального количества бит, указанного параметром length. Подразумеваются начальные нули в hex-строке, если они не были указаны явно.

Примеры:

SDR 24 TDI(000010) TDO(818181) MASK(FFFFFF) SMASK(0);
SIR 16 TDI(ABCD);

Синтаксис:

STATE [pathstate1 [pathstate2 ...[pathstaten]]] stable_state;

Переводит шину IEEE 1149.1 в одно из стабильных состояний IEEE 1149.1.

Параметры:

pathstate1-n Опциональный список одного или большего количества состояний IEEE 1149.1, описывающих явный путь через диаграмму состояний TAP (Test Access Port), который указан для достижения конечного стабильного состояния. Допустимы состояния RESET, IDLE, DRSELECT, DRCAPTURE, DRSHIFT, DRPAUSE, DREXIT1, DREXIT2, DRUPDATE, IRSELECT, IRCAPTURE, IRSHIFT, IRPAUSE, IREXIT1, IREXIT2 и IRUPDATE. Эти состояния должны быть перечислены в порядке, который удовлетворяет диаграмме состояний TAP. Если параметры pathstate не перечислены, то подразумевается путь по умолчанию, основанный на текущем состоянии конечного стабильного состояния, как это перечислено в таблице 3 далее.

stable_state Стабильное состояние IEEE 1149.1, в которое будет переведена шина IEEE 1149.1. Допустимы стабильные состояния IRPAUSE, DRPAUSE, RESET и IDLE.

Примеры:

!Перевод шины в DRPAUSE из её текущего состояния:
STATE DRPAUSE;
!Диктует явный путь перехода состояний шины, когда она переходит
! от DRPAUSE к IRPAUSE
STATE DREXIT2 DRUPDATE DRSELECT IRSELECT IRCAPTURE IREXIT1 IRPAUSE;

Команда STATE используется для перемещения состояния шины IEEE 1149.1 из одного стабильного состояния в другой для инициализации теста UUT, выполнения теста или тестирования контроллера TAP. Значения TDI и TDO при использовании команды STATE не определены.

Если не указаны параметры pathstate, то команда STATE всегда следует одному и тому же пути по диаграмме состояний IEEE 1149.1, когда происходит переход от одного стабильного состояния к другому. Следующая таблица показывает путь, который берется для достижения каждого стабильного состояния. Для каждого пути состояния подразумевается, что выдается как минимум один такт Test Clock.

Таблица 3. Переходы между состояниями IEEE 1149.1.

Текуще состояние Новое состояние Путь между состояниями
RESET RESET RESET
RESET IDLE RESET-IDLE
RESET DRPAUSE RESET-IDLE-DRSELECT-DRCAPTURE-DREXIT1DRPAUSE
RESET IRPAUSE RESET-IDLE-DRSELECT-IRSELECT-IRCAPTUREIREXIT1-IRPAUSE
IDLE RESET IDLE-DRSELECT-IRSELECT-RESET
IDLE IDLE IDLE
IDLE DRPAUSE IDLE-DRSELECT-DRCAPTURE-DREXIT1-DRPAUSE
IDLE IRPAUSE IDLE-DRSELECT-IRSELECT-IRCAPTURE-IREXIT1IRPAUSE
DRPAUSE RESET DRPAUSE-DREXIT2-DRUPDATE-DRSELECT-IRSELECTRESET
DRPAUSE IRSELECT IDLE DRPAUSE-DREXIT2-DRUPDATE-IDLE
DRPAUSE IRCAPTURE DRPAUSE DRPAUSE-DREXIT2-DRUPDATE-DRSELECTDRCAPTURE-DREXIT1-DRPAUSE
DRPAUSE IRSHIFT IRPAUSE DRPAUSE-DREXIT2-DRUPDATE-DRSELECT-IRSELECTIRCAPTURE-IREXIT1-IRPAUSE
IRPAUSE RESET IRPAUSE-IREXIT2-IRUPDATE-DRSELECT-IRSELECTRESET
IRPAUSE IRPAUSE IRPAUSE-IREXIT2-IRUPDATE-IDLE
IRPAUSE DRPAUSE IRPAUSE-IREXIT2-IRUPDATE-DRSELECT-DRCAPTUREDREXIT1-DRPAUSE
IRPAUSE IRPAUSE IRPAUSE-IREXIT2-IRUPDATE-DRSELECT-IRSELECTIRCAPTURE-IREXIT1-IRPAUSE

Синтаксис:

TDR length [TDI (tdi)] [TDO (tdo)][MASK (mask)] [SMASK (smask)];
TIR length [TDI (tdi)] [TDO (tdo)][MASK (mask)] [SMASK (smask)];

Задает завершающие данные по умолчанию (default trailer pattern) которые вдвигаются после всех последующих операций сканирования. Эта команда предназначена для того, чтобы можно было легко адаптировать набор операций сканирования к определенному компоненту IEEE 1149.1, который находится в одной цепочке JTAG вместе с другими устройствами IEEE 1149.1. Эти завершающие данные (trailer pattern) определяют, какими завершающими наборами бит данных нужно дополнить операторы сканирования, чтобы эти данные соответствовали устройствам, находящимся после интересующего компонента.

Параметры:

length 32-битное десятичное число, обозначающее количество бит для сканирования. Установка length в 0 удаляет trailer.

[TDI (tdi)] Не обязательный параметр. Значение для сканирования в target, выраженное в hex-форме. Если этот параметр отсутствует, то значение TDI для сканирования в target будет равно значению TDI, указанному в последнем предыдущем операторе TDR/TIR. Значения TDI команд TDR и TIR "запоминаются" независимо. Параметр TDI должен быть явно указан для первой команды, или когда меняется length.

[TDO (tdo)] Не обязательный параметр. Значения, которые должны сравниваться с реальными выводимыми из target данными, выраженные как hex-строка. Если этот параметр отсутствует, то никакое сравнение выполняться не будет.

[MASK (mask)] Не обязательный параметр. Маска, используемая при сравнении значений TDO с реально выводимыми из target значениями, выраженными как hex-строка. Лог. 1 в определенном бите показывает, что в этой позиции сравнение важно, лог. 0 показывает, что об этом бите заботиться не нужно. Если этот параметр отсутствует, то будет использоваться маска из последнего указанного значения MASK предыдущего оператора TDR/TIR. Значения MASK команд TDR и TIR "запоминаются" независимо. Если команда трейлера меняет length последнего трейлера того же типа, и параметр MASK отсутствует, то будут вместо mask использоваться такие данные, которые обеспечивают проверку всех бит. Если параметр TDO отсутствует, то MASK не будет использоваться.

[SMASK (smask)] Не обязательный параметр. Задает, о каких данных TDI не нужно заботиться, в форме hex-строки. Лог. 1 в определенной позиции бита показывает, что этот бит важен в данных TDI, лог. 0 показывает, что этот бит не важен. Если этот параметр отсутствует, то будет использоваться маска, эквивалентная последнему ранее указанному значению SMASK для оператора TDR/TIR. Значения SMASK команд TDR и TIR "запоминаются" независимо. Если команда трейлера меняет length последнего сканирования того же типа, и параметр SMASK отсутствует, то будет использоваться smask, обеспечивающая важность всех бит. SMASK будет использоваться даже если параметр TDI отсутствует.

Команда TDR (Trailer Data Register) задает завершающие данные (trailer pattern), которые будут добавлены в конец всех последующих команд SDR. TIR (Trailer Instruction Register) делает то же самое, только для команд SIR. Трейлер можно удалить установкой length в 0.

Для примера предположим, что SVF-файл был разработан для ASIC. ASIC была помещена на плату как u3, см. рисунок:

SVF header trailer

Набор операторов SVF был изначально разработан таким образом, чтобы можно было повторно использовать управления ASIC с минимальной модификацией, если операторы header и trailer были определены, чтобы учесть устройства перед и после u3 в цепочке JTAG. В этом примере header-данные были бы определены для устройств u4 и u5, и trailer-данные были бы определены для u2 и u1.

Опциональные (не обязательные) параметры могут быть указаны в любом порядке. Каждый опциональный параметр может быть указан только один раз. Hex-строки, указанные для TDI, TDO, MASK или SMASK, не могут быть значением, которое длиннее параметра length. В hex-строке подразумеваются начальные нули, если они не указаны явно.

Примеры:

TDR  32 TDI(00000010) TDO(81818181) MASK(FFFFFFFF) SMASK(0);
TIR  16 TDI(ABCD);
... TDR  0;       ! Удаляет предыдущий трейлер сканирования DR.

Синтаксис:

TRST trst_mode;

Команда TRST описывает работу опционального сигнала Test Reset.

Параметр trst_mode задает, находится ли сигнал TRST в состоянии активности, неактивном состоянии, состоянии Hi-Z или даже существует или нет. Допустимы следующие состояния trst_mode:

ON Active (активный лог. 0)
OFF Inactive (не активная лог. 1)
Z High Impedance (Hi-Z, высокое сопротивление, т. е. отключено)
ABSENT Not present (сигнал отсутствует)

Если команда TRST указана с параметром ABSENT, то она должна быть помещена в начало файла SVF перед любым другим оператором SIR, SDR, STATE, RUNTEST или PIO, и больше операторы TRST не допускаются. Оператор TRST не зависит от состояния IEEE 1149.1 TAP. Это позволяет тестировать target, используя либо сигнал TRST, либо состояние IEEE 1149.1 TAP.

Примеры:

TRST ON;
TRST OFF;

[Ссылки]

1. SVF Files site:xjtag.com.
2. Serial Vector Format Specification site:asset-intertech.com.
3. Lib(X)SVF - A library for implementing SVF and XSVF JTAG players site:clifford.at.
4. UrJTAG: бесплатный инструментарий JTAG.
5. Подключение к JTAG TAP через FT2232H.
6Техническое описание интерфейса эмуляции JTAG Analog Devices.

 

Добавить комментарий


Защитный код
Обновить

Top of Page