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

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

Существует 2 способа определения изменяемых параметров с помощью данной структуры:

  1. использую функцию в окне командного интерпретатора

Tools -> CDF -> Edit

В появившемся окне задаются названия параметров и их значения по умолчанию.

  1. Использую SKILL код

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

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

Рассмотрим структуру кода.

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

LIBRARY = "Lib2013"

CELL = "eAK01"

Определения изменяемых параметров:

cdfCreateParam(

?name "l" - название параметра, должно совпадать с названием в коде для прорисовки топологии

?prompt "length" - название параметра, которое будет видеть пользователь

?defValue "180n" - значение параметра по умолчанию

?type "string" - тип параметра

)

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

Проверка параметров.

В спроектированных нами ячейках параметры имеют свои ограничения, обусловленные технологическими нормами. Например, ширина транзистора не может быть меньше 280 n, а его длина – меньше 180n. Для того, чтобы пользователь видел неправильно введенные значение предусмотрена проверка параметров. Для этого пишется код, в котором для каждого параметра прописываются свои ограничения.

Рассмотрим структуру кода проверки.

procedure( eAK01_geometry_verify( ) – название процедуры

prog(()

Проверка параметра l. Максимальное значение равно 20 мкм.

val = evalstring(cdfgData->l->value)*1e6 – с помощью данного выражения компилятор проверяет параметр l, каждый раз когда пользователь меняет его значение.

l_max = 20

if(val > l_max then

artError("An error occured while evaluating Length.")

hiDisplayAppDBox( ?name 'geometryError

?dboxBanner "*Error*"

?dialogType hicErrorDialog

?dialogStyle 'modeless

?buttonLayout 'Close

?dboxText "Значение параметра больше, чем l_max (20u) \n"

)

cdfgData->l->value = sprintf(nil "%s" l_max)

return(nil)

))

Когда значение параметра больше установленного ограничения, компилятор выдаст сообщение об ошибке и присвоит параметру значение по умолчанию.

Каждый параметр имеет свое название процедуры, которое прописывается при описании изменяемых параметров.

cdfCreateParam(

?name "l"

?callback eAK01_geometry_verify( ) – название процедуры для проверки ограничений

….

)

При написании проверок мы столкнулись с проблемой неправильной записи числа, при вычислении выражений. Например, результатом выражения (3+3)/2 будет число 3, но система записывает это число, как 3.00000000012 и поэтому может выдавать неправильные результаты. Для решения данной проблемы мы придумали следующую последовательность действий:

w_1 = a*b - вычисляемое выражение, результатом которого является число

sprintf(w_2 "%6.3f" w_1) - перевод полученного значения в число с тремя знаками после запятой, результатом данной функции является строка

w = evalstring(w_2) - перевод строки в число