Загружается...
 

Глава 8. Создание новых технологий

8 – 10: Формат XML-файла технологии

Введение
Разметка (разработка) технологии в Electric может быть описана с помощью файлов XML-технологий. Эти файлы автоматически создаются редактором технологий и с помощью мастера создания технологий, но некоторые пользователи могут предпочесть редактировать их вручную. Для таких пользователей есть описание формата технологии XML файла. В настоящее время Electric содердит технологию файлов XML, которые являются непараметризованными (т.е. все значения явным образом вводятся и нет абсолютно никакой символической информации). Технология отклонения (периода) указывается в виде чисел двойной точности в устройствах отображения информации. В следующих версиях, Electric может реализовать символический стиль файлов XML-технологий.

В настоящее время технология файлы содержат два вида информации:
1. Electric - независимая информация. Сюда входят физические и электрические детали процесса литейного производства. Большинство из этих деталей крепятся к Layers и включают в себя правила проектирования, информацию о моделировании и т.д.
2. Electric - специальная информация. Сюда входят примитивные узлы и дуги, которые Electric использует для проектирования. Она также содержит правила привязки, отображения и стили печати, меню элементов и т.д.

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

Примитивный узел или дуга могут состоять из нескольких форм в различных слоях. Каждая форма в примитивном узле называется NodeLayer. Каждый интервал в примитивной дуге называется ArcLayer.

Минимальное ограничение всех форм NodeLayers примитивного узла называется FullRectangle. Описание примитивного узла также может определять значения FullRectangle. Самый крупный из всех ArcLayers в примитивной дуге определяется FullWidth .

Примитивные узлы и дуги также имеют понятие BaseRectangle и BaseWidth. Они связаны с формой самого важного слоя в этом узле или дуги. BaseRectangle примитивного узла описывается в явном виде. BaseWidth примитивной дуги описывается как ширина первого ArcLayer. BaseRectangle и BaseWidth выделяются в окне редактирования и затем они появляются в диалоговом окне свойств.

Экземпляры узлов и дуг в библиотеке могут иметь размеры гораздо больше, чем стандартные. Electric выводит информацию о размере каждого экземпляра в файлы библиотек. С выпуска версии Electric 8.05 (точнее с развитием версии 8.05) файлы библиотек стали содержать размеры узла / дуги над своими стандартного размера, описанными в файле технологии. При включении библиотеки проекта от одной технологии к другой совместимой с ней технологии, стандартные размеры узла / дуги в старой технологии превращаются в стандартные размеры узла / дуги в новой технологии. Узел / дуга, которая выходит на 1 единицу за рамки стандартного узла / дуги в старой технологии превращают в узел / дугу, которая выходит на 1 единицу за рамки стандартного узла / дуги в новой технологии.
Более старые версии Electric сохраняет размеры экземпляров узла / дуги по-другому. Формат Jelib в версии Electric 8,05 (разрабатываемая версия 8.05g) и все файлы Elib сохраняют размер FullRectangle и FullWidth.

Формат Jelib между 8.05g и 8.05n версией выводит размеры BaseRectangle и BaseWidth. Размеры Full и Base могут быть пересмотрены в последующих версиях технологии файла. Чтобы была возможность читать старые форматы, Jelib переопределил параметры Full и Base, поэтому технология файла теперь может содержать явные размеры стандартных узлов и дуг из старых файлов библиотек.

Все размеры в технологических файлах отображаются в дисплейных блоках. Существует шкала измерения в нанометрах.
Общая структура
Ниже приведено описание XML технологии в версиях Electric 8.05 и 8.06.
<technology> - это основной элемент технологии XML. Он имеет много характерных для XML признаков:
• "name" - содержит название этой технологии Electric.
• "class" (вариант) - содержит название класса Java, который является подклассом "com.sun.electric.technology.Technology". Он может быть использован для того, чтобы описать те моменты, которые еще не описаны в классе технологии XML. Интерфейс с этим классом не указан и может быть изменен. Если вам понадобится нестандартная функция технологии, тогда вам следует обратиться к разработчикам Electric с этим вопросом.
Например:



Внутри <technology> вложены элементы:
• <shortName> - краткое описание технологии (по желанию)
• <description> - подробное описание технологии

• <version> - описывает версии Electric, изменение Jelib и его влияние на размеры. Приложение"tech" содержит идентификатор этой версии, используемой в последующих операциях <diskOffset> подэлементах <arcProto> и описаний <primitiveNode>. Приложение «Electric» является копией версии Electriс. Эти элементы, как правило, фиксируется во всех файлах технологии.


Например:

• <numMetals> - описывает возможный диапазон по количеству слоев металла в технологии. Там нет поддержки файлов технологии XML с переменным числом слоев металла. Таким образом, этот элемент должен содержать тоже самое значение для всех трех атрибутов (приложений).
Например:
• <scale> - определяет количество нанометров в устройстве отображения. Electric использует безразмерные "единицы" в его интерфейсе, где транзистор может быть "2x3" без указания реальных размеров. Эта шкала преобразует единицы к реальным размерам. Атрибут (приложение)" relevant " должен быть правдивым и для разметки технологии.
Например:

• <resolution> - определяет минимальное значение разрешения в сетевых единицах, используемых в параметре DRC, чтобы определить, какие точки находятся вне сетки.
Например:

• <defaultFoundry> это название литейного производства для этой технологии заданного по умолчанию. Название ссылается на один из <foundry> элементов, найденных позже в XML-файле.
Например:

• <minResistance> - поиск глобального минимума сопротивления (для паразитных элементов).
Например:

<minResistance value="4.0"/>
• <minCapacitance> поиск глобального минимума емкости (для паразитных элементов).
Например:
<minCapacitance value="0.1"/>
• <logicalEffort> - определяет предпочтения проекта для Logical Effort tool.
Например: <logicalEffort gateCapacitance="0.167" wireRatio="0.16"
diffAlpha="0.7"/>
• <transparentLayer> определяет прозрачность слоев в этой технологии. Все слои можно сделать либо в «прозрачном» или «непрозрачном» стиле. Прозрачные слои могут накладываться на другие прозрачные слои не заслоняя друг друга (т.е. они сливаются там, где они накладываются). Непрозрачные слои накладываются на все слои без смешивания. Т.к. система должна сохранять все прозрачные слои, то это просто невозможно сделать каждый слой прозрачным. Вместо этого, менее используемые слои должны быть непрозрачными и должна использоваться пунктирная линия таким образом, чтобы они не накладывались на все слои. Исключением является Layer-Display Algorithm, который не использует прозрачное / непрозрачное разграничение (см. раздел 4-3). Данный элемент указывает количество прозрачных слоев и обеспечивает цвет каждого из них. Система автоматически определяет режим смешивания цветов, где несколько прозрачных слоев могут накладываться друг на друга.
Например: <transparentLayer transparent="1">
<r>96</r>
<g>209</g>
<b>255</b>
</transparentLayer>
• <layer> - список слоев (см. ниже).
• <arcProto> - список примитивных дуг (см. ниже).

• <primitiveNode/primitiveNodeGroup> список примитивных узлов и группы узлов (см. ниже).

• <spiceHeader> стандартные spice модели
• <menuPalette> описание стандартных компонентов меню (по желанию).
• <foundry> информация для Foundry. Каждый из них имеет стандартные правила DRC и отображение GDS.
Слои
Элементы <layer> в технологии задают слои. Им присуще следующие параметры:
• "name" – Название слоя. Имена слоев не упоминается в файлах библиотек. Они используются только в описании примитивных узлов и дуг и в правилах DRC.
• "fun" - функции этого слоя, взятого из этого списка:
UNKNOWN
METAL1 ... METAL12 (metal)
POLY1 ... POLY3 (polysilicon)
GATE (gate polysilicon)
DIFF DIFFP DIFFN (active)
IMPLANT IMPLANTP IMPLANTN SUBSTRATE WELL WELLP WELLN (implants)
CONTACT1 ... CONTACT12 (cuts)
RESISTOR CAP (resistor/capacitor)
TRANSISTOR (transistor)
EMITTER BASE COLLECTOR (bipolar parts)
DMY* DEXCL* (dummy and dummy-exclusion for different layers)
BUS ART (schematics and artwork)
PLUG OVERGLASS GUARD ISOLATION (specialty)
TILENOT CONTROL (specialty)
• "extraFun" - дополнительные функции для этого слоя, взятого из этого списка:
nonelectrical
connects-metal connects-poly connects-diff
heavy light depletion_heavy depletion_light enhancement_heavy enhancement_light
vt thick native
inside_transistor deep carb-nano
n-type deprecated: use fun=IMPLANTN
p-type deprecated: use fun=IMPLANTP
Например:
<layer name="Poly-Cut" fun="CONTACT1" extraFun="connects-poly">
Внутри элемента <layer> вложены элементы:
• <transparentColor> - прозрачный цвет (если не указано, что это непрозрачный слой).
• <opaqueColor> - непрозрачный цвет

• <patternedOnDisplay> использование <PATTERN> при рисовании на экране. • <patternedOnPrinter> использование <PATTERN> при печати. • <pattern> пунктирный шаблон (если требуется вывести его на экране или при печати).

