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

PALADIN / TESTPROG

.DOC
Скачиваний:
7
Добавлен:
16.04.2013
Размер:
563.71 Кб
Скачать

Глава 4.

Программная реализация алгоритма

и результаты тестирования.

4.1. Общее описание программы.

Программа, реализующая алгоритм, описанный в предыдущей главе, составлена на языке программирования Borland C++ 3.1 для операционной системы MS-DOS компьютеров класса IBM PC. Определение основных классов и функций, реализующих алгоритм, приведены в приложении.

При помощи класса Topology создается описание топологии. Как указывалось, топология слоя металлизации представлена горизонтальными и вертикальными проводниками. Описание обоих типов проводников реализуется классом Ribbon. В классе Topology предусмотрены функции-элементы AddGorizRibbon для добавления в топологию проводников горизонтального типа и AddVertRibbon для вертикального типа. Классом автоматически определяется границы топологии, в пределах которых надлежит осуществить коррекцию.

Коррекция производится вызовом функции-элемента Correct класса Topology. Функция определяет тип ориентации слоя и вызывает соответствующие функции для коррекции: FillVert для заполнения топологии вертикальными лжепроводниками, или FillGoriz для заполнения горизонтальными.

В листинге программы комментариями отмечены основные шаги алгоритма. Поиск пустых прямоугольных областей топологии проводится при помощи «сканирующего окна» (рис.1). Размер окна составляет (W+2m) по вертикали и горизонтали. Вспомогательные функции IsPlaced и IsEmpty служат для проверки на отсутствие проводников в заданной прямоугольной области, в частности, в области размером «сканирующего окна». Если в топологии обнаруживается пустая область такого размера, то текущие координаты сканирования фиксируются как верхний левый угол пустой прямоугольной области; далее определяется ширина и высота этой области. С помощью полученных данных рассчитывается число лжепроводников, способных разместится в этой области, и расстояние между ними для равномерного заполнения области.

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

  1. Тестовые примеры.

Ниже приведены несколько примеров фрагментов топологии и результаты работы программы с этими фрагментами. Фрагменты реальной топологии являются достаточно объемными, поэтому в пояснительной записке приведено ограниченное число этих фрагментов. Первые два небольших примера являются абстрактной топологией (рис.1 и рис.2). Следующие три фрагмента представляют собой реальные чертежи топологии, в частности, фрагмент 3 относится к топологии АЛУ. Фрагменты 4 и 5 представляют из себя два разных слоя металлизации одного топологического проекта.

Число проводников в топологии:

вертикальных: 4; горизонтальных: 6;

добавлено:

вертикальных: 0; горизонтальных: 24;

время работы: 0.33 сек.

Рис.1. Фрагмент 1

Число проводников в топологии:

вертикальных: 11; горизонтальных: 9;

добавлено:

вертикальных: 90; горизонтальных: 2;

время работы: 1.98 сек.

Рис.2. Фрагмент 2

Число проводников в топологии:

вертикальных: 23; горизонтальных: 10;

добавлено:

вертикальных: 69; горизонтальных: 1;

время работы: 1.37 сек.

Рис.3. Фрагмент 3

Рис.4. Фрагмент 4 до коррекции.

Рис.5. Фрагмент 4 после коррекции.

Рис.6. Фрагмент 5 до коррекции.

Рис.7. Фрагмент 5 после коррекции.

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

Фрагмент

Число проводников в топологии

Число добавленных лжепроводников

Время работы,

сек.

Площадь,

l2

1

4

6

0

24

0.27

6710

2

11

9

90

2

0.52

17724

3

23

10

69

1

1.01

18146

-

71

28

108

25

5.42

30800

-

38

47

17

182

5.51

37180

4

84

24

85

26

7.30

63027

-

34

86

26

98

9.78

66150

5

78

92

110

53

14.39

86100

В колонке 1 указывается номер фрагмента, включенного в данный раздел пояснительной записки. В колонках 2 и 3 первая цифра относится к проводникам вертикальной ориентации, вторая цифра - к проводникам горизонтальной ориентации.

Тестирование программы проводилось на ЭВМ класса IBM PC с микропроцессором Pentium-120МГц.

  1. Временная оценка работы программы.

Проведем временную оценку работы программы. Как видно из листинга программы, время работы функций IsPlaced и IsEmpty пропорционально количеству проводников в топологии (это количество является суммой количества «рабочих» проводников и лжепроводников). Число вызовов этих функций пропорционально зависит от площади топологии (так как процедура последовательно просматривает всю топологию, ее каждую координату). В конце заполнения всей топологии лжепроводниками в соответствии с типом слоя топология вновь полностью просматривается для заполнения оставшихся пустот лжепроводниками другого типа. Если приближенно считать, что при первом сканировании время работы функций IsPlaced и IsEmpty зависит от числа начальных проводников в топологии, а при втором - от суммарного числа начальных проводников и добавленных лжепроводников, то полное время работы по коррекции всей топологии приблизительно пропорционально:

t ~ St * (N0 + Nk),

где St - площадь топологии; N0 - число проводников в топологии до коррекции; Nk - число проводников в топологии после коррекции; t - время коррекции. На основании таблицы в предыдущем разделе составим исходные данные:

#

N0

Nk

St*(N0+Nk)

x105 l2

t

1

10

34

3

0.27

2

20

112

23

0.52

3

33

103

25

1.01

4

99

232

102

5.42

5

85

284

137

5.51

6

108

219

206

7.30

7

120

244

241

9.78

8

170

333

433

14.39

Рис. 8. Аппроксимация временной зависимости.

График временной зависимости показан на рис.8.

Соседние файлы в папке PALADIN