Jump to content

    
Sign in to follow this  
TiNat

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

Recommended Posts

Добрый день. Использую 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
А нельзя ли в каденсе изменить ссылку на библиотеку не открывая схему/топологию?

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

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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this