если бы было так уж просто в реализации.
На самом деле при расстановке компонентов по плате очень много не формальных моментов, над которыми человек задумывается и принимает решения по ходу работы в зависимости от особенностей конкретной платы. Как всё это объяснить программе, если даже и человек этого заранее может и не знать? Это не считаю наличия на большинстве плат компонентов, расположение которых вообще обязано быть строго определенное.
Можно, конечно, вначале определить на плате области с ограничениями к размещению (например, с ограничением на высоту устанавливаемых компонентов - и чтобы утилита размещения всё это учитывала), потом вручную расставить всякого рода "предопределенные" компоненты, зафиксировать их, и дать команду остальное расставить автоматически.
И тут же окажется, что "остальное" весьма разнообразно по предъявляемым требованиям к размещению. Программа авторазмещения должна учитывать все-все-все возможные варианты, встречающиеся в схемах разных типов в принципе. В конечном итоге все распадется на классы цепей с разными наборами требований по размещению, и этих классов будет много. После этого КАЖДЫЙ из компонентов схемы потребуется отнести к какому-то из классов (это, разумеется, придется делать вручную). Кроме того, тут принцип размещения "минимизировать суммарную длину соединений на плате" может не работать, бывает много цепей "как можно короче любой ценой". Тогда все компоненты придется еще и на группы поделить (что с чем на плате нужно теснее группировать). И это только первый слой реальности, учитывающий только соединения точка-точка тонкими линиями. Тут не учтены полигоны, широкие проводники и т.п.
Возьмите для примера рекомендуемое размещение компонентов и разводку, рекомендуемую изготовителем компонентов для многих преобразователей напряжения - и представьте себе, как такое размещение получить автоматически из общих "типовых" соображений.
В общем, описание требований к размещению становится само по себе ОЧЕНЬ объемным и трудоемким. А результат всё равно будет недостаточным, поскольку в процессе трассировки всё равно окажется, что нужно многое перемещать и поворачивать для устранения узких мест разводки, размещения проводников нестандартной ширины или с нестандартными зазорами и т.п. |