Научная статья на тему 'Тестирование и верификация HDL-моделей компонентов soc. II'

Тестирование и верификация HDL-моделей компонентов soc. II Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
131
27
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Хаханов Владимир Иванович, Литвинова Евгения Ивановна, Побеженко Ирина Александровна, Tiecoura Yves, Ngene Christopher Umerah

Предлагается алгебрологическая модель для вычисления критериев тестопригодности системных HDL-моделей, ориентированная на существенное повышение качества проектируемых компонентов цифровых систем на кристаллах (yield) и уменьшение времени разработки (time-to-market).

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Хаханов Владимир Иванович, Литвинова Евгения Ивановна, Побеженко Ирина Александровна, Tiecoura Yves, Ngene Christopher Umerah

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Testing and verification of HDL-models for SOC components. II

The technological tools, focused to testable analysis and subsequent synthesis of software is proposed. It is applicable for testing and verification. The examples of testability analysis by determination the controllability and observability of the transaction and control graph to detect the critical points with subsequent solving of the problem detection and removal of faults in a real DSP project of Xilinx.

Текст научной работы на тему «Тестирование и верификация HDL-моделей компонентов soc. II»

УДК 681.326:519.613

В.И. ХАХАНОВ, Е.И. ЛИТВИНОВА, И.А. ПОБЕЖЕНКО, TIECOURA YVES (ТИЕКУРА ИВ), NGENE CHRISTOPHER UMERAH (НГЕНЕ КРИСТОФЕР УМЕРАХ)

ТЕСТИРОВАНИЕ И ВЕРИФИКАЦИЯ HDL-МОДЕЛЕЙ КОМПОНЕНТОВ SOC. II

Предлагается алгебрологическая модель для вычисления критериев тестопригодности системных HDL-моделей, ориентированная на существенное повышение качества проектируемых компонентов цифровых систем на кристаллах (yield) и уменьшение времени разработки (time-to-market).

1. Введение

Модели верификации программного HDL-кода получены с использованием среды моделирования, тестопригодного анализа логической структуры HDL-программы для квазиоптимального размещения механизма ассерций [1], применяемой в hardware design and test. Разработанные критерии управляемости и наблюдаемости [2] использованы для оценки качества графа управления в целях его улучшения и эффективного диагностирования семантических ошибок. Представлены примеры вычисления функций и критериев тестопригодности, а также поиска ошибок в программном HDL-коде реального цифрового изделия [3].

2. Анализ тестопригодности графа управления

Учитывая, что автоматная модель программного продукта представлена взаимодействием операционного и управляющего автомата [4] (рис. 1), то наряду с моделированием транзакционного графа необходимо иметь возможность анализировать тестопригодность граф-схемы алгоритма управления (ГСА).

Рис. 1. Автоматная модель НБЬ-программы Предлагается ГСА представить в виде содержательного графа управления (СГУ), который является подобным транзакционному графу. Здесь вершины есть операции программного кода, а дуги представляют условия перехода из одной вершины в другую для выполнения команды, обозначенной вершиной-стоком. Следовательно, для СГУ можно использовать процедуры, ранее разработанные для подсчета критериев тестопригодности транзакционного графа в части управляемости и наблюдаемости. Примером содержательного графа может служить рис. 2, имеющий 6 вершин и 9 дуг.

Подсчет управляемостей графа [3, с. 239, формулы (1), (4)], представленного на рис. 2, имеет следующий вид:

S1 = T33T4 v T2; S3 = T

S4 = T,3TlTi v T,3Ti v TfToT,

3^1

-,3т~,1т~,1т~,2

l3 4*6 .2^2

3 5 3 1 2

S2 = T v TfTf v T T^ v T^T\Tn v T T tT

3 1 2

-,3т~,2г1~,1т~,2

l3 "4*6*7

12

3 5 7

l3 4 7

9 7

3rp2

S5 = T3T8-

XI VX1 Xl V X.1

X1VX9V

X2 V X4

xj v X41

Рис. 2. Содержательный граф HDL-программы Подсчет наблюдаемостей графа [3, с. 239, формулы (1), (4)], представленного на рис. 2, содержит следующие выражения:

S1 = T2 V T7 T6'

