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

Diploma_All

.pdf
Скачиваний:
20
Добавлен:
05.06.2015
Размер:
1.37 Mб
Скачать

рый в свою очередь был помещен в блок I5, который заключался в блоке I127, который на верхнем уровне иерархии был обернут в блок I1.

В общем виде формат такого составного имени можно представить так:

типЭлемента_имяБлока1|имяБлока2|...|имяБлокаN| имяБазовогоЭлемента,

где типЭлемента — это буква, определяющая тип элемента (M —

МОП-транзистор, R — резистор, С — конденсатор и т. д. согласно спецификации

SPICE), имяБлокаi и имяБазовогоЭлемента – допустимые SPICE имена элементов.

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

11

2 Глава 2

Специальный раздел

Построение иерархического представления плоского нетлиста в формате SPICE

Дипломант: Транченко Д. В. Консультант: Булах Д. А.

12

2 . 1 В в е д е н и е

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

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

Все вышеперечисленные свойства программы проиллюстрированы на общей схеме работы программы, представленной на рисунке 2.1.

SPICE

Синтаксический

анализатор

Список

объектов SpiceElement

Построитель

иерархии

Иерархия

SPICE

Рисунок 2.1. Общая схема работы программы

13

Документ с плоским нетлистом на языке SPICE, поступающий на вход программы, анализируется синтаксическим анализатором, который на выходе выдает список объектов типа SpiceElement (объектного представления SPICE-элемен- тов). Затем этот список передается построителю иерархии, которая затем представляется в нескольких видах: в виде дерева, в виде геометрических блоков и в текстовой форме.

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

Вопрос построения иерархии и ее визуального представления рассмотрен в разделе 2.3 «Представление иерархии блоков SPICE-элементов в памяти компьютера».

Раздел 2.3.4 «Редактирование параметров элементов» посвящен описанию того, как в разработанной программе реализовано редактирование параметров SPICE-элементов.

Решение задачи анализа входного файла на языке SPICE описано в разделе 2.4 «Анализ входного файла».

14

2 . 2 Иер архия как ориентированное дерево

2.2.1 Математическое определение дерева

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

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

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

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

Граф без циклов называется ациклическим или лесом. Связный ациклический граф называется (свободным) деревом. Таким образом, компонентами связности леса являются деревья. Прилагательное «свободное» употребляется в том случае, когда нужно подчеркнуть отличие деревьев от других объектов, родственных деревьям — ориентированных деревьев, упорядоченных деревьев и т.д.

В связном графе G с p вершинами и q ребрами выполняется неравенство q(G) ≥ p(G) — 1. Граф G, для которого q(G) = p(G) — 1, называется древовидным.

На рисунке 2.2 показаны диаграммы всех различных свободных деревьев с пятью вершинами.

Рисунок 2.2. Свободные деревья с 5 вершинами

15

Перечислим основные свойства деревьев. Для графа G(V, E) с p вершинами и q ребрами, k компонентами связности и z простыми циклами следующие утверждения эквивалентны:

1.G — дерево, то есть связный граф без циклов, k(G) = 1 & z(G) = 0;

2.любые две вершины соединены в G единственной простой цепью,

u , v ! u , v ;

3.G — связный и древовидный, k(G) = 1 & q(G) = p(G) — 1;

4.G — ациклический и древовидный, z(G) = 0 & q(G) = p(G) — 1.

2.2.2 Ориентированные и упорядоченные деревья

Ориентированным деревом (или ордеревом или корневым деревом) называется орграф со следующими свойствами.

1.Существует единственный узел r, полустепень захода которого равна 0, d+(r) = 0. Он называется корнем ордерева.

2.

Полустепень захода всех

остальных узлов равна 1,

 

v V {r }d + v =1 .

 

 

3.

Каждый узел достижим из корня,

v V {r }v , u

.

 

Ордерево обладает следующими свойствами:

1.q = p — 1;

2.если в ордереве забыть ориентацию дуг, то получится свободное дерево;

3.в ордереве нет контуров;

4.для каждого узла существует единственный путь, ведущий в этот узел из корня.

5.подграф, определяемый множеством узлов, достижимых из узла v, является ордеревом с корнем v (это ордерево называется поддеревом узла v);

6.если в свободном дереве любую вершину назначить корнем, то получится ордерево.

16

На рисунке 2.3 показаны все возможные варианты ориентированных деревьев с четырьмя узлами.

Рисунок 2.3. Ориентированные деревья с 4 узлами

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

Концевая вершина ордерева называется листом. Путь из корня в лист называется ветвью. Длина наибольшей ветви ордерева называется высотой. Уровень узла ордерева — это расстояние от корня до узла. Сам корень имеет уровень 0. Узлы одного уровня образуют ярус дерева.

Существует также альтернативная терминология. Узлы достижимые из узла u, называются потомками узла u (потомки образуют поддерево). Если в дереве существует дуга (u, v), то узел u называется отцом (или родителем) узла v, а узел v называется сыном узла u. Сыновья одного узла называются братьями.

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

Ориентированное дерево имеет и эквивалентное определение. Ордерево T — это конечное множество узлов, таких что:

1.Имеется один узел r, называемый корнем дерева.

2.Остальные узлы (исключая корень) содержатся в k попарно непересекающихся множествах T1, ..., Tk, каждое из которых является ордере-

вом (k ≥ 0).

Def

T = {{r }, T 1 , ,T k } .

17

Для доказательства эквивалентности этих определений достаточно построить орграф, проводя дуги от заданного узла r к корням поддеревьев T1, ..., Tk, и далее повторяя рекурсивно этот процесс для каждого из поддеревьев.

На основе эквивалентного определения ордерева дадим определение упорядоченного дерева.

Множества T1, ..., Tk в эквивалентном определении ордерева являются поддеревьями. Если относительный порядок поддеревьев T1, ..., Tk фиксирован, то ордерево называется упорядоченным.

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

Далее и везде по тексту, в рисунках, иллюстрациях, диаграммах и схемах алгоритмов под словом «дерево» подразумевается неупорядоченное ориентированное дерево.

2.2.3 Представление деревьев в памяти компьютера

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

Например, свободные деревья могут быть представлены кодом Прюфера. Существует также понятие бинарного дерева — конечного множества

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

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

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

18

1.Списочные структуры: каждый узел представляется записью типа N, содержащей два поля (l и r) с указателями на левый и правый узлы и еще одно поле i для хранения указателя на информацию об узле. Дерево представляется указателем на корень.

2.Упакованные массивы: все узлы располагаются в массиве, так что все узлы поддерева данного узла располагаются вслед за этим узлом. Вместе с каждым узлом хранится индекс узла, который является первым узлом правого поддерева данного узла.

3.Польская запись. Она подобна предыдущему, но вместо связей фиксируется «размеченная степень» каждого узла (0 для листа; 1, если есть левая связь но нет левой и т.д.). Обычно она используется для представления выражений.

2 . 3 Представление иерархии блоков SPICE - элементов в памяти компьютера

2.3.1 Представление иерархии блоков во входном файле нетлиста

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

Возьмем первые четыре имени из этого примера: «m_I1|I127|I5|I6|MmM1», «m_I1|I127|I5|I1|MmM0», «m_I1|I106|I85|I4|MmM1» и «m_I1|I106|I84|I4|MmM1».

Как уже было отмечено выше, в общем виде имя элемента выглядит как

типЭлемента_имяБлока1|имяБлока2|...|имяБлокаN| имяБазовогоЭлемента,

где типЭлемента — это буква, определяющая тип элемента (M — МОП-транзистор, R — резистор, С — конденсатор и т. д. согласно спецификации

SPICE), имяБлокаi и имяБазовогоЭлемента – допустимые SPICE имена элементов. Специальный символ «|» служит для разделения имен блоков.

Если ассоциировать имена блоков с узлами графа и провести по одной направленной дуге от узла i к узлу i + 1 (узлу с именем базового элемента для

19

случая i = N), то для каждого сконструированного таким образом графа можно убедиться в верности следующих утверждений:

1.Блок1 — корень.

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

3.Каждый узел достижим из корня.

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

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

2.3.2 Представление иерархии в виде объекта

Выбор инструментальных средств для решения задачи построения иерархии SPICE-элементов

Для реализации поставленной задачи был выбран язык программирования C# и платформа .NET 2.0 — обоснование выбора языка и платформы, а также описание их возможностей и преимуществ будут подробно рассмотрены в технологическом разделе настоящей работы. Сейчас же ограничимся тем, что язык C# строго типизирован и объектно-ориентирован.

Многие реализации объектов и проектных решений в данной работе исходят из соображений удобности использования, поддержки и реализации принципа повторного использования кода (code reuse) и быстрой разработки приложе-

ний (RAD — Rapid Application Development) в ущерб используемой памяти.

Конечно, это не значит, что приложение становится от этого менее эффективным — при разработке учитывались факторы эффективности. Снижение эффективности может наблюдаться на крайне старом аппаратном обеспечении с ограниченным объемом памяти и вычислительных средств, однако и в этом случае платформа .NET может оптимизировать исполняемый код под конкретную машину, что будет показано в технологическом разделе. Даже если и в этом случае заказчик будет недоволен результатом, то разработанное приложение всегда можно оптимизировать, заменив наиболее медленные или наиболее часто вызы-

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]