Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не получается использовать module
Форум разработчиков электроники ELECTRONIX.ru > Печатные платы (PCB) > Разрабатываем ПП в САПР - PCB development > Cadence
vitan
Есть схема с иерархическими блоками (в менторовском DxD).
Генерится нетлист. Импортируется в аллегро. Появляются Module Instances.
Все хорошо, но при установке этого самого Instance на плату не происходит привязка компонента из нетлиста к символу из module (пробовал несколько вариантов, сейчас мучаю модуль из одного резистора и двух иерархический пинов, для простоты).
Возникает ошибка
Код
Component not found for symbol <имя корпуса>
И далее, как следствие
Код
Logic syncronization failed. Continuig.

В результате работать невозможно (не подгружается нетлист модуля).

Встает вопрос. Как аллегро ищет соотвествие между символами в модулях и реальными компонентами в схеме?
По-идее, написано, что это делается через свойства REUSE_NAME и REUSE_ID. Проверял нетлист вручную, для каждого instance в нем правильно прописаны эти свойства и их значения. Т.е. для двух разных instance резисторов есть одинаковые ID и NAME, отличаются они только Refdes-ом.
Обновлял символы. Та же ошибка, только в окошке лога.

Как быть?
Old1
Цитата(vitan @ Mar 3 2011, 13:30) *
...
Проверял нетлист вручную, для каждого instance в нем правильно прописаны эти свойства и их значения. Т.е. для двух разных instance резисторов есть одинаковые ID и NAME, отличаются они только Refdes-ом.
Обновлял символы. Та же ошибка, только в окошке лога.

Как быть?

REUSE_ID - у instance-в должны быть разные.
vitan
Цитата(Old1 @ Mar 3 2011, 17:15) *
REUSE_ID - у instance-в должны быть разные.

Как же так?
Вот цитата:
Цитата
REUSE_ID
The REUSE_ID property, automatically attached to a component, allows for the correct assignment of logic within a module instance. The REUSE_ID property is a number that uniquely identifies each symbol and component within a module. It is used to reconnect reference designators when a module is used in a design, thus allowing for the correct assignment of logic within a module instance. The property is stored within the module file and the Allegro PCB Editor or Allegro Package Designer design file that represents the module information, and is backannotated to the schematic that represents the module's logic.

Note: Because this property is for Cadence internal use only, you must not edit it.


REUSE_INSTANCE
The REUSE_INSTANCE property, assigned on the reuse block when instantiating it in Allegro Design Entry HDL, uniquely identifies the instance of the reuse block. The PCB Editor uses the REUSE_INSTANCE property to differentiate among multiple instances of a reuse module. Unlike other schematic properties, the REUSE_INSTANCE property, defined on the topmost block, wins in the case of nested blocks

Reuse_id мне создает сам pcb editor, когда я выполняю команду create module. Далее делается backannotate, и reuse_id без изменений попадает в схему. Там я назначаю вручную на каждую instance своё instance_name и снова отправляю в плату. Получаю столько instance, сколько и указал, с теми же именами. Но без компонентов (при установке появляются только символы). Более того, компоненты тоже есть, и их моно выставить вручную, и они даже помечены буквой M на иконках. И если их выставить рядом с модулем, а потом сделать show element, поставив галочку groups, то выделяется весь модуль (с "пустым" символом) и этот компонент (!).
Какой-то бред...

Вы не могли бы привести кусок нетлиста, в котором точно работают модули?
Old1
Цитата(vitan @ Mar 3 2011, 16:26) *
Как же так?
Вот цитата:

Reuse_id мне создает сам pcb editor, когда я выполняю команду create module. Далее делается backannotate, и reuse_id без изменений попадает в схему. Там я назначаю вручную на каждую instance своё instance_name и снова отправляю в плату. Получаю столько instance, сколько и указал, с теми же именами. Но без компонентов (при установке появляются только символы). Более того, компоненты тоже есть, и их моно выставить вручную, и они даже помечены буквой M на иконках. И если их выставить рядом с модулем, а потом сделать show element, поставив галочку groups, то выделяется весь модуль (с "пустым" символом) и этот компонент (!).
Какой-то бред...

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

