Simple Topology Editor (STE)
|
Дизайн
|
Омельченко Василий, Куликов Роман, Пантелеев Максим, Прокопьев Евгений
|
Оглавление
Техническое задание (учебное) на разработку программы обработки топологии ИМС 3
Подход к реализации 4
Ядро 5
Реализация 5
Базовые классы и структуры 5
Базовые связи между структурами: 5
Графический интерфейс пользователя. 6
Задачи GUI 6
Необходимые элементы интерфейса и классы их представляющие: 6
Приложение: UML диаграмма классов 8
Техническое задание (учебное) на разработку программы обработки топологии ИМС
1. Основание для проведения работы - утверждённая программа спецкурса "Объектно ориентированное программирование на языке Си++ в операционной системе UNIX для разработчиков прикладного программного обеспечения".
2. Исполнитель работы - группа слушателей спецкурса.
3. Сроки выполнения работы - 1 семестр 2006 года.
4. Цель и назначение работы.
Цель работы состоит в разработке программы, выполняющей основные технологические операции с топологией ИМС.
Программа предназначена для учебных целей: исследования применяемых алгоритмов, их производительности.
Задача применимости программы в процессе проектирования ИМС не ставиться.
Программа может быть использована как упрощенный макет или прототип для разработок, направленных на практическое применение в проектировании ИМС.
5. Технические требования
5.1 Аппаратные средства, операционная среда и инструментальные средства.
Программа должна функционировать под управлением операционной системы UNIX.
Исходные тексты программ разрабатываются на языке программирования Си++.
Компиляция и сборка программ выполняются компилятором Си++ (gnu C++).
Графический интерфейс реализуется средствами библиотеки Leda.
Требования к портируемости программы не предъявляется.
5.2 Функциональны возможности программы.
Программа выполняет следующие функции:
- чтение и запись примитивного текстового представления топологии,
- графическая визуализация,
- желаемый графический ввод,
- раскрытие иерархического описания,
- отбор группы топологических слоев в один технологический слой,
- объединения пересекающихся и соприкасающихся контуров в одном слое,
- контроль взаимной близости границ контуров.
Графический интерфейс пользователя обеспечивает выполнение перечисленных выше функций по нажатию кнопок, визуализацию с маштабированием и панорамированием изображения.
Программа имеет следующие ограничения:
Все контура односвязанные полигоны, без самопересечений. Число уровней иерархии не более 3, число слоев не более 16. Сложность геометрии - до 256 контуров.
5.3 Тестовые данные.
Тестовые данные предназначены для демонстрации функциональных возможностей программы. Необходимость подготовки специальных тестовых данных обусловлена тем, что не планируется трансляция реальных топологических форматов, а также значительными ограничениями на сложность проекта.
6. Результаты выполнения работы
- Программа в виде исполняемого файла
- Исходные тексты программы
- Исходные тексты тестирующих процедур
- Командные и make файлы для компиляции, сборки и тестирования
- Тестовые примеры входных данных
- Руководство по инсталяции в формате readme файлов
- Спецификации компонентов программы
7. Права использования результатов
Все права на использование результатов разработки в любом качестве принадлежат МИЭТ.
Комментарии
- В качестве координат использовать числа с плавающей запятой.
- Контроль взаимной близости либо через вычисление расстояния между полигонами, либо через выполнение растяжения контуров.
Подход к реализации
Для того чтобы реализовать данное техническое задание было предложено разбить разработку программы на две составляющие:
-
Ядро – отвечает за хранение, обработку блоков топологии
-
Графический Интерфейс Пользователя – отвечает за отображение на экране объектов топологии
Ядро
В ядро программы входят следующая функциональность:
-
Сохранять и загружать объекты топологии (контура и слои)
-
Объединять контура топологии одного слоя в случае их
-
Определять технологию (список технологических правил, DU)
-
Иерархия
-
Проверка топологии на наличие технологических ошибок (DRC)
Реализация
В редактор топологии необходимо заложить обработку следующих структур:
-
Геометрических объектов и физических слоев топологии
-
Технологических правил и методов их обработки
-
Уровня иерархии
-
Понятие ячейка
Базовые классы и структуры -
Struct point– геометрическая единица 2 мерного пространства
-
Class path (набор точек) – для описания фигуры топологии
-
Class polygon – набор путей для описания сложных фигур
-
Class shape (не помню для чего делал )
-
Calss layer – класс, определяющий принадлежность фигуры к определенному физическому слою топологии.
-
Class cell – это набор пар фигур и соответствующих им слоев, определяющих определенную схему.
-
Class HierarchyBox – абстрактная единица, определяющая уровень иерархии в иерархических ячейках.
-
Rule – абстрактное описание технологического правила топологии
-
Process – метод обработки определенного правила
Базовые связи между структурами:
В основе всех классов лежит абстрактный класс Root. В его интерфейс входят абстрактные функции чтения и записи. Все классы, которым необходима функциональность ввода вывода отнаследованы от него.
Все объекты топологии хранятся в классе cell а все ячейки в классе Kernel, который отвечает за ввод/вывод топологии и технологии. В топологию входит описание всех контуров и уровней топологии. В технологию входит описание всех слоев и правил.
За создание технологических правил топологии отвечает синглтон Factory. Он содержит в себе единственное описание всех правил и методов их обработки. Непосредственно перед использованием правил, и методов их обработки необходимо их «зарегистрировать».
Каждое правило должно иметь метод обработки, набор слоев, с объектами которых оно оперирует и величину.
Правил может быть множество. А вот методов обработки меньше. Это связано с тем, что бы не плодить одинаковый код, если в топологии имеется правило минимальной ширины для нескольких слоев.
Ввиду того что на вход приходят прямоугольники, а хранится вся информация в виде полигонов. То необходимо реализовать алгоритм склеивания прямоугольников с полигон сложной формы (наличие дырок в полигонах необходимо учесть).
Более подробно с иерархией классов можно познакомиться в Приложении.
Графический интерфейс пользователя.
GUI сделан на основе библиотеки QT, а не LEDA. Это связано с тем, что на тот момент была версия библиотеки LEDA, которая собиралась только с использование компилятора GCC 3.3. А у нас у всех был компилятор версии > 4.
Задачи GUI -
Предоставить пользователю возможность создавать и редактировать.
-
Добавлять удалять слои
-
Добавлять удалять уровни иерархии
-
Загружать топологию и технологию
-
Работать с иерархическими ячеками
Необходимые элементы интерфейса и классы их представляющие: -
Главное окно приложения - MainForm
-
Это поле для рисования топологии с дискретными значениями. – класс TEditor
-
Линейка – MetricsPanel
-
Панель с кнопками для рисования - ToolBar
-
Окно со слоями - LayerManager
-
Окно с иерархией – HierarchyBrowser
Более подробно с иерархией классов можно познакомиться в Приложении.
Приложение: UML диаграмма классов
Ядро:
Графический интерфейс пользователя:
 |