• <outlined> очертание слоя (разумно использовать только для фигурных слоев).
• <opacity> интенсивность слоя (от 0 до 1)
• <foreground> размещение слоя на переднем плане.
• <display3D> определяет толщину и высоту над подложкой для 3D отображения и паразитных элементов. Элемент имеет следующие признаки:
- "thick" - толщина слоя в 3D
- "height" – высота нижней части слоя в 3D
- "mode" – стиль отображения в 3D
- "factor" – стиль отображения в 3D
Например:
<display3D thick="0.75" height="15.75" mode="NONE" factor="0.2"/>
• <cifLayer> имя слоя CIF
• <skillLayer> имя слоя Skill

• <parasitics> паразитные подэлементы. • <pureLayerNode> описание чистого слоя узла. Этот узел используется для представления произвольных многоугольников данного слоя. Он также используется при импорте из внешних форматов, таких как GDS. Стандартный узел чистого слоя имеет нулевую FullRectangle и BaseRectangle. Поэтому в библиотеке файлы содержат точную геометрическую информацию для всех узлов чистого слоя. Формами чистого слоя узла считаются формы порта и порта узла.

Существуют также и дополнительные подэлементы:

- <oldName> - если чистый слой узла имеет другое имя в более ранних версиях технологии.

- <lambda> - стандартная ширина чистого слоя узла (в сетевых единицах), когда она находится вручную.

- <portArc> - список названий дуги, которые могут подключиться чистому слою узла.

Например:

<pureLayerNode name="Transistor-Poly-Node" port="trans-poly-1">

<lambda>2.0</lambda>

<portArc>Polysilicon-1</portArc> </pureLayerNode>

Дуги
<arcProto> - элементы, которые описывают в технологии примитивные дуги. Для них характерны следующие признаки:
• "name" – название прототипа дуги. Все экземпляры примитивной дуги ссылаются на это имя, во всех библиотеках Electric.
• "fun" – описывает функцию дуги:
UNKNOWN
METAL1 ... METAL12 (metal)
POLY1 ... POLY3 (polysilicon)
DIFF DIFFP DIFFN DIFFS DIFFW (active)
BUS (busses)
UNROUTED (unrouted, for routers)
NONELEC (non-electrical, for constraints)
Например:
<arcProto name="P-Active" fun="DIFFP">
Существуют также и дополнительные подэлементы <arcProto>:

• <oldName> - имя примитивной дуги, которое было дано в предыдущих версиях технологии

• <wipable> - установка флажка - дуга будет удалять свои флажки. Этот флаг обычно присутствует в разметке технологий.
• <curvable> - установка флажка для описанных круглых дуг. Не поддерживается в текущей реализации.
• <special> - установка флажка для вызова меню элементов
• <skipSizeInPalette> - установка флажка для вызова меню элементов
• <notUsed> - установка флажка на запрещение использования примитивной дуги в библиотеках.
• <extended> - стандартное конечное значение расширения дуги.
• <fixedAngle> - стандартное состояние, когда фиксированный угол ограничен на этой дуге.
• <angleIncrement> - состояние, когда угол приращения дуги равен стандартным значениям (сетки размещения углов).
• <antennaRatio> - используется в утилите ERC.
• <diskOffset> - отвечает за размеры, которые были записаны в более старых файлах библиотек. Атрибут "untilVersion" ссылка "tech" атрибут <version> элемент , который располагается выше. Этот диск применяется к библиотеке Jelib в версиях Electric до атрибута «Electric» элемента <version> . Атрибут <width> на самом деле равен половине значения, записанного в Jelib. Например, "Р-активность" дуги:
15.0 wide with Jelib prior to Electric version "8.05g";
3.0 wide with Jelib prior to Electric version "8.05o";
0.0 wide with Jelib in Electric versions since "8.05o".
Более наглядно представим, что a.extend - это внутреннее значение, связанное с экземпляром дуги в данных Electriс. Значение, записанное в библиотеки до "diskOffset.untilVersion" было 2 * (a.extend + diskOffset.width). Элемент <diskOffset> необходим только в устаревших технологиях.
Например:
<diskOffset untilVersion="1" width="7.5"/>
• <defaultWidth> - стандартное значение ширины дуги. Данный элемент не используется в настоящее время и поэтому его не берут во внимание.
• <arcLayer> - список ArcLayers, которые составляют эту дугу. Атрибут "layer" ссылается на слой ArcLayer. Атрибут "style" либо "FILLED” или "CLOSED". Дуги макета должны быть "FILLED”(заполненны). Подэлемент <lambda> описывает степень (половину ширины) от ArcLayer от центральной линии дуги. Более наглядно представим, что a.extend принимает внутреннее значение, связанное с экземпляром дуги в данных Electric. Ширина "Р-Select" <arcLayer> ниже 2 * (a.extend + 3,5) FullWidth экземпляра дуги является ширина самого широкого ArcLayer. Это 2 * (a.extend + 7,5) в приведенном выше примере "P-Active" дуги. BaseWidth экземпляра дуги является ширина первого в списке ArcLayer. Это 2 * (a.extennd + 1,5) в приведенном выше примере "P-Active" дуги.
Например:
<arcLayer layer="P-Select" style="FILLED">
<lambda>3.5</lambda>
</arcLayer>
Пример:
<arcProto name="P-Active" fun="DIFFP">
<wipable/>
<extended>true</extended>
<fixedAngle>true</fixedAngle>
<angleIncrement>90</angleIncrement>
<antennaRatio>200.0</antennaRatio>
<diskOffset untilVersion="1" width="7.5"/>
<diskOffset untilVersion="2" width="1.5"/>
<arcLayer layer="P-Active" style="FILLED">
<lambda>1.5</lambda>
</arcLayer>
<arcLayer layer="N-Well" style="FILLED">
<lambda>7.5</lambda>
</arcLayer>
<arcLayer layer="P-Select" style="FILLED">
<lambda>3.5</lambda>
</arcLayer>
</arcProto>
Узлы

