реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Выделение огромного числа объектов в Virtuoso Layout Editor, Cadence 5141. Виснет программа при выделении большого числа объектов
TiNat
сообщение Mar 28 2014, 15:57
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 15-09-12
Пользователь №: 73 555



Добрый день. Использую Cadence 5141. В Virtuoso Layout Editor хочу заменить элементы одной библиотеки такими же элементами из другой бибилотеки. Выбираю команду Search... и там использую опцию replace. В случае если число элементов к примеру 70000, они выделяются за ~10 секунд, если их число 120000, то времени необходимо больше, но незначительно: ~30 секунд. Но если их число 180000, то cadence виснет. Я ждал порядка часа, но элементы так и не выделились, при этом, память на машине не забита. Кто-небудь может подсказать, это глюк Cadence, или у них зашито в программе количество выделяемых объектов в какой-небудь буфер. Можно ли вообще побороть такую проблему?
P.S. Такая же проблема возникла и в Schematic Editor при выделении большого числа объектов.
Go to the top of the page
 
+Quote Post
nikolascha
сообщение Mar 29 2014, 06:13
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 376
Регистрация: 20-06-09
Из: BY
Пользователь №: 50 480



А нельзя ли в каденсе изменить ссылку на библиотеку не открывая схему/топологию?
Go to the top of the page
 
+Quote Post
TiNat
сообщение Mar 29 2014, 06:34
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 15-09-12
Пользователь №: 73 555



Цитата(nikolascha @ Mar 29 2014, 09:13) *
А нельзя ли в каденсе изменить ссылку на библиотеку не открывая схему/топологию?

Можно. Но в этом случае поменяется ссылка во всех ячейках, которые относятся к старой библиотеке. А мне надо поменять ссылку
только одного типа ячейки (поэтому я могу поставить два условия: cell name = pmos и lib name = projlib к примеру).
Go to the top of the page
 
+Quote Post
fragment
сообщение Mar 29 2014, 14:32
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 97
Регистрация: 1-12-05
Из: Беларусь-Тайвань
Пользователь №: 11 657



А если через SKILL попробовать?
Я набросал примерную процедуру. Писал по памяти, поэтому возможны ошибки
Прикрепленные файлы
Прикрепленный файл  example.il.txt ( 1.32 килобайт ) Кол-во скачиваний: 87
 
Go to the top of the page
 
+Quote Post
TiNat
сообщение Mar 29 2014, 15:32
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 15-09-12
Пользователь №: 73 555



Цитата(fragment @ Mar 29 2014, 17:32) *
А если через SKILL попробовать?
Я набросал примерную процедуру. Писал по памяти, поэтому возможны ошибки

Спасибо. Опробую такой вариант.
Go to the top of the page
 
+Quote Post
KMC
сообщение Mar 31 2014, 05:07
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 26-10-04
Из: Moscow, Zelenograd
Пользователь №: 987



В Virtuoso Layout для замены элементов используется команда Design -> Remaster instances ...
Работает эта команда считанные секунды даже на больших проектах. В вашем случае надо изменить только имя библиотеки у всех ячеек.
Go to the top of the page
 
+Quote Post
baumanets
сообщение Apr 3 2014, 06:10
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 398
Регистрация: 30-12-09
Из: Москва, Зеленоград
Пользователь №: 54 579



Цитата(fragment @ Mar 29 2014, 18:32) *
А если через 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)


--------------------
Go to the top of the page
 
+Quote Post
TiNat
сообщение Apr 3 2014, 13:09
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 15-09-12
Пользователь №: 73 555



Цитата(baumanets @ Apr 3 2014, 09:10) *
Не заработает твой код. Присвоить иное имя библиотеки без ремастера не получится.

Автору темы. Вот код, на базе которго надо делать.
Через графический интерфейс имеет смысл работать, коли элементов мало. Если много -то обязательно через 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)
Результат аналогичный.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th July 2025 - 07:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01401 секунд с 7
ELECTRONIX ©2004-2016