Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Скобцовы Моделирование и тестирование

.pdf
Скачиваний:
97
Добавлен:
03.03.2016
Размер:
3.61 Mб
Скачать

2.7.2Интерпретативная модель

Винтерпретативном методе моделирования внешнее описание схемы транслируется в систему связанных таблиц, которая далее непосредственно используется в процессе моделирования. При этом каждой схеме соответствует своя система таблиц, а сама программа моделирования является универсальной. Например, на рис.2.20 приведены таблицы, представляющие схему S27 рис.1.11. Модель состоит из трех связанных между собой таблиц: TYPES - таблица типов элементов, EL -

таблица элементов, LINKS - таблица контактов. Каждая строка таблицы

EL соответствует элементу схемы и содержит следующую информацию:

имя элемента (столбец NAME_EL); ссылка на таблицу типов (R_TYPES);

ссылка на таблицу контактов (R_LINKS), указывающая начало зоны контактов данного элемента. В таблице TYPES каждая строка содержит справочную информацию об элементе данного типа: число входов (N_IN),

число выходов (N_OUT), число портов (N_PORT), число переменных состояний (N_SOST), величина задержки (DEL) ,тип функции (ID) и т.п.

Таблица LINKS содержит информацию о контактах схемы. Каждая строка этой таблицы соответствует контакту некоторого элемента. Более того, в ней каждому элементу отведена своя зона контактов,

начинающаяся со строки, указанной в R_LINKS таблицы элементов. В

начале зоны идут выходные контакты, а затем входные. Входы схемы представляются как элементы, имеющие только выходные контакты, а

выходы схемы имеют только входные контакты. Столбец R_EL содержит ссылку на таблицу элементов. В столбце FLAG поразрядно записываются различные признаки, необходимые в процессе моделирования и генерации тестов. Столбец SV содержит кодированные значения сигналов в многозначном алфавите. Столбец CONT определяет связи между контактами. На рис.2.20 видно, что контакты, образующие один узел в схеме (обычно это один выходной и несколько входных контактов),

61

LINKS

 

 

EL

 

 

 

N

R_EL

CONT

FLAG

NAME_EL R_TYPES R_LINKS

0

0

-1

1

c0

0

 

0

1

1

-1

1

c1

0

 

1

2

2

-1

1

cu

0

 

2

3

3

15

1

G0

1

 

3

4

4

37

1

G1

1

 

4

5

5

40

1

G2

1

 

5

6

6

25

1

G3

1

 

6

7

7

16

1

YG17

2

 

7

8

8

34

1

G5

3

 

8

9

8

30

2

G6

3

 

10

10

9

20

1

G7

3

 

12

11

9

17

2

G14

4

 

14

12

10

38

1

G17

4

 

16

13

10

39

2

G8

5

 

18

14

11

19

1

G15

6

 

21

15

11

3

2

G16

6

 

24

16

12

7

1

G9

7

 

27

17

12

32

2

G10

8

 

30

18

13

23

1

G11

8

 

33

19

13

31

2

G12

8

 

36

20

13

10

2

G13

8

 

39

21

14

29

1

 

 

 

 

22

14

41

2

 

 

 

 

23

14

26

2

 

 

 

 

24

15

28

1

 

 

 

 

25

15

6

2

 

 

 

 

26

15

18

2

 

 

 

 

27

16

35

1

 

 

 

 

28

16

24

2

 

 

 

 

29

16

21

2

 

 

 

 

30

17

9

1

 

 

 

 

31

17

14

2

TYPES

 

 

 

32

17

33

2

N

N_IN

N_OUT

ID

33

18

11

1

0

0

1

0

34

18

8

2

1

0

1

0

35

18

27

2

2

1

0

0

36

19

22

1

3

1

1

29

37

19

4

2

4

1

1

1

38

19

12

2

5

2

1

4

39

20

13

1

6

2

1

5

40

20

5

2

7

2

1

2

41

20

36

2

8

2

1

3

Рис.2.20 Таблицы описания схемы S27

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

62

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

Эти элементы используются, например, для представления постоянных уровней напряжения 0 или 1, подаваемых на некоторые элементы.

2.8 Управление процессом моделирования

Как уже отмечалось, во многих случаях алгоритм моделирования можно представить следующим образом. После подачи входного воздействия на модель ДУ поочерёдно вычисляются значения на выходах всех элементов по значениям на их входах. Такая процедура называется итерацией. В результате вычислений значения некоторых сигналов могут измениться. В этом случае необходимо выполнить вторую итерацию (т.е.

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

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

63

Событийное интепретативное моделирование(схема, входные воздействия)

{

Чтение описания схемы;

Чтение входных воздействий;

FOR для каждого моделируемого входного набора

{

{

Обработка нового входного набора;

Формирование новых событий, связанных с изменившимися входами;

Постановка элементов, имеющих события на входах, в очередь будущих

событий;

WHILE есть элементы в очереди событий

{

Моделирование очередного элемента из очереди; IF значение выходов элемента изменились

THEN Постановка всех элементов последователей в очередь будущих событий в соответствии с величиной задержки моделируемого элемента;

}

}

}

}

Рис.2.21 Событийное моделирование

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

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

64

Обычно в процессе моделирования на каждой итерации активны (имеют изменения на входах) только несколько процентов элементов (3-5%),

поэтому событийный метод гораздо быстрее сквозного.

В дальнейшем мы будем, в основном, рассматривать событийные интерпретативные методы логического моделирования. При этом будет использоваться, как правило, модель номинальной задержки, при которой каждому логическому элементу присваивается своя целочисленная задержка в некоторых условных единицах, определяемых масштабом модельного времени. Следует отметить, что события происходят в определенные моменты времени, поэтому необходим механизм моделирования временной очередности событий. На рис.2.21 представлен укрупненный алгоритм событийного интерпретативного логического моделирования [39].

При этом центральное место занимает понятие очереди будущих событий (ОБС) [1, 44]. Каждое событие в ОБС содержит номер элемента i

и соответствующее значение сигнала v(i). Это событие при моделировании привязывается в соответствии с задержкой i выхода i-го элемента к моменту времени t+ ∆i , где t текущее модельное время. Значения сигналов при этом для текущего момента времени хранятся в массиве SV.

Вновь вычисленные значения элементов записываются в ОБС с учетом задержки i.

Для упорядочения событий в ОБС используют различные способы моделирования временного механизма. Один из них использует при программной реализации структуру связанных списков, как это показано на рис.2.22. Здесь каждому моменту времени соответствует свой список ОБС. Времена ti < t j < tk упорядочены и связаны списком. Занесение нового события с использованием этого способа требуют поиска нужного tj

путём просмотра соответствующих указателей. Если моменты времени,

65

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

Рис.2.22 Список событий

Рис.2.23 Колесо времени

66

«завязанный в кольцо». Каждый элемент массива соответствует моменту модельного времени. Включение нового элемента при этом не требует поиска. Так, например, если в текущий момент времени Т моделируется элемент i, имеющий задержку i , то событие (i, v(i)) нужно занести в ОБС,

для которого указатель содержится в элементе массива t+ i . С другой стороны этот способ не эффективен, если интервалы времени между событиями достаточно велики. Элементы массива при этом будут иметь в основном нулевые указатели, а сам массив может иметь чрезмерно большой размер. Наличие временного механизма позволяет при моделировании подавать тестовые наборы через соответствующие интервалы модельного времени. Для этого перед началом моделирования все изменения входных воздействий заносятся в ОБС, соответствующие временам изменения. Поэтому в процессе моделирования изменения входов обрабатываются наравне с другими событиями и в процессе моделирования нет необходимости ждать, пока значения сигналов стабилизируются на всех линиях.

WHILE (очередь событий не пуста )

{

T=следующий по очереди момент времени (имеющий события);

Обработка событий текущего момента времени Т;

}

Рис.2.24 Алгоритм логического моделирования

На рис.2.24 представлен укрупненный алгоритм логического моделирования на основе временного механизма в виде очереди будущих событий. Этот алгоритм отражает движение по очереди будущих событий.

В каждый (не пустой) момент времени события обрабатываются по алгоритму, представленному на рис.2.25 [44] (который реализует соответствующий шаг алгоритма рис.2.24). Отметим, что представленный на рис.2.25 алгоритм является двухпроходным. На первом проходе здесь

67

переписываются события (i, vi), связанные с моментом времени Т очереди будущих событий в буфер множество «Активные_элементы». Во время второго прохода выполняется собственно моделирование элементов j

последователей элемента i и постановка в очередь будущих событий в

соответствии с

задержкой d(j) элемента j.

Подобная (двухпроходная)

стратегия позволяет в

том случае,

когда

некоторый элемент

i

активизируется

более

одного

раза,

выполнять моделирование,

вызванное этим событием, только один раз. Следует отметить, что в приведенном алгоритме (i, vi) являются скорее кандидатами в события.

Поэтому при обработке множества активные_элементывыполняется сравнение с текущим значением v(i).

Обработка событий текущего момента времени Т ()

{

Активные_элементы= ; /* множество активных элементов, */

FOR каждого события (i, vi), связанного с Т /* имеющих события на входах */

{

IF v'i v(i) THEN

{/*если это действительно событие*/

v(i) = vi' ; /* перепись нового значения */

FOR каждого элемента j последователя обрабатываемого элемента i

{

Изменение значений входов j; /* перепись с выхода i*/

Пополнение множества Активные_элементы элементом j;

}

FOR каждого элемента j Активные_элементы

{

vj=моделирование элемента (j);

постановка события (j, vj) в ОБС в момент времени T+d(j);

}

}

}

}

Рис.2.25 Двухпроходной алгоритм обработки событий

68

Обработка событий текущего момента времени Т ()

{

Активные_элементы= ; /* множество активных элементов, */

FOR каждого события (i, vi), связанного с Т /* имеющих события на входах */

{

v(i) = vi' ; /* перепись нового значения*/

FOR каждого элемента j последователя обрабатываемого элемента i

{

Изменение значений входов j; /* перепись с выхода i*/

Пополнение множества Активные_элементы элементом j;

}

}

FOR каждого элемента j Активные_элементы

{

vj=моделирование элемента (j); IF v'j lsv( j) THEN

{

постановка события (j, vj) в ОБС в момент времени T+d(j); lsv(j)=vj;

}

}

}

Рис.2.26 Улучшенный двухпроходной алгоритм обработки событий

Вследующем алгоритме [44], представленном на рис.2.26, заносятся

вОБС только истинные события”, при которых происходит изменение сигнала. В [44] показано, что данный алгоритм является более эффективным. Преимущество двухпроходного алгоритма заключается в том, что он позволяет избежать повторных вычислений (моделирования одного и того же логического элемента) в случае наличия кратных событий, когда на входах имеет место изменение нескольких сигналов.

Однако проведенный статистический анализ [44] показал, что кратные

события в процессе моделирования случаются достаточно редко. Поэтому

69

кроме двухпроходного были разработаны также однопроходные

алгоритмы логического моделирования [44]. Один из таких алгоритмов

[44] представлен на рис.2.27

Обработка событий текущего момента времени Т ()

{

FOR каждого события (i, vi), связанного с Т /* имеющих события на входах */

{

v(i) = vi' ; /* перепись нового значения*/

FOR каждого элемента jпоследователя обрабатываемого элемента i

{

Изменение значений входов j; /* перепись с выхода i*/ vj=моделирование элемента (j);

IF v'j lsv( j) THEN

{

постановка события (j, vj) в ОБС в момент времени T+d(j); lsv(j)=vj;

}

}

}

}

Рис.2.27 Однопроходной алгоритм обработки событий

 

 

 

 

 

 

a

a

 

 

 

 

 

 

&

 

 

 

 

 

b

 

 

 

 

 

 

4

 

 

 

 

 

z

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

z

4

Рис.2.28 Пример некорректного моделирования

Несмотря на свою привлекательность (простоту и эффективность)

этот алгоритм имеет недостаток. На рис.2.28 показана суть проблемы

70