<primitiveNode> - этоэлементы, которые описывают примитивный узел в технологии. Для них характерны следующие признаки:

• "name" – имя прототипа узла. Все экземпляры примитивного узла ссылаются на это имя, во всех библиотеках Electric.
• "fun" – описывает функцию узла:
• UNKNOWN
PIN (pins connect arcs)
NODE (pure layer nodes)
CONTACT CONNECT (nodes that connect all arcs)
TRANMOS TRAPMOS TRA4NMOS TRA4PMOS (CMOS transistors)
TRADMOS TRA4DMOS (nMOS transistors)
TRANPN TRAPNP TRA4NPN TRA4PNP (Bipolar transistors)
TRANJFET TRAPJFET TRA4NJFET TRA4PJFET (JFET transistors)
TRADMES TRAEMES TRA4DMES TRA4EMES (MESFET transistors)
TRANS TRANS4 (generic transistors)
TRANSREF (reference transistors)
RESIST PRESIST WRESIST ESDDEVICE (resistors)
CAPAC ECAPAC (capacitors)
DIODE DIODEZ (diodes)
INDUCT (inductors)
METER (meters)
BASE EMIT COLLECT (Bipolar transistor parts)
BUFFER GATEAND GATEOR GATEXOR (logic gates)
FLIPFLOPRSMS FLIPFLOPRSP FLIPFLOPRSN (RS flipflops)
FLIPFLOPJKMS FLIPFLOPJKP FLIPFLOPJKN (JK flipflops)
FLIPFLOPDMS FLIPFLOPDP FLIPFLOPDN (D flipflops)
FLIPFLOPTMS FLIPFLOPTP FLIPFLOPTN (T flipflops)
MUX (multiplexors)
CCVS CCCS VCVS VCCS TLINE (two-port gates)
CONPOWER CONGROUND SOURCE (power/ground)
SUBSTRATE WELL (implants)
ART (artwork)
ARRAY (array nodes)
ALIGN (alignment nodes)
Пример:

<primitiveNode name="Metal-1-Metal-2-Con" fun="CONTACT"> Существуют также и дополнительные подэлементы <primitiveNode>: • <oldName> - Необязательное наличие имени этого примитивного узла в предыдущих версиях технологии.

• <shrinkArcs> - установка флажка уменьшает дугу, которая соединена с узлом. Этот флажок должен быть "on" только для PIN узлов.
• <square> - установка флажка ограничивает квадратный узел. В разметке технологий он используется как круглый.
• <canBeZeroSize> - установка флажка, чтобы размер стал равным нулю (не используется в разметке технологий).
• <wipes> - флажок, который не используется в разметке технологий.
• <lockable> флажок, который используется при преобразовании технологий в массив(таких как FPGA).
• <edgeSelect> - флажок, который не используется в разметке технологий.
• <skipSizeInPalette> - флажок, который вызывает меню элементов.
• <notUsed> - установка флажка запрещает использование этого примитива узла в библиотеках.
• <lowVt> флаг, чтобы отметить низкий VT транзистора.
• <highVt> флаг, чтобы отметить высокий VT транзистора.
• <nativeBit> флаг, чтобы отметить первоначальный транзистор.
• <od18> флаг, чтобы отметить od18 транзистор.
• <od25> флаг, чтобы отметить od25 транзистор.
• <od33> флаг, чтобы отметить od33 транзистор.
• <diskOffset> отвечает за те размеры, которые были записаны в более старых файлах библиотек. Для них характерны следующие атрибуты:

• "untilVersion" ссылка "tech" атрибут <version> элементов, которые располагаются выше. Этот диск применяется к библиотеке Jelib версии Electric до разработки ее копии "Electric" по признаку характерному элементу <version>. Атрибуты и <y> на самом деле это половина значений, записанных в файл Jelib . Таким образом, пример узла «Metal-1-Metal-2-Con" будет показан ниже:
5.0 width/height with Jelib prior to Electric version "8.05g";
4.0 width/height with Jelib prior to Electric version "8.05o";
0.0 width/height with Jelib in Electric versions since "8.05o".
Более наглядно если мы представим, что n.extendX и n.extendY принимают значения, связанные с экземпляром узла в базе данных Electric. Значения, записанные в библиотеку до "diskOffset.untilVersion" были:
2 * (n.extendX + diskOffset.x) и 2 * (n.extendY + diskOffset.y).
Элемент <diskOffset> необходимо использовать только с устаревшими технологиями.
Пример:
<diskOffset untilVersion="1" x="2.5" y="2.5"/>
• <defaultWidth> и <defaultHeight> - стандартные заводские настройки размера узла. Подэлемент <lambda> содержит значение extendX / extendY в устройстве отображения. Обычно эти элементы опущены, так как стандартные значения extendX и extendY равны 0. Таким образом, заводские настройки из extendX и extendY находятся в defaultWidth.lambda и defaultHeight.lambda Заводские установки из BaseWidth и BaseHeight находятся таким образом:
BaseRectangle.width + 2*defaultWidth.lambda
И
BaseRectangle.height + 2*defaultHeight.lambda .
Стандартные заводские настройки FullWidth и FullHeight находятся:
FullRectangle.width + 2*defaultWidth.lambda
и
FullRectangle.height + 2*defaultHeight.lambda .
• <nodeBase> определяет BaseRectangle узла. Он содержит в себе подэлемент <box> который имеет в нем другой подэлемент <lambdaBox>. В <lambdaBox>, атрибуты "KLX", "KHX", "KLY" и "KHY" являются координатами основания прямоугольника стандартного размера узла.
• <sizeOffset> не рекомендуется.

• <protection> задает рамку для защиты ячейки.

• <nodeLayer> список NodeLayers (см. ниже).

• <primitivePort> список примитивных портов на узел. Атрибут "name" описывает имя порта. Если библиотеку настроить на преобразование от одной технологии к другой, это поможет объединить имена портов. Названия портов из однопортовых узлов не очень важны, потому что пользователь библиотеки может подключить дуги на переименованный порт. Однако, портовые имена транзисторов может иметь совместимые имена, как "poly-top", "poly-bottom", "diff-left", "diff-right". <primtivePort> имеет следующие подэлементы: - <portAngle> может ограничить направление дуг, которые можно подключить к порту - <portTopology> небольшое целое число, которое является уникальным среди PrimitivePorts на PrimitiveNode. Когда топология PrimitivePorts имеет одинаковые числа, то это означает, что порты подключены.

- <box> прямоугольник, который имеет ограничения в виде конечной точки подключенной дуги.

- <portArc> список примитивных дуг из данной технологии, которые могут подключиться к этому порту

Пример:

<primitivePort name="metal-1-metal-2"> <portAngle primary="0" range="180"/> <portTopology>0</portTopology>

<box>
<lambdaBox klx="-1.0" khx="1.0" kly="-1.0" khy="1.0"/>
</box>

<portArc>Metal-1</portArc> <portArc>Metal-2</portArc> </primitivePort>

• <serpTrans> отмечает этот узел, как волнообразный транзистор. Он подает 6 специальных значений.

• <polygonal> отмечает, что этот узел может быть произвольным многоугольником. Обычно не используется в разметке технологий.

• <minSizeRule> перекрывает FullRectangle узла и содержит имя как правило минимального размера. Атрибуты "ширина" и "высота" описывают размер FullRectangle. Атрибут "rule" - это минимального размера имя правила. По умолчанию FullRectangle рассчитывается как минимальный ограничивающий прямоугольник, построенный на точках, найденных в NodeLayers стандартного примитива узла. Для узлов "Metal-1-Metal-2-Con", показанных ниже, FullRectangle рассчитывается как прямоугольник.
x = -2.0, y = -2.0 и x = 2.0, y = 2.0.
FullBox экземпляра узла с n.extendX и n.extendY являются:
x = FullRectangle.minX - n.extendX, y = FullRectangle.minY - n.extendY
и
x = FullRectangle.maxX + n.extendX, y = FullRectangle.maxY + n.extendY
Это не точно, но если фигуры, которые сделали минимальную ограничительную рамку стандартного размера узла уменьшаются, то экстенты наоборот увеличиваются. Элемент <minSizeRule> определяется FullRectangle вручную в виде прямоугольника с центром в начале координат. FullRectangle при наличии <minSizeRule> является:
x = -0.5*minSizeRule.width, y = -0.5*minSizeRule.height
и
x = +0.5*minSizeRule.width, y = +0.5*minSizeRule.height
Этот элемент определяет FullRectangle «Metal-1- Metal 2-Con", как:
x = -2.5, y = -2.5 and x = 2.5, y = 2.5
Например:
<minSizeRule width="5.0" height="5.0" rule="8.3, 9.3"/>
• <spiceTemplate> дополнительный spice шаблон этого узла.
Пример:

<primitiveNode name="Metal-1-Metal-2-Con" fun="CONTACT">

<diskOffset untilVersion="1" x="2.5" y="2.5"/>
<diskOffset untilVersion="2" x="2.0" y="2.0"/>
<sizeOffset lx="0.5" hx="0.5" ly="0.5" hy="0.5"/>
<nodeLayer layer="Metal-1" style="FILLED">
<box>
<lambdaBox klx="-2.0" khx="2.0" kly="-2.0" khy="2.0"/>
</box>
</nodeLayer>
<nodeLayer layer="Metal-2" style="FILLED">
<box>
<lambdaBox klx="-2.0" khx="2.0" kly="-2.0" khy="2.0"/>
</box>
</nodeLayer>
<nodeLayer layer="Via1" style="FILLED">
<multicutbox sizex="2.0" sizey="2.0" sep1d="3.0" sep2d="3.0">
<lambdaBox klx="0.0" khx="0.0" kly="0.0" khy="0.0"/>
</multicutbox>
</nodeLayer>

<primitivePort name="metal-1-metal-2"> <portAngle primary="0" range="180"/> <portTopology>0</portTopology>

<box>
<lambdaBox klx="-1.0" khx="1.0" kly="-1.0" khy="1.0"/>
</box>

<portArc>Metal-1</portArc> <portArc>Metal-2</portArc> </primitivePort>

<minSizeRule width="5.0" height="5.0" rule="8.3, 9.3"/>

</primitiveNode>

Слои Узла
<nodeLayer> - это элементы, которые описывают NodeLayers в примитивных узлах. Им характерны следующие атрибуты:
• "layer" - ссылается на слой NodeLayer.
• "style" - либо"FILLED", или "CLOSED" или "CROSSED". Узлы разметки должны быть "FILLED" или "CROSSED", используя только выводы.

• "PortNum" - связан с примитивным портом NodeLayer. Это нулевой индекс <primitivePort> подэлемента <primitiveNodeElement>. Он не соответствует атрибуту "portTopology" связанного с NodeLayer. Если вы обнаружите, что программа ведет себя странно, не исключено, что вы установили этот атрибут неправильно. Отрицательные значения означают, что NodeLayer не связан с портом. Если этот атрибут опущен, то из списка выбирается первый порт.

Например:
<nodeLayer layer="Metal-2" style="FILLED">
Элемент <nodeLayer> содержит следующие подэлементы:
• <box> определяет прямоугольную форму. Он имеет атрибуты "KLX", "KHX", "KLY", и "KHY". Если эти атрибуты опущены, их значения находятся по умолчанию "KLX = -1", "KHX = 1" "KLY = -1" "KHY = 1". Существует также подэлемент <lambdaBox> который имеет атрибуты "KLX", "KHX", "KLY" и "KHY". Атрибуты <lambdaBox> описывают форму NodeLayer стандартного размера узла. Атрибуты <box> описывают увеличение (возрастание) фигур, когда экземпляр узла превышает стандарт. Другими словами, значения <box> умножаются на указанный размер узла (и делятся на два), а затем добавляются значения <lambdaBox> чтобы получить координаты. Более наглядно представим, что n.extendX и n.extendY принимают значения, связанные с экземпляром узла в базе данных Electric. Фигура <nodeLayer> с фигурой <box> представляют собой прямоугольник.
x = lambdaBox.klx + n.extendX*box.klx, y = lambdaBox.kly + n.extendY*box.kly
и
x = lambdaBox.khx + n.extendX*box.khx, y = lambdaBox.khy + n.extendY*box.khy

Например, фигура "Metal-2» NodeLayer представляет собой прямоугольник:
x = -2 - n.extendX, y = -2 - n.extendY и x = 2 + n.extendX, y = 2 + n.extendY
Пример:
<nodeLayer layer="Metal-2" style="FILLED">
<box>
<lambdaBox klx="-2.0" khx="2.0" kly="-2.0" khy="2.0"/>
</box>
</nodeLayer>

• <points> сопровождается элементами <techPoint>которые описывают вершины многоугольника. <techPoint> элементы имеют атрибуты "xm", "ха", "уm", и "ya", которые определяют точку:

х = techPoint.xa + 2 * n.extendX * techPoint.xm, у = techPoint.ya + 2 * n.extendY * techPoint.ym
Обратите внимание, что значения techPoint.xm и techPoint.ym не согласуются со значениями из box.klx, box.khx, box.kly, box.khy.
• <multicutbox> прямоугольная область, где центры контактного разреза помещены в равномерные массивы. Это похоже на <box>, но она имеет дополнительные атрибуты:
"SizeX" и "SizeY" характеризует размер контактного разреза.
"sep1d" описывает разделение между контактными разрезами в одномерный массив.
"sep2d" описывает разделение между контактными разрезами в двумерный массив.
Центры контактных разрезов ограничены, чтобы быть в поле в установленном подэлементе <lambdaBox> и атрибутов "KLX" multicutbox, "KHX", "KLY" и "KHY".
Слой NodeLayer "VIA1" из стандартного размера узла будет генерировать ровно на один контактный вырез размером 2x2 с центром. Когда n.extendX ≥ 2,5 (2,0 + 3,0) / 2 или n.extendY ≥ 2,5, то NodeLayer будет генерировать сразу несколько контактных разрезов (вырезов).
Пример:
<nodeLayer layer="Via1" style="FILLED">
<multicutbox sizex="2.0" sizey="2.0" sep1d="3.0" sep2d="3.0">
<lambdaBox klx="0.0" khx="0.0" kly="0.0" khy="0.0"/>
</multicutbox>
</nodeLayer>
• <serpbox> используется в волнообразных транзисторах. Волнообразный транзистор состоит из многих сегментов в затворе транзистора. Каждый сегмент описан, если смотреть с одного конца сегмента к другому концу. Таким образом, геометрия расширяется в зависимости от расстояния от осевой линии сегмента влево или вправо от нее. Переход к верхней или нижней точки означает, как далеко от конца сегмента геометрия начинает расширяться. Таким образом, в дополнение к атрибутам, найденных в элементе <box>, <serpbox> имеет следующие дополнительные атрибуты:

"lWidth" расстояние от осевой для "левого" края.
"rWidth" расстояние от осевой к «правому» края.
"tExtent" расширение за пределы "верхней" точке осевой линии.
"bExtent" расширение за пределы "нижней" точки осевой линии.

При наличии нескольких примитивных узлов, которые похожи между собой, может быть использована команда <primitiveNodeGroup>, чтобы определить их.<primitiveNodeGroup> содержит дочерние элементы <primitiveNode>, определяющие вариации среди группы примитивов. Отдельные узлы в <primitiveNodeGroup> могут отличаться друг от друга только по имени, функциям и их слоев узлов. В частности: 1. В <name> и <fun> атрибуты перемещаются от элемента <primitiveNodeGroup> и появляются внутри подэлементов <primitiveNode>. 2. Подэлементы <oldName>, <lowVt>, <highVt>, <nativeBit>, <od18>, <od25> И <od33> также перемещаются в подэлементы <primitiveNode>. 3. Элементы <nodeLayer>, которые содержат <primitiveNodeGroup> могут иметь дополнительный подэлемент <inNodes>. Этим подэлементом определяется список примитивных узлов в группе, где может возникнуть <nodeLayer>.

Например:

<primitiveNodeGroup> <primitiveNode name="P-Transistor" fun="TRAPMOS"/> <primitiveNode name="Thick-P-Transistor" fun="TRAPMOSHV1">

<od18/>

</primitiveNode>

<nodeBase>
<box><lambdaBox klx="-1.5" khx="1.5" kly="-1.0" khy="1.0"/></box>
</nodeBase>
<nodeLayer layer="P-Active" style="FILLED" portNum="1" electrical="true">
<serpbox kly="1" lWidth="4" rWidth="0" tExtent="0" bExtent="0">
<lambdaBox klx="-1.5" khx="1.5" kly="1" khy="4"/>
</serpbox>
</nodeLayer>
<nodeLayer layer="Thick-Active" style="FILLED" portNum="-1">
<inNodes>

<primitiveNode name="Thick-P-Transistor"/>

</inNodes>
<serpbox lWidth="8.0" rWidth="8.0" tExtent="4.0" bExtent="4.0">
<lambdaBox klx="-5.5" khx="5.5" kly="-8.0" khy="8.0"/>
</serpbox>
</nodeLayer>

<primitivePort name="poly-left"> <portAngle primary="180" range="90"/> <portTopology>0</portTopology>

<box khx="-1.0">
<lambdaBox klx="-3.5" khx="-3.5" kly="0.0" khy="0.0"/>
</box>

<portArc>Polysilicon-1</portArc> </primitivePort> </primitiveNodeGroup>




Производитель
В разделе Foundry есть правила проектирования и GDS слоев. Раздел обычно находится в конце XML-файла. Этот раздел начинается с:
<Foundry name="foundryname">
где foundryname это имя производителя интегральных схем, правила которой прилагаются. Раздел заканчивается тегом </ Foundry>.
У каждого правила в разделе есть некоторые общие признаки:
• RuleName дает имя правилу, используемому во время печати сообщений об ошибках.
• Где и сообщается о применении этого правила. Большинство правил применяется все время, и в этом случае атрибут принимает значение ALL. Если правило применяется только в некоторых технологиях, то поле будет ограничить его использование. Например, технология "mocmos" имеет ряд правил, которые запускаются теггои = "DE".
• type сообщает, какие правила в настоящее время присутствуют. Выбор может варьироваться в зависимости от различных форматов правил.
• value указывает значение правила, которое изменяется в зависимости от типа правил. Если даны две цифры, то они принимаются за значения X и Y для асимметричных правил.
• maxW и MINLEN осуществляет контроль за пользованием требованиями по размещению при наличии длинных и широких проводов. Если задан maxW, то по крайней мере один из частей геометрии, будут в ширину. А если задан MINLEN, то длина общей параллельной перспективы должна быть по крайней мере, долгой.

Основные правила:


• LayerRule является правилом для одного слоя. В дополнение к стандартным атрибутам, из этого правила есть одно или несколько имен слоя, к которому оно применяется. Тип информации может быть MINWID (минимальная ширина слоя), MINAREA (минимальная площадь слоя), или MINENCLOSEDAREA (минимальная площадь многоугольника).
Например: <LayerRule ruleName="1.1 Mosis" layerName="P-Well, N-Well" when="ALL"
type="MINWID" value="12.0"/>
• LayersRule является правилом для взаимодействия двух разных слоев. В дополнение к стандартным атрибутам, он имеет имена двух слоев. Тип информации может быть CONSPA (минимальное расстояние из двух соединенных слоев), UCONSPA (минимальное расстояние двух не связанных между собой слоев), SPACING (минимальное расстояние связанных и не связанных между собой слоев), UCONSPA2D (минимальное расстояние от двумерного массива контакте разрезов), FORBIDDEN (запрещены сочетания слоев в любой точке конструкции), EXTENSION (минимальное наложение слоя на другой слой), или SURROUND (расширение слоя). Пример: <LayersRule ruleName="15.4 Mosis" layerNames="{Metal-3,Metal-3}"
when="ALL" type="SPACING" value="6" maxW="100" minLen="0"/>
• NodeRule предоставляет правила для узлов Electric. В дополнение к стандартным атрибутам, он имеет имя узла. Тип информации может быть NODSIZ (минимальный размер узла) или FORBIDDEN (узел не допускается). Пример:
<NodeRule ruleName="5.2 Mosis" nodeName="Metal-1-Polysilicon-1-Con"
when="ALL" type="NODSIZ" value="5"/>
• NodeLayersRule предоставляет правила для конкретных слоев в одном узле. В дополнение к стандартным атрибутам, он имеет имя и слоя и узла. Тип информации может быть SURROUND (для слоев в узле) или ASURROUND (для слоев в дуге). Пример:
<NodeLayersRule ruleName="2.3 Mosis" layerNames="{P-Well, N-Active}"
nodeName="N-Transistor" when="ALL" type="SURROUND" value="5"/>
В дополнение к правилам, GDS слой также можно найти в разделе Foundry. Каждый слой GDS имеет следующий формат:
<layerGds layer="XXXX" gds="YYYY"/>
Где XXXX это имя слоя и YYYY является Информация о GDS для этого слоя. Информация GDS может включать несколько номеров слоя, например, "21,49,98". GDS слои могут иметь информацию о типе, если разделенны косой чертой (слешем), например слой 14 тип 141 это "21/141". GDS слои могут быть использованы для функций Pins и Text с помощью добавления "р" или "t" к номеру слоя, например "21,49 р, 74/2t".
Пример: <layerGds layer="Metal-1" gds="49,80p,80t"/>
<layerGds layer="Metal-2" gds="41/40,141p"/>
<layerGds layer="Metal-3" gds="98"/>
Это обозначает, что Metal-1находиться на GDS слое номер 49, или 80 для штифтов или текста; Metal-2 находится на GDS слое 41, тип 40 или на слое 141 для штифтов; и Metal-3 находится на GDS слое под номером 98.




Последние изменения страницы среда май 14, 2014 20:48:46 MSK
Яндекс.Метрика