По поводу теории Design reusa точно сразу не отвечу, уже подзабыл, нужно почитать. Но на практике для каждого instance схемный редактор (при аннотации и создании нетлиста) помимо прочих свойств генерит свойства REUSE_ID и REUSE_PID. REUSE_PID у всех "потомков" одинаковый -такой как REUSE_ID у родителя . REUSE_ID "потомков" все разные, если они пересекаются, то начинаются косяки... Прилагаю один из файлов нетлиста который генерит Capture, и скриншот редактора свойств, где видны REUSE_ID instanse. Крайний справа столбец (R2) это "родитель", остальные -"потомки" -Нажмите для просмотра прикрепленного файлаНажмите для просмотра прикрепленного файла
vitan
Спасибо за наводку. Компоненты встали. Только как-то странно.
Пришлось на схеме проставить компонентам свойство reuse_pid (не reuse_id, как рекомендовано). После этого я ради эксперимента вообще удалил со схемы свойства reuse_id. И что бы Вы думали? Они и без этого свойства отлично встают!
Вот как это понять? Это получается какой-то глобальный косяк. Причем, т.к. схема у меня в менторе, я читал документацию и от ментора тоже. И там тоже написано про именно reuse_id (слово reuse_pid там вообще не встречается).

Я так понял, что по задумке свойство reuse_pid должно использоваться в модулях, которые имеют в своем составе другие модули. Типа, чтобы понять, какой ID был у предка на предыдущем уровне (видимо, "p" означает parent). У меня reuse_id, таким образом, осталось только в компонентах в определении модуля (.mdd).

С учетом сказанного выше становится непонятным, зачем тогда нужно свойство reuse_id. Вы не пробовали его удалить вообще из своих схем?
Old1
Цитата(vitan @ Mar 4 2011, 09:58) *
Спасибо за наводку. Компоненты встали. Только как-то странно.
Пришлось на схеме проставить компонентам свойство reuse_pid (не reuse_id, как рекомендовано). После этого я ради эксперимента вообще удалил со схемы свойства reuse_id. И что бы Вы думали? Они и без этого свойства отлично встают!
Вот как это понять? Это получается какой-то глобальный косяк. Причем, т.к. схема у меня в менторе, я читал документацию и от ментора тоже. И там тоже написано про именно reuse_id (слово reuse_pid там вообще не встречается).

Я так понял, что по задумке свойство reuse_pid должно использоваться в модулях, которые имеют в своем составе другие модули. Типа, чтобы понять, какой ID был у предка на предыдущем уровне (видимо, "p" означает parent). У меня reuse_id, таким образом, осталось только в компонентах в определении модуля (.mdd).

С учетом сказанного выше становится непонятным, зачем тогда нужно свойство reuse_id. Вы не пробовали его удалить вообще из своих схем?

Повспоминал про design reuse. Свойство REUSE_ID назначается каждому элементу в модуле (схеме ) который будет клонирован. У каждого элемента внутри клонируемого модуля свой уникальный REUSE_ID. После того как модуль будет размножен на плате у всех клонов будет одинаковый REUSE_ID такой как у родителя. Такая ситуация наблюдается в случае если нет вложенных реюзов. Если внутри модуля который планируется размножать есть другие модули то тогда появляется свойство REUSE_PID. У меня на картинке как раз показан случай вложенного реюза. Убрал у клонов на схеме свойство REUSE_ID, сгенерил нетлист, втянул на плату - все нормально. Посмотрел свойство компонентов на плате у всех клонов одинаковый REUSE_ID. Прилагаю файлик где достаточно внятно расписан порядок работы при использовании design reuse. На 11 странице расписано назначение свойств, используемых при design reuse.Нажмите для просмотра прикрепленного файла
vitan
И? sm.gif
Вот Ваши же слова.
Цитата(Old1 @ Mar 3 2011, 18:03) *
REUSE_ID "потомков" все разные, если они пересекаются, то начинаются косяки...

Цитата(Old1 @ Mar 4 2011, 12:48) *
Убрал у клонов на схеме свойство REUSE_ID, сгенерил нетлист, втянул на плату - все нормально. Посмотрел свойство компонентов на плате у всех клонов одинаковый REUSE_ID.

У Вас это не вызывает желания разобраться? Что за косяки и почему они в этот раз не возникли?


Цитата(Old1 @ Mar 4 2011, 12:48) *
У меня на картинке как раз показан случай вложенного реюза.

А простой случай Вы не пробовали? Какие там свойства необходимы? Что-то мне подсказывает, что, имея только reuse_id у instance у Вас не получится нормально выставить модули на плату... И даже тот факт, что
Цитата(Old1 @ Mar 4 2011, 12:48) *
Убрал у клонов на схеме свойство REUSE_ID, сгенерил нетлист, втянул на плату - все нормально. Посмотрел свойство компонентов на плате у всех клонов одинаковый REUSE_ID.
меня пока не убеждает. Вот, если бы Вы вручную поудаляли свойства на компонентах в определении модулей и в instanc-ах, то тогда был бы чистый эксперимент. Говорю потому, что сам проходил.

Цитата(Old1 @ Mar 4 2011, 12:48) *
Прилагаю файлик где достаточно внятно расписан порядок работы при использовании design reuse. На 11 странице расписано назначение свойств, используемых при design reuse.

Спасибо, но это все я читал, и именно потому, что на самом деле все получается не так, я и создал этот топик...

У Вас наверняка найдется проект, в котором есть простые модули, без вложенного реюза. Не могли бы Вы посмотреть, как там свойства назначены?
Old1
Цитата(vitan @ Mar 4 2011, 12:37) *
У Вас это не вызывает желания разобраться? Что за косяки и почему они в этот раз не возникли?

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

Цитата
А простой случай Вы не пробовали? Какие там свойства необходимы? Что-то мне подсказывает, что, имея только reuse_id у instance у Вас не получится нормально выставить модули на плату... И даже тот факт, что
меня пока не убеждает. Вот, если бы Вы вручную поудаляли свойства на компонентах в определении модулей и в instanc-ах, то тогда был бы чистый эксперимент. Говорю потому, что сам проходил.

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

Для чистоты эксперимента создал с нуля простой проект: на схеме четыре одинаковых модуля, которые ссылаются на внешний дизайн - "родителя". В родителе выполняю операцию "Generate Reuse module". В результате каждому компоненту родителя назначилось свойство REUSE_ID c уникальным значением. Затем в основном дизайне выполняю операцию "Renamber design for using reuse modules", в результате которой в редакторе свойств ничего нового не появилось, но после генерации нетлиста, в нетлисте у каждого клона появилось по три свойства:REUSE_NAME, REUSE_PID, REUSE_INSTANCE. Причем REUSE_PID у клонов имеющих общего родителя - одинаковый. Вот такие пироги...
vitan
Цитата(Old1 @ Mar 4 2011, 18:03) *
Для чистоты эксперимента создал с нуля простой проект: на схеме четыре одинаковых модуля, которые ссылаются на внешний дизайн - "родителя". В родителе выполняю операцию "Generate Reuse module". В результате каждому компоненту родителя назначилось свойство REUSE_ID c уникальным значением. Затем в основном дизайне выполняю операцию "Renamber design for using reuse modules", в результате которой в редакторе свойств ничего нового не появилось, но после генерации нетлиста, в нетлисте у каждого клона появилось по три свойства:REUSE_NAME, REUSE_PID, REUSE_INSTANCE. Причем REUSE_PID у клонов имеющих общего родителя - одинаковый. Вот такие пироги...

Вот! Ровно то же, что и у меня! Reuse_id достаточно иметь только у определения блока. У экземпляров же надо проставлять reuse_pid.
Единственное отличие моих действий от Ваших в том, что я создаю определение блока в аллегро, а потом делаю backannotate в схему. Но это, очевидно, совершенно не важно.
Вот и вопрос: как после этого доверять документации? sm.gif Эдак ведь можно до посинения свойства назначать, не зная, как именно надо...
Old1
Цитата(vitan @ Mar 4 2011, 17:12) *
Вот! Ровно то же, что и у меня! Reuse_id достаточно иметь только у определения блока. У экземпляров же надо проставлять reuse_pid.
Единственное отличие моих действий от Ваших в том, что я создаю определение блока в аллегро, а потом делаю backannotate в схему. Но это, очевидно, совершенно не важно.
Вот и вопрос: как после этого доверять документации? sm.gif Эдак ведь можно до посинения свойства назначать, не зная, как именно надо...

Я особых противоречий в документации не наблюдаю.
Цитата
REUSE_ID: This property is added to every part in a reuse design. Within a reuse design there are as many
values of this property as there are packages so that each package has a unique REUSE_ID. All parts in a
package have the same REUSE_ID value. Capture assigns these property values when you enable the
Generate Reuse Module in the Allegro Reuse tab off the Annotate dialog box.

Тут вроде все понятно. REUSE_ID назначается компонентам в дизайне, который используется как "родитель".

Цитата
REUSE_PID: If a reuse module contains another reuse module as part of its external design, then the
netlister assigns a REUSE_PID value to every component in each package of the external design. The value
of the REUSE_PID is the same as the value of the component's previous REUSE_ID. A new REUSE_ ID
value is then assigned to each module. This way, occurrences of the same module will have different
REUSE_IDs on them, but the same REUSE_PIDs for corresponding components. Using REUSE_IDs,
makes it possible for Capture to propagate changes to lower levels of a reuse module.

Здесь если переводить дословно, то выходит белиберда. Вот мой вариант перевода (не дословный естественно, кто лучше владеет английским поправьте):
Цитата
Если reuse module содержит другой reuse module как часть внешнего дизайна, тогда нетлистер назначает REUSE_PID каждому компоненту у которого "родитель" во внешнем дизайне. Значение свойства REUSE_PID такое же как значение REUSE_ID "родителя".Новое значение REUSE_ID тогда присваивается каждому модулю. Таким образом occurrences одного модуля будут иметь разные REUSE_ID в нем, но один REUSE_PID для соответсвующего компонента во внешнем дизайне. Использование REUSE_ID позволяет Capture распространять изменения на низшие уровни reuse module.

И это вполне согласуется с тем что у меня получалось на практике при вложенных реюзах, и простому реюзу тоже не противоречит. Ну а в шестом посте был неправ, видимо накосячил когда проект с вложенным реюзом переделывал под простой.
vitan
Цитата(Old1 @ Mar 4 2011, 19:47) *
Я особых противоречий в документации не наблюдаю.

Я тоже. Наблюдаю только противоречие документации и реальности. sm.gif

Цитата(Old1 @ Mar 4 2011, 19:47) *
Тут вроде все понятно. REUSE_ID назначается компонентам в дизайне, который используется как "родитель".

Согласен. Без этого не работает.

Цитата(Old1 @ Mar 4 2011, 19:47) *
Здесь если переводить дословно, то выходит белиберда. Вот мой вариант перевода (не дословный естественно, кто лучше владеет английским поправьте):

Да, немного неточно, но не критично. Вот мой вариант.

Цитата
REUSE_ID: Это свойство добавляется к каждому компоненту в повторяемом блоке (дизайне). Внутри
блока будет столько значений этого свойства, сколько в блоке корпусов компонентов.
Все части (слоты) корпуса имеют одно и то же значение REUSE_ID. Capture назначает значения этим свойствам, когда вы включаете опцию
"Generate Reuse Module" во вкладке Allegro Reuse в окне Annotate.

REUSE_PID: Если повторно используемый блок содержит в свою очередь другой блок как часть внешнего дизайна, то упаковщик (нетлистер) назначает значение REUSE_PID каждому компоненту в каждом корпусе внешнего дизайна. Значение свойства REUSE_PID будет таким же, каким было ранее у него же значение свойства REUSE_ID.
После этого каждому модулю назначается новое значение свойства REUSE_ID. Благодаря этому экземпляры одного и того же модуля будут иметь различные REUSE_ID, но одинаковые REUSE_PID для соответсвующих компонентов. Использование REUSE_ID позволяет Capture распространять изменения вплоть до нижних уровней в таком многоуровневом модуле.


Цитата(Old1 @ Mar 4 2011, 19:47) *
И это вполне согласуется с тем что у меня получалось на практике при вложенных реюзах, и простому реюзу тоже не противоречит. Ну а в шестом посте был неправ, видимо накосячил когда проект с вложенным реюзом переделывал под простой.

По документации не противоречит простому реюзу, это точно. Но у меня в жизни не получилось. получилось только с использованием reuse_pid. Вот в чем вопрос. Ну и не забываем, что вообще без reuse_id на instance (только reuse_pid) тоже все работает (!)
Old1
Цитата(vitan @ Mar 4 2011, 23:09) *
Я тоже. Наблюдаю только противоречие документации и реальности. sm.gif


По документации не противоречит простому реюзу, это точно. Но у меня в жизни не получилось. получилось только с использованием reuse_pid.

Но в документации и говорится что как раз reuse_pid и должен быть назначен инстансам
Цитата
...If a reuse module contains another reuse module as part of its external design, then the
netlister assigns a REUSE_PID value to every component in each package of the external design. The value
of the REUSE_PID is the same as the value of the component's previous REUSE_ID...

Здесь правда речь идет о вложенном реюзе, но при простом реюзе, можно начать так
Цитата
If a schematic contains reuse module as part of its external design...

Нетлистер Capture так и делает.
Цитата
...Ну и не забываем, что вообще без reuse_id на instance (только reuse_pid) тоже все работает (!)

Да вроде бы ранее розобрались уже, что reuse_id на instance назначается если предполагается использовать дизайн в другом реюзе,если не предполагается можно не назначать...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.