Алгоритм расстановки переходных
отверстий для соединения контактов двух групп
А.В.
Бессонов,
прогр.,
bessonov@spb.prosoft.ru
luzin@eremex.com,
К.А.
Кноп,
матем.,
knop@spb.prosoft.ru,
ООО «Эремекс»,
Санкт-Петербург
Доклад содержит решение следующей задачи: соединить
(попарно) две группы контактов, первая группа (X) находится на слое Top,
вторая (Y) – на слое Bottom. На каждой цепи разрешён
только один переход с Top на Bottom.
Расстановка переходных отверстий (ПО) должна быть такой, чтобы не вызывать
«клинчей» и иных трудноисправляемых
ошибок. В конце доклада приведено также решение для соединения двух групп,
находящихся в одном слое.
Report
provides a solution to the following problem: connect (in pairs) two contact
groups, where the first group (X) is on the Top layer and the second (y) –
Bottom layer. For each net only one via from Top to Bottom is allowed. The via placement
should be effective so that no clinches or difficult to resolve errors occur.
The report also gives the solution for the routing of two groups on a single
layer.
Все различные случаи рассмотрены на таком примере:
группы содержат по 7 контактов, соединённых с помощью соответствия –
подстановки (5 3 2 7 6 1 4). Иными словами, первый контакт группы X соединён
с пятым контактом группы Y, второй – с третьим
контактом Y, ..., седьмой – с четвёртым контактом Y.
рис.
1 и 2. Схема расположения переходов для шин под прямым углом и ее реализация
Для этого случая правильная (бесклинчевая) схема
расположения переходов очевидна: каждый переход располагается в «своей»
горизонтали и в «своей» вертикали. Буквальная реализация этой схемы в трассировщике
TopoR имеет вид, показанный на рис. 2. Здесь все проводники слоя Top –
горизонтальные, а все проводники слоя Bottom – вертикальные. Если бы
переходные отверстия имели размеры, не превосходящие ширины проводников, то эта
реализация не содержала бы нарушений DRC (тонкие линии на
рис. 2). Однако размер ПО существенно больше, поэтому для устранения DRC в TopoR
применяется автораздвижка («сглаживание»). Результат без нарушений см. ниже на
рис. 3.
рис.
3. Реализация без нарушений DRC
При этом суммарная длина проводников немного
увеличилась (вместо 28.18 мм на рис. 2 она составила 30.68 мм на
рис. 3), но отсутствие нарушений, несомненно, оправдывает увеличение длины
на 9%.
Отметим, что алгоритм работает правильно независимо
от величины расстояний между контактами, но при удаленных друг от друга
контактах результат сглаживания меньше отличается от «несглаженного» исходного
значения.
Здесь мы рассмотрим случай, когда группа контактов Y
находится существенно правее группы X. Иными словами, все
проводники отходят от X вправо и подходят к Y
слева. Схема соединения для подстановки (5 3 2 7 6 1 4) будет такой
(рис. 4):
рис.
4. Параллельные шины, вариант 1
Как именно получена такая схема? Например, как выяснить, что переход на первой
цепи (X1–Y1) должен располагаться
левее и выше перехода второй цепи? Для ответа на этот вопрос продемонстрируем
другую картинку (рис. 5):
рис.
5. Топологическая схема расстановки переходов, начальная расстановка
Представим, что все проводники из X
выходят под 45° вправо-вверх, а все проводники из Y приходят под углом 45°
слева-сверху. Точки, получающиеся на пересечении этих проводников, и являются
точками топологической расстановки переходов. После того, как топологическая
схема расстановки найдена, все полученные переходы моментально смещаются вниз
до ближайшей (из двух возможных) горизонтали, в результате получаем изображение
на рис. 6, которое после сглаживания преобразуется в рис. 7:
рис.
6 и 7. Параллельные шины, вариант 1, до и после сглаживания
Общая длина цепей на рис. 6 составляла 47.74
мм, а на рис. 7 – после подвижки переходов и замены ломаных дугами – всего
42.76 мм, то есть выигрыш в длине цепей составил более 10%. Но главное даже не
это, а то, что при любой другой схеме расстановки ПО возможны нарушения DRC, устранить
которые (с сохранением тех же габаритов внешнего прямоугольника) не удастся.
Теперь перейдём к рассмотрению более сложного случая
– когда группы контактов X и Y расположены так, что
расстояния между ними по горизонтали не достаточно для реализации
предыдущего случая. Тем самым, проводники слоя Top и проводники слоя Bottom
выходят из своих контактов в одном и том же направлении (для определённости,
вправо). Схема при этом может иметь примерно такой вид, как показано на рис. 8:
рис.
8. Параллельные шины, вариант 2 рис. 9. Граф разводки цепей
Алгоритм для определения топологического порядка ПО
для этого варианта может быть таким, как проиллюстрировано на рис.9.
Здесь вначале все контакты двух групп расположены в
строго определенном порядке друг под другом. Дальше строятся вертикальные
«уровневые» линии, между которыми порядок соседних контактов может либо
сохраниться, либо поменяться местами (это чем-то напоминает алгоритм «пузырьковой»
сортировки). Если на очередной линии уровня какая-то из цепей замыкается и
заканчивается, то на следующем вертикальном уровне оставшиеся цепи могут быть
сближены.
На всех точках, где цепи оказываются соединенными,
ставятся переходные отверстия.
Отметим, что такая схема разводки не гарантирует
оптимальности, но заведомо не содержит «лишних» переходов и петель по сравнению
с оптимальной схемой. Проиллюстрируем это реализацией в TopoR:
рис.
10 и 11. Реализация цепей в TopoR до и после сглаживания (28.8
мм, 0 нарушений)
рис. 12.
То же, с крупными переходными отверстиями (30.9 мм)
Отметим, что «физическое» расположение переходов на
рис. 11 и 12 достаточно сильно отличается от их «схематического» расположения,
показанного на рис. 9 и 10.
Постановка
задачи:
необходимо соединить (попарно) контакты двух групп X и Y, находящихся на одном
слое. На каждой цепи разрешены только
два перехода на Bottom и обратно. Расстановка должна быть такой, чтобы не
вызывать «клинчей» и иных трудноисправляемых ошибок.
Предлагаемое решение: разместить непосредственно
перед контактами одной из групп все переходы и тем самым свести задачу к
предыдущей. Для оптимальной прокладки рассмотреть и сравнить два варианта –
когда такой «комплект переходов» располагается около X, и когда он располагается рядом
с группой Y.