Eine Sache, die Sie nicht berücksichtigen, ist, dass ein Schaltplan nicht genügend Informationen enthält, um eine Platine richtig anzuordnen .
Grundsätzlich erfordert das PCB-Layout die Berücksichtigung und Anpassung von ein paar Dutzend Layoutanforderungen pro Teil , von denen keine im Schaltplan kodifiziert ist. Betrachten Sie nur die Bypass-Kondensatoren. Damit ein automatisiertes System den Überbrückungskondensator für jede Komponente ordnungsgemäß anordnet, müssen im Schaltplan einige zusätzliche Anweisungen enthalten sein, die dem Autorouter vorschreiben, dass die Spur zwischen den beiden Knoten eine bestimmte Länge unterschreiten muss.
Vermutlich benötigen Sie dann weitere Anweisungen, um die Priorität der Längenminimierung für verschiedene Netze zu kodieren , um Differentialpaare / kontrollierte Impedanz, Schutzspuren (falls erforderlich) usw. festzulegen.
Grundsätzlich gibt es eine Menge zusätzlicher Variablen, die die Platzierung steuern und die in schematischen / Ratsnest-Dokumenten normalerweise überhaupt nicht codiert sind.
Selbst wenn Sie davon ausgehen, dass Sie alle oben genannten Designbeschränkungen haben, ist der Platzbedarf für ein allgemeines Layout enorm . Dies entspricht dem Versuch, eine Gleichung mit Tausenden von Eingaben zu lösen, wobei jede Eingabe einen anderen, nichtlinearen Effekt auf alle anderen hat. Tatsächlich ist das Problem aus Brute-Force-Sicht völlig unlösbar. Jede Lösung muss daher einen heuristischen Mechanismus beinhalten, der seine eigenen Komplexitäten aufweist.
Realistisch ist der Hauptgrund, warum es nicht mindestens bessere Autorouter gibt, dass es einfach keinen Markt gibt. Der EDA-Markt ist im Vergleich zu vielen anderen Nischenmärkten für Spezialsoftware vergleichsweise klein, und selbst der beste Autorouter, der jemals existiert, wird einem realen Layout von einem tatsächlichen Menschen nicht einmal nahe kommen.
Wenn ich mich inmitten eines besonders langweiligen Layouts befinde, habe ich normalerweise einige Fantasien, meinen eigenen Autorouter zu entwerfen, indem ich etwas mit Vektorfeldern und simuliertem Tempern mache, aber selbst das würde sich nur einem lokalen Optimum nähern, anstatt einem allgemeinen optimalen Layout.