S3 = T72T56 v T7T9T8 v Tf^ v T^T4, S0 = T2T? v T^T^T3 v T2T6T3 v T2T6T3 v T2T6T2T,3 v T2T6T3

2T~,1 T~"1

2 n

7 АбЧА3

7 A5A3

7 A5A3

7 9

2 4*3 •

О T12 о ti2T-I1

S4 = T7 ; S5 = T7 T9-

0,00

s0 s3 Si s5 s4 s2

-♦-ui i,00 1,00 0,75 0,50 0,44 0,38

--q1 0,45 0,50 0,56 0,25 0,44 0,38

ni 0,45 0,5 0,75 0,5 1 1

Рис. 3. Графики тестопригодности для графа управления Для использования тестопригодности выполняется построение управляемости и наблюдаемости всех компонентов HDL-модели (рис. 3). Затем вычисляется обобщенная характеристика - тестопригодность каждого компонента как произведение управляемости и наблюдаемости:

1 n

Q = - Е (Ui х Ni). (1)

ni=i v 7 Далее интерес представляет создание таблицы тестопригодности, управляемости и наблюдаемости [2, 4], а также соответствующий им график для визуального контроля «плохих» компонентов. Фиксация определенной планки тестопригодности, ниже которой значения будут считаться неприемлемыми, позволит разработчику создавать ассерции и другие дополнительные средства повышения тестопригодности для проблемных функциональных блоков. Кроме того, средства повышения тестопригодности должны обеспечивать глубину диагностирования до функционального компонента и привязанных к нему операций в целях быстрого восстановления работоспособности программной HDL-модели. В целях построения алгоритмов поиска ошибок в программном коде можно использовать таблицу неисправностей, по аналогии с технологией тестирования hardware. Любопытное решение в процессе проверки функциональных блоков связано с сигнатурным анализом, где обобщенная сигнатура отождествляется с исправным поведением всего кода, а также с каждым компонентом. Любое несовпадение эталонной сигнатуры с фактической приводит к выполнению процедуры диагностирования и восстановления работоспособности HDL-модели путем исправления семантики кода.

Предложенная модель верификации НБЬ-проекта использует 1е81;ЬепсЬ, функциональное покрытие, механизм ассерций, описанную выше метрику оценки тестопригодности, таблицу неисправностей и вектор экспериментальной проверки (ВЭП), формируемый по заданным контрольным точкам путем сравнения сигнатур. Функциональное ограничение 1е81;ЬепсЬ связано с неразличимостью компонентов программного кода, в которых могут быть ошибки. Его основное назначение - проверка исправности НБЬ-модели. Поэтому в качестве дополнения к процедуре проверки придается механизм ассерций [4-6], основная цель которого с заданной глубиной - до программного компонента - определить место и вид ошибки на стадии выполнения диагностирования, после того, как 1е81;ЬепсЬ зафиксировал неправильное функционирование программного проекта. Векторная модель среды верификации [4, 6] имеет вид:

Т1 §1

Т2 © §2

т; Б;

Тп §п

Л] а Ь1

Л2 Ь2

Л; Ь;

Лп Ьп

(2)

В процессе моделирования выполняется сравнение реакций 1е81;ЬепсЬ и НБЬ-модели, что формирует состояния координат ассерционного вектора:

Л; = ДТ;,Б;) = Т; ©Л; = {0,1,X}.

Затем существенные {0,1}-координаты вектора ассерций маскируют матрицу достижимостей для получения списка программных блоков с ошибками путем выполнения одной из процедур, определенных выражениями:

Ц(Л) = ( П Л;) \ ( и Л;);

У1(Л; = 1) У1(Л; = 0)

Чт(А) = ( и Л;)\( и Л;). (3)

У1(Л; = 1) У1(Л; = 0)

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

3. Диагностирование по матрице достижимостей графа

Демонстрация технологии диагностирования неисправных блоков представлена следующим примером. Пусть имеется функционально-логический граф НБЬ-модели, изображенный на рис. 4.

Рис. 4. Функционально-логический граф НБЬ-модели Структура взаимосвязей графа представлена матрицей достижимостей:

м 112131415;6171819

1 2 3 1 .. .. .. ¡-----ь .. .. 1...........ь .. .. <........... 1 ~~4.....1-----4--4.....!.....4--4.....!..... 1 11 .Л.].....!_. _..!..._].....!..........!.....

