Скачиваний:
189
Добавлен:
16.07.2022
Размер:
11.41 Mб
Скачать

5.2 Разработка спецификаций ячеек кмд

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

В редакторе топологий «TopDesign» создание виртуальных линий происходит благодаря их ручному размещению на топологии (Components -> Virtual Line -> Vertical/Horizontal) и присваиванию им уникального имени.

Для описания виртуальных линий используется её уникальное имя, координаты и сторона (left, bottom, right, top), с которой происходит состыковка. Таким образом, каждая строка имеет следующий общий вид:

<Название>--<Отношение>--<Значение>.

Например,

cout1--rht--61.50

cout1--lft--61.50

cin5--top--3.50

cin5--btm--3.50.

Для описания спецификаций ячеек можно использовать программу «Parse». На вход данного приложения необходимо подать файл описания топологии с расширением cpp, этот файл может генерировать программа «TopDesign» (рисунок 5.1).

Рисунок 5.1 – Генерация cpp-файла

После, передав полученный файл в программу «Parse» получаем описание виртуальных линий (рисунок 5.2).

Рисунок 5.2 – Результирующая спецификация КМД

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

5.3 Разработка программы генерации файла спецификации кмд

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

C:\TopVG

C:\TopVG\EXAMPLES\Divider

C:\TopVG\EXAMPLES\Divider\M1.2.

Далее описываются строки, необходимые для формирования структуры. Указывается уникальное имя строки, её направление (горизонтальная/вертикальная), имя файла виртуального описания топологии ячеек, с разрешением vlf, имя файла текстового описания спецификации ячеек, с разрешением dat, и коэффициент матрицирования, который показывает сколько раз можно повторить ячейку в одной строке. В конце строки записывается слово «EOL», указывающее конец строки.

Учитывая описанную структуру, строка имеет следующий вид:

Name_Line :g Name_Cell Name_Cell, 1 ; Name_Cell_2 Name_Cell_2, 5 ; EOL.

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

NameBlock :v Name_Line , 1 ; Name_Line_2 , 4 ; EOL.

Так как человеческий фактор при записывании имён входных файлов, а также расчёт коэффициента матрицирования тяжёлый, разработана программа генерации спецификации структурно-топологической схемы КМД на языке С++. Программа на вход получает количество разрядов делимого и делителя (приложение В). Однако, учитывая ограничения на содержание файла спецификации, целесообразным решением является ввод более ёмких имён ячеек, соответствие которых представлено в приложении Б. Также в этом приложении описана структура получаемых макроблоков с учётом вышеописанного переименования.

Пример работы программы приведён на рисунке 5.3.

Рисунок 5.3 – Работа программы генерации спецификации КМД

Результатом работы программы является текстовый файл «divider_conv_auto». Для заданной разрядности делителя будет сгенерирована следующая спецификация:

C:\TopVG

C:\TopVG\EXAMPLES\Divider

C:\TopVG\EXAMPLES\Divider\M1.2

S1 :g str1_1m str1_1m , 1 ; str1_2m str1_2m , 1 ; str1_3m str1_3m , 1 ; str1_4m str1_4m , 1 ; str1_5m str1_5m , 1 ; str1_6m str1_6m , 1 ; EOL

S2 :g str1_1m str1_1m , 1 ; str1_2m str1_2m , 1 ; str1_3m str1_3m , 1 ; str2_4m str2_4m , 1 ; str2_5m str2_5m , 1 ; str2_6m str2_6m , 1 ; EOL

DividerCONV :v S1 , 1 ; S2 , 16 ; EOL.

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

Рисунок 5.4 – Обработка ошибок