Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Правила в Altium Designer
Форум разработчиков электроники ELECTRONIX.ru > Печатные платы (PCB) > Разрабатываем ПП в САПР - PCB development > Altium Designer, DXP, Protel
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Владимир
Цитата(Jarik @ Sep 29 2011, 18:15) *
Кто подскажет как реализовать такие правила:

1. Если via и pad относятся к одной цепи то зазор между ними 0.2мм, а если к разным то 0.3мм (то есть, возможно ли использовать переменные и что-то вроде того).

1 правило
IsVia
IsPad
Same Net
2 правило
IsVia
IsPad
Different Net
Цитата
2. Правило на clearance между начальными отрезками проводников отходящих от определенной микросхемы отличаются от всего остально проекта (см. рис. сделать чтобы на эти отрезки действовало правило 0.2мм как на площадки микросхемы, а не 0.3 как на все остальные цепи платы).

по разному, например указав данное правило для коротких отрезков, например длиной 1мм
Или заданной специфичной ширины
или...
Цитата
3. Выровнить длины проводников начиная с определенной точки ( см. рис. длины от точки 2 до A+, B+ и С+ равны между собой, а длины от точки 1 до A-, B- и С- тоже равны между собой. Есть ли в Altium понятие виртуальная точка или чтото похожее?).

Для этого существует специальный класс FromTo/ Почитайте и пользуйтесь
Jarik
Владимир, спасибо.

Теперь возникла такая проблема: идет игнорирование правил для выравнивания длин сегментов FromTo, длины просто двух цепей выравниваются без проблем. С чем это может быть связано? (см. файл платы)
Буратино
Владимир, если по второму вопросу Jarik сделать так как Вы советуете, то правило будет действовать по всей плате! Правильно все же ограничить областью некоторой вокруг микросхемы, хотя и это не очень, так как вот недавно у меня ПОД микросхемой лежало много дорожек и это правило распространялось и на совсем ненужные цепи/трассы. Кстати это вообще-то довольно важный вопрос и надо бы разрулить как правильно делать!
Владимир
Ну да на всей. На плате не один такой корпус, как правило, у кучи. Загнешся румы индивидуальные создавать

Второй способ про специфическою ширину. например 0.15001 решает вопрос с "то правило распространялось и на совсем ненужные цепи/трассы"
Буратино
Цитата(Владимир @ Sep 30 2011, 12:56) *
Ну да на всей. На плате не один такой корпус, как правило, у кучи. Загнешся румы индивидуальные создавать

Второй способ про специфическою ширину. например 0.15001 решает вопрос с "то правило распространялось и на совсем ненужные цепи/трассы"


С шириной дорожек вроде ниче и правда..А как правило на ширину смотрится? rolleyes.gif
Владимир
указать, что если ширина 0.15001 то водить везде. Приоритет верхний
А остальной правила-- минимальная ширина например 0.3 мм.
Jarik
Итак, про выравнивание сегментов одной цепи никто пока не решил вопрос?? (здесь)
Тогда появился еще один:
как отловить координаты X1 и Y1 элемента например DD1. Например в функцию InRegion() вставить эти координаты с допусками чтобы получилось что-то вида: InRegion(X1-5мм,Y1-5мм,X1+5мм,Y+5мм).
Владимир
Цитата(Jarik @ Sep 30 2011, 17:53) *
Итак, про выравнивание сегментов одной цепи никто пока не решил вопрос?? (здесь)

Ну как же, через тип класса FromTo он решается, я вроде писал
Единственно этот класс только в PCB определяется
Jarik
Цитата(Владимир @ Sep 30 2011, 18:51) *
Ну как же, через тип класса FromTo он решается, я вроде писал
Единственно этот класс только в PCB определяется

В том то и дело что не срабатывает правило на разность длин, оно работает только для разных цепей, а эти куски FromTo как бы одна цепь. Я там пример (файл Board.rar ) прикрепил посмотрите на досуге=).
Владимир
Ну как же не работает. А у меня, то бог ниспослал?
По поводу примера-- нет сейчас времени смотреть
Jarik
1. Как привязать InRegionRelative к компоненту?? ( Returns objects residing within the rectangular region bounded by X = -700 and X = 1300, and by Y = -400 and Y = 1600; those coordinates are referenced to the user origin (or component insertion point). )
2. Как использовать фильтр для имени объекта по маске? ( Например нужно выбрать PAD в нескольких компонентах они имеют имена: XP1-PAD1, XP2-PAD1 и XP3-PAD1. Возможно ли применить что то вроде *-PAD1 для их выделения?)

Владимир, по поводу предыдущего поста, у вас какая версия AD. У меня 9 и возможно в 10 они поправили этот косяк.
Владимир
Цитата(Jarik @ Oct 4 2011, 16:52) *
Владимир, по поводу предыдущего поста, у вас какая версия AD. У меня 9 и возможно в 10 они поправили этот косяк.


И та и другая. Но возможно только в 10 делал
NickZ
Помогите, пожалуйста, создать правило для Hole to Hole Clearance.
BGA 0.4mm pitch, переходки с первого на второй слой в КП. Диаметр отверстия переходки 0,15мм. Зазор между отверстиями получается 0,25мм.
Создаю правило:
- Hole And TouchesRoom('BGA') (при WithinRoom работает аналогично)
- Hole
- Hole to Hole Clearance 0,1mm

но вместо него работает общее правило с зазором 0,254мм. Что вы можете видеть на рисунке.


peshkoff
поменять приоритет. ну или убить правиль 0,254
Владимир
Цитата(NickZ @ Oct 10 2011, 16:35) *
Диаметр отверстия переходки 0,15мм. Зазор между отверстиями получается 0,25мм.


Чтото у вас не то с переходными. сейчас на гарантийный поясок и зазор (если они равны) отводится
(0.25-0.15)/3=0.033
Где вы найдете такое производство- Оно цены заломит, выше не могу
Нужно микровиа ставить, при этом прямо в Болах, и медью заполнять
Vadim_83
Владимир абсолютно верно подметил, NickZ действительно у вас с ПО проблемы.
С правилами-то вы разберётесь, а вот BGA 0,4мм pitch - это серьёзно. Подойдите к выбору Track/Pad/Via со всей серьёзностью.
Очень рекомендую два стандарта IPC-7095B и IPC-2226.(может быть есть на фтп, но я пока не в "своих"...)
Владимир
Вот тут bga 0,5 полегче, но посмотрите, приятно будет, что Ваши проблемы еще сложнее
Vadim_83
Владимир, хотя бегло изучив pdfку очень сомневаюсь в её сегодняшней актуальности....

+ например не совсем понятна фраза:
"Заказывайте переходы под корпусом BGA тентированием(указывайте опцию via plugging)"

Tenting и Plugging это разные вещи! (кстати заполнение via в среднем удорожает производство ПП на 10% wink.gif )
Владимир
Гм. там ссылка на ветку форума, а не на PDF
Если в той ветке и была ссылка на PDF ==> признаюсь, последний не читал
Vadim_83
Всё верно, это я про "случайно взятую и прочитанную" пдфку оттудаsm.gif
NickZ
Цитата
правило для Hole to Hole Clearance

Спасибо за поддержку и документацию.
Для BGA 0,4мм другого выхода нет, будем ставить 0,10мм КП 0,3, что рекомендуют в литературе. Ежики плачут но кактус едет wink.gif.
Еще уточню у производителя параметры микровиа.
С правилом проблема осталась. Возможно проблема в определении объектов. т.к. задано HOLE, а в документации говорится оно должно иметь какой то параметр, например Hole=0.3mm.
Как еще можно указать в правилах объект Hole (отверстие)?

Vadim_83
NickZ, объясните какое правило хотите создать конкретнее?
Владимир
Цитата(NickZ @ Oct 11 2011, 12:56) *
Спасибо за поддержку и документацию.
Для BGA 0,4мм другого выхода нет, будем ставить 0,10мм КП 0,3, что рекомендуют в литературе. Ежики плачут но кактус едет wink.gif .
Еще уточню у производителя параметры микровиа.
С правилом проблема осталась. Возможно проблема в определении объектов. т.к. задано HOLE, а в документации говорится оно должно иметь какой то параметр, например Hole=0.3mm.
Как еще можно указать в правилах объект Hole (отверстие)?


Не парьтесь
При Hole 0.1 и Diameter 0.3 мм зазор между диаметрами будет перекрывающим
Владимир
Кто напишет правило, для проверки зазора между трассой, принадлежащей 1 цепи
Doomsday_machine
Подскажите правило для определения локальных зазоров между Polygon Pours. Мой вариант:InPolygon And WithinRoom('D3_Rule_Area') не работает.
one_eight_seven
У меня вообще "InPolygon" не работает, а вот "InPoly" работает.
Doomsday_machine
one_eight_seven
С другими объектами (via, pad) InPolygon работает нормально, зазоры меняются. А вот между полигонами - шиш. Подозреваю, дело в том, что на полигоны WithinRoom никак не влияет:

Returns Arc, Fill, Text, and Track objects that totally reside within the region occupied by any Room having a Name property that is specified by the Query, and Pad and Via objects whose centre points reside within the region occupied by any Room having a Name property that is specified by the Query.
Note: The parent objects of group objects (Components, Coordinates, Dimensions, Nets, and Polygons) are not also returned.

Такая же история с TouchesRoom:

Returns objects that either totally or partially reside within the region occupied by any Room having a Name property that is specified by the Query.
Note: The parent objects of group objects (Components, Coordinates, Dimensions, Nets, and Polygons) are not also returned.

С другой стороны, InPolygon описывает не сам полигон, а объекты внутри него:

Returns child objects (arcs and tracks) of any polygon object on any Signal layer or on the Multi-Layer layer.
Note: The parent objects of these polygon objects are not also returned.
Note: This is an alias for InPoly (Attribute Check).

Вот и гадай в чем дело.
Serhiy_UA
Начал ходить кругами..., вопрос вроде простой..., нужна помощь...

Как задать правило: «зазор между полигоном на заданном слое и любой цепью». В частности, цепи есть и внутри полигона...
TOREX
Цитата(Serhiy_UA @ Dec 15 2011, 17:58) *
Начал ходить кругами..., вопрос вроде простой..., нужна помощь...

Как задать правило: «зазор между полигоном на заданном слое и любой цепью». В частности, цепи есть и внутри полигона...


Попробуйте первое условие задать :
(ObjectKind = 'Poly') And (Layer = 'Top Layer')
второе :
All
Serhiy_UA
Цитата(TOREX @ Dec 15 2011, 19:28) *
Попробуйте первое условие задать :
(ObjectKind = 'Poly') And (Layer = 'Top Layer')
второе :
All

К сожалению, не помогает...
На прилагаемых картинках видны правило и часть полигона с островком внутри, расстояние между которыми всегда остается постоянным в 0.127мм. Хотя в правиле "Clearance_temp" требую 0.254мм. Не помогает также задание этому правилу самого высокого или самого низкого приоритета. Использую AD9. Вопрос: "Кто виноват и что делать?"
TOREX
Цитата(Serhiy_UA @ Dec 16 2011, 11:15) *
К сожалению, не помогает...
На прилагаемых картинках видны правило и часть полигона с островком внутри, расстояние между которыми всегда остается постоянным в 0.127мм. Хотя в правиле "Clearance_temp" требую 0.254мм. Не помогает также задание этому правилу самого высокого или самого низкого приоритета. Использую AD9. Вопрос: "Кто виноват и что делать?"



InPoly And (Layer = 'Top Layer')
Работает.
Serhiy_UA
Цитата(TOREX @ Dec 16 2011, 10:53) *
InPoly And (Layer = 'Top Layer')
Работает.

Опять все мимо...
В приложении маленький тестовый проект, в котором есть полигон GND. Применяю эти правила (ObjectKind = 'InPoly') And (Layer = 'Top Layer') , но дейстия никакого. Похоже, я опять чего-то не понимаю... Что не так?
То есть, хотел бы к примеру, что бы между полигоном GND и всеми другими цепями было 50 mils, а между полигоном GND и цепяи GND другой зазор (или его не было вовсе) .
AntonS
Цитата(Serhiy_UA @ Dec 16 2011, 10:46) *
Применяю эти правила (ObjectKind = 'InPoly') And (Layer = 'Top Layer') , но дейстия никакого.

Попробуйте не (ObjectKind = 'InPoly'), а просто InPoly. У меня зазор задается для всех слоев, соответственно правило выглядит так: первый объект: All, второй объект InPoly. Работает.
peshkoff
Цитата(Serhiy_UA @ Dec 16 2011, 12:46) *
Опять все мимо...
В приложении маленький тестовый проект, в котором есть полигон GND. Применяю эти правила (ObjectKind = 'InPoly') And (Layer = 'Top Layer') , но дейстия никакого. Похоже, я опять чего-то не понимаю... Что не так?
То есть, хотел бы к примеру, что бы между полигоном GND и всеми другими цепями было 50 mils, а между полигоном GND и цепяи GND другой зазор (или его не было вовсе) .


приоритеты поменяйте местами. 1-ый приоритет главнее.
т.е. он проверяется в последнюю очередь.
InPoly And (Layer = 'Top Layer')
All
работает
TOREX
Цитата(Serhiy_UA @ Dec 16 2011, 12:46) *
Опять все мимо...
В приложении маленький тестовый проект, в котором есть полигон GND. Применяю эти правила (ObjectKind = 'InPoly') And (Layer = 'Top Layer') , но дейстия никакого. Похоже, я опять чего-то не понимаю... Что не так?
То есть, хотел бы к примеру, что бы между полигоном GND и всеми другими цепями было 50 mils, а между полигоном GND и цепяи GND другой зазор (или его не было вовсе) .



Да работает, вот на картинке на TOP pзазор 1мм, а на Bottom 0,2мм:

Нажмите для просмотра прикрепленного файла

Вы после изменения правил Repure делали?
Да и вопросы странные, сначала хотели для конкретного слоя, а теперь для всех полигонов.
Если для всех, то достаточно InPoly.
Serhiy_UA
Большое спасибо, TOREX, peshkoff и AntonS, за помощь!
Все получилось для
InPoly And (Layer = 'Top Layer')
All
а также приоритета 1.

Если пошумел немного, то извините...
Буратино
Цитата(Владимир @ Nov 12 2011, 00:21) *
Кто напишет правило, для проверки зазора между трассой, принадлежащей 1 цепи


похоже, что это невозможно..
Владимир
CAM умеет
gia1965
Не могу задать правило. Хочу во внутренних слоях, под корпусом BGA выделить переходные отверстия не имеющие на данном слое подключение к Wire (но имеющие на других слоях) для удаления с них контактного пояска. Конечно можно зайти в свойста каждого переходного отверстия и там через "Edit Full Stack Via Sizes" сделать это, но учитывая что у BGA более 1000 выводов и самих BGA больше 10, то сами понимаете -это накладно.
Владимир
Оно вам надо.
Этот вопрос периодически поднимается.
Вопросы допуска на смещение отверстий при сверловке, допуск самого сверла, допуск наложения фотошаблонов, допуск на не вертикальность отверстия-- и вы получите то же самое, что нужно добавлять зону запрета, которая практически будет равна тому пояску, который вы собираетесь убирать
gia1965
наверно мой вопрос не был правильно понят. Пояски во внутренних слоях я убираю ислючительно из-за желания увеличения плотности проводников в этих слоях. Любая CAM программа убирает автоматически неподключенные в данном слое контактные площадки. Но хотелось-бы это сделать в самом Altiume. Еслиб я имел возможность выделить эти Via (не подключенные к Wire), то через pcb Inspector сог бы снять с них в этом слое поясок конт. площадки. При этом всегда имел бы возможность применять и проверять различные правила. Так есть ли признак по которому можно определить подведен ли проводник к конт. площадке или нет. В любом случае спасибо за ответ.
Владимир
Да нет. вопрос был понят правильно.
Просто это не даст вам увеличения плотности проводников, по указанной мной причине
По сути вопроса.
Правил нет, нахождения нет,
где-то бегал скрипт, что это делает.
gia1965
Спасибо за ответ
Avel_1979
Всем доброго времени суток.

Встал вопрос о правиле для CopperPour. На плате имеется множество медных заливок, которые подключены к разным землям (несколько преобразователей напряжения). Плата будет изготавливаться и паяться вручную, соответственно маски не будет. Поэтому, хотелось бы увеличить зазор между полигонами и КП (не цепями!), которые к этой заливке не принадлежат. Это нужно для того, чтобы заливка, которая идет под SMD-компонентами была подальше от КП, и случайно во время пайки ничего не закоротилось.

Для отдельных полигонов я создал правила типа:
1-й объект: InNamedPolygon('Top Layer-PGND')
2-й объект: IsPad And Not InNet(PGND)

И т.д.
Вопрос. Как можно объединить все эти правила в одно, чтобы было что-то типа такого. Если КП не принадлежит цепи, которая подключена к Copper Pour, то работает увеличенный зазор.
TOREX
Цитата(Avel_1979 @ Jan 6 2012, 16:55) *
Всем доброго времени суток.

Встал вопрос о правиле для CopperPour. На плате имеется множество медных заливок, которые подключены к разным землям (несколько преобразователей напряжения). Плата будет изготавливаться и паяться вручную, соответственно маски не будет. Поэтому, хотелось бы увеличить зазор между полигонами и КП (не цепями!), которые к этой заливке не принадлежат. Это нужно для того, чтобы заливка, которая идет под SMD-компонентами была подальше от КП, и случайно во время пайки ничего не закоротилось.

Для отдельных полигонов я создал правила типа:
1-й объект: InNamedPolygon('Top Layer-PGND')
2-й объект: IsPad And Not InNet(PGND)

И т.д.
Вопрос. Как можно объединить все эти правила в одно, чтобы было что-то типа такого. Если КП не принадлежит цепи, которая подключена к Copper Pour, то работает увеличенный зазор.


Попробуйте
1-й объект: InPoly
2-й объект: IsPad
Consrance: Different net only
Avel_1979
Цитата(TOREX @ Jan 6 2012, 17:27) *
Попробуйте
1-й объект: InPoly
2-й объект: IsPad
Consrance: Different net only

Пробовал что-то подобное раньше. Сейчас еще раз ввел - получается зазор действует на все КП, с учетом того, что я ставлю термобарьеры - для них тоже ставится большой зазор.
Все-таки хотелось бы чтобы правило действовало на все КП, не принадлежащие к цепи медной заливки
TOREX
Цитата(Avel_1979 @ Jan 6 2012, 17:51) *
Пробовал что-то подобное раньше. Сейчас еще раз ввел - получается зазор действует на все КП, с учетом того, что я ставлю термобарьеры - для них тоже ставится большой зазор.
Все-таки хотелось бы чтобы правило действовало на все КП, не принадлежащие к цепи медной заливки


Действительно, от Constraintc вообще ни чего не зависит. Похоже на баг.
Apik
Есть микросхема с шагом 0,5мм.
Создал правило для падов микросхемы на расстояние 0,15мм (чтобы не ругались друг на друга): IsPad And InComponent(DD3)

Как теперь создать правило для дорожек?
Apik
Пока что добавил все дорожки микросхемы в класс и создал правило Clearance: InNetClass(DD3)
Но хотелось бы более универсально и профессионально.
Psych
Сделайте через InRegion.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.