Промежуточная форма Калифорнийского технологического института - Caltech Intermediate Form

Промежуточная форма Caltech (at)
Расширение имени файла
.cif
Тип форматаEDA формат файла

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

Обзор

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

Существует всего несколько операторов CIF, и они попадают в одну из двух категорий: геометрия или управление. СЛОЙ переключать слои маски, КОРОБКА рисовать прямоугольник, ПРОВОД нарисовать путь, ROUNDFLASH нарисовать круг, ПОЛИГОН рисовать произвольную фигуру, и ВЫЗОВ для рисования подпрограммы других операторов геометрии. DS чтобы начать определение подпрограммы, DF чтобы завершить определение подпрограммы, DD удалить определение подпрограмм, 0 через 9 для включения дополнительной информации, указанной пользователем, и КОНЕЦ для завершения файла CIF. Все эти ключевые слова обычно сокращаются до одной или двух уникальных букв.

Геометрия

В СЛОЙ заявление (или письмо L) устанавливает слой маски, который будет использоваться для всей последующей геометрии до следующего такого оператора. СЛОЙ ключевое слово имеет единственный параметр имени слоя. Например, команда:

    L CC;

устанавливает слой в качестве среза контакта CMOS (см. рис. B.1 для некоторых типичных имен слоев MOS).

НМnMOS металл
НПnMOS поликремний
NDРаспространение nMOS
NCnMOS контакт
NIимплант nMOS
NBnMOS похоронен
NGnMOS поверх стекла
CMFCMOS металл 1
CMSCMOS металл 2
CPGCMOS поликремний
CAACMOS активен
CSGCMOS выбрать
CWGCMOS хорошо
CCCMOS контакт
CVACMOS через
COGCMOS поверх стекла
РИСУНОК B.1 Имена слоев CIF для процессов MOS.

В КОРОБКА заявление (или письмо B) - наиболее часто используемый способ задания геометрии. Он описывает прямоугольник, задав его длину, ширину, центральное положение и необязательный поворот. Формат следующий:

    B длина ширина xpos ypos [вращение];

Без поля вращения четыре числа определяют прямоугольник, центр которого находится через (xpos, ypos) и является длина поперек в x и ширина высотой по оси Y. Все числа в CIF являются целыми числами, которые относятся к сантиметрам расстояния, если не указано масштабирование подпрограмм (описанное ниже). вращение содержит два числа, которые определяют конечную точку вектора, начинающуюся в начале координат. Значение по умолчанию для этого поля - (1, 0), который является направленным вектором. Таким образом, предложение поворота 10 5 определяет вращение против часовой стрелки на 26,6 градуса от нормали. 10 -10 будет вращаться по часовой стрелке на 45 градусов. Обратите внимание, что величина этого вектора вращения не имеет значения.

РИСУНОК B.2. Пример CIF «проводного» заявления. Выписка: W25 100 200 100 100 200 200 300 200;

В ПРОВОД заявление (или письмо W) используется для построения пути, который проходит между набором точек. Путь может иметь ненулевую ширину и закругленные углы. ПРОВОД К ключевому слову приходит значение ширины, а затем произвольное количество пар координат, которые описывают конечные точки. На рисунке B.2 показан образец провода. Обратите внимание, что конечная точка и скругление углов обрабатываются неявно.

В ROUNDFLASH заявление (или письмо р) рисует закрашенную окружность с учетом диаметра и координаты центра. Например, утверждение:

    20 30 40 рэнд;

нарисует круг с радиусом 10 (диаметр 20) с центром в точке (30, 40).

РИСУНОК B.3. Пример "многоугольного" оператора CIF. Выписка: 150 100 200 200 200 300 100 300 100 200;

В ПОЛИГОН заявление (или письмо п) берет серию пар координат и рисует из них закрашенный многоугольник. Так как закрашенные многоугольники должны быть замкнутыми, первая и последняя координатные точки неявно связаны и не обязательно должны быть одинаковыми. Многоугольники могут быть произвольно сложными, включая вогнутость и самопересечение. B.3 иллюстрирует формулировку многоугольника.

Иерархия

В ВЫЗОВ заявление (или письмо C) вызывает коллекцию других операторов, которые были упакованы с DS и DF.Все подпрограммы получают номера, когда они определены, и эти номера используются в ВЫЗОВ для их идентификации. Если, например, СЛОЙ заявление и КОРОБКА оператор упаковывается в подпрограмму 4, затем оператор:

    C 4;

приведет к отрисовке рамки на этом слое.

Помимо простого вызова подпрограммы, ВЫЗОВ Оператор может включать преобразования, влияющие на геометрию внутри подпрограммы. К подпрограмме в CIF могут применяться три преобразования: перевод, поворот и зеркальное отображение. Перевод указывается буквой Т за которым следует смещение по x, y. Эти смещения будут добавлены ко всем координатам в подпрограмме, чтобы преобразовать ее графику по маске. Вращение указывается как буква р за которым следует конечная точка вектора x, y, которая, как и предложение поворота в КОРОБКА , определяет линию до начала координат. Неповоротная линия имеет конечную точку (1, 0), которая указывает вправо. Зеркальное отображение доступно в двух формах: MX отразить в x и МОЙ отразить в y. Зеркальное отображение немного сбивает с толку, потому что MX вызывает отрицание координаты x, которая эффективно отражается относительно оси y.

РИСУНОК B.4. Преобразования "вызова" CIF: (a) Подпрограмма 10: BOX 100 200 50 50; ПРОВОД 10 50 50 100 150; (b) Вызов: C 10 T -50 0 MX MY; (c) Вызов: C 10 R 0 -1 MX; (d) Вызов: C 10 MX R 0 -1;

К объекту может быть применено любое количество преобразований, и их перечисленный порядок представляет собой последовательность, которая будет использоваться для их применения. На рисунке B.4 показаны некоторые примеры, иллюстрирующие важность упорядочивания преобразований (обратите внимание, что рисунки B.4c и B.4d дают разные результаты, изменяя преобразования).

Определение подпрограмм для использования в ВЫЗОВ Оператор довольно прост. Операторы, которые должны быть упакованы, заключены между DS (definitionstart) и DF (окончание определения) утверждения. DS - это номер подпрограммы и коэффициент масштабирования подпрограммы. DF Коэффициент масштабирования для подпрограммы состоит из числителя, за которым следует знаменатель, который будет применяться ко всем значениям внутри подпрограммы. Такое масштабирование позволяет выражать большие числа меньшим количеством цифр и упрощает изменение масштаба проекта. Коэффициент масштабирования не может быть изменен. для каждого вызова подпрограммы, поскольку она применяется к определению. В качестве примера подпрограмму на рис. B.4 можно формально описать следующим образом:

    DS 10 20 2; B10 20 5 5; W1 5 5 10 15; DF;

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

В подпрограммах CIF допускается иерархия произвольной глубины. Допускаются прямые ссылки при условии, что подпрограмма определена до ее использования. Таким образом, последовательность:

    DS 10; ... C 11; DF; DS 11; ... DF; C 10;

допустимо, но последовательность:

    C 11; DS 11; ... DF;

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

Контроль

Подпрограммы CIF можно перезаписать, удалив их и переопределив. DD Оператор (определение удаления) принимает один параметр и удаляет каждую подпрограмму, номер которой больше или равен этому значению. Оператор полезен при слиянии нескольких файлов CIF, поскольку проекты можно определять, вызывать и удалять, не вызывая конфликтов имен. не рекомендуется для общего использования в системах CAD.

Расширение CIF может быть выполнено с помощью числовых операторов 0 через 9Хотя официально они не являются частью CIF, для использования этих расширений были разработаны определенные соглашения (см. Рис. B.5).

0 x y слой N имя;Установить именованный узел на указанный слой и положение
0 В x1 y1 x2 y2 ... xn yn;Нарисуйте векторы
"сообщение" Т х у;Разместить сообщение над указанным местом
2B "сообщение" Т х у;Разместить сообщение ниже указанного места
2C "сообщение" Т х у;Разместить сообщение по центру в указанном месте
2L "сообщение" Т х у;Разместить сообщение слева от указанного места
2R "сообщение" Т х у;Разместить сообщение справа от указанного места
lowx lowy highx highy;Объявить границу ячейки
4B имя экземпляра;Присоединить имя экземпляра к ячейке
4N имя сигнала x y;Обозначает сигнал в определенном месте
9 имя ячейки;Объявить имя ячейки
91 имя экземпляра;Прикрепить имя экземпляра к ячейке
94 метка x y;Поместите этикетку в указанное место
95 длина этикетки ширина x y;Поместите этикетку в указанную область
РИСУНОК B.5 Типичные пользовательские расширения для CIF.

Последний оператор в файле CIF - это КОНЕЦ заявление (или письмо EОн не принимает параметров и обычно не включает точку с запятой.

Грамматика BNF

Ниже приводится грамматика формата CIF, где cifFile является узлом грамматики верхнего уровня.

cifFile :: = (пусто * команда? полу) * endCommand пусто *команда :: = primCommand | defDeleteCommand | defStartCommand semi (blank * primCommand? semi) * defFinishCommandprimCommand :: = polygonCommand | boxCommand | roundFlashCommand | wireCommand | layerCommand | callCommand | userExtensionCommand | commentCommandpolygonCommand :: = Путь "P"boxCommand :: = "B" целое число sep целое число sep point (sep point)?roundFlashCommand :: = Целочисленная точка "R"wireCommand :: = "W" целочисленный путь seplayerCommand :: = "L" пусто * короткое имяdefStartCommand :: = "D" пусто * целое число "S" (sep integer sep integer)?defFinishCommand :: = "D" пусто * "F"defDeleteCommand :: = "D" пусто * "D" целое числоcallCommand :: = Целочисленное преобразование "C"userExtensionCommand :: = цифра userTextcommentCommand :: = "(" commentText ")"endCommand :: = "E"трансформация :: = (пробел * (точка "T" | "M" пробел * "X" | "M" пробел * "Y" | точка "R") *) *дорожка :: = точка (точка сепарации) *точка :: = sInteger sep sIntegersInteger :: = sep * "-"? integerDцелое число :: = sep * integerDintegerD :: = цифра +короткое имя :: = c c? с? с?c :: = цифра | upperCharuserText :: = userChar *commentText :: = commentChar * | commentText "(" commentText ")" commentTextполу :: = пустой * ";" пустой*сен :: = upperChar | пустойцифра ::= "0" | "1" | ... | "9"upperChar :: = "А" | «Б» | ... | "Z"пустой :: = любой символ ASCII, кроме digit, upperChar, "-", "(", ")" или ";"userChar :: = любой символ ASCII, кроме ";"commentChar :: = любой символ ASCII, кроме "(" или ")"

Смотрите также

Рекомендации