Оптимизирует расстановку деталей на perfboard (макетной плате) по сетке отверстий. Вызывай, когда нужно получить компактный план размещения и соединений по заданному списку деталей и нетлисту.
Этот skill превращает описание схемы (детали + корпуса + соединения) в компактную раскладку на макетной плате, минимизируя площадь и гарантируя отсутствие электрических конфликтов.
Минимизировать (чем меньше, тем лучше):
5 <= Y <= 25). Штраф за размещение вне этого диапазона, если внутри есть свободное место: 30.0.hasClearanceUnderneath: true, имеют свободное пространство (clearance) между платой модуля и макетной платой.allowPlacementUnderBoard: true, РАЗРЕШАЕТСЯ размещать внутри зоны bodyKeepout модулей с hasClearanceUnderneath: true, но корпуса мелких компонентов при этом не должны накладываться на отверстия, занятые пинами модулей с hasClearanceUnderneath: true.allowPlacementUnderBoard: false размещать внутри чужого bodyKeepout категорически запрещено.Для всех схем использовать пошаговый метод:
./tools/auto_route.js.auto_route.js) всегда отдавать приоритет уже существующим сегментам той же цепи (стоимость 0.1 против 1.0 для новых). Это предотвращает "раздвоение" дорожек и создание параллельных путей (пузырей).node ./tools/score_layout.js для проверки Score и отсутствия КЗ.SVG (node ./tools/json2svg.js) и проверка "глазами"../viewer/index.html в браузере и загрузить сгенерированный JSON.Для работы с раскладкой используй следующие команды (пути относительно корня скилла):
Автоматическая трассировка (auto_route.js):
Добавляет оптимальный путь между двумя точками для указанной цепи в JSON-файл.
node ./tools/auto_route.js <file.json> <netName> <x1> <y1> <x2> <y2>
Параметры: netName — имя цепи, x1,y1 — старт, x2,y2 — финиш.
Бенчмарк и проверка КЗ (score_layout.js):
Рассчитывает итоговый Score и выводит список всех найденных конфликтов.
node ./tools/score_layout.js <file.json>
Генерация SVG (json2svg.js):
Создает визуальное представление платы для быстрого аудита.
node ./tools/json2svg.js <file.json>
Записывать в ./layout/perfoboard-layout.json со структурой:
{ board, bbox, components: [{ref, package, pins: [{name, x, y}]}], nets: [{name, segments: [{x1,y1,x2,y2}], jumpers: [...]}] }