Новичок в проектировании печатных плат — почему не существует автоматического размещения компонентов?

Программное обеспечение для проектирования схем, которое я видел, имеет возможность автоматически разводить дорожки и т. Д. На печатной плате.
Но почему это программное обеспечение не может автоматически размещать компоненты на печатной плате, скажем, для минимизации общего размера платы?
Это слишком сложно для автоматизации?

Автотрассировщики должны иметь возможность оптимально размещать компоненты на основе ограничений (например, «кнопка должна быть здесь», «светодиод может быть где угодно в этой области»). Они также должны иметь возможность выбирать оптимальные выводы для использования на частях, которые имеют множество эквивалентных выводов (т. е. «использовать любой вывод ввода-вывода с ШИМ»). К сожалению, я никогда не видел ни одной из этих функций. Возможно когда-нибудь.
Я думаю, что у Altium есть авторазмещение, но некоторые компоненты предназначены для размещения в стратегически важных местах на плате, а программное обеспечение понятия не имеет, что является стратегическим, а что нет. И если вы уменьшите общую площадь доски, вы можете сделать невозможным четкую трассировку. Я никогда не использовал autoplacer, и я редко использую autoroute, и когда я делаю autoroute, это для выбора сигналов, таких как земля.
размещение (и ориентация, смена ворот, смена контактов) очень, очень важны. Это самое важное для получения хорошей маршрутизации. Я думаю, что разумное авторазмещение должно начинаться с размещения схемы, если только схема не является одной из тех современных мерзостей «коробки, окруженные списками соединений».
Исходя из фона, который не связан с схемотехникой, мне кажется, что крысиного гнезда должно быть достаточно для оптимального размещения всех компонентов, возможно, с некоторыми ограничениями. Большинство реальных схем разрабатываются вручную?
Diptrace имеет авторазметку. Это ужасно, однако.
Короче говоря, оптимальное расположение компонентов — даже без учета всех соображений, вытекающих из того, что это реальная неидеальная схема — очень сложная проблема CS. По сути, это пример задачи коммивояжёра, и поэтому оптимальное решение невозможно.
Похожие темы: здесь и здесь . Оба являются обзорами дизайна печатных плат для начинающих, которые были проложены автоматически.
Этот вопрос заставляет меня задуматься, почему эти автотрассировщики/автоплайсеры такие плохие! Почему люди не вкладывают больше исследований и усилий, чтобы заставить их работать? (Может быть, и все эти возможности спрятаны в проприетарных пакетах...?) Не так уж и сложно добавить галочку "этот колпачок относится к этим контактам питания"...
@ Gregd'Eon Мне тоже интересно. Конечно, при большей работе авторазборщики смогут понять роль развязывающих колпачков и смоделировать шум цепи и т. д.
@ Адам Да, я думаю, это еще один вопрос, на который мы никогда не ответим. Почему все программы для проектирования печатных плат настолько плохи, что лишь немногим лучше, чем карандаш+бумага?
@Navin, если ты в это веришь, я хотел бы знать, сколько сложных проектов ты разработал с помощью САПР и сколько с помощью карандаша и бумаги?
@NickJohnson: Практически невозможно. Хотя вычисление действительно оптимального результата требует больших вычислительных ресурсов, существуют алгоритмы, которые могут получить «достаточно хорошие» результаты за очень разумное время. Достижение оптимального решения в пределах 95–98 % урежет его для большинства сценариев. Во-вторых, в зависимости от количества компонентов получение оптимального решения может оказаться возможным, если вы хотите, чтобы ваш компьютер работал какое-то время.
@whatsisname Да, вы можете получить хорошее приближение к базовому TSP. Однако это намного сложнее сделать с конструктивными ограничениями реальной схемы.
@NickJohnson: Эта часть верна, да, поскольку в спецификации программного обеспечения не указано много важной информации.
@NickJohnson Только комментарий: где-то в диапазоне от 10 до 30 лет назад (дает вам некоторый объем), я помню, как читал отчет о том, что TSP был решен - что бы ни означало «решено» в этом контексте. Я предполагаю, что «решено» означает, что был заявлен алгоритм или метод, дающий оптимальные результаты для набора ограничений. | После этого они, несомненно, перешли к проблеме N-тела :-).
Еще давным-давно в пакетах PCD имелось рудиментарное автоматическое размещение, которое НЕ пыталось размещать компоненты оптимально, но было полезно для того, чтобы с самого начала остановить все, что заканчивалось в большой куче. В старые дни DOS Protel я написал программу, которая обрабатывала текстовый выходной файл схемы, чтобы переместить и изменить размер идентификаторов компонентов на шелкографии, чтобы они, например, лежали внутри посадочного места компонента и не перекрывали никаких отверстий. Я использовал это в основном для осевых компонентов с двумя сквозными отверстиями, таких как резисторы. Расширение этого с набором правил для перемещения выбранных компонентов в соответствующие ....
.... относительные местоположения - это просто вопрос. Труднее всего было бы определить, что это было за «это». Я не знаю, дает ли более современное программное обеспечение такую ​​же степень доступа и управления дескрипторами и свойствами компонентов, как текстовое программное обеспечение DOS (совершенно непреднамеренно).
@ Адам Ты недооцениваешь. Как он узнает, какие колпачки подходят к какому компоненту? Какие ИС наиболее чувствительны к шуму или производят больше всего шума и поэтому имеют приоритет? Или вы просто ожидали, что он будет нацелен на самый низкий средний уровень шума по всем направлениям, будь прокляты пики, пока есть глубокие долины, поэтому он усредняется и ожидает, что это сработает? И как вы ожидали, что он будет имитировать шум ДО того, как будут проложены трассы и ничего не зная об ИС?

Ответы (6)

Недавно я разрабатывал некоторые печатные платы, и я бы посоветовал вам НЕ использовать автоматическую установку или автоматическую трассировку для вашего конечного продукта. (Протеус имеет автоматическую россыпь.)

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

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

  • Развязывающие конденсаторы должны располагаться физически близко к микросхеме.
  • Должны быть петли наименьшей замкнутой площади.
  • Плоскость заземления должна быть максимально прочной.
  • Никакие мешающие сигналы не должны находиться рядом с вашим кварцевым генератором и т. д.

Ваше программное обеспечение не будет учитывать эти концепции, потому что они не упомянуты в вашей схеме. Вы узнаете об этом только тогда, когда у вас будет изготовлена ​​печатная плата, и она не всегда будет работать должным образом. Я не говорю, что это не сработает. Это может сработать в 90% случаев, но вы должны учитывать и эти 10%.

Я предлагаю вам изучить некоторые концепции проектирования печатных плат и попробовать разместить и развести их самостоятельно. Вы всегда можете опубликовать свою схему и макет платы на форумах, и эксперты выскажут свое мнение/предложения.

+1 за дождевого червя и картошку. Каждый раз, когда я использовал авторазводку и автотрассировщик, я делал критические части и оставлял их легкой частью, но даже это было слишком много, чтобы просить: 60% платы укладывалось и разводилось после последнего прохода. Лучше делать все самому, за исключением, пожалуй, проектов с огромными требованиями и большим количеством свободного места.
@Mister - Да, ты прав. Даже я время от времени использую автомаршрутизацию, чтобы получить представление о маршрутизации, и заканчиваю критические участки. Однако сейчас я использую Eagle, и у него нет автоматической россыпи.
Опечатка в моем комментарии выше: «для огромных проектов с НИЗКИМИ * требованиями». Очевидно, что высокочастотная цифровая частота не будет хорошо работать с автотрассировкой и авторазмещением...
Я не вижу никакой теоретической причины, по которой автотрассировщик не мог бы учесть все вышеупомянутые ограничения и лучшие практики при авторазмещении деталей. На самом деле, идеальный автотрассировщик должен уметь находить оптимальное размещение, которое соответствует этим целям лучше, чем человек. Конечно, это трудная проблема, но не невозможная, и я готов поспорить, что скоро мы начнем видеть облачные авто-маршрутизаторы с авто-расстановщиками, которые могут превзойти даже лучших людей.
@bigjosh - Ваш комментарий имеет большой смысл. Правильная маршрутизация и размещение имеют несколько рекомендаций, которые, если их разбить на простую логику, должны позволить компьютерам превзойти человека. Все, что останется, — это, может быть, триллионы расчетов — проверка тысяч полностью разведенных плат и поиск оптимального решения. С облачными системами это не должно быть слишком сложно. Будем надеяться, что вскоре начнется какой-нибудь проект с открытым исходным кодом, чтобы воплотить это в жизнь. Это может быть лучше, чем люди, в том смысле, что люди на самом деле не идут на несколько итераций, как только они нашли рабочее решение — по крайней мере, я этого не делаю.
Выполнение размещения и трассировки на однослойной печатной плате может привести к потере МНОГО времени, если вы делаете это вручную. Я хочу, чтобы приложение подсказывало мне, как разместить компоненты, чтобы получить как можно меньше «воздушных проводов» в проектах «сделай сам». Конечно, это должно позволить мне добавлять ограничения, такие как исправление размещения определенных компонентов.
@dan - я думаю, мы все хотим эту функцию. Однако в настоящее время ни один пакет САПР не обеспечивает надежного решения для этого. Как сказал bigjosh, это возможно теоретически, но на данный момент вам лучше сделать размещение самостоятельно.
@Whiskeyjack В некоторых программах есть автоматическое размещение и автоматическая маршрутизация. Насколько он хорош, думаю, решать каждому. Я лично расставляю "важные" компоненты вручную, а остальные пусть расставляет программа (+автомаршрутизация).

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

По сути, компоновка печатной платы требует рассмотрения и учета нескольких десятков требований к компоновке каждой детали , ни одно из которых не закреплено в схеме. Рассмотрим только шунтирующие конденсаторы. Чтобы автоматическая система правильно разместила обходной конденсатор для каждого компонента, вам потребуются дополнительные директивы на схеме, которые предписывают автотрассировщику, что дорожка между двумя узлами должна быть меньше определенной длины.
Предположительно, вам потребуются дополнительные директивы для кодирования приоритета минимизации длины для различных цепей, что-то, чтобы диктовать дифференциальные пары/управляемый импеданс, защитные трассы (при необходимости) и т. д.
По сути, есть много дополнительных переменных, которые управляют размещением, которые обычно вообще не кодируются в документах схемы/рацнеста.

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


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

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

У моего роутера есть россыпь и поддержка "комнат". Это позволяет вам рисовать области и назначать части «комнатам» из схемы. Автоматическое размещение сгруппирует их вместе в комнате, к которой назначена часть. Почти уверен, что у него есть поддержка этого разъема, он тоже должен идти в это место. Существует также инструмент, который может выполнять автоматическое размещение развязки и выбор/оптимизацию деталей на основе результатов моделирования. Это не дешево, хотя :), но это работает.

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

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

Какой у вас пакет САПР?
Высококачественная версия Allegro с развязкой от Sigrity, которая теперь принадлежит cadence. Мне тоже нравятся прокладки. Этот новый автомаршрутизатор на основе пути, который должен выглядеть как ручная маршрутизация, выглядит интересно.
У меня было предчувствие, что это может быть Каденс. Я использовал его для ознакомления с проектированием интегральных схем, это действительно отличный пакет, и я верю, что его автотрассировщик и авторазводчик могут быть эффективными, если ограничения правильно сформулированы (что сводится к опыту/обучению).
Хорошо сказано. Размещение деталей и маршрутизация не являются невозможными, просто это намного сложнее и нечетче, чем схематический захват. Прежде всего, принципиальная схема далека от полного ввода для автоматического размещения деталей. Обычные пакеты печатных плат предназначены для проводки, а не автоматического размещения.

В 1974-1975 годах я работал в отделе автоматизации проектирования в Honeywell. С тех пор проблема не изменилась:

  1. Оптимизация невозможна с вычислительной точки зрения. Как и большинство задач глобальной оптимизации, это NP-Complete, что означает, что сложность вычислений растет ужасно быстро. Поскольку вы не можете ждать триллион лет (или того хуже), мы можем считать, что оптимальное решение невозможно найти.
  2. Программе непонятно, что именно вы хотите оптимизировать. Логическая группировка в соответствии с вашей моделью организации схемы? Длина следа? Площадь доски? Паразитическая связь? Задержка распространения? Тепловыделение (максимальная температура)? Термический сброс от более мощных секций к чувствительным к температуре компонентам? Радиочастотное излучение? Шум? Механические свойства (например, размещение более массивных компонентов рядом с механическими опорами? Эксплуатационные характеристики, такие как не располагать разъемы на плате ближе друг к другу, чем это могут сделать человеческие пальцы? Внешние ограничения, такие как расположение разъемов или размещение в доступном пространстве (отсутствие конфликтов с корпуса, вентиляторы и др.)

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

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

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

Вот вам и Сингулярность...
@PeterMortensen Человеческое мнение не будет иметь значения после Сингулярности.
Я думаю, что пункт 2 - действительно единственная важная часть ответа. Существует много алгоритмов, которые могут очень быстро решать NP-полные задачи со значительными размерами задач в «достаточно хорошей» степени с очень приемлемыми временными затратами, достаточно хорошими, часто в пределах 2-3% от оптимального.
Это хорошее замечание о «достаточно хорошем»! Хотя, чтобы быть полностью технически точным, мы должны тщательно определить слово «решить» (как вы это сделали). Однако тогда стоимость ЦП и хранилища БЫЛА огромной проблемой. Но даже несмотря на то, что размеры задач выросли, наши вычислительные мощности выросли еще больше.

У моего софта есть россыпь. Я запустил его один раз, просто чтобы посмотреть, что произойдет. Он с ревом прорвался через плату и собрал все компоненты на ней. Когда я посмотрел на него, части были ВЕЗДЕ. ИС находилась в одном углу, а ее развязывающий колпачок — в другом. Критический путь шел зигзагом взад-вперед по доске.

Я хочу сказать, что размещение — это самая сложная часть макета, чтобы сделать ее правильно. Во-первых, это механические ограничения. ME/промышленный дизайнер хочет, чтобы ваш разъем/переключатель/потенциометр/светодиод/любой другой внешний интерфейсный компонент отделялся от платы в определенном месте. Некоторые компоненты могут быть слишком высокими, чтобы находиться в определенных местах внутри корпуса. В цепи могут быть части, требующие определенного зазора для изоляции.

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

Мне нравится этот ответ, хотя в какой-то степени кажется, что программное обеспечение не справляется со своей задачей.
@ Адам Чем больше у вас будет опыта, тем лучше вы поймете. Процесс размещения невероятно сложен, и крысиное гнездо рассказывает только часть истории. Возьмем, к примеру, развязывающие колпачки. Откуда россыпщик должен знать, куда их ставить? Насколько это касается, все эти колпачки могут быть размещены вместе в произвольном месте.
Ограничения по расстоянию кажутся возможным вариантом для этого.
Как называется ваше программное обеспечение?

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