Не секрет, что многие профессиональные разработчики печатных плат (PCB) предпочитают ручную трассировку проводников, аргументируя это тем, что автомат "слишком некачественно разводит". Однако я с таким тезисом не согласен, и предпочитаю активное использование автотрассировщика. Чтобы плата получилась качественной, с плотной разводкой, нужно соблюдать определенные правила. В статье будут рассмотрены эти правила в случае использования автотрассировщика Eagle.
[Правило №1. Допуски]
Допуски на зазоры, толщину дорожек, диаметр переходных отверстий оказывают большое влияние на качество разводки и её трудоемкость, поэтому выбор допусков важен. Выберите класс точности платы, и в соответствие ему поставьте необходимые ограничения на зазоры и толщину печатных проводников [1, 2, 3]. Допуски в редакторе печатной платы Eagle редактируются инструментом DRC (переводится как Design Rule Check). Предельные значения определяются производителем печатной платы (завод, на котором будете плату заказывать). Технология производства печатных плат сегодня настолько совершенна, что стали обычными допуски 4 mil на зазор и 4 mil на толщину проводника. Если позволяют размеры платы и плотность размещения деталей, то допуски желательно увеличить.
На первый взгляд непонятно, как это правило может повлиять на качество разводки. Однако все просто - чем шире проводники и зазоры, тем проще плату изготовить, тем меньше будет сопротивление проводников и паразитные емкости, и вероятно меньше будет случайных электрических дефектов на плате. Однако слишком большие допуски имеют и недостатки - потенциально может быть больше переходных отверстий на плате, автотрассировщик будет делать петли, на трассировку может уйти больше времени. Поэтому выбор допусков - всегда компромисс, баланс которого определяет инженер, производящий разводку. Вывод - если правильно выберете допуски, то плата получится оптимальной по трудоемкости и качеству.
[Правило №2. Классы цепей]
Некоторые цепи потенциально должны иметь дорожки с увеличенной толщиной, и (возможно) увеличенными зазорами от других цепей. К таким цепям относятся цепи земли и питания, сигналы кварцевых генераторов, цепи со слабыми сигналами, критичными к уровню помех. Если Вы назначите цепям питания и земли толщину в 1.5 .. 2 раза больше, чем у обычных проводников, то это дополнительно увеличит наглядность разводки, и разводить будет проще. Подробнее см. [4].
[Правило №3. Настройка автотрассировщика]
Автотрассировщик Eagle очень прост, и там имеется только одна настройка, на которую следует обратить внимание - шаг трассировки. Чем меньше шаг, тем автотрассировщику нужно больше времени на расчет трасс, и тем медленнее будет происходить трассировка. Однако чем меньше шаг, тем проще автотрассировщику проложить дорожки, и с большей вероятностью разведутся все цепи. Поэтому шаг трассировки следует подобрать, ориентируясь на допустимое для Вас время автотрассировки - от её начала, до окончания. Обычно это время я выбираю в пределах максимум 2..3 минуты, и начинаю подбор шага трассировки с 1 мила, двигаясь в сторону увеличения. Можно поступить и наоборот - выбрать шаг автотрассировки 10 мил, и подбирать его в сторону уменьшения. Если Вы видите, что трассировка идет медленно, то остановите её, и увеличьте шаг трассировки. Если остается неназведенными слишком много цепей, и трассировка быстро заканчивается, то значит нужно шаг трассировки уменьшить.
[Правило №4. Предварительная подготовка топологии]
Автотрассировщик Eagle оставляет нетронутым рисунок проводников на печатной плате, который уже был перед началом трассировки. Автотрассировщики в других системах разработки PCB часто работают по-другому (например, трассировщик Specctra требует задавать проводникам атрибут фиксации, если нужно эти проводники при автотрассировки не трогать). Поведением автотрассировщика Eagle можно воспользоваться для того, чтобы подстроить топологию, и выполнить трассировку по определенным Вами правилам.
Во-первых, нужно разместить детали оптимально с точки зрения прокладки проводников, что хорошо знают все инженеры, поэтому не буду здесь подробно это рассматривать. Во-вторых, нужно проложить вручную некоторые проводники и шины, которые на Ваш взгляд должны быть оттрассированы строго определенным образом. Обычно я всегда так поступаю с сигналами от микроконтроллера до кварцевого резонатора, с некоторыми участками шины земли GND, и иногда даже развожу цепи питания. Эта процедура позволяет скорректировать положение деталей на плате и упрощает процесс трассировки в целом.
[Правило №5. Автотрассирова + ручная корректирекция платы]
Процесс автотрассировки - это итеративные запуски автотрассировщика, с последующим анализом результатов. Посмотрите, какие цепи не развелись, оцените причины заторов, вручную скорректируйте проводящий рисунок, и заново запустите автотрассировщик. Удачные промежуточные варианты разводки (файл PCB) копируйте, чтобы можно было откатиться на нужную стадию разводки.
[Запуск автотрассировщика Eagle]
В Eagle я часто предпочитаю разводить некоторые цепи самостоятельно (обычно шины питания типа GND, VCC, +5V, +12V, цепи кварцевых резонаторов XTAL1, XTAL2, сигналы интерфейса USB D+, D- и т. п.), и остальную работу поручаю автороутеру. Когда результат получается неудовлетворительный (к примеру, слишком много петель, или слишком много осталось неразведенных цепей), то тогда я снова корректирую вручную стартовую точку разводки, и запускаю автороутер заново.
Вот какие нужно проделать простые шаги, чтобы запустить автотрассировку печатной платы в Eagle:
1. Нарисуйте контур печатной платы в слое Dimension.
2. Разместите все детали внутри контура, и расположите их рациональным на Ваш взгляд образом.
3. Настройте классы цепей (Edit -> Net Classes...). Обычно достаточно задать только два класса - default и power. В класс default попадут все обычные цепи печатной платы, а в класс power цепи типа GND, VCC, +5V и т. п. К классам сделайте привязку допусков Width (ширина проводника), Drill (минимально допустимый диаметр сверла) и Clearance (минимально допустимый зазор). Для очень плотных двухсторонних плат я задаю такие допуски в классах (единицы милы, mil):
Name |
Width |
Drill |
Clearance |
default |
4 |
6 |
4 |
power |
10 |
10 |
4 |
Если у Вас плата несложная, то допуски можно увеличить.
Теперь нужно только назначить класс power в соответствие нужным цепям питания. Это делается через свойства цепи. Все остальные цепи автоматически будут привязаны к классу default.
4. Можно запустить автороутер (Tool -> Auto...). Появится окошко, где на закладке General укажите шаг трассировки (Routing Grig). Обычно можно начать с шага в 5 mil, и корректировать его в большую или меньшую сторону в зависимости от сложности платы и времени, которое занимает автотрассировка.
[Правило №6. Полигоны, заливки, области запрета]
[Правило №7. Консольные команды]
Не забывайте, что в редакторах Eagle кроме обычных инструментов, которые можно вызывать через кнопки тулбара, есть еще и консольные команды. К примеру, использование команд ripup, ratnest, script [5] позволит повысить удобство разводки.
[Практические рекомендации по разводке]
Я работаю с довольно плотными платами, где размещены смешанно PTH/SMD (plated through hole / surface mount) детали. С двухслойными платами все SMD-компоненты я стараюсь размещать на одной стороне, чтобы упросить производство (пайку) платы.
При трассировке платы обычно я размещаю компоненты так, чтобы минимизировать длину интерфейсных проводников, иногда поворачивают корпуса QFP на 45 градусов там, где мне кажется что это было бы полезным. В при особо плоной разводке ставлю шаг автотрассировки на 1 mil, устанавливаю минимальную ширину проводников и минимально допустимый зазор в настройках DRC, насколько это позволяет производство PCB. После этого запускаю автотрассировку на всю ночь и утром смотрю, что получилось. Что не получилось, доделываю вручную.
В принципе все меня устраивает, однако часто реальной проблемой бывает заставить процесс автотрассировки завершиться до конца, и мне кажется, что трассируемость платы сильно зависит от первоначального размещения компонентов. Часто автотрассировщик доходит до 98% от конечного результата, после чего сдается. Каковы эмпирические правила / инструкции / советы для того, чтобы помочь автотрассировщику завершить работу до конца?
Автотрассировщик Eagle достойный инструмент, который я часто использую. Однако чтобы использовать его хорошо, необходимо знать и понимать его ограничения. Если Вы будете ожидать, что за Вас все сделает автотрассировщик, то будете разочарованы. Причем это относится не именно к автотрассировщику Eagle, а в принципе к любому автотрассировщику печатных плат.
Нет никакого универсального набора настроек, которые будут работать со всеми печатными платами. Даже для двухслойных плат возможны различные настройки, которые лучше подойдут к разным конфигурациям плат.
Для двухслойных плат я часто пытаюсь оставить большую часть площади платы с нижней стороны (слой Bottom) под экранирующую цепь земли (ground plane). При такой стратегии трассировки верхняя часть платы (слой Top) используется для трассировки всех соединений, насколько это возможно, и нижний слой используется для коротких перемычек. Чтобы автоматическая трассировка была выполнена таким способом, я устанавливаю цену трассировки для нижнего слоя выше, чем для верхнего.
Перед запуском автотрассировки Вы должны внимательно посмотреть на плату и подумать о критических местах разводки, о который невозможно рассказать автотрассировщику. Например, Вы хотите сделать локальными петли тока переключаемого преобразователя питания, исключив их из основной экранирующей цепи земли. То же самое касается высокочастотных токов питания, локальных для цифровой микросхемы, которые нужно блокировать с помощью керамических конденсаторов максимально короткими проводниками, и кварцевого резонатора с его конденсаторами. Если Вы используете заливку медью на нижней стороне платы, соединенную с землей, то Вы можете захотеть сделать прямое соединение нужных цепей с землей с помощью переходных отверстий (via). Это оставит максимум площади на верхнем слое платы под разводку соединений.
Процесс разводки платы, при котором автотрассировщик выполняет большую часть трудной работы, выглядит следующим образом:
1. Разведите вручную критические цепи (блокирующие конденсаторы по питанию, цепи кварцевого резонатора, шины и т. п.).
2. Выполните базовую предварительную разводку. Это к примеру включает соединение всех выводов земли напрямую к заливке медью на нижней стороне платы.
3. Просмотрите на проблемные области, где автотрассировщик будет испытывать проблемы с прокладкой проводников. Если здесь есть короткие соединения, которые должны быть проложены в условиях высокой плотности, то можно их проложить вручную. Это требует некоторого опыта и интуиции, так что если Вы не имеете опыта с использованием какого-то определенного автотрассировщика, то пока пропустите этот шаг.
4. Сохраните копию платы и запустите автотрассировщик. Не ожидайте на первых попытках запуска, что сразу найдете решение по трассировке. Назначение первых запусков - найти проблемные области, подстроить размещение деталей, сделать ручную корректировку проложенных проводников с целью упрощения разводки.
5. Внимательно посмотрите на результирующую разводку, чтобы отследить проблемные области. Откатитесь к сохраненной копии на шаге 4 (можно просто нажать Ctrl+Z в редакторе печатной платы), подстройте размещение деталей, подкорректируйте ручную предварительную трассировку в соответствии с тем, какие соединения выполнил автотрассировщик. Повторяйте откаты к шагу 4 пока результат не окажется приемлемым. Поскольку здесь выполняется больше всего итераций запуска автотрассировщика, пробуйте поменять настройки оптимизации автотрассировщика и другие параметры, чтобы получить конечную разводку. Поначалу нужно попытаться увидеть, можно ли с помощью автотрассировщика найти решения, и в чем заключаются основные проблемы трассировки. В последующих проходах Вы приближаетесь к реальной трассировке. Я начинаю без проходов оптимизации, и использую 8 проходов для получения конечной трассировки. Также я конфигурирую ранние проходы для поиска решения, и последующие проходы для оптимизации предыдущих.
6. Выполните ручную подчистку разводки. В случае двухслойной платы с большинством соединений земли на нижней части платы Вы можете минимизировать максимальные размер островков на экранирующей заливке медью. Лучше иметь большое количество малых островков, чем меньшее количество больших. Иногда Вы можете увидеть способы локальной реорганизации сигналов, чтобы уменьшить количество перемычек на нижнем слое платы. На этом этапе основная работа окончена, и Вы можете сфокусироваться на ручной оптимизации малых областей разводки.
Ниже приведен управляющий файл автотрассировщика (Eagle autorouter control file), который я использую для проекта двухслойной платы, где нижняя сторона отведена в основном под экранирующую заливку меди (ground plane):
; EAGLE Autorouter Control File
[Default]
RoutingGrid = 4mil
; Trace Parameters:
tpViaShape = Round
; Preferred Directions:
PrefDir.1 = *
PrefDir.2 = 0
PrefDir.3 = 0
PrefDir.4 = 0
PrefDir.5 = 0
PrefDir.6 = 0
PrefDir.7 = 0
PrefDir.8 = 0
PrefDir.9 = 0
PrefDir.10 = 0
PrefDir.11 = 0
PrefDir.12 = 0
PrefDir.13 = 0
PrefDir.14 = 0
PrefDir.15 = 0
PrefDir.16 = *
Active = 1
; Cost Factors:
cfVia = 50
cfNonPref = 5
cfChangeDir = 2
cfOrthStep = 2
cfDiagStep = 3
cfExtdStep = 0
cfBonusStep = 1
cfMalusStep = 1
cfPadImpact = 4
cfSmdImpact = 4
cfBusImpact = 0
cfHugging = 3
cfAvoid = 4
cfPolygon = 10
cfBase.1 = 0
cfBase.2 = 1
cfBase.3 = 1
cfBase.4 = 1
cfBase.5 = 1
cfBase.6 = 1
cfBase.7 = 1
cfBase.8 = 1
cfBase.9 = 1
cfBase.10 = 1
cfBase.11 = 1
cfBase.12 = 1
cfBase.13 = 1
cfBase.14 = 1
cfBase.15 = 1
cfBase.16 = 5
; Maximum Number of...:
mnVias = 20
mnSegments = 9999
mnExtdSteps = 9999
mnRipupLevel = 50
mnRipupSteps = 300
mnRipupTotal = 500
[Busses]
@Route
Active = 1
cfVia = 10
cfChangeDir = 5
cfBusImpact = 4
cfPolygon = 25
cfBase.16 = 10
mnVias = 0
mnRipupLevel = 10
mnRipupSteps = 100
mnRipupTotal = 100
[Route]
@Default
Active = 1
[Optimize1]
@Route
Active = 1
cfVia = 99
cfNonPref = 4
cfChangeDir = 4
cfExtdStep = 1
cfHugging = 1
cfPolygon = 30
cfBase.16 = 10
mnExtdSteps = 20
mnRipupLevel = 0
mnRipupSteps = 100
mnRipupTotal = 100
[Optimize2]
@Optimize1
Active = 1
cfNonPref = 3
cfChangeDir = 3
cfBonusStep = 2
cfMalusStep = 2
cfPadImpact = 2
cfSmdImpact = 2
cfHugging = 0
cfPolygon = 40
mnExtdSteps = 15
[Optimize3]
@Optimize2
Active = 1
cfVia = 80
cfNonPref = 2
cfChangeDir = 2
cfPadImpact = 0
cfSmdImpact = 0
cfPolygon = 50
mnExtdSteps = 10
[Optimize4]
@Optimize3
Active = 1
cfVia = 60
cfNonPref = 1
cfPolygon = 60
cfBase.16 = 12
[Optimize5]
@Optimize4
Active = 1
cfVia = 40
cfNonPref = 0
cfPolygon = 70
cfBase.16 = 14
mnExtdSteps = 5
[Optimize6]
@Optimize5
Active = 1
cfVia = 20
cfBase.16 = 16
[Optimize7]
@Optimize6
Active = 1
cfBase.16 = 18
[Optimize8]
@Optimize7
Active = 1
cfBase.16 = 20
[Ссылки]
1. Классы точности печатных плат (PCB). 2. Eagle: настройка правил Design Rules. 3. Eagle: настройка трассировки печатной платы (PCB) в соответствии с нужным классом точности. 4. Eagle: net classes, классы электрических цепей. 5. Eаgle: команда SCRIPT. 6. Combining hand-routing and auto-routing in eagle site:electronics.stackexchange.com. |