Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диплом.Екимова_v3_2.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
4 Мб
Скачать
☆
    1. Построение параметризованных аналоговых ячеек второго уровня.

Аналоговые ячейки второго уровня требуют более тщательного подходы при построении, чем элементарные ячейки. Их конструкции более сложные и для достижения необходимых характеристик, требуют выполнение многих условий. Большую роль при построении высокоточных ячеек имеет согласованность составляющих их элементов. Особое внимание необходимо уделять защите ячеек от негативных факторов, таких как помехи по подложке, влияние механического напряжения, проявление эффекта электромиграции, возникновение антенного эффекта, включение паразитного тиристора и т.п.

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

Структура кода не отличается от структуры, описанной при построении элементарных ячеек. Поэтому будем уделять внимание тем моментам, которые не были рассмотрены в части 2.2.

      1. Способы применения элементарных ячеек в составе проектируемых аналоговых ячеек второго уровня.

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

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

  2. Для использования уже созданной библиотеки в составе новых ячеек можно применять конструкцию procedure(), в которую помещается код той ячейки, которую необходимо использовать при построении других ячеек.

Структура данной конструкции:

procedure( «имя функции»(«параметры» @key «необязательные параметры»)

«тело кода»

)

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

Все процедуры прописываются в файле libinit.il. Он находится в библиотеке, в которой создаются ячейки. Файл подгружается всегда, когда запускается Cadence.

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

Но данный способ имеет существенный недостаток. При дельнейшем использовании ячеек как самостоятельных элементов система выдаст ошибку при проверке на соответствие правил проектирования.

  1. Третьим способом и рекомендуемым для применения является использование функций dbOpenCellViewByType() и dbCreateParamInst(). Главным условие возможности применения этого метода является существование готовой ячейки.

masterCV = dbOpenCellViewByType ("Lib2013" "eCA01" "layout") – функция открывает существующую ячейку

dbCreateParamInst ( inCellView masterCV nil list(X_crd1 Y_crd1) "R0" 1

list(

list("w" "string" width) - ширина

list("l" "string" length) - длина

)

)

В данной функции указываются координаты местоположения вставляемой ячейки, ориентация и список параметров.

Этот способ применим ко всем созданным ячейкам. Поэтому является более универсальным.