5 "в" -у- 8 9 ...... .. ............ ............ ......,..... 1 1 1 1 1 1 ! 1 1 1 """" 1.....Г,-'!" "" 1.....Г,"'! """" 1.....1..... 11 1- --.----...........; -- -- 1.....:..... 1 1 1 1 1 1 1 1 1 1 .. .. 4. .. ..!_ -- .4 .. .. 4. .. ..!.... .4 .. .. 4.....1.. ... 1 1 1 1 1 ' ' ' III ! !

Векторная модель диагностирования, заданная выражением (2), содержит списки блоков-предшественников для каждой вершины графа, которые получены из матрицы достижимостей. Каждой вершине графа ставится в соответствие ассерция, которая в процессе моделирования может быть доопределена значением {0,1}. В данном случае векторная модель поиска ошибочных программных блоков (2) для графа, представленного на рис. 4, трансформируется к виду:

Т1

Т.

Т4

Т. 16. Т7

Т.

Т9

©

А.

Яз.

89

А1 = X

А2 = X

Аз = X

А4 = 0

А5 = X

Аб = X

А7 = 1

А8 = 1

А9 = X

а

Ь = Б1

Ь2 = 82

Ьз = 83

Ь4 = 81,84

Ь5 =82,85

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Ь6 =83,86

Ь7 = 81,82,84,87

Ь8 = 81,82,83,85,86,88

Ь9 = 82'83'85'86,89

В результате выполнения диагностирования по системе уравнений (3), заключающейся в пересечении всех неисправных компонентов, которые соответствуют единичным координатам вектора ассерций, с последующим вычитанием объединения всех неисправных модулей, соответствующих нулевым координатам вектора А, получается список дефектных программных блоков (при условии существования только одного ошибочного модуля):

Ц(А4 = 0, А7 = 1, А8 = 1) = Ь7 пЬ8\Ь4 =

= 81,82,84,87 п 81,82,83,85,86,88\81,84 = 82-При использовании второго уравнения из выражения (3) можно получить список всех программных блоков, которые могут иметь ошибки, при условии существования нескольких дефектных компонентов:

Ьт(А4 = 0, А7 = 1, А8 = 1) = Ь7 иЬ8\Ь4 =

= 81,82,84,87 и81,82,83,85,86,88 \81,84 =

=82,83'85'86'87,88-

Для иллюстрации следующего примера диагностического эксперимента можно убрать из рассмотрения первые два вектора, которые не являются существенными для процесса обработки списков неисправных блоков на основе анализа координат ассерционного вектора Ь = а(А, 8). Процедура вычисления списка одиночных дефектов имеет вид:

А1 = X

А2 = X

А3 = X

А4 = X

А5 = 0

А6 = X

А7 = 0

А8 = 1

А9 = 1

а

Ь = 81

Ь2 = 82

Ь3 = 83

Ь4 = 81,84

Ь5 = 82,85

Ь6 =83,86

Ь7 = 81,82,84,87

Ь8 = 81,82,83,85,86,88

Ь9 = 82,83,85,86,89

(Ь8 пЬ9) -- (Ь5 и Ь7)

83,86

Для множественных неисправных блоков на одном и том же векторе ассерций результат имеет большее число дефектных модулей:

А] = X

А2 = X

А3 = X

А4 = X

А5 = 0

А6 = X

А7 = 0

А8 = 1

А9 = 1

а

Ь = 81

Ь2 = 82

Ь3 = 83

Ь4 = 81,84

Ь5 =82,85

Ь6 =83,86

Ь7 = 81,82,84,87

Ь8 = 81,82,83,85,86,88

Ь9 = 82,83,85,86,89

(Ь8 и Ь9) --(Ь5иЬ7)

83,86> 88,89

4. Диагностирование по векторно-логической форме графа

Интересна векторная форма модели проведения диагностического эксперимента. Здесь представлена матрица достижимостей, встроенная в модель диагностирования, где ассер-ции изображены в виде троичного вектора:

А Ь ¡1!2!3!4;5;б!7!8!9 _ = (Ь8 Ль9) л Л (_5 V _7) = = (001001000) = = ^б

X X X X ""0" X "Т I_1 : 1 : ! ! ! ! ! ! ! • -- -- -- + - --!-- -- -4 -- - 4.....!-----1 - - 4.....!-----4 - - Ьо ! ' 1 ! ! ! ! ! ! ! ----А. 1. .. ..!.....4 .. .. 4.....и----1.. .. 4.....и----1.. .. Ь1 ЬЬ3 1 1 1 ЬЬ4 1 1 1 1 Ь5 • | 1 | ! ! 1 ! ! ! ! - -1- - --!.....1 - - 1.....- -! - - 1.....!-- - - - Ьб ' ! ! 1 ! : : 1 ! ! ! —4-----1.....4 — <.....!-----; — 4.....:-----(— Ь7 1 1 1 1 ... 1. .. _1.....] .. .. 1.....и. .. .1.. .. 1.....1.. .. .1.. .. й 1 1 1 1 Ч 1 Ч Ч 1 !1! -ёК-ЧНт!.....гпт!.....г1т

! ¡4 \ ! 1! ! !

Результат поиска программных блоков выполнен при условии существования в проекте одного неисправного модуля, который записан в последней строке. Процедура диагностирования на основе ассерционного вектора А путем модификации (3) к выполнению векторных операций конъюнкции, дизъюнкции и отрицания

Ц(А) = ( Л АО л( V А~);

= 1) ^(А^ = 0)

Ьт(А) = ( V АО л ( V АО.

= 1) = 0)

определена в правой части матричной модели диагностирования. Аналогичные вычисления для случая существования кратных дефектов в программных модулях проекта дают следующий результат:

X X X X

"о"

X

"о"

Ь ¡1!2!3!4!5!б!7!8!9

___1_ _2

1

—______

! : ! ! !

- -I-----4----Ч.....I--- ->-- -

! ! ! ! ! -.1.____I____4.....1____

! ! ! 1 !

I : I I

!

,Ь4 _Ь.5. .__.б. _Ь_7_

_Ь.8.

Ь9

1

1

11 11

! :

г—т ■ '

Г---1-1

—-I ! I

ГТ1

1.1.1 1

: : : :

1 1

1

Т'

■ ' '

-г----(-7-1.....г — ¡-—

1

----4.....-1-. -

1

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

-1.----!.____J.....1... -Л- __

1 1 1 11 11 1 1

1 1 1

ьт

1

I1 ! =1 = 1

ьт = (ь8 Vь9)л

л (_ V Ь7) = = (001001011) =

В реальности результат диагностирования гарантирует наличие хотя бы одного дефектного блока из списка компонентов, подозреваемых в наличии неисправностей, определенных в [4].

5. Диагностирование по алгебрологической форме графа

Предлагается процедура диагностирования ИБЬ-модели по структурно-логическому (тран-закционному) графу, представленному алгебраической формой описания графовых структур [4]. Ее преимущества заключаются в компактности задания матрицы достижимостей, которая к тому же обладает свойством структуризации графа в форме задания всех путей, нагруженных на каждую вершину. Кроме того, сочетания дефектных компонентов, определяемые конъюнктивными термами, дают более точный результат диагностирования, по сравнению с заданием неисправных модулей в виде неупорядоченного множества элементов.

Для структуры, представленной на рис. 4, алгебраическая форма графа и вычисление списка одиночных неисправностей имеют следующий вид:

А ь Ц = (Ц8 лЬ9)-(Ь5 VЬу) = = (8285 V 8385) - 8285 = = 8385

X Ц = 81

X Ь2 = 82

X Ь3 = 83

X Ь4 = 8184

0 ь5 = 8285

X ь5 = 8385

0 Ьу = 818487 V 8287

1 "Т . ь.8„=.8.188 V. .82.8.5.8.8 .V. 83.858.8.. Ь9 = 828589 V 838589

Ц = 83,85

Процедура анализа логических функций графовой структуры содержит три пункта:

1. Все термы и переменные в ДНФ, соответствующей нулевому значению ассерционной координаты, равны нулю.

2. В других ДНФ, соответствующих единичному значению ассерционной координаты, левая часть конъюнктивного терма, включая переменную, ранее определенную нулем, удаляется.

3. Для единичных функций выполняется пересечение (объединение) оставшихся термов, если выполняется диагностирование одиночных (кратных) неисправных блоков.

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

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

А ь Ьт = (Ь8 V Ь9) - (Ь5 V Ь7) = (8188 828588 V 838588 828589 V838589)--(8285 V 818487 V 8287) = =838588V838589

X Ц = 81

X Ь2 = 82

X Ь3 = 83

X Ь4 = 8184

0 ь5 =8285

X ь5 =8385

0 Ьу =818487 V8287

1 ь8 = 8188V 828588 V 838588

1 Ь9 =828589 V838589

ьт = 83,85,88,89

Для полученной функции Ьт применение дополнительной ассерционной точки А5 = 8385 позволяет повысить глубину диагностирования до двух неисправных блоков:

[8385 ^ Аб = 1;

Ьт = 838588 V838589 = <! т 3 6 8 3 6 9 |88 V89 ^ Аб = 0.

Проверка ассерционной точки Аб = 1 не исключает блок 88 из списка неисправных, но гарантирует факт наличия ошибки в компонентах 8385 . Поэтому после процедуры исправления некорректностей в блоках 8385 необходимо повторять диагностический эксперимент. Что касается проверки ассерционной точки А5 = 0, то она исключает наличие ошибок в блоках 8385 . Поэтому нулевая проверка всегда доставляет более ценную информацию для диагностического эксперимента. В целях уменьшения подозреваемого множества неисправных блоков следует еще одна проверка (А3 V А9), которая устанавливает точный диагноз:

Lm -

- S3S6 -

= S8 v S9 - ■

[83 ^ Аз = 1; ^ А3 = 0; [Б8 ^ А9 = 0; [б9 ^ А9 = 1.

После устранения ошибок диагностический эксперимент повторяется для поиска других составляющих кратных неисправностей ИБЬ-блоков, которые могут присутствовать в программном коде [4].

Предложенная технология верификации является достаточно простой, ориентирована на обработку ИБЬ-моделей большой размерности, включающей тысячи строк кода, который описывает системные структуры на языках УИБЬ, Уеп^.

Технологический маршрут верификации программного кода представлен матрицей выполнения последовательно-параллельных процедур:

P

1 F - f2(P,S) S - f1(P) T - f3(P,S,F)

2 G - f4 (S, F)

3 U - f5(G, S,F)

4 A - f6(G,U, S,F,T)

5 Ls - d(T, F, S, A)

которые имеют следующее содержание в виде 5 пунктов:

1) Создание HDL-модели, testbench, функционального покрытия по спецификации проекта в параллельном режиме.

2) Синтез транзакционного графа (вершины - элементы хранения информации и дуги -HDL-операторы, выполняющие транзакции между вершинами), представляющего структуру программного кода в компонентах и операторах HDL-языка. Операторы циклов размещаются в одном блоке. Граф не должен содержать глобальных обратных связей.

3) Определение тестопригодности графа путем подсчета наблюдаемостей всех вершин для планирования верификационного диагностического эксперимента.

4) Размещение ассерций в n% (25%) вершин, имеющих минимальные оценки наблюдаемостей. Их число должно обеспечивать заданную глубину диагностирования. Ассерции должны быть управляемыми, что обеспечивает их включение или отключение в процессе итеративной верификации в зависимости от результата предыдущей проверки. Данное свойство может существенно сократить время отладки программного кода. Такой подход условного (ассерционного) зондового диагностирования широко используется при тестировании сложных аппаратных цифровых изделий.

5) Диагностирование и исправление ошибок путем совместного моделирования HDL-кода, ассерций, на тестовых последовательностях testbench при условиях полноты, определенных функциональным покрытием. После устранения ошибок в дефектном блоке процедура моделирования и диагностирования повторяется.

6. Верификация DCT IP-core, Xilinx

Представленные модели верификации программного HDL-кода проверены на реальном проекте Xilinx IP-core в целях определения наличия в нем ошибок. При этом удалось получить положительный результат относительно неверной семантики работы программы для последующего исправления кода. Фрагмент модуля дискретного косинусного преобразования представлен листингом 1 [Xilinx.com]. Вся HDL-модель насчитывает 900 строк кода System Verilog.

Листинг 1

module Xilinx

'timescale 1ns/10ps

module dct ( CLK, RST, xin,dct_2d,rdy_out);

output [11:0] dct_2d;

input CLK, RST; input[7:0] xin; /* input */ output rdy_out; wire[11:0] dct_2d;

/* The first 1D-DCT output becomes valid after 14 +64 clk cycles. For the first 2D-DCT output to be valid it takes 78 + 1clk to write into the ram + 1clk to write out of the ram + 8 clks to shift in the 1D-DCT values + 1clk to register the 1D-DCT values + 1clk to add/sub + 1clk to take compliment + 1 clk for multiplying+2clks to add product. So the 2D-DCT output will be valid at the 94th clk. rdy_out goes high at 93rd clk so that the first data is valid for the next block*/ Endmodule

В соответствии с правилами тестопригодного анализа, приведенными выше, спроектирован транзакционный граф, представленный на рис. 5, который для DCT-module Xilinx имеет 28 вершин-компонентов (входная и выходная шины, логические и регистровые переменные, векторы и память).

Рис. 5. Транзакционный граф ХШпх модели Идентификатор дуги имеет верхний индекс, обозначающий число транзакций в программе между исходящей и входящей вершинами. Для каждой вершины строятся логические функции управляемости и наблюдаемости. Пример логической функции управляемости для вершины В2 имеет следующий вид:

т^ (в )_т12т 2 т2 т 4 /т 1 \ / т1 \ / т^т^т^т^т64т64т4 т 4 т64т8 т8 т8 /т64т4 х

и (В2/ _ 128127122125124(15 У т6 У 112113114115115 т17 118119120 121122123(11 т7 У

11т2 т8т9т10 \ т11т3 \ т11т4» _

_'т,2 гу2 ,г,4 гт",1 '■р^2 'т,2 гу2 ,г,4

= T28 T27 T22 T25 T24 T5 v T6 T28 T27 T22 T25 T24 v

ry12^2 ry2 ry2 ry4 ry4 ry2 ry2 ry2 ry64^64^4 ry4 ry64^8 ry8 ry8 ry64^4

v i28i27i22i25i24i12i13i14i15i15 T17 i18i19i20 i21i22i23i1 T7 v

гу12^2 гу2 гу2 гу4 гу4 гу2 гу2 гу2 губ4^б4^4 гу4 губ4^8 гу8 гу8 гу4 губ4^8^8^4

V 128127122125124112113114115115 т17 118119120 12112212311112 т8 т9 т10 V

^4 ^1^12^2 гу2 гу2 гу4 гу4 гу2 гу2 гу2 губ4^б4^4 гу4 губ4^г*8 ^8 'т,8

V 11113128127122125124112113114115115 т17 118119120 121122123 V

4 1 12 2 2 2 4 4 2 2 2 б4 б4 4 4 б4 8 8 8 V 11114128127122125124112113114115115 т17 118119120 121122123.

Для остальных вершин аналогично выполняется вычисление ДНФ управляемостей.

Для вершины Ь1 ДНФ наблюдаемости имеет вид:

(_ ) = т12т2 т2 т2 т4 т8 т8 т8 тб4т4 т4 тб4тб4т2 т2 т4тб4 ^ (Ь1) = 128127122125124123122121120 119118117 т1б 11511417 т1 .

Синтезированные логические функции задают все возможные пути управления, как во времени, так и в пространстве, что можно считать новой аналитической формой описания тестопригодности проекта. По ДНФ, следуя выражениям для подсчета тестопригодности [1], можно определить критерии управляемости (наблюдаемости) для всех компонентов ИБЬ-модели. Здесь можно рассматривать два варианта (сценария) обсчета программной модели. 1) Учитывается только графовая структура, где вес каждой дуги равен 1, независимо от числа транзакций в программном коде. 2). Все дуги графа отмечаются реальным количеством транзакций, имеющих место между двумя вершинами транзакционного графа. Оценки тестопригодности описанных процедур могут существенно отличаться друг от друга. Пользователь должен определиться, что важнее только структура программного кода - применить первый сценарий или иметь более сложную и точную модель транзакций, распределенных во времени, на множестве графовых компонентов. В качестве примера ниже приводится процедура вычисления управляемости для В2 :

и(В2) =—х (б + б +19 + 22 +19 +19) = 0,54 22 х б

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

Такой вершиной может быть компонент , если транзакционный граф представлен одиночными дугами. Для случая, когда дуги отмечены реальным количеством транзакций, критические вершины принадлежат компонентам, находящимся ближе к выходной шине В2 . Здесь существенным представляется не структура графа, а вес входящей дуги, который в большей степени оказывает негативное влияние, если структурная глубина рассматриваемого компонента достаточно высока. Используется формула (1) вычисления тестопригодности с мультипликативными членами И х что дает оценку ниже, чем любой из сомножителей (управляемость, наблюдаемость).

Если модифицировать формулу (1) исчисления тестопригодности для компонентов к следующему виду: = И + N, то кривая тестопригодности существенно поднимется вверх по оси ординат, чем обеспечивается меньший разброс параметров для каждой вершины. Данное обстоятельство фиксирует несколько отличные таблицы и графики, представленные ниже (рис. 7).

Интересным представляется поведение отдельных вершин. Например, управляемость вершины в мультипликативном транзакционном графе ИБЬ-кода неожиданно «упала» вниз по сравнению с графом единичных дуг. Это связано с высоким весом транзакций, поступающих на рассматриваемую вершину со стороны входных компонентов Ь^В}, которые практически превращают в ноль значимость единичных транзакций от вершин Я1б,Я19 После определения управляемостей и наблюдаемостей вершин транзакционного графа выполняется подсчет обобщенного критерия тестопригодности программного кода (формула (5), [3]). Для Xilinx БСТ-модели такая оценка равна 0,382. Она характеризует качество проектного варианта, что представляется весьма существенным при сравнении нескольких альтернативных решений. В качестве примера позитивного использования разработанных моделей и методов был выполнен анализ тестопригодности программного кода дискретного косинусного преобразования (БСТ) из Xilinx библиотеки. Построена транзакционная модель, вычислены характеристики тестопригодности и определены критические точки (^^5^9,^5). В соответствии с числом и типами компонентов было разработано функциональное покрытие, фрагмент которого представлен листингом 2. 34

Рис. 6. Графики М-тестопригодности Xilinx модели

Листинг 2

c0: coverpoint xin

{

bins minus_big={[128:235]}; bins minus_sm={ [236:255]}; bins plus_big={[21: 127]}; bins plus_sm={ [1:20]};

bins zero={0}; }

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

c1: coverpoint dct_2d

{

bins minus_big={[128:235]}; bins minus_sm={ [236:255]}; bins plus_big={[21: 127]}; bins plus_sm={ [1:20]}; bins zero={0};

bins zero2=(0=>0); }

endgroup

Для критических точек, определенных в результате анализа тестопригодности транзак-ционного графа, разработана ассерционная модель проверки основных характеристик дискретного косинусного преобразования. Существенный фрагмент кода механизма ассерций представлен листингом 3.

Листинг 3

sequence first( reg[7:0] a, reg[7:0]b);

reg[7:0] d;

(!RST,d=a)

##7 (b==d);

endsequence

property f(a,b);

@(posedge CLK)

// disable iff(RST||$isunknown(a)) first(a,b);

!RST |=> first(a,b);

endproperty

odin:assert property (f(xin,xa7_in)) // $display("Very good");

else $error("The end, xin =%b,xa7_in=%b", $past(xin, 7),xa7_in);

В результате верификации программной HDL-модели дискретного косинусного преобразования в среде моделирования Active-HDL были найдены неточности в восьми строках исходного кода HDL-модели:

// add_sub1a <= xa7_reg + xa0_reg;//

Рис. 7. Графики А-тестопригодности ХШпх модели

Последующее исправление ошибок привело к появлению исправленного фрагмента кода, который показан в листинге 4.

Листинг 4

add_sub1a <= ({ха7_ге§[8],ха7_ге§} + {ха0_ге§[8],ха0_ге§}); add_sub2a <= ({хаб_ге§[8],хаб_ге§} +{ха1_ге§[8],ха1_ге§}); add_sub3a <= ({ха5_ге§[8],ха5_ге§} +{ха2_ге§[8],ха2_ге§}); add_sub4a <= ({ха4_ге§[8],ха4_ге§} + {ха3_ге§[8],ха3_ге§});

end

else if (toggleA == 1 'b0)

begin

add_sub1a <= ({xa7_reg[8],xa7_reg} - {xa0_reg[8],xa0_reg});

add_sub2a <= ({xaó_reg[8],xaó_reg} - {xa1_reg[8],xa1_reg});

add_sub3a <= ({xa5_reg[8],xa5_reg} - {xa2_reg[8],xa2_reg});

add_sub4a <= ({xa4_reg[8],xa4_reg} - {xa3_reg[8],xa3_reg});

T. Выводы

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

2. Показаны примеры анализа тестопригодности путем подсчета управляемости и наблюдаемости транзакционного и управляющего графов в целях определения критических точек с последующим решением практической проблемы поиска и устранения ошибок в реальном DSP-проекте от компании Xilinx.

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

4. Практическая значимость предложенных методик и моделей заключается в рыночной привлекательности и высокой заинтересованности технологических компаний в инновационных решениях проблемы эффективного тестирования и верификации программно-аппаратных изделий на системном уровне проектирования в целях уменьшения time-to market и повышения выхода годной продукции - yield.

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

Список литературы: 1. Harry Foster, Adam Krolnik, David Lacey. Assertion-based design.- Second edition. Kluwer Academic Publishers. Springer. 2005. 392 p. 2. Abramovici M., Breuer M.A. and Friedman A.D. Digital System Testing and Testable Design. Computer Science Press. 1998. б52 р. 3. Хаханов B.I., Литвинова G.I., ПобеженкоI.O., Ngene Christopher Umerah, Чумаченко С.В. Тестирование и верификация HDL-моделей компонентов SOC. I // Радиоэлектроника и информатика. 2009. № 3. С. 38-45. 4. Хаханов В.И., Литвинова Е.И., Гузь O.A. Проектирование и тестирование цифровых систем на кристаллах. Харьков: ХНУРЭ. 2009. 484 с. 5. Janick Bergeron, Eduard Cerny, Alan Hunter, Andrew Nightingale. Verification Methodology. Manual for SystemVerilog. Springer. 2005. 528 p. 6. Bergeron, Janick. Writing testbenches: functional verification of HDL models. Boston: Kluwer Academic Publishers. 2001. 354 p. 7. Шаршунов С.Г. Построение тестов микропроцессоров. 1. Общая модель. Проверка обработки данных // Автоматика и телемеханика. 1985. №11. С. 145-155. 8. JerrayaA.A. System Level Synthesis SLS. TIMA Laboratory. Annual Report. 2002. P. б5-75.

Поступила в редколлегию 11.07.2009 Хаханов Владимир Иванович, декан факультета КИУ ХНУРЭ, д-р техн. наук, профессор кафедры АПВТ ХНУРЭ. Научные интересы: техническая диагностика цифровых систем, сетей и программных продуктов. Увлечения: баскетбол, футбол, горные лыжи. Адрес: Украина, б11бб, Харьков, пр. Ленина, 14, тел. 70-21-32б. E-mail: [email protected]. Литвинова Евгения Ивановна, канд. техн. наук, доцент кафедры технологии и автоматизации производства РЭС и ЭВС ХНУРЭ. Научные интересы: автоматизация диагностирования и встроенный ремонт компонентов цифровых систем в пакете кристаллов. Адрес: Украина, б11бб, Харьков, пр. Ленина, 14, тел. 70-21-421. E-mail: [email protected].

Побеженко Ирина Александровна, аспирантка кафедры АПВТ ХНУРЭ. Научные интересы: техническая диагностика цифровых систем и сетей. Адрес: Украина, б 11бб, Харьков, пр. Ленина, 14, тел. 70-21-32б. E-mail: [email protected].

Tiecoura Yves, аспирант кафедры АПВТ ХНУРЭ. Научные интересы: техническая диагностика цифровых систем и сетей. Адрес: Украина, б11бб, Харьков, пр. Ленина, 14, тел. 70-21-32б. E-mail: [email protected].

Ngene Christopher Umerah, аспирант кафедры АПВТ ХНУРЭ. Научные интересы: техническая диагностика цифровых систем и сетей. Адрес: Украина, б 11бб, Харьков, пр. Ленина, 14, тел. 70-21-32б. E-mail: [email protected].

i Надоели баннеры? Вы всегда можете отключить рекламу.