PALADIN / TESTPROG
.DOC
Глава 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 и рис.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МГц.
-
Временная оценка работы программы.
Проведем временную оценку работы программы. Как видно из листинга программы, время работы функций 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.