Работа в Eagle CAD. Часть 3. Автоматическая трассировка плат

Ленивый я стал, раньше все разводил ручками. А сейчас, делая плату с тремя микрухами логики и одним мелким проциком, понял, что одним слоем я никак не обойдусь. А раз так, то гулять так гулять. В Eagle есть автотрассировщик который довольно шустро разводит по двум слоям и при этом имеет много настроек, постараюсь дать их описание, а также общие рекомендации по трассировке.

Расставляем компоненты
Один из главных недостатков Eagle CAD отсутствие авторасстановщика компонентов. Это минус, т.к. от оптимальной расстановки зависит очень много. Но не беда, расстановку можно делать и вручную, главное делать это сразу же, по мере добавления деталей на схему. Словно мы хотим развести все вручную. Если сначала нарисовать схему, а потом пытаться расставить, то получится такая каша, что понять что то там будет совсем нереально. А так мы сожрем этого слона по кусочкам, сильно облегчив автороутеру жизнь.

Был у меня вот такая схема:

зазырить в полный рост

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

После ручной расстановки получилось что то похожее на это:

Параметры DRC я выставил исходя из условий изготовления джедайским лазерным утюгом. А именно зазоры 0.3мм, минимальная дорожка 0.2мм, пятачки и переходки побольше, чтобы не меньше чем 1.8мм в диаметре мне еще их без станка сверлить и попадать переходки между слоями.

Осталось нажать кнопу Auto (Автотрассинг) и настроить параметры трассировки:

Сразу скажу, что я хоть и знаю что значит большинство параметров, но сказать как лучше их выстроить не подскажу. У меня не очень большой опыт работы с этим трассировщиком (предпочитаю юзать Топор)

Вкладка General

  • Preferred Direction предпочтительное направление по слою. Стратегия трассировки довольно проста по одному слою мы идем в одну сторону, а по другому перпендикулярно. Исходя из этого, любую схему можно теоретически развести без пересечений. На практике утыкаемся в дырки, детали, и толщину проводников и все не так гладко. Но в целом идея ясна. Обычно поверху идем вертикально, по низу горизонтально. Хотя можно и поменять.
  • Routing Grid шаг сетки. Чем мельче, тем роутеру проще будет, но тем больше у него вариантов, а значит трассировка будет дольше. Минимальный шаг 0.8mil вроде бы. Я обычно ставлю 2mil
  • Via shape форма переходных дырок. Обычно делаю круглые, они обходятся проще. Но квадратную сложней сорвать при сверлении т.к. ее площадь квадрата при равном радиусе (Вспомнилось тут К верхнему днищу бака приварено треугольное отверстие диаметром три на четыре. Гы гы) будет больше, а значит она крепче будет за текстолит держаться. Для наколеночного производства это критично.

Содержимое всех дальнейших вкладок одинаковое, поэтому я вначале опишу что там зачем, а потом расскажу, что внутри можно подкрутить.

Вкладка Follow-me настройка полуавтоматического трассировщика. Задает стратегию работы инструмента Follow-me. Т.е. когда тыкаешь начало и конец трассы, а трассер сам тебе предлагает вариант прокладки маршрута.

Вкладка Busses стратегия прокладки шин. Помните, что можно кидать на схемотехнике шины. Синая такая линия. К которой подсоединяются именованые проводнички. Она не только визуально направляет взгляд и дает соответствие схемы гостам, но и как бы обьединяет проводники в шину, что учитывается трассировщиком. Шины разводятся в первую очередь.

Route первичная трассировка. Идет сразу после шин. Пробрасывает как бы черновой вариант.

Optimize1n Оптимизации чернового варианта, подгон их под заданные параметры. Т.е. если в черновом варианте у нас стопитцот дырок получилось, но нам это совсем не надо, то в оптимизациях мы задаем правила, чтобы число дырок от итерации к итерации снизить к минимуму. За один прием сразу это сделать не получится, орел же птица, а у птиц мозга немного. Поэтому тут нужна целая стая последовательных оптимизаций коллективный разум. Их там можно вручную надобавлять очень много. Но и ждать придется долго. Я бывало и на ночь ставил 🙂

А теперь о том, что внутри вкладок и что за что отвечает. А там цены действий. Орел птица не только гордая, но и жадная. Поэтому при трассировке оперирует понятием цены. Если мы сказали, что много дырок слишком дорого, то он будет пытаться дырки избегать, чтобы снизить цену.

Layer Cost цена слоя. Можно указывать приоритет одного слоя над другим. Например, можно нижний слой сделать очень дешевым, а верхний очень дорогим. В результатет разводка пойдет по максимуму внизу, а сверху разве что перемычек настрогает. Но тут тоже не все так просто, одной ценой слоя не обойтись.

Maximum разные максимумы

  • Via максимальное число переходных дырок. На Route можно поставить и побольше, а вот в оптимизациях последовательно загнать в минимум.
  • Segments максимально число сегментов в дороге. Сегмент, как я понял, это кусок дорожки от дырки до дырки, или от дырки до компонента.
  • ExtdSteps не совсем догнал что за параметр. Как то связан с максимальным числом поворотов дорожки.
  • Ripup Level число уровней отката. Тут небольшое отступление о работе алгоритма трассировки. Если упрощенно, то там такая схема: Вначале роутим что можем, максимально следуюя правилу минимальной цены. Потом смотрим где у нас пересечения, рипупим (люблю это слово, да) мешающие дорожки, роутим еще раз, но уже идем на компромисы, повышая цену. И так далее. Глубина рипупа дорожек это и есть Ripup Level. Логика подсказывает, что чем он глубже, тем больше маневра у роутера, но тем дольше будет трассировка.
  • Ripup Steps число попыток отката дорожки. Чем больше тем лучше, но и тем дольше.
  • Ripup Totals сколько одновременно дорожек рипупится. Опять же все упирается в мощность компа.

Cost Цены элементов

  • Via цена переходной дырки. Сделаешь мало орел тебе всю плату проклюет. Задолбаешься сверлить. Много у него крыша от жадности сьедет и развести он не сможет. Рекомендую на первичном прогоне не жадничать, а число их уменьшать на оптимизации.
  • NonPrefs цена ухода с выбранного направления. В вкладке General мы выбрали линию партии для каждого слоя, а тут указывается цена ухода с направления. Сделаешь мало, дороги будут круголять. Много пойдут как истинные трактористы строго по вертикали или горизонтали. Цену, имхо, лучше вначале сделать высокой, а потом понижать по мере оптимизации. Чтобы вначале он все развел вверх-вниз/влево-вправо, пусть и с миллионом дырок, а потом посрезал излишки.
  • ChangDir цена смены направления. При высокой цене будет пытаться пустить напрямик, а при малой может и повилять.
  • OrtStep/DiagStep цена диагональных и ортогональных телодвижений. Честно говоря, даже не знаю что там и менять. Да и в мануале советуют осторожней обращаться с этой величиной, дабы птыц не сьехал в маразм. Можно не трогать.
  • ExtStep толком не просек что за опция, как то связано с заломом дорожек под 45 градусов относительно курса партии для конкретного слоя. В документации на Eagle рекомендуют сделать помельче для Route и побольше для оптимизаций.
  • Bonus Step/Malus Step разница в стоимости между плохими и хорошими зонами. Хорошая зона чистое поле. Плохая возле компонентов. Например, между площадок smd резистора. Если сделать большую разницу, то трассировщик пожадничает и, например, сделает еще одну переходную дырку (т.к. ее цена ниже окажется), чтобы обойти резистор, а не пускать дорожку под ним.
  • PadImpact/SMDImpact цена площадок возле контактов (плохая зона). Если мало, то стараемся держаться подальше от дорожек. Если выставить побольше, то будет более терпимой и приоритетом тут будет больше курс слоя.
  • Bus Impact это правила для шин. Если сделать эту цену побольше, то трассировщик первым делом постарается кинуть линии шины напрямки. А если не жадничать, то она может еще и покруголяет.
  • Hugging цена близко расположенных дорожек. Чем больше цена, тем плотней будут стараться идти дорожки, но не ближе чем DRC позволяет! Лучше сделать побольше для роутинга проще развести первичку будет, а потом поменьше для оптимизаций, чтобы он их разредил и нам проще было плату травить.
  • Что такое Avoid и Polygon я так и не догнал. Что то связано с силовыми полигонами на многослойных платах.

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

Что поначалу вызвает неслабый батхерт и производство кирпичей в промышленном масштабе. Но не все так плохо, скорей всего оптимизатору удасться из этого кошмара что нибудь нарулить.

Вот, после третьей оптимизации, уже гораздо приличней:

Потом, когда процесс остановится, надо посмотреть сколько процентов. Если внизу окна будет 100% значит вся плата разведена полностью. У меня вот загорелось 99.2% и видно, что одну дорогу он таки не осилил.

Ее надо пробросить вручную.

Заходим в File Run. Запускаем скрипт statistic-brd.ulp и смотрим что у нас получилось. Выдало, что у нас 82 переходные дырки. Терпимо, но, честно говоря, не фонтан. Я на этой схеме птичкой добивался около 70 (но того результата у меня не сохранилось и я тут просто заново, ради статьи, запустил автороутинг).

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

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

О совершенно убийственной штуке под названием TopoR я расскажу в следующей статье.

5 1 голос

Оцените статью!

guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии