Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

skill / Лбы skill / лекция_бд

.doc
Скачиваний:
51
Добавлен:
05.06.2015
Размер:
61.95 Кб
Скачать

Базы данных

Все средства Cadence используют унифицированную базу данных DFII, это двоичная база данных, которая хранит данные, как объекты. Существует большое количество типов объектов, например:

  • rectangle;

  • terminal;

  • instance;

  • cellview и др.

База данных DFII хранит как физическую, так и логическую информацию о проекте. Физическая информация, хранящаяся в объектах, - геометрические формы и IC топология. Логическая информация – цепи и схемы, которые могут существовать без соответствующей физической реализации.

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

Различные типы и классы объектов формируют иерархию классов. Когда количество отдельных типов объектов, использующих общие атрибуты, превышает некоторое число, создается класс объектов. Например, геометрические фигуры имеют атрибуты layer, purpose, bounding box.

Атрибуты объектов

Каждый тип объектов имеет набор атрибутов, которые можно узнать, используя специальные для данного типа функции доступа. Существует три типа атрибутов:

  • обязательные – должны быть заданы во время создания объекта. Большинство атрибутов относится к этому типу.

  • необязательные – не являются обязательными для объекта. Данные атрибуты не нужно задавать во время создания объекта. Они могут быть добавлены в любое время.

  • вторичные – получаются из других атрибутов объекта. Вторичные атрибуты доступны пользователю только для чтения. Эти атрибуты играют большую роль в ускорении процесса расчетов.

Свойства объектов

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

Различия между атрибутами и свойствами.

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

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

Оператор доступа к базе данных ~> работает как с атрибутами, так и со свойствами объекта базы данных. Для этого оператора приоритетными являются атрибуты, что означает, что вы не сможете получить доступ к свойству с идентичным атрибуту именем.

Функции работы с библиотечными элементами.

dbOpenCellViewByType

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

dbOpenCellViewByType(

(gt_lib | ni)l ; определяет ddId библиотеки, имя библиотеки t_lib или nil.

t_cellName ; определяет имя cellview.

lt_viewName ; определяет имена view.

[t_viewTypeName [t_mode [d_contextCellView]] ; определяется тип view, t_mode определяет доступ к cellview и может принимать следующие значения:

  • r Открывает cellview только для чтения. Cellview должна существовать.

  • а Открывает cellview в режиме дозаписи.

  • w Режим записи.

  • s Открытие во временном режиме. Cellview нельзя сохранить на диск.

; и др.

)

=>d_cellView / nil

Пример:

Открыть ячейку “cellAviewlayout” в режиме для чтения, если она существует в библиотеке “test”.

cellview = dbOpenCellViewByType( “test” “cellA” “layout” )

Открыть ее в режиме дозаписи. Создать, если такой не существует:

cellview = dbOpenCellViewByType(“test” “cellA” “layout” “maskLayout” “a” )

Открыть ее в режиме дозаписи только в случае, если она существует:

cellview = dbOpenCellViewByType(“test” “cellA” “layout” “ ” “a” )

dbFindOpendCellView

Эта функция находит открытую cellview.

dbFindOpenCellView(

g_libId ; определяет ddId библиотеки.

t_cellName ; определяет имя cellview.

t_viewName ; определяет имена view.

t_version ; аргумент введен для совместимости различных версий, если задан, должен быть nil.

)

=>d_cellViewId / nil

Пример:

сv = dbFindOpenedCellView( lib “abc” “schematic” )

Находит view “schematic” ячейки “abc” библиотеки “lib”.

dbFindAnyInstByName(

d_cellView

t_name

)

=> d_inst / nil

Находит instance или группу instance (mosaic) с одним именем. Использование этой функции более эффективно, чем поиск в списке из всех instance.

Пример:

dbFindAnyInstByName(inCellView "inst1")

dbFindAnyInstByName(inCellView "myInv<0:1>")

dbFindProp(

d_object

t_name

)

  • d_propId / nil

dbGetPropByName(

d_object

t_name

)

=> d_propId / nil

Эти две функции выполняют одно и тоже. Находят свойство по заданному имени и возвращают его Id.

Пример:

propId = dbFindProp(instId "myProp")

propId = dbGetPropByName(instId "myProp")

Оператор ~>? возвращает список всех доступных атрибутов для dbObject.

d_object~>? => l_attributeNames

<1> cv = dbOpenCellViewByType(nil "inv" "symbol")

; open a cellview

db:2066752

<2> prop = car(cv~>prop) ; ; get the first property

db:2068776

<3> prop~>? ;; fetch the attribute names

(cellview objType prop enum name object range value valueType)

Оператор ~>?? возвращает список всех доступных атрибутов и их значений как property list для dbObject.

d_object~>?? => l_attributeValuePairs

<4> prop~>??

(db:2068776 cellview db:2066752 objType "prop"

prop nil enum nil name "lastSchematicExtraction"

object db:2066788 range nil

value "May 20 19:41:08 1991" valueType "time")

Доступ к значению свойства: prop_name->value

dbGetq( d_object St_AttrOrPropName )

=> g_value

dbGet( d_object St_AttrOrPropName )

  • g_value

возвращает значение атрибута или свойства, связанного с объектом базы данных.

Пример:

dbGetq(c shapes) ; Does not evaluate second argument

c~>shapes ; Exactly equivalent to above

c~>"shapes" ; Exactly equivalent to above

dbGet(c 'shapes) ; Evaluates both its arguments

str = 'shapes ; Assigns attribute name

dbGet(c str) ; "str" is evaluated to shapes

dbSetq( d_object g_value St_AttrOrPropName )

=> g_value / nil

dbSet( d_object g_value St_AttrOrPropName )

  • g_value / nil

изменяет величину атрибута или свойства объекта базы данных.

Пример:

dbSetq(p 2 width) ; ; Does not evaluate third argument

p~>width = 2 ; ; Exactly equivalent to above

p~>"width" = 2 ; ; Exactly equivalent to above

dbSet(p 2 'width) ; ; Evaluates 1st & 3rd arguments

w = 'width ; ; Assigns attribute name

dbSet(p 2 w) ; ; "w" is evaluated to width

; Attach figure f to net n:

dbSetq(f n net) ; ; Does not evaluate third argument

f~>net = n ; ; Exactly equivalent to above

; Detach figure f from its net:

dbSet(f nil 'net) ; ; Evaluates 1st & 3rd argument

f~>net = nil ; ; Exactly equivalent to above

dbSave

Эта функция используется для сохранения измененной cellview.

dbSave(

d_cellView

d_destCellView

)

=> t / nil

dbSave(

d_cellView

t_libName

t_cellName

t_viewName

)

=> t / nil

d_cellView Cellview, которая должна быть сохранена.

d_destCellView Определяет cellview, в которую сохранить информацию.

t_cellName Определяет имя ячейки.

lt_viewName Оределяет имена view.

t_version аргумент введен для совместимости различных версий, если задан, должен быть nil.

Пример:

Сохранить поверх существующей:

dbSave( cellview )

Сохранить в указанную библиотеку:

destCV = dbOpenCellViewByType( libcellName” “schematic” “schematic” “w” )

dbSave( cellview destCV )

Сохранить в cellview другой библиотеки:

dbSave( cellView “libName” “cellName” “viewName” )

dbClose

Эта функция используется для закрытия cellview:

dbClose(

d_cellView ; определяет cellview, которую следует закрыть.

)

=> t / nil

Пример:

Сохранить изменения и закрыть cellview:

dbSave( cellview )

dbClose( cellview )

Соседние файлы в папке Лбы skill