Работа в 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 — первичная трассировка. Идет сразу после шин. Пробрасывает как бы черновой вариант.

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

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

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 я расскажу в следующей статье.

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

  1. Как это ни странно звучит, но большая часть знакомых специалистов по трассировке плат (не архисложных), практически, не используют авто-режимы ни для трасс, ни для компонентов. Главный аргумент — чтобы автотрассировщики «поняли», что от них требуется, придется угрохать времени не меньше, чем развести самому. Многие автотрассировку используют как подсказку.

    1. Кстати, DI, вы очень уж увлекаетесь рванными цепями в схемном редакторе (если Вы ее рисовали), используя Net Label — расбросанные куски хуже воспринимаются в прочтении схемы. Это мое мнение.

      1. Да, для такой простой схемы вполне можно было все связи нарисовать. Тогда вся схема воспринималась бы подсознательно одним взглядом, как целое, и прочно сидела в голове.
        А при таком дурацком стиле рисования приходится для каждого вывода лазить по всей схеме, сличая бестолковые имена цепей, причем неизвестно заранее, на сколько точек еще эта цепь пойдет. Отследил одну, начал искать другую, забыв при этом передыдущую. Меня всегда бесили схемы ECовской техники, где надо было пролистать полальбома, чтобы найти нужное соединение. Но там элементов были тысячи. Создавать же проблемы в простых схемах не вижу никакого смысла. Почему из за лени одного человека десятки, а то и сотни других должны мучаться, додумывая за него соединения? Да и самому неудобно каждый раз распутывать эту абракадабру заново. Куда проще пробежать глазами по линии, чем анализировать разбросанные по всему листу индексы… Когда я рисовал здоровенные схемы в ORCade, и то обьединял в шины только шины адреса и данных, остальное же всегда разрисовывал полностью. Современные же схемы настолько просты, что ничто (кроме собственной лени) не мешает нарисовать ее по человечески. Хотя бы из уважения к тем, кто будет ее просматривать.

        1. Net Label больше не для читабельности схемы, а для ускорения разводки платы. Зачем тратить кучу времени прорисовывая каждую связь, когда тебе нужно лишь указать что и куда и развести платку под известную схему (CoLinkEx).
          Да и еще. себе платку под энту схемку развел в SL5 ручками. Сначала попробывал в орле не очень понравилось (стремнинько как-то выглядело), да и кучу времени убил на то чтоб понять что к чему в программе. Плюнул и решил по старинке в SL5.

      2. Кстати, полностью разрисованную схему и разводить гораздо проще. По ней уже видно, куда что идет, где возможны сложные пересечения. А когда кусочки схемы разбросаны по всему листу, безо всякой связи между ними, поневоле остается довериться автотрассировщику. И получить в результате вместо нормальной разводки запутанную паутину с кучей переходов. Может, для изготовления платы на заводе, с металлизацией, это и пройдет, но для утюга не годится. Да и неизвестно, как такая плата будет еще работать, из за кучи паразитных связей неоптимальной разводки…

  2. Да ну эти автотрассировщики в пень, лучше уж руками =)
    Автотрассировку в том же альтиуме использую иногда, чтобы быстро определить, можно ли вообще развести в один слой и сколько понадобиться перемычек. Потом развожу руками.
    А по поводу net label, имхо их надо юзать когда либо далеко тянуть провод, либо изображение загромождается. Или же когда нужно подключить один источник напряжения, вполне наглядно смотрится и нет смысла по всей схеме тянуть какие-нибудь 5В питания.
    С другой стороны, когда все пихают в шину, тоже не всегда удобно читать.

          1. > Выглядит хаотично и неаккуратно. А это всегда плохо, потому что красивая вещь как правило и работает лучше. :)

            — Вам шашечки или ехать?

            Видел фото плат, разведённых топором. Неплохо. Сам не пробовал, надо заценить.

        1. Ну т.к. топор тут финальная стадия получается (обратный экспорт в орел пока не возможен) то в топоре же их править проще простого. Там рисуешь топологию (как они должны пойти), а потом включаешь фриран и дорожи сами выстраиваются по DRC. А если надо подвинуть деталь, то еще проще — хватаешь деталь, тащишь куда надо, дорожки сами разбегаются и раздвигаются. При некоторой настройке и другие детали поедут отодвинутся.

  3. да ну этот игловский трэйсер, просто ни о чём… вот этот разводчик действительно убивает всех людей: http://www.freerouting.net, он работает не шустро, но очень качественно, лучшее из всего, что я видел. Радует, что можно его в любой момент приостанавливать и руками «помогать» с какой-нибудь дорожкой, при этом он достаточно толкОво двигает остальные. Набор скриптов для импорта/экспорта в Eagle есть на сайте, там-же можно демку посмотреть. Один мой товарищ во всю односторонние платы струячит на этом разводчике.

    To DIHALT:
    было-бы интересно твою платку ему тупо в лоб скормить, уверен будет не больше 20 вий, а может и вовсе без них получится на 2 стороны размахать.

      1. У Топора больно уж примитивно разводка выглядит. Как пацан спичкой с битумным лаком рисовал. Даже его разводку вполне можно по сетке перерисовать, и длина связей не намного увеличится. А то и уменьшится.
        А такими кривыми линиями обычно делали печатные платы в 60е годы на гетинаксе. Тогда считалось, что на резких перегибах повышается вероятность отрыва фольги от подложки. (Хотя дорожки было тогда по 3 и более миллиметра шириной).
        На стеклотекстолите же в 70е и более поздние годы обычно предпочитали разводку по сетке. Я свои платы стеклянным рейсфедером с лаком тоже всегда по предварительно нацарапанной сетке рисовал (с шагом 2,5 или иногда местами 1,25мм). А такие кривые линии выглядят уж больно по — делитански…

        1. Не на то обращаете внимание. Топор (вероятно в правилах можно учесть) трассу в нескольких местах под углом ввел в площадку — это не правильно. С угла площадки можно, но не с одной из сторон. Количество переходов тоже не очень то разнится. С количеством можно бороться, оптимизировав ручками расположение деталей и гейты, если есть. Чего нельзя допускать в трассировке для собственных нужд, так это переходы под компонентом… Тоже в правилах можно прописать, если возможно.

          1. Где например он под углом в пад ввел?

            Гейты он свапить умеет. Переходы под компонентами зло, согласен. Но мне лень было в правилах разбираться. Кстати, они у меня получаются плоскими и даже LQFN встал без перекосов :)

            1. Отмечено кружкамим: [URL=http://www.10pix.ru/][IMG]http://www.10pix.ru/img1/1190/2408349.jpg[/IMG][/URL]. Хотя, вероятно, достаточно увеличить значение SMD To Corner, чтобы выйдя под прямым углом из пада сразу не сворачивал на сторону.

        2. В смысле выглядит? Какая разница как она выглядит если все правильно и с минимальным числом переходов. В чем смысл перерисовки по сетке? Мне так такие плавные дорожки нравятся больше. Так что дело вкуса. Разводка по сетке проще.

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

          1. ИМХО, разводку по сетке ввели когда стали переходить от полностью ручного конструирования к автоматизированному. На первом этапе автоматизация касалась только документирования. Т.е. компоновка и трассировка выполнялись вручную, потом вручную же трассировка переводилась в вид. пригодный для машинного хранения (описывались вектора из вершин полилиний и полигонов) и всё это вводилось в комп (стойка процессора, стойка памяти, стойка накопителей… ну, вы в курсе). Потом появились средства, облегчающие процесс ввода: планшеты, электронные перья и т.п. И уже потом стали появляться трассировщики и компоновщики…
            Так вот, как можно описать дорожку, имея ограниченный ресурс (человек-оператор и ЭВМ с 0.5 (и это неплохо!) Мб ОЗУ)? Только привязав её к довольно крупной сетке.
            При этом все каноны конструирования ПП гласят: чем плавнее дорожки, тем лучше характеристики платы (за исключением, ессно, особо оговоренных случаев типа печатных ВЧ компонентов и т.п.).

      2. [URL=http://www.radikal.ru][IMG]http://s40.radikal.ru/i090/1102/06/719c3742af53.jpg[/IMG][/URL]
        В Топоре можно сделать и с 37 виа.
        А вообще большое кол-во переходов уже предопределено на этой плате тем, что SMD-компоненты расположены с двух сторон и должны соединяться друг с другом.

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

      1. Правильно я понял, что Eagle умеет выполнять обмен элементами (из раных корпусов) и равноценными ножками при автоматической разводке дорожек и при происке (автоматической) расстановке элементов ? ну или одновременно и то и то.

        1. Насчет обмена в автоматическом режиме не в курсе. Но при ручном соединении вроде как может. Там даже спец инструмент на панели есть — пинсвап или как то так.

  4. ДиХалт,

    Еще просьба в общем по сайту: если статья состоит из нескольких частей — просьба в шапке каждой части сделать ссылки на все другие части этой статьи.

    По некоторым статьям предыдущие части приходится искать части через глобальный поиск.

  5. Имхо из легковесных DipTrace все же удобнее и функциональнее. Без религии. Авторасстановка какая-то есть, подбор, етс. Если уже и искать альтернативу, то что-то потяжелее, типа ARISa .. а нужно то для щастья — свап элементов и их ног при переборе.

  6. Ди, ты писал:
    «…Переходы под компонентами зло, согласен. Но мне лень было в правилах разбираться. Кстати, они у меня получаются плоскими и даже LQFN встал без перекосов…»

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

  7. Ди, подскажи пожалуйста, вот и Игл, и Топор делают двухстороннюю автотрассировку. Пады одновременно находятся как на слое Топ, так и Боттом, поэтому автороутеры делают на самих падах переходы на противоположный слой вместо того, чтоб поставить ВИА где-то рядом с ПАДом и через него делать переход. Тут два взаимозаменяемых вопроса назрело:
    1. Как заставить автоматом ставить либо Топор, либо Игл переходы не на самих падах?
    2. Как паять платы, у которых ножку припаять можно только с одной стороны, а с другой — корпус мешает подлезть (штыри, гнезда, разъемы, кондеры электролитовы)?

    И вообще… С наступающим (или уже наступившим — смотря, когда прочитаешь) Новым годом! Благодарю за сайт, за интересные статьи и отзывчивость. Сам процветай, да сайт пусть тоже процветает в следующем году. И кота поздравь — его же год, все-таки :)

    1. Ну на промышленных платах проблемы нет — отверстия метализированы. А вот проблемы колхозников никого не волнуют. Так что скорей всего никак.

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

    2. Конечно с очень большим запозданием, но отвечу на первый вопрос =)
      Чтобы орел не делал виа внутри определенной области, я рисую прямоугольник (Rect) в этой области и в его настройках указываю слой vRestrict. Потом трассирую.

  8. Несколько удивил результат сравнения трассировки платы Топором и FreeRouter’ом. Хотелось бы получить проект и сравнить самим еще раз. Пока что попробовали сделать разводку платы, которая есть у FreeRouter’a в примерах (hexapod_empty.dsn).

    FreeRouter 14 Виа. Время трассировки более двух часов, точно не засекала. Может быть из-за работы по сети, но он у меня дважды зависал, только с третьего раза результат получила. :(
    Среди примеров нашла эту же разведенную плату с 9 Виа.

    TopoR 0 Виа. Через минуту от начала трассировки получаются варианты с 5-7 переходами.

    1. Аццки режет глаз когда (см. верхний горизонтальный разъём или что там с 2 рядами) дорога проходит вертикально между ног, потом идёт внутри рядов, потом выходит наружу. Самое место для возникновения косяков при монтаже/ремонте.

  9. Тут решил по экспериментировать с орлом, развел плату все более-менее встало, окромя одного футпринта который в упор ЛУТом не выходит. Можно ли его как то изменить в готовой плате с минимальным кол-вом усилий?
    ЗЫ: ИМХО спекктра от каденса в качестве автороутера вне конкуренции :)

    1. Будьте добры, пришлите плату (dsn-файл), которую Вы разводили в Спекктре, мы сделаем разводку в Топоре. Можно будет сравнить. ;) Я могу вывесить и те проекты, которые мы сами делали, но, думаю, убедительнее будет на Вашем примере.
      Можно прикрепить файл здесь или отправить мне на почту vorobyeva.ov@spb.prosoft.ru

    1. Что значит не по стандартам и не по тому как расставишь компоненты?

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

  10. > О совершенно убийственной штуке под названием TopoR я расскажу в следующей статье.
    Ну дык эта… Кагда? :) Интересна же. Я на нее посмотрел и понял, что такие травы не курю и такие настойки не пью, чтобы самому разобраца. :( С игловским попробовал по твоей статье, вроде чо-то он там нароутил… Не очень понравилось, действительно можно пооптимизировать еще.
    И еще че-то я недопетрил, как ему объяснить, что я хочу трассировку по одному слою, ибо то что я там на пробу разводил по двум слоям слишком жирно будет.

    1. Да бесполезна она. С нее на ЛУТ не вывести файлы :((( Не могу найти ничего подходящего, чтобы из гербера нормально, без косяков напечатать. То ли герберы там кривые то ли чо. Пробовал из GEDA — на картинке в окне GEDA все ок. Пытаюсь в SVG или PDF сконвертить — получается полная херня. На мелких падах не совпадают дорожки.

  11. Ну прям как quickroute из PCAD2002. :)
    shaperouter — и то получше строит.
    Топор — действительно рулит. Хотя есть ещё и Situs роутер.

    А что касается авторасстановщика — то без параллельной трассировки он бесполезен. Как показала практика — не всегда то, что визуально выглядит удоборазводимым — реально разведётся удачно. Бывает даже наоборот: синии линии пересекаются жутким образом, а запустишь трассировщик — и всё красиво…

    Вот бы была технология autorote&autoplace: параллельно трассировке перемещать и вращать компоненты. А то прям и хочется все SMD резисторы заменить перемычками и потом после трассировки вручную вернуть на место.
    Вроде как в топоре такая фишка присутствует — разобраться бы в ней…

Добавить комментарий