СОДЕРЖАНИЕ СОДЕРЖАНИЕ ................................................................................................................................2 СПИСОК СОКРАЩЕНИЙ ................................................................................................................4 ВВЕДЕНИЕ ...........................................................................................................................................6 1 Аналитический раздел .....................................................................................................................8 1.1 ПО для физической верификации. Краткий обзор Diva Cadence .....................................8 1.2 Язык программирования SKILL ..........................................................................................11 1.3 Обзор технологии .....................................................................................................................12 1.4 DRC .............................................................................................................................................13 1.4.1 Общие сведения о разделе..................................................................................................13 1.4.2 Концепция ............................................................................................................................14 1.4.3 Слои ......................................................................................................................................14 1.4.4 Режимы работы ...................................................................................................................16 1.4.5 Операции со слоями ...........................................................................................................17 1.4.6 Функции ...............................................................................................................................20 1.5 Extract .........................................................................................................................................22 1.5.1 Общие сведения о разделе Extract .....................................................................................22 1.5.2 Распознавание устройств.....................................................................................................22 1.5.3 Команды экстракции устройств ........................................................................................23 1.5.4 Connectivity. ............................................................................................................................25 2 Практический раздел .....................................................................................................................26 2.1 Разработка правил DRC .........................................................................................................26 2.1.1 Инициализация исходных слоев ........................................................................................26 2.1.2 Основные правила ...............................................................................................................28 2.1.3 Дополнительные проверки .................................................................................................31 2.1.4 Тесты ....................................................................................................................................32 2.2 Разработка правил Экстракта ...............................................................................................36 2.2.1 Выделение слоев для распознавания устройств ...............................................................36 2.2.2 Connectivity ..........................................................................................................................37 2.2.3 Экстракция устройств .........................................................................................................39 2.2.4 Тесты ....................................................................................................................................41 ЗАКЛЮЧЕНИЕ ..............................................................................................................................42 СПИСОК ЛИТЕРАТУРЫ ............................................................................................................43 СПИСОК СОКРАЩЕНИЙ БМК – базовый матричный кристалл ИМС – интегральная микросхема КМОП – комплементарная пара, состоящая из двух транзисторов типа «металл-окисел-полупроводник» КП – контактная площадка КТТ – конструкторско-технологические требования МОП-транзистор – транзистор типа «металл-окисел-полупроводник» МЭМС – микроэлектромеханическая система, устройство, объединяющее в себе микроэлектронные и микромеханические компоненты ПО – Программное обеспечение САПР – Система автоматизированного проектирования СнК – система на кристалле DRC – Design Rule Checking, контроль конструкторскотехнологических требований EDA – Electronic Design Automation, автоматизация проектирования электронных приборов ERC – Electrical Rule Checking, контроль электрических проектных норм GDSII – Graphic Data System II, формат хранения данных топологии ИМС LPE – Layout Parasitic Extractor, экстракция паразитных параметров LVS – Layout Versus Schematic, проверка на соответствие топологии схемы ее исходному схемотехническому описанию. УТВЕРЖДАЮ Начальник топологического отдела проектирования АО «ДИЗАЙН ЦЕНТР «СОЮЗ» __________________/ Кирдянов А.А./ «___» __________ 2018 г. ТЕХНИЧЕСКОЕ ЗАДАНИЕ Создать на языке SKILL правила проектирования для технологии 0,18 мкм Руководитель выпускной работы от кафедры ПКИМС ________________________________________________ (Рыжова Д. И.) (подпись, дата) Студент гр. ЭКТ-43 ________________________________________________ (Рогожникова А.А.) (подпись, дата) СОГЛАСОВАНО: Руководитель практики от предприятия (фирмы, кафедры) ______________________________________________ (Кирдянов А.А.) (подпись, дата) Москва 2018 ВВЕДЕНИЕ Основными проблемами проектирования современных систем на кристалле, включающих в себя миллионы полупроводниковых структур являются обеспечение безошибочности, надежности и уменьшение времени затраченного на проектирование. В связи с высокой сложностью интегральных микросхем, решение данных проблем не возможно без использования различных алгоритмов оптимизации, алгоритмов проверки и методов автоматизации в САПР (системах автоматизированного проектирования). В то время как фабрики по производству гарантируют качество технологического процесса, ответственность за правильное функционирование и соблюдение необходимых характеристик ИМС полностью лежит на разработчиках интегральных схем. Лохов А. считает, что: «Для современных субмикронных технологий стоимость производства комплекта фотошаблонов сравнима с затратами на проектирование интегральной схемы, поэтому задача получения работоспособного кристалла чрезвычайно актуальна».1 Человеку с данной задачей справиться практически не под силу, поэтому актуальность автоматизации проверки спроектированной схемы или топологии не вызывает сомнений. Основной инструмент для выполнения данного рода задач – это системы физической верификации. Компания Cadence Design Systems – является одним из лидеров в области разработки ИМС. Для каждой стадии разработки существуют специальные САПР данной компании, обладающие всеми необходимыми возможностями для проектирования микросхем. Топология разрабатывается в топологическом редакторе Virtuoso.[6] «Разработанную топологию необходимо проверить на соответствие правилам проектирования, а также произвести экстракцию элементов и паразитных параметров. Необходимо учитывать реальное размещение на кристалле элементов и проводников. Верификация топологии включает в себя контроль проектных норм, экстракцию электрической схемы из описания топологии, сравнение с исходной схемой и средства анализа 1 Лохов А. Главный калибр компании Mentor Graphics// ЭЛЕКТРОНИКА: Наука, Технология, Бизнес. 2010 г. Вып. № 2 C. 64-68. найденных нарушений».2 Для решения данного типа задач верификации топологии ИМС существует пакет Diva компании Cadence. Цель дипломного проектирования – создание правил проектирования в пакете Diva для физической верификации в технологии 0,18 мкм. Для достижения поставленной цели необходимо выполнить следующие задачи: 1) Изучить маршрут проектирования технологии, для которой будут создаваться правила проектирования; 2) Изучить устройства для которых будут создаваться правила проектирования; 3) Изучить функционал пакета Diva предназначенного для физической верификации; 4) Изучить основы языка SKILL, на котором будет выполнено описание правил проектирования; 5) Написать DRC и Extract на языке SKILL; 6) Произвести тестирование и отладку созданных правил; Результат проделанной работы, а именно готовые файлы с правилами для физической верификации в технологии 0,18 мкм, будут впоследствии использоваться в проектах компании АО «ДИЗАЙН ЦЕНТР «СОЮЗ» . На основе разработанных правил в последствии будут спроектированы БМК и зашивки для них. 2 Строгонов А .Проектирование топологии заказных КМОП БИС// Компоненты и Технологии. 2007 г. Вып. № 3 C. 156-160. 1 Аналитический раздел 1.1 ПО для физической верификации. Краткий обзор Diva Cadence Перед тем как начать описание разделов физической верификации, следует познакомиться с ПО в котором будет выполняться данная работа, а также с языком программирования для написания правил проектирования. Это позволит более детально вникнуть в термины и операторы с помощью которых будут описаны принципы построения правил. «Основные разработчики на рынке САПР, владеющие средствами физического проектирования и верификации: Synopsys программа физической верификации Hercules. Cadence Design Systems программы физической верификации Diva, Dracula, Assura, PVS. Mentor Graphics программа физической верификации Calibre». 3 В современных технологиях (0,18 мкм и менее) при проектировании СБИС необходим подробный анализ разработанной топологии. Важно учитывать влияние на временные характеристики кристалла наводок, разброса напряжения питания на ячейках, паразитные емкости и помехи на проводниках.[7] Diva - набор инструментальных средств проверки для физической верификации. Diva выполняет сравнение топологии со схемой, проверяет проект на соответствие правилам проектирования, осуществляет поиск ошибок в топологии и отображает их в интерактивном режиме, в связи с этим существенно снижается время на поиск ошибок и их исправление. Проверки выполняются как для одного слоя, так и для нескольких. В результате К команды выдается ошибка, или создается новый результирующий слой. Затем данные слои могут использоваться для других проверок. В целях ознакомления с основами физической верификации будет использоваться пакет Diva, т.к. данный пакет наиболее прост в освоении и понимании и имеет все необходимое для описания DRC и extract. 3 Марчук В. Лопаненко И. Средства физической верификации интегральных микросхем// Технологии в электронной промышленности. 2010 г. Вып. № 2 C. 58-60. «Diva - набор инструментов для проверки топологии, который включает в себя 5 продуктов: инструмент проверки соответствия топологии технологическим нормам Design Rule Checker (iDRC) инструмент для экстракции паразитных элементов из топологии Layout Parasitic Extractor (iLPE) инструмент для экстракции паразитных резисторов и емкостей Parasitic Resistance Extractor (iPRE) инструмент проверки соответствия электрических параметров - Electrical Rules Checker (iERC) инструмент проверки соответствия топологии принципиальной электрической схеме - Layout Versus Schematic program (iLVS) ». 4 iDRC - используется для проверки технологических норм и правил проектирования. Программа DRC работает с любой технологией и обрабатывает все маршруты проектирования топологии, включая заказное и полузаказное проектирование, стандартные ячейки, макроячейки. Инструменты DRC позволяют детально проверить расстояния между слоями, зазоры и перекрытия, устраняя ложные ошибки. Иерархический подход, инкрементная проверка позволяют сократить время выполнения проверок, что особенно ценно при проверки сложных объектов. Подробно с работой данного инструмента можно будет ознакомиться в разделе 1.3 DRC. iLPE - используется для извлечения параметров и паразитных устройств из топологии. Программа LPE работает в полном или иерархическом режиме создавая базу данных, которая может использоваться другими продуктами, например анализаторами производительности или симуляторами моделирования. iPRE - этот инструмент извлекает паразитное сопротивление и емкости и преобразует электрическую схему в полную RC-цепь. Инструмент iPRE обрабатывает всю топологию, включая расчеты компенсации изгибов, площади контактов, а также рассчитывает определяемые пользователем коэффициенты. 4 См.: Diva Reference. Product version 5.0 – July 2003. Cadence. P.17-18. iERC - верификатор электрических правил iERC проверяет подключения цепей. Этот инструмент выявляет электрические проблемы, такие как «висящие» устройства и цепи, а также ненормальные соединения в топологических или схематических конструкциях. Программа ERC использует цепи, созданные в топологии и схеме. ERC также выполняет проверки, такие как проверка pull up / pull down цепей и выделение неактивных устройств. iLVS - проверяет соответствие цепей, устройств и параметров в топологии и схеме устройства. Программа LVS непосредственно сравнивает топологию и схему, помогает найти "закоротки", ошибки в параметрах и все несоответствия схемы и топологии. Верификатор Diva использует функции и подпрограммы SKILL для выполнения своих задач проверки. Все правила DRC и Extract помещаются в функцию drcExtractRules (), даже если DRC и Extract являются несвязанными процессами, которые запускаются отдельно друг от друга.. Команды DRC группируются вместе в одном наборе, а команды Extract в другом. Во время выполнения можно указать, какой набор команд будет использован. Команды должны вводиться в правильном порядке, чтобы Diva обрабатывала команды по мере их обнаружения. Команды ivIf и checkPoint используются для управления обработкой правил проверки. Имена файлов по умолчанию: divaDRC.rul и divaEXT.rul, а местоположение по умолчанию - в библиотеке технологий. Однако их можно хранить в любом месте с любым именем. Если правила хранятся в технологической библиотеке, имя файла правил должно содержать точку, чтобы отличать ее от других записей библиотеки. Также используется стандартное соглашение о добавлении суффикса .rul к именам файлов для идентификации файлов верификации Diva. 1.2 Язык программирования SKILL SKILL - это командный язык Cadence окружения. Каждый раз когда используются меню, формы и горячие клавиши ПО Cadence подключает SKILL функции для выполнения того или иного рода задач. Есть возможность вводить SKILL функции в командной строке для сокращения времени затрачиваемого на проектирование, в обход графического интерфейса программ cadence. В большинстве случаев SKILL функции могут например открывать окно проекта, уменьшать или увеличивать изображения, выполнять действия с фигурами, вычислять или выдавать из проектов. [8] Арифметические и логические операторы в SKILL походят на операторы языка Cи и имеют лишь несколько различий: в языке SKILL добавлен экспоненциальный оператор "**", оператор модуля "%" заменен функцией mod, операторы условных выражений "?" и ":" устарели из-за конструкции if/then/else, оператор адресации "&" и оператор разыменования "*" не поддерживаются. Благодаря этой схожести и несущественным различиям, освоить язык SKILL не сложно, если есть минимальные навыки языка Си. Язык SKILL интуитивно прост и понятен, именно на нем написаны правила проектирования. Эти правила собираются в деку (c англ. "deck " – переносное значение "список правил") и затем подключаются в редакторе Cadence Virtuoso в соответствующем разделе верификации. Для написания правил используется текстовый редактор, дека содержит набор SKILL функций, необходимых для соответствующих проверок. Данные файлы могут хранится в любом месте файловой системы и указываются при запуске проверки. Общее место для этих файлов находится в технологической библиотеке. Идентифицировать файлы правил проверки Diva можно по суффиксу .rul в имени файла. 1.3 Обзор технологии Правила проектирования будут разработаны для КМОП технологии 0,18 мкм с использованием 1.8 В ЭСППЗУ и 6 уровней металлизации. Особенностями данной технологии являются: Щелевая изоляция (STI): используется для изоляции активных элементов, при этом обеспечивается минимальное расстояние между соседними изолируемыми активными областями; Ретроградные карманы N-и P- типов: для низко- и высоковольтных частей позволяют получить более латеральное распределение примеси, пониженное сопротивление карманов и улучшить защиту от эффекта "защелки" (c англ. latch-up) по сравнению с диффузионными карманами; N+/P+ поликремневые затворы (для низковольтных частей): данная технология позволяет разрабатывать симметричные N-и P- канальные транзисторы. Для поликремневого P канальных затвора транзисторов обеспечивает лучшие использование P+ короткоканальные характеристики и более низкую чувствительность к эффекту горячих носителей по сравнению с N+ поликремневым затвором; Силицидированный сток, исток и затвор: силицид необходим для "закорачивания" N+ и P+ затворов, кроме того, силицид значительно снижает последовательное сопротивление областей затвора, стока/истока с металлом при использовании одного контактного окна; ХМП (химико-механическая планаризация): используется для улучшения планарности структур; Вольфрамовые заглушки: в контактах служат для лучшего контактирования с металлическими слоями. Кроме того, они позволяют переходным отверстиям располагаться над контактными окнами без каких-либо дополнительных ограничений; 1.4 DRC 1.4.1 Общие сведения о разделе Если раньше каждое правило можно было запомнить и проверить в ручную, то сейчас в современных технологиях насчитывают тысячи таких правил. Даже самый внимательный и опытный человек может пропустить чтонибудь из всего множества правил. Достаточно нарушить хотя бы одно, допустить единственную неточность, чтобы испортить весь кристалл. Изготовление пластины занимает от 8 до 12 недель и стоит миллионы рублей, поэтому так важно безошибочно спроектировать и отправить на фабрику годный проект. DRC (Design Rule Check) – проверка технологических норм и правил проектирования в конечной топологии. В DRC-программе содержатся все сведения о конкретном техпроцессе. Если правильно составить правила проектирования, в DRC-проверках будут найдены все ошибки допущенные в топологии. С помощью допущенные в специальных топологии маркеров ошибки. DRC-программа Исправление ошибок подсвечивает происходит итерационно.[9] Во время правки одной ошибки можно допустить другую, важно после каждой правки запускать DRC-проверку, пока все ошибки не будут исправлены. После того как для определенной технологии спроектирована топология конкретной схемы, она измеряется набором топологических ограничений и правил для этого технологического процесса. Основной целью DRC является достижение полного соответствия и надежности дизайна топологии.[10] Завершенная топология состоит не только из геометрического представления дизайна, её также дополняют данные, требующиеся для обеспечения всей необходимой информацией при изготовлении. Несмотря на то, что проверка правил проектирования не подтверждает правильность работы проекта, она необходима для проверки соответствия структуры технологическим ограничениям процесса данного проекта. Множество правил проектирования и высокая плотность компонентов занимают больше компьютерных ресурсов. В связи с этим чтобы их экономить развиваются новые подходы и методы проверок. Распознавание неявных иерархических структур и учет повторяемости блоков позволяет проводить процесс верификации для повторяющихся ячеек единожды, а в дальнейших проверках использовать уже готовые результаты, также время проверок сокращается с помощью распараллеливания процессов.[11] Использование таких подходов увеличивает производительность, уменьшает затраты и время для DRC-проверок. Прежде чем обсуждать, как же выполняются данные проверки, полезно понимать концепцию DRC. 1.4.2 Концепция Топология состоит из фигур расположенных в слоях, которые сгруппированы в одну или несколько ячеек. Ячейка может содержать в себе другую ячейку. Если весь дизайн представлен в одной ячейке, это "плоский" дизайн (с англ. "flat") ; в противном случае это иерархический дизайн. [12] На ранних стадиях проверки топология может содержать текстовые слои или другие атрибуты, которые дополнительно определяют цель объекта в топологии или предоставляют информацию, которая дает логическое представление о связи объекта или набора объектов в топологии. 1.4.3 Слои Геометрия фигур сгруппирована в слои. Большинство верификационных систем предоставляют неограниченное количество слоев. Условно их можно разделить на 4 группы[16]. Drawn layer ( с англ. нарисованный слой ) представляет собой исходные данные топологии. Они объединяются при вводе в систему проверки, чтобы удалить любое перекрытие геометрии в одном и том же слое; Polygon layer ( с англ. многоугольный слой ) является результатом операции создания слоя, например логической операции или функции area. Пример операции, которая генерирует многоугольный слой: Gate =geomAnd( poly diff) Edge layer ( с англ. граничный слой) представляет края фигур для измерения длин, углов или других измерений. Error layer ( с англ. слой ошибки) представляет собой кластер из одногонескольких ребер, использующихся в графическом представлении результата. Основные группы слоев представлены на рисунке 1: Рисунок 1 – Основные группы слоев. Фигура состоит из ребер, соединенных вместе, формирующих замкнутую область. Все фигуры имеют внутреннюю и внешнюю поверхности. При проверке в Diva фигура - это имя, присвоенное любому графическому объекту, например полигону или прямоугольнику. Фигура и многоугольник часто используются для обозначения одного и того же. На рисунке 2 показаны три типа фигур. Квадрат Прямоугольник Полигон Рисунок 2 – Типы фигур. Чтобы выполнить DRC-проверку, необходима возможность выбора обрабатываемых слоев, доступ к большому набору режимов и операций для работы с этими слоями и выбор способа вывода результата. 1.4.4 Режимы работы DRC работает в шести режимах работы. Три из них называются "check modes" (с англ. режимы проверки): Full - полный режим проверки. В полном режиме DRC проверяет всю схему, независимо от изменений, сделанных с момента последней проверки. Incremental - инкрементный режим проверки. В инкрементном режиме DRC проверяет только те области схемы, которые были изменены с момента последней проверки. Первый проверочный прогон в цепи всегда выполняется в полном режиме, даже если задан инкрементный режим т. к. все в схеме теперь считается "новым", что означает, что вся топология была изменена. Изменения в схеме или правилах проектирования приводят к инкрементной обработке. Эти изменения заносятся в базу данных схемы через фигуры на специальном слое (с англ. changedLayer - слой изменений). Перед выполнением проверки DRC генерируется слой changedLayer, охватывающий полную схему. Режим полной проверки DRC удаляет любые ранее созданные формы на этом слое. Area - режим проверки по площади. В этом режиме DRC проверяет только ту область, которую пользователь определяет сам. Возможно определить область с помощью команд меню или с помощью команды verifyArea. Если использовать команды меню, можно определить только одну прямоугольную область. Если же использовать команду verifyArea, область может состоять из нескольких прямоугольников, также можно указать области внутри прямоугольников, которые проверяться не будут. Остальные три режима работы называются check limits (с англ. уровни проверок): Flat (с англ. плоский) - "плоский" режим проверки. В "плоском" режиме DRC не рассматривает иерархию топологии и проверяет схему так, как если бы она была отдельной ячейкой. DRC итерационно сливает экземпляры всех нижних по иерархии ячеек в их верхние (родительские) ячейки до основной (главной) ячейки. Hierarchical without optimization - иерархический режим без оптимизации. В иерархическом режиме DRC рассматривает иерархию макета во время проверки. Иерархический режим может сократить время проверок для проектов, которые имеют несколько повторяющихся ячеек и небольшое количество соединений между ними во всей иерархии. Топология с небольшим повторением ячеек или большим количеством взаимосвязей между ячейками может наоборот работать медленнее. Hierarchical with optimization - иерархический оптимизированный режим. В этом режиме используется функция распознавания образов. Перед обработкой всех областей DRC идентифицирует уникальные связи между ячейками, рассматривая имена ячеек, их относительное размещение и их относительную ориентацию. Затем обрабатываются уникальные взаимосвязи. При этом иерархически оптимизированный режим не удаляет ошибки, обнаруженные на предыдущих этапах иерархического DRC. Распознавание обычно применяется, когда у вас есть регулярные массивы. DRC сначала проверяет ячейки периферии вместе со своими ячейками, а затем смотрит на отношения между блоками соседних ячеек. Затем DRC может определить все возможные отношения между ячейками, которые повторяются по всей иерархии.[13] Можно указать режимы проверки и уровень с помощью команд меню и SKILL команд. Возможно указать лишь один режим проверки и один уровень за один запуск DRC-проверки. 1.4.5 Операции со слоями Логические функции используются для создания производных слоев с использованием слоев исходных. Результаты логических операций над фигурами четко определены. Они ничем не отличаются от представления таких же операций в булевой алгебре. Функция geomAnd генерирует новые фигуры из перекрытия исходных фигур на входных слоях(см. рис.3). Эта функция работает с одним или двумя входными слоями и с полигонами или ребрами. Оригинальные фигуры Результат geomAnd Рисунок 3 – Результат работы функции geomAnd. Функция geomAndNot создает новые формы из областей первого слоя, которые не перекрывают ни одну из областей второго слоя (см. рис.4). Функция geomAndNot работает на полигонах или пограничных слоях. Оригинальные фигуры Результат geomAndNot Рисунок 4 – Результат работы функции geomAndNot. Функция geomNot генерирует новые формы путем инвертирования исходных фигур слоя (см. рис.5). Это эквивалент geomAndNot между слоем и одним прямоугольником, охватывающим обрабатываемую область. Функция geomNot работает только на одном полигональном слое. Оригинальные фигуры Результат geomNot Рисунок 5 – Результат работы функции geomNot. Функция geomOr объединяет все фигуры на входных слоях слоя (см. рис.6). Для полиномиальных слоев операция генерирует полигоны, область которых охватывает все области из всех входных слоев и удаляет все внутренние ребра. Оригинальные фигуры Результат geomOr Рисунок 6 – Результат работы функции geomOr. Функция geomXor генерирует новые фигуры из тех частей любого входного слоя, которые не перекрывают другой слой слоя (см. рис.7). Оригинальные фигуры Результат geomXor Рисунок 7 – Результат работы функции geomXor. Однако результаты логических операций, таких как and и or на ребрах, не столь ясны, поскольку существует множество возможных интерпретаций. По возможности результаты реберных логических операций основаны на результате эквивалентных булевых операций с фигурами. На рисунках 8 и 9 показаны двухслойные и однослойные булевы операции с ребрами. Рисунок 8 – Результат двухслойных булевых операций с ребрами. Рисунок 9 – Результат однослойных булевых операций с ребрами. Разумеется, набор операций не ограничивается операциями представленными в этом разделе, в данной работе приведены самые часто используемые операции. Данный список буде постепенно пополняться по мере изложения материала. 1.4.6 Функции Используемые в DRC функции позволяют оценивать геометрические отношения между фигурами в слоях топологии. Функция area проверяет площадь Например: фигур в одном заданном слое. drc( gate area > 13). В данном примере отмечаются все затворы, площадь которых больше 13. Функция enc измеряет перекрытие фигуры во втором слое фигурами в первом слое. Измерение представляет собой расстояние между внутренними краями фигур в первом слое и внешними краями фигур во втором слое. Пример (см. рис. 10 ): drc( A B enc < 1). Выделяются области А, которые заключают в себя области B и по размеру менее 1. Рисунок 10 – Измерения функцией enc. Функция notch проверяет расстояние между краями, образующими выемки на фигурах в одном слое. Вырез - это расстояние между внешними кромками одной и той же фигуры. Пример: drc( poly 0 < notch <= 4.5 ). В этом примере отмечены все вырезы poly, которые попадают в указанный диапазон (больше 0, но меньше или равные 4.5). Рисунок 11 – Измерения функцией notch. Функция ovlp измеряет перекрытие фигур в одном слое фигурами в другом слое. Перекрытие - это расстояние между внутренним облицовочным краем фигуры в одном слое до внутреннего облицовочного края фигуры в другом слое. Например: drc( bcw "bcwcut" ovlp < 3 ). В этом примере ошибками помечаются перекрытия слоя bcw на слое bcwcut, которые меньше 3. Функция sep измеряет зазор различных фигур в одном и том же слое или в разных слоях. Зазор - это расстояние между внешними краями фигур. Пример: drc( metal sep < 0.32 ) В приведенном примере зазор от фигуры слоя metal до другой фигуры этого же слоя меньше 0.32. Один слой Два слоя Рисунок 12 – Измерения функцией sep. Функция width проверяет ширину каждой фигуры в одном слое. Ширина это расстояние между внутренними краями фигуры. Пример: drc( metal width < 7 ) DRC находит фигуры слоя metal шириной менее 7. Рисунок 13 – Измерения функцией width. 1.5 Extract 1.5.1 Общие сведения о разделе Extract Электрическое устройство, такое как транзистор или конденсатор, который намеренно сконструирован в цепи путем размещения маски слоев, называют «разработанным устройством» по сравнению с паразитным устройством, которое является лишь побочным эффектом размещения слоя. Сконструированные устройства обычно используются в схемах. До того как проводятся LVS-проверки на соответствие топологии электрической схеме, необходимо провести экстракцию (с англ. extract - восстановление) устройств из топологического представления с помощью специальных инструментов.[14] На данном этапе используются правила, определенные так же как и правила DRC в специальном файле, для распознания элементов, установления электрических связей. В результате создается новое представление проекта. Очень важно правильно распознать устройства и правильно рассчитывать необходимые параметры. Если в экстракте будут допущены ошибки, дальнейшая проверка на соответствие топологии схеме будет выдавать некорректный результат, даже в правильно построенной топологии. 1.5.2 Распознавание устройств Распознавание устройств - это процесс, с помощью которого программа распознает устройства и создает экземпляр для каждого устройства в экстракте схемы. Каждое отдельное устройство распознается наличием особенной фигуры на определенном слое. Выделение таких фигур достаточно трудоемкий процесс. Для этого применяется все разнообразие функций обработки слоев чтобы выделить единую фигуру для каждого устройства. Например, используя поликремниевые и диффузионные слои в графическом редакторе для формирования MOS-транзистора, и команду geomAnd для этих слоев в верификаторе Diva, создается фигура, представляющая MOS-транзистор. Она называется фигурой распознавания устройства. Когда фигуры распознавания устройства сформированы, с помощью команды extractDevice или команды extractMOS устройства создаются в восстановленной версии проекта. Эти команды используются для подключения каждой фигуры распознавания и определения электрических цепей с терминалами устройства. Для этого необходимо прописать связи между слоями с помощью команды geomConnect (см. раздел 1.5.4 Connectivity). После того, как программа распознает и проверяет терминалы устройства, она помещает экземпляр устройства в извлеченную версию схемы. Экземпляр должен ссылаться на существующую модель библиотеке. Программа использует модель устройства в системной устройства для проверки конфигурации терминала вашей команды для экстракта. Процесс распознавания устройств в схеме автоматически создает представление ячейки, содержащее восстановленное представление схемы. 1.5.3 Команды экстракции устройств В данном разделе рассматриваются команды о которых упоминалось ранее, с помощью которых проводится экстракция устройств. Функция extractDevice извлекает устройства любого типа из топологии и сохраняет их в восстановленном виде. extractDevice( ngate poly("G") ndiff("S" "D") pwell( "B" ) "nfet ivpcell" physical ) Данный пример иллюстрирует команду extractDevice для четырехполюсного МОП-транзистора с именами терминалов «S», «D», «G» и «B». Слой распознавания устройства - затвор. Слой poly используется для одного терминала, diff используется для определения «S» и «D». Устройство распознается, даже если сток и исток закорочены вместе, при условии, что эти терминалы сформированы независимыми фигурами. Проверка Diva является тщательной в формировании устройств. Чтобы экстрагировать устройство, Diva должна найти слой на уровне распознавания, который касается или перекрывает фигуры на каждом из указанных терминальных слоев. Должно быть точное количество терминалов каждого типа, в данном случае ровно один из «poly» и «pwell» и ровно 2 «ndiff». Если какое-либо из этих условий не будет выполнено, пользователь получает сообщение «нет совпадения с количеством терминалов ». Причина будет зависеть от конкретных правил экстракта, необходимо будет проверить каждый слой терминалов, чтобы определить основную причину. Функция extractMOS извлекает MOS-устройства из топологии и сохраняет их в экстрагированном виде схемы. Эта функция похожа на extractDevice, за исключением того, что она оптимизирована для МОП-транзисторов и может измерять ширину и длину затвора без дополнительных команд измерения. Некорректный транзистор Корректный транзистор Корректный транзистор Сток/исток Затвор Рисунок 14 – Допустимые и не допустимые конфигурации транзисторов. Однако, эта функция вызывает проблемы всякий раз, когда встречается с указанными на рисунке 14 конфигурациями. Эти проблемы могут быть вызваны ошибками в распознавании устройства или ошибками в значениях параметров.[15] Чтобы избежать таких проблем, следует использовать команду extractMOS только для прямоугольных устройств с простыми формами и когда требуется очень быстрое распознавание устройства. Для всех других устройств лучше использовать команду extractDevice. Хотя эта команда работает намного медленнее, она не имеет недостатков распознавания команды extractMOS. extractMOS( gate poly diff substrate "nfet" ) Этот пример иллюстрирует команду extractMOS для четырехполюсного МОП-транзистора с именами терминалов S, D, G и B и свойствами ширины и длины w и l. extractMOS( gate poly("G") diff("S" "D") substrate("B") "nfetsymbol" "l" "w" 1.0 ) А этот пример иллюстрирует команду extractMOS для этого же устройства, но явно определяет ранее установленные значения. 1.5.4 Connectivity. В верификаторе Diva должно быть прописано корректное подключение ( с англ. connectivity - подключение) каждого слоя топологии в специальном разделе правил в DRC или экстракте. Подключения описываются с помощью команды geomConnect. Благодаря этой команде можно определить, как будут взаимодействовать между собой разные слои в топологии. Все фигуры на проводящих слоях, назначаются электрическим цепями для использования последующими инструментами верификатора Diva. Все входные слои, использующиеся этой командой, должны быть получены с помощью некоторых предыдущих функции. Если использовать исходные слои в качестве входных данных, они должны обрабатываться через функцию geomOr. Команда geomConnect допускается только один раз в любом наборе командного потока файла технологии. 2 Практический раздел 2.1 Разработка правил DRC При создании верификационного файла divaDRC.rul, команды группируются в функцию языка SKILL drcExtractRules(). 2.1.1 Инициализация исходных слоев Первый раздел содержит команды geomOr, которые связывают названия с исходными физическими слоями для создания производных слоев. Эти производные слои будут использоваться в остальной части верификационного файла. Т.к. все команды в верификационном файле выполняются последовательно важно поместить данный список инициализации слоев перед любыми ключами, чтобы иметь к ним доступ независимо от того, какой ключ используется во время выполнения. Листинг 1 – Отрывок кода из файла divaDRC.rul. Инициализация исходных слоев. ;LIST OF LAYERS active = geomOr( "active" ) poly = geomOr( "poly" ) NwHV = geomOr( "epm") NwISO = geomOr( "cpcimp") Pb = geomOr( "tunnel") PwHV = geomAnd("hvwell" "natural") hvwell = geomOr("hvwell") natural = geomOr("natural") PwLV = geomOr("nldd") NwLV = geomOr("pldd") NPLUS = geomOr("nplus") PPLUS = geomOr("pplus") contact = geomOr("contact") metal1 = geomOr( "metal1") metal2 = geomOr( "metal2") metal3 = geomOr( "metal3") metal4 = geomOr( "metal4") metal5 = geomOr( "metal5") metal6 = geomOr( "metal6") via1 = geomOr("v1") via2 = geomOr("v2") via3 = geomOr("v3") via4 = geomOr("v4") via5 = geomOr("v5") SIPROT = geomOr("siprot") markHV = geomOr("mio") pad = geomOr("nitride") mim5 = geomOr("mim5") Топологические структуры получаются путем выполнения булевых операций geomAnd, geomAndNot и geomOr над одним или несколькими сформированными слоями фотошаблонов.[16] Также выполняются операции над промежуточными слоями, такими как карманы. Формируемые топологические структуры приведены ниже: Область изоляции: NOT active - все, что не активная область. P+ активная область: active AND pplus AND NOT poly - сильнолегированная активная область p-типа. Не включает область канала транзистора. N+ активная область: active AND nplus AND NOT poly - сильнолегированная активная область n-типа. Не включает область канала транзистора. Стоки/истоки: сильнолегированные активные области (N- и P типа), находящиеся в кармане противоположного типа проводимости. N+ активная область в n-кармане или контакт к n-карману: (N+ active) AND nwell - N+ активная область в n-кармане. P+ активная область в p-кармане или контакт к p-карману: (P+ active) and pwell - p+ активная область в p-кармане. Затвор: active AND poly - поликремний над активной областью. Выступ затвора: поликремний, выступающий за границы активной области для обеспечения управления транзистором по всей ширине канала. Часто обозначают как "затвор, накрывающий область изоляции". N канал: active and poly and pwell - затвор на p-кармане. P канал: active and poly and nwell - затвор на n-кармане. Транзистор: структура, состоящая из двух областей стоков/истоков одного типа проводимости разделенных затвором. Примыкающий (слитный) контакт к карману: активная область, состоящая из областей стока/истока и контактов к карману, подсоединенных к одному и тому же потенциалу. Листинг 2 – Отрывок кода из файла divaDRC.rul. Создание топологических структур. NAA0 = geomAnd(active NPLUS) PAA0 = geomAnd(active PPLUS) NAA = geomAndNot(NAA0 poly) PAA = geomAndNot(PAA0 poly) NAALV = geomAndNot(NAA markHV) NAAHV = geomAnd(NAA markHV) PAALV = geomAndNot(PAA markHV) PAAHV = geomAnd(PAA markHV) PLUS = geomAnd(NPLUS PPLUS) Nwell = geomOr(NwHV NwLV NwISO) Pwell = geomOr(PwHV PwLV Pb) Nwellforstrap = geomOr(geomAndNot(NwHV Pwell) NwLV geomAndNot(NwISO Pwell)) Nstrap = geomAnd(NAA Nwellforstrap) Pstrap = geomAnd(PAA Pwell) Subs = geomNot(Nwell) NwHV40 = geomEnclose(NwHV NAAHV) Nwell40 = geomEnclose(Nwell NAAHV) NwHV10 = geomAndNot(NwHV NwHV40) Nwell10 = geomAndNot(Nwell Nwell40) NwISO40 = geomEnclose(NwISO NAAHV) NwISO10 = geomAndNot(NwISO NwISO40) Pb40 = geomEnclose(Pb PAAHV) Pb10 = geomAndNot(Pb Pb40) Pwell40 = geomEnclose(Pwell PAAHV) Pwell10 = geomAndNot(Pwell Pwell40) PwHV40 = geomEnclose(PwHV PAAHV) PwHV10 = geomAndNot(PwHV PwHV40) PwLV40 = geomEnclose(PwLV PAAHV) PwLV10 = geomAndNot(PwLV PwLV40) NwLV40 = geomEnclose(NwLV NAAHV) NwLV10 = geomEnclose(NwLV NwLV40) 2.1.2 Основные правила Для каждого слоя существуют свои правила проектирования, например, минимальная ширина, минимальный зазор между элементами одного слоя до элементов другого слоя, минимальное перекрытие одним слоем другого слоя. Основными геометрическими терминами в правилах проектирования являются(см. рис. 14)[17] Spacing – расстояние между объектами; Width – ширина объекта; Overlap – насколько один объект перекрывает другой; Enclosure – расстояние от внутренней границы одного многоугольника до внешней границы другого многоугольника; Area – площадь объекта; Ratio – отношение площадей объектов. Рисунок 14 – Ключевые проверки на соответствие правилам проектирования. Правила можно классифицировать двумя способами: по слою для которого данные правила написаны и по функциям определяющим какие именно расстояния необходимо проверять (см. раздел 1.4.6 Функции). Рассмотрим написание основных правил для определенного слоя на примере слоя NPLUS - активной области в n-кармане или контакта к n-карману. Ограничения для данного слоя представлены на рисунке 2. Не обозначенные на рисунке ограничения регулируются в других слоях. Листинг 3 – Отрывок кода из файла divaDRC.rul. Правила для слоя NPLUS. drc( NPLUS width < 0.48 "10.1/ NPLUS min width < 0.48 ") drc( NPLUS sep < 0.48 "10.2/ NPLUS to NPLUS spacing < 0.48 ") drc( NPLUS geomAndNot(active Nstrap) enc < 0.24 "10.3/ areas of NPLUS that enclose active < 0.24 ") drc( NPLUS geomAndNot(Nstrap NwHV) enc < 0.16 "10.4/ areas of NPLUS that enclose active Nstrap < 0.16 ") drc( geomAndNot(NPLUS NwHV) geomAndNot(PAA Pstrap) sep < 0.24 "10.5/ NPLUS to PAA spacing < 0.24 ") drc( NPLUS geomAndNot(Pstrap NwHV) sep < 0.16 "10.6/ NPLUS to Pstrap spacing < 0.16 ") drc( Pstrap width < 0.32 "10.7/ Pstrap width < 0.32 ") drc( polyInActive geomAndNot(Nstrap NwHV) sep < 0.52 "10.8/ poly to N+AA spacing in Nstrap < 0.52 ") saveDerived( geomAnd(PLUS active) "10.9/ NPLUS and PPLUS in active shouldn't overlap! ") В кавычки заключается название и суть ошибки, позволяющие топологу понять о чем идет речь, а также номер ошибки указывающий на номер правила в документе. Команда saveDerived позволяет подсвечивать место ошибки в топологии. 10.2 10.6 10.3 10.5 10.8 10.2 10.7 10.4 10.2 10.2 10.2 10.2 10.5 10.1 10.2 10.2 10.6 10.2 NPLUS PPLUS SIPROT AA Poly Cont Рисунок 15 – Ограничения слоя NPLUS. Рассмотри ещё один пример. На рисунке приведен разрез типовой структуры карманов, а в листинге – правила для описания данной структуры. Листинг 4 – Отрывок кода из файла divaDRC.rul. Правила для карманов. drc( NAA geomAndNot(Pstrap NwHV) sep < 0.4 "1.9/ N+AA to Pstrap spacing < 0.4 ") drc( PAA geomAndNot(Nstrap NwHV) sep < 0.4 "1.9/ P+AA to Nstrap spacing < 0.4 ") drc( geomAndNot(NwISO10 NwHV) Pwell sep < 0.32 "4.3/ NwISO(10V) to Pwell spacing < 0.32 ") drc( NwISO10 sep < 2.96 "4.5/ NwISO to NwISO (10V) spacing < 2.96 ") drc( NwISO PAA enc < 0.8 "4.8/ areas of NwISO that enclose P+AA < 0.8 " ) drc( NwISO NAA enc < 0.08 "4.9/ areas of NwISO that enclose N+AA < 0.08 " ) drc( PwHV PAA enc < 0.08 "7.7/ areas of PwHV that enclose P+AA < 0.08 " ) drc( PwHV NAA enc < 0.8 "7.8/ areas of PwHV that enclose N+AA < 0.8 " ) drc( NwLV width < 0.96 "9.1/ NwLV min width < 0.96 ") drc( NwLV10 Pwell sep < 0.32 "9.3/ NwLV (10V) to Pwell spacing < 0.32 ") drc( NwLV PAA enc < 0.8 "9.8/ areas of NwLV that enclose P+AA < 0.8 " ) 9.1 7.8 10.2 4.5 4.8 9.8 10.6 10.2 10.2 7.7 4.9 4.3 1.9 9.3 10.2 1.9 10.2 STI Sub PwLV NISO NwLV PPLUS PwHV NPLUS Рисунок 16 – Поперечный разрез типовой структуры карманов с указанными расстояниями для проверок. 2.1.3 Дополнительные проверки Для проверок на определенные случаи существуют ключи: ivIf(switch( "...") then ...) В приведенном листинге 5 описаны проверки на размещение текста не в том слое, а также размещение объектов не по сетке. Листинг 5 – Отрывок кода из файла divaDRC.rul. Ключи для определенных проверок. ivIf(switch( "CHECK_dubiousData") then dubiousData("active" "_!!!_bad_shape_active_!!!_") dubiousData("epm" "_!!!_bad_shape_epm_!!!_") dubiousData("cpcimp" "_!!!_bad_shape_cpcimp_!!!_") dubiousData("tunnel" "_!!!_bad_shape_tunnel_!!!_") dubiousData("hvwell" "_!!!_bad_shape_hvwell_!!!_") dubiousData("natural" "_!!!_bad_shape_natural_!!!_") dubiousData("nldd" "_!!!_bad_shape_nldd_!!!_") dubiousData("pldd" "_!!!_bad_shape_pldd_!!!_") dubiousData("nplus" "_!!!_bad_shape_nplus_!!!_") dubiousData("pplus" "_!!!_bad_shape_pplus_!!!_") ... ) ; проверка "текст не в том слое" ivIf(switch( "CHECK_OffGrid") then offGrid("active" 0.02 "_!!!_Off_Grid_active_!!!_") offGrid("epm" 0.02 "_!!!_Off_Grid_epm_!!!_") offGrid("cpcimp" 0.02 "_!!!_Off_Grid_cpcimp_!!!_") offGrid("tunnel" 0.02 "_!!!_Off_Grid_tunnel_!!!_") offGrid("hvwell" 0.02 "_!!!_Off_Grid_hvwell_!!!_") offGrid("natural" 0.02 "_!!!_Off_Grid_natural_!!!_") offGrid("nldd" 0.02 "_!!!_Off_Grid_nldd_!!!_") offGrid("pldd" 0.02 "_!!!_Off_Grid_pldd_!!!_") offGrid("nplus" 0.02 "_!!!_Off_Grid_nplus_!!!_") offGrid("pplus" 0.02 "_!!!_Off_Grid_pplus_!!!_") ... ); проверка "размещение не по сетке" Кроме того, иногда появляется необходимость генерации нового слоя с помощью Diva, т.к. на создание слоя вручную уйдет большое количество времени. Это может быть изоляция, необходимая во всей топологии кристалла на заключительных DRC проверках или заполнение кристалла определенным слоем для необходимого процента плотности заполнения, осуществить это можно с помощью команды saveDerived ("входной слой"("генерируемый слой " "тип генерируемого слоя") "формат" "сообщение"). Например, ключ: ivIf( switch( "Insulation" ) then IZOP40 = geomAndNot(NISOBEZP2 NwLV) saveDerived( IZOP40 ( "pldd" "drawing" ) tile "Insulation NwLV" ) ) создан для изоляции транзисторов. 2.1.4 Тесты Очень важно отслеживать и контролировать правильную работу каждого правила, для этого разрабатывается тестовая топология для каждого из слоев и отлаживается каждая ошибка. Процесс кропотливый и трудоемкий, сколько требует внимательности и сосредоточенности, от того на тщательно работоспособность выполнены проверки будет спроектированной топологии. На зависеть рисунке 17 представлена одна из отладочных тестовых топологий, с помощью которых отслеживалась правильная работа проверок DRC. Рисунок 17 – Один из тестов правил проектирования DRC. На рисунке уже проведена проверка DRC, и выявлены 94 ошибки при проверке данного теста(см. листинг 6). Листинг 6 – Лог файл. Результат теста правил DRC Running layout DRC analysis \o Flat mode \o Full checking. \o executing: active = geomOr("active") … \o DRC started.......Tue Apr 24 16:37:52 2018 \o completed ....Tue Apr 24 16:37:53 2018 \o CPU TIME = 00:00:00 TOTAL TIME = 00:00:01 \o ********* Summary of rule violations for cell "test layout" ********* \o # errors Violated Rules \o 2 contact max width > 0.24 \o 1 1.1 Active min width < 0.32 \o 1 1.3/ N+AALV to N+AALV spacing < 0.4 \o 1 1.4/ P+AA to N+AA spacing (not strap) < 0.48 \o 1 1.9/ P+AA to Nstrap spacing < 0.4 \o 1 10.13/ Pstrap width < 0.32 \o 1 10.16/ NPLUS and PPLUS in active shouldn't overlap! \o 1 10.2/ NPLUS to NPLUS spacing < 0.48 \o 3 10.3/ areas of NPLUS that enclose active < 0.24 \o 4 10.4/ areas of NPLUS that enclose active Nstrap < 0.16 \o 1 10.5/ NPLUS to PAA spacing < 0.24 \o 10 11.3/ areas of PPLUS that enclose active < 0.24 \o 3 11.4/ areas of PPLUS that enclose Pstrap< 0.16 \o 1 11.6/ PPLUS to Nstrap spacing < 0.16 \o 1 14.1/ contact min width < 0.24 \o \o \o \o \o \o \o \o \o \o \o \o \o \o \o \o \o \o \o \o \o \o 1 14.4/ areas of active that enclose contact < 0.02 1 14.5/ contact to active(ne rod) spacing < 0.14 2 3.10/ areas of NwHV that enclose P+AA < 0.4 1 3.17/ NwHV(10V) to P+AA spacing < 0.4 2 3.18/ NwHV(40V) to P+AA spacing < 3.28 1 3.19/ NwHV(10V) to N+AA spacing < 1.12 1 3.20/ NwHV(40V) to N+AA spacing < 4 7 3.21/ The angles must be 45 in this figure 1 3.21/ This lenght < 1.34! 4 3.8/ Nwell to Nwell spacing (40V)< 7.36 1 3.9/ Nwell(10V) to Nwell(40V) spacing < 4.48 1 6.1/ poly min width < 0.32 1 6.2/ poly to poly spacing in NotActive < 0.32 1 6.3/ poly to poly spacing in active < 0.64 1 6.4/ areas of active that enclose poly < 0.52 1 6.8/ poly ovlp notActive < 0.24 1 8.6/ areas of PwLV that enclose N+AA < 0.4 1 8.9/ PwLV(10V) to P+AA spacing < 1.12 5 9.7/ NwLV to other Nwell spacing < 7.36 6 9.8/ areas of NwLV that enclose P+AA < 0.8 19 Active without NPLUS or PPLUS! 3 contact without metal1! \o 94 Total errors found Когда каждая ошибка выявлена и проверена, необходимо спроектировать устройства по всем правилам проектирования и сделать проверку снова. Рисунок 18 – Тестовая топология NMOS и PMOS транзисторов. На рисунке 18 представлена топология NMOS и PMOS транзисторов по всем правилам проектирования, после запуска DRC не должен выявить не одной ошибки, что подтверждается листингом 7. Листинг 7 – Лог файл. Результат проверки DRC топологии NMOS и PMOS транзисторов. Running layout DRC analysis \o Flat mode \o Full checking. \o executing: active = geomOr("active") \o executing: poly = geomOr("poly") \o executing: PwLV = geomOr("nldd") \o executing: NwLV = geomOr("pldd") \o executing: NPLUS = geomOr("nplus") \o executing: PPLUS = geomOr("pplus") \o executing: contact = geomOr("contact") \o executing: metal1 = geomOr("metal1") \o executing: metal2 = geomOr("metal2") \o executing: metal3 = geomOr("metal3") \o executing: metal4 = geomOr("metal4") \o executing: metal5 = geomOr("metal5") \o executing: metal6 = geomOr("metal6") … \o executing: drc(Nvia1 (sep < 1.68) "27.9/ Nvia1 to Nmetal1 spacing < 1.68 ") \o executing: drc(Nvia2 (sep < 1.68) "27.11/ Nvia2 to Nmetal1 spacing < 1.68 ") \o executing: drc(Nvia3 (sep < 1.68) "27.13/ Nvia3 to Nmetal1 spacing < 1.68 ") \o executing: drc(Nvia4 (sep < 1.68) "27.15/ Nvia4 to Nmetal1 spacing < 1.68 ") \o executing: drc(Nvia5 (sep < 1.68) "27.17/ Nvia5 to Nmetal1 spacing < 1.68 ") \o executing: drc(Nmetal6 pad (enc < 0.5) "27.1/ areas of metal6 that enclose pad < 0.5 ") \o executing: drc(Nmetal1 via1 (enc < 0.34) "27.3/ areas of metal1 that enclose via1 in CP < 0.34 ") \o executing: drc(Nmetal2 via2 (enc < 0.34) "27.4/ areas of metal2 that enclose via2 in CP < 0.34 ") \o executing: drc(Nmetal3 via3 (enc < 0.34) "27.5/ areas of metal3 that enclose via3 in CP < 0.34 ") \o executing: drc(Nmetal4 via4 (enc < 0.34) "27.6/ areas of metal4 that enclose via4 in CP < 0.34 ") \o executing: drc(Nmetal5 via5 (enc < 0.2) "27.7/ areas of metal5 that enclose via5 in CP < 0.2 ") \o executing: activeNmetal6 = geomAnd(Nmetal6 active) \o executing: saveDerived(activeNmetal6 "27.28/ active in Nmetal6 shouldn't be!") \o executing: polyNmetal6 = geomAnd(poly Nmetal6) \o executing: saveDerived(polyNmetal6 "27.29/ poly in Nmetal6 shouldn't be!") \o executing: lenght134all = geomGetLength(Nwell40 ((0 < length) < 1.34)) \o lenght134angle = geomGetAngledEdge(Nwell40 (angle == 45)) \o executing: lenght134 = geomAnd(lenght134angle lenght134all) \o executing: saveDerived(lenght134 "3.21/ This lenght < 1.34! ") \o DRC started.......Tue Apr 24 16:38:56 2018 \o completed ....Tue Apr 24 16:38:56 2018 \o CPU TIME = 00:00:00 TOTAL TIME = 00:00:00 \o ********* Summary of rule violations for cell "test1 layout" ********* \o Total errors found: 0 Это значит что топология спроектирована верно и инструмент iDRC с подключенным файлом divaDRC.rul справился со своей работой. 2.2 Разработка правил Экстракта «Одним из наиболее трудоемких этапов верификации проекта является экстракция элементов. При проведении экстракции пакет Diva руководствуется набором правил, которые позволяют экстрагировать топологию и затем уже проводить её сравнение со схемотехническим представлением».5 2.2.1 Выделение слоев для распознавания устройств Создание файла divaEXT.rul начинается с того же, что и DRC файл, а именно с описания используемых слоев. Кроме слоев на листинге 1 и 2 в данном файле появляется ещё одна необходимость в создании побочных слоев для определения устройств. В этой группе правил распознаются каналы транзисторов, тела диодов, резисторов и конденсаторов. Данный этап занимает больше всего времени в написании правил проектирования. Казалось бы, в чем могут возникнуть проблемы. И действительно, в таких устройствах как NMOS и PMOS транзисторы каналы выделяются очень просто(см. листинг 8): Листинг 8 – Отрывок кода из файла divaEXT.rul. Выделение каналов для NMOS и PMOS транзисторов. ;physical Define Allchanels = geomAnd(active poly) PMOSchanels = geomAndNot(geomAnd(Allchanels geomAnd(NwLV PPLUS)) NwHV) NMOSchanels = geomAndNot(geomAnd(Allchanels geomAnd(PwLV NPLUS)) NwHV) Однако если устройство более сложное, например высоковольтные NDMOS и PDMOS транзисторы(см. листинг 9), то, чтобы понять как выделить канал, может потребоваться много времени. Листинг 9 – Отрывок кода из файла divaEXT.rul. Выделение каналов для NDMOS и PDMOS транзисторов. Edge1 = geomGetEdge(PPLUS inside active) Edge2 = geomGetEdge(PPLUS inside poly) Edge = geomAndNot(Edge1 Edge2) BOX = geomGetBBox(Edge) PDMOSchanels1 = geomAnd(BOX geomAnd(geomAnd(PwLV PPLUS) Allchanels)) PDMOSchanels2 = geomAnd(BOX geomAnd(geomAnd(NwLV PPLUS) Allchanels)) Ed = geomGetEdge(PDMOSchanels1 inside PwLV) Ed1 = geomGetEdge(PDMOSchanels2 inside NwLV) PDMOSchanels3 = geomOr(Ed Ed1) 5 Горячкин Ю. В. Разработка правил экстракции МОП-транзисторов в САПР CADENCE // ГОУВПО «Мордовский государственный университет им. Н. П. Огарева», 2009 г. С.1-5. BOX0 = geomGetBBox(PDMOSchanels3) BOX01= geomSize(BOX0 0.08) BOX02 = geomSize(BOX01 -0.08) PDMOS = geomAndNot(BOX02 PwLV) Edge3 = geomGetEdge(NPLUS inside geomAndNot(active poly)) Edge4 = geomSize(active -1.28) Edge44 = geomGetEdge(contact inside geomAndNot(active PwLV)) Edge44 = geomSize(Edge44 4) Edge5 = geomOr(Edge44 Edge4) Edge5 = geomSize(Edge44 0.36) BOX1 = geomGetBBox(Edge5 ) NDMOS = geomAndNot(geomAnd(geomAnd(active Edge5 ) poly) NwLV) Edge56 = geomOr(Edge3 NDMOS) BOX12 = geomGetBBox(Edge56 ) BOX12 = geomSize(BOX12 0.48) BOX12 = geomSize(BOX12 -0.48) BOX12 = geomGetBBox(BOX12 ) NDMOS = geomAndNot(geomAnd(geomAnd(active BOX12 ) poly) NwLV) NDMOS = geomSize(NDMOS -0.3) NDMOS = geomSize(NDMOS 0.3) В этой части кода используются логические функции, функции изменения размеров и функции относительного выбора. Для создания слоя распознавания используются логические функции geomOr, geomAnd и geomAndNot, функции относительного выбора ребер geomGetEdge и полигонов geomGetBBox, и функцию изменения размеров geomSize. 2.2.2 Connectivity Данный раздел описан с помощью функции geomConnect. Эта функция определяет взаимодействие слоев и устанавливает схему соединений, подлежащую экстракции. С помощью опции via устанавливается связь между двумя проводящими слоями и слоем перемычкой между ними (см. листинг 10), чаще всего используется для связи металлов. Листинг 10 – Отрывок кода из файла divaEXT.rul. Connectivity 6 металлов. geomConnect( via(v1 metal1 metal2) via(v2 metal2 metal3) via(v3 metal3 metal4) via(v4 metal4 metal5) via(v5 metal5 metal6) via(contact NAA metal1) via(contact PAA metal1) via(contact poly metal1) ...) Связь между двумя слоями, например слоями одной проводимости, без перемычки устанавливается с помощью опции overlap, используется для связи остальных слоев, например карманов. При описании связей карманов нужно быть предельно внимательным. Если в технологии несколько P и N карманов, важно знать топологический маршрут и понимать на какой глубине размещаются слои и как они должны PSub Pwell NPLUS NISO Nwell PPLUS STI взаимодействовать. Составитель правил должен держать в голове не только топологию, но и разрезы каждого устройства. [18] Рисунок 19 – разрез структуры: PMOS и изолированный NMOS транзистор. Рассмотрим один из примеров сложного взаимодействия слоев (см. рис. 19). Слои с одним типом проводимости, такие как NPLUS, NISO и Nwell или PPLUS, PSub и Pwell при соприкосновении по мере степени залегания должны соединяться друг с другом.[19]Однако если между этими слоями залегает слой другого типа проводимости, то данные слои соединяться уже не будут. На этом принципе построена изоляция транзисторов. [20] На рисунке 19 мы видим что слой NISO изолирует карман Pwell NMOS транзистора от P-подложки, а карман Nwell транзистора PMOS должен соединяться со слоем NISO и этот транзистор не будет изолирован от других таких же транзисторов в данном кармане NISO. Если не учесть такое взаимодействие между какими либо из слоев при их формировании, экстракт будет некорректным. Чтобы учесть каждое взаимодействие в данной части экстракта на этапе формирования слоев используются логические функции geomAnd и geomAndNot. Функция geomAndNot помогает отсеивать случаи взаимодействия слоев одной проводимости между которыми лежит слой противоположной проводимости. Важно учитывать данные взаимодействия и в написании правил DRC. С учетом вышесказанных замечаний был сформирован раздел функции geomConnect (см. листинг 11): Листинг 11 – Отрывок кода из файла divaEXT.rul. Connectivity. geomConnect( ... overlap( geomAndNot(NAA PwHV) NwHV) overlap( NAA NwLV) overlap( geomAndNot( NwLV PwHV)NwISO) overlap( NwHV NwISO) overlap( PAA PwHV) overlap( PAA PwLV) overlap( PwLV Pb) overlap( PwHV Pb) overlap( PAA Subs) overlap( PwLV Subs) overlap( PwHV Subs) overlap( Pb Subs) overlap( pad metal6) overlap( mim5 metal6) overlap(SPDMOS PAA) overlap(SNDMOS NAA)) 2.2.3 Экстракция устройств После того как для распознавания устройств все слои и connectivity готовы, можно приступать к самой экстракции с помощью функций extractMOS и extractDevice. (Отличия и сведения о данных функциях см. в разделе 1.5.3 Команды экстракции устройств.) Листинг 12 – Отрывок кода из файла divaEXT.rul. Экстракция некоторых устройств технологии. ;Device ;nmos extractMOS(NMOSchanels (poly "G") (NAA "S" "D") (PwLV "B") "NMOSL ivpcell INDEVT") (w = measureParameter(length (NMOSchanels inside "active") 0.5)) (l = measureParameter(length (NMOSchanels inside "poly") 0.5)) (w = calculateParameter( (w/w)*3.577)) (l = calculateParameter ((w/w)* 0.5)) saveParameter(w "w") saveParameter(l "l") ;pmos extractMOS(PMOSchanels (poly "G") (PAA "S" "D") (NwLV "B") "PMOSL ivpcell INDEVT") (w = measureParameter(length (PMOSchanels inside "active") 0.5)) (l = measureParameter(length (PMOSchanels inside "poly") 0.5)) (w = calculateParameter( (w/w)*7.417)) (l = calculateParameter ((w/w)* 0.5)) saveParameter(w "w") saveParameter(l "l") ;pdmos extractDevice(PDMOS (poly "G") (SPDMOS "S" ) (PwLV "D" ) (NwLV "B") "PDMOS_LP ivpcell INDEVT" physical) (w = measureParameter(length (PDMOS butting PwLV) )) (l = calculateParameter( (w/w)*4 )) ivIf((switch "netlist") then l = calculateParameter(l * 1e-6) w = calculateParameter(w * 1e-6)) saveParameter(w "w") saveParameter(l "l") ;ndmos extractDevice(NDMOS (poly "G") (SNDMOS "S" ) (NwLV "D" ) (PwLV "B") "NDMOS_LP ivpcell INDEVT" physical) (w = measureParameter(length (NDMOS butting NwLV) )) (l = calculateParameter( (w/w)*4 )) ivIf((switch "netlist") then l = calculateParameter(l * 1e-6) w = calculateParameter(w * 1e-6)) saveParameter(w "w") saveParameter(l "l") ... saveInterconnect( NwISO NwHV NwLV NAA PwHV Pb PwLV PAA poly contact metal1 v1 metal2 v2 metal3 v3 metal4 v4 metal5 v5 metal6 pad ) saveRecognition(NMOSchanels "poly") saveRecognition(PMOSchanels "poly") saveRecognition(PDMOS "poly") saveRecognition(NDMOS "poly") Горячкин Ю. В. в своем докладе точно описывает используемые в экстракте функции: «Функция saveRecognition сохраняет формы распознавания извлеченных приборов, использованные в команде extractMOS, в извлеченном виде ячейки. Функция saveInterconnect записывает слои для извлеченного вида ячейки. Здесь сохраняются слои, определенные в функции geomConnect».5 Таким образом, эти и другие элементы технологии: конденсаторы, резисторы и диоды, были описаны с помощью данных функций пакета Diva. 5 Горячкин Ю. В. Разработка правил экстракции МОП-транзисторов в САПР CADENCE // ГОУВПО «Мордовский государственный университет им. Н. П. Огарева», 2009 г. С.1-5. 2.2.4 Тесты После того как файл divaEXT.rul готов, его необходимо тестировать на работоспособность. Для этого следует спроектировать специальную тестовую топологию(см. рис. 20), включающую в себя все устройства во всех карманах, в которых они могут находиться, и все пересечения слоев, чтобы проверить правильно ли написано connectivity (см. рис. 21). Рисунок 20. Extract NMOS и PMOS транзисторов. В результате экстракции NMOS и PMOS транзисторов получаем данный вид (рисунок 20), если слои для распознавания устройств выделены правильно, то Diva не выявит ошибок в командной строке (см. листинг 13), а на экстракте появятся значки соответствующих устройств. В экстракте розовым цветом выделены пробные цепи, таким образом проверяется нет ли "закороток" между терминалами устройства. Листинг 13. Лог файл. Результат проверки Extract NMOS и PMOS транзисторов Running layout Extraction analysis \o flat mode \o Full checking. \o executing: active = geomOr("active") \o executing: poly = geomOr("poly") \o executing: PwLV = geomOr("nldd") \o executing: NwLV = geomOr("pldd") \o executing: NPLUS = geomOr("nplus") … \o executing: saveParameterlength("length") \o executing: saveParameter(width "width") \o executing: extractDevice(cmim5 (capmin "MINUS") (capplus "PLUS") "CAP3N ivpcell INDEVT") \o executing: area = measureParameter(area (cmim5)) \o executing: value = calculateParameter((area * 0.96)) \o executing: saveParameter(value "c") \o executing: saveParameter(area "area") \o executing: saveInterconnect(NwISO NwHV NwLV NAA PwHV Pb PwLV PAA poly contact metal1 v1 metal2 ... \o executing: saveRecognition(NMOSchanels "poly") \o executing: saveRecognition(PMOSchanels "poly") \o executing: saveRecognition(PDMOS "poly") \o executing: saveRecognition(NDMOS "poly") \o executing: saveRecognition(rnpoly "poly") \o Extraction started.......Tue Apr 24 16:41:42 2018 \o completed ....Tue Apr 24 16:41:43 2018 \o CPU TIME = 00:00:00 TOTAL TIME = 00:00:01 \o ********* Summary of rule violations for cell "test1 layout" ********* \o Total errors found: 0 Рисунок 21. Один из тестов для проверки Connectivity. ЗАКЛЮЧЕНИЕ В результате выполнения выпускной квалификационной работы были разработаны правила проектирования для физической верификации в пакете Diva Cadence. Изучены топологический маршрут проектирования, язык SKILL для работы в САПР Cadence, функционал пакета Diva. Проведены тестирование и отладка созданных правил. Таблица 1. Результаты работы. Введено: 28 исходных слоев; ~200 побочных слоев. Измерено: ~150 зазоров; ~70 ширин; ~150 перекрытий; ~50 площадей. Введены проверки : на размещение текста в некорректном слое; на размещение вне сетки; проверки на радиационную стойкость транзисторов; генерация изоляции транзисторов. Выделены: Каналы NMOS, PMOS, NDMOS, PDMOS транзисторов; тела резисторов, конденсаторов и диодов. Написаны: Connectivity для каждого из исходных слоев; экстракт для 7 устройств. Итого: ~700 операций в divaDRC.rul; ~300 операций в divaEXT.rul. Результат проделанной работы, а именно готовые файлы с правилами для физической верификации в КМОП технологии 0,18 мкм, будут впоследствии использоваться в проектах компании АО «ДИЗАЙН ЦЕНТР «СОЮЗ» . На основе разработанных правил в последствии спроектирован базовый матричный кристалл (БМК) . СПИСОК ЛИТЕРАТУРЫ 1. Лохов А. Главный калибр компании Mentor Graphics// ЭЛЕКТРОНИКА: Наука, Технология, Бизнес. 2010 г. Вып. № 2 – C. 64-68. 2. Строгонов А. Проектирование топологии заказных КМОП БИС // Компоненты и Технологии. 2007 г. Вып. № 3 – C. 156-160. 3. Марчук В. Лопаненко И. Средства физической верификации интегральных микросхем // Технологии в электронной промышленности. 2010 г. Вып. №2 – C. 58-60. 4. Diva Reference. Product version 5.0 – July 2003. Cadence. – P.17-18. 5. Горячкин Ю. В. Разработка правил экстракции МОП-транзисторов в САПР CADENCE // ГОУВПО «Мордовский государственный университет им. Н. П. Огарева», 2009 г. – С.1-5. 6. Virtuoso Layout Editor User Guide. Product version 5.0 – September 2003. Cadence. 7. Эннс В. И. Проектирование аналоговых КМОП-микросхем. Краткий справочник разработчика// В. И. Эннс, Ю. М. Кобзев. – М. : Горячая линия – Телеком, 2005. – С. 454 8. Тучин А. В., Бормонтов Е. Н., Пономарев К. Г.. Введение в системы автоматизированного проектирования интегральных микросхем// Воронеж, Издательский дом ВГУ, 2017. – С. 111. 9. Baker J., Li H., Boyce D. CMOS circuit design layout and simulation.//WileyIEEE Press, 1997. 10. Костров А. И. Проектирование топологии интегральных микросхем в программном комплексе Cadence : метод. пособие по дисц. «Топологическое проектирование интегральных микросхем»// Минск : БГУИР, 2011 г. – С. 6-10. 11. Saint C. IC Mask Design. Essential layout techniques // C. Saint, J. Saint. – New York, USA: McGraw-Hill, 2002. – P. 394 12. Louis Scheffer, Luciano Lavagno, and Grant Martin. EDA for IC Implementation, Circuit Design, and Process Technology// Taylor & Francis Group, 2006. – P. 352-359. 13. Cadence Corporate Site [Электронный ресурс]. – 2011. – Режим доступа: http://www.cadence.com. 14. Clein D. CMOS IC layout : concepts, methodologies, and tools // technical contributor, Gregg Shimokura. 1958 –P. 265 15. Reinhardt M. Automatic layout modification. Including design reuse of the alpha CPU in 0.13 um SOI technology.// Kluwer Academic Publishers, 2002. 16. Hastings A. Art of Analog Layout. 2nd edition // Prentice Hall, 2005. – P. 556. 17. Kaeslin H. Digital Integrated Circuit Design // New York: Cambridge University Press, 2008. – P. 845 18. Gray P., Hurst P. Analysis and design of analog integrated circuits. //John Willey&Sons, 2001. 19. Дворников, О. В. Учебно-методический комплекс по дисциплине «Системы автоматизированного проектирования топологии интегральных схем» // [Электронный ресурс]. – 2006. – Режим доступа: http://abitur.bsuir.by. 20. Казённов, Г. Г. Основы проектирования интегральных схем и систем// – М.: БИНОМ. Лаборатория знаний, 2005. – C. 295
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )