Jump to content

    

Выделение огромного числа объектов в Virtuoso Layout Editor

Добрый день. Использую Cadence 5141. В Virtuoso Layout Editor хочу заменить элементы одной библиотеки такими же элементами из другой бибилотеки. Выбираю команду Search... и там использую опцию replace. В случае если число элементов к примеру 70000, они выделяются за ~10 секунд, если их число 120000, то времени необходимо больше, но незначительно: ~30 секунд. Но если их число 180000, то cadence виснет. Я ждал порядка часа, но элементы так и не выделились, при этом, память на машине не забита. Кто-небудь может подсказать, это глюк Cadence, или у них зашито в программе количество выделяемых объектов в какой-небудь буфер. Можно ли вообще побороть такую проблему?

P.S. Такая же проблема возникла и в Schematic Editor при выделении большого числа объектов.

Share this post


Link to post
Share on other sites

А нельзя ли в каденсе изменить ссылку на библиотеку не открывая схему/топологию?

Share this post


Link to post
Share on other sites
А нельзя ли в каденсе изменить ссылку на библиотеку не открывая схему/топологию?

Можно. Но в этом случае поменяется ссылка во всех ячейках, которые относятся к старой библиотеке. А мне надо поменять ссылку

только одного типа ячейки (поэтому я могу поставить два условия: cell name = pmos и lib name = projlib к примеру).

Share this post


Link to post
Share on other sites

А если через SKILL попробовать?

Я набросал примерную процедуру. Писал по памяти, поэтому возможны ошибки

example.il.txt

Share this post


Link to post
Share on other sites
А если через SKILL попробовать?

Я набросал примерную процедуру. Писал по памяти, поэтому возможны ошибки

Спасибо. Опробую такой вариант.

Share this post


Link to post
Share on other sites

В Virtuoso Layout для замены элементов используется команда Design -> Remaster instances ...

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

Share this post


Link to post
Share on other sites
А если через SKILL попробовать?

Я набросал примерную процедуру. Писал по памяти, поэтому возможны ошибки

 

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

 

Автору темы. Вот код, на базе которго надо делать.

Через графический интерфейс имеет смысл работать, коли элементов мало. Если много -то обязательно через SKILL пиши.

 

cv=dbOpenCellViewByType("techliboa2_copy" "TOP_LEVEL" "layout" nil "a")

foreach(inst cv~>instances

if( (inst~>libName=="FEOAreflib") then

new_master = dbOpenCellViewByType("techliboa2_copy" inst~>cellName inst~>viewName nil "r")

inst~>master=new_master

dbClose(new_master)

printf( "Processing %s\n" inst~>cellName)

))

dbSave(cv)

Share this post


Link to post
Share on other sites
Не заработает твой код. Присвоить иное имя библиотеки без ремастера не получится.

 

Автору темы. Вот код, на базе которго надо делать.

Через графический интерфейс имеет смысл работать, коли элементов мало. Если много -то обязательно через SKILL пиши.

 

cv=dbOpenCellViewByType("techliboa2_copy" "TOP_LEVEL" "layout" nil "a")

foreach(inst cv~>instances

if( (inst~>libName=="FEOAreflib") then

new_master = dbOpenCellViewByType("techliboa2_copy" inst~>cellName inst~>viewName nil "r")

inst~>master=new_master

dbClose(new_master)

printf( "Processing %s\n" inst~>cellName)

))

dbSave(cv)

 

Я именно такой код и использовал. Но можно вместо этого кода использовать следующий:

ih = car(setof( instHead cv~>instHeaders instHead~>libName == "projlib" && instHead~>cellName == "pmos"))

dbSetInstHeaderMasterName(ih "new_projlib" ih~>cellName ih~>viewName)

Результат аналогичный.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this