Forum: Platinen Mein Autorouter basiert auf z3.


von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Hallo,

das ist mein früher Entwurf eines Autorouters:

https://github.com/TheTesla/z3route/blob/master/routehvd.ipynb

Später soll er noch die automatische Platzierung der Bauelemte 
übernehmen, und zwar Place&Route als integriertes Problem. Auch gleiche 
Bauelemente im selben Gehäuse soll er später automatisch zuordnen, z. B. 
wenn 4 OPVs in einem 14-PIN-IC sind.

Momentan ist er noch etwas langsam. Vielleicht schreibe ich einmal einen 
Solver, der das SMT-Problem zunächst in ein SAT-Problem umwandelt (wie 
in der Anfangszeit der SMT-Solver) und dann mit einem 
Patternmatching-Ansatz evtl. auch mit Neuronalen Netzen die CNF 
analysiert und günstige Literale rät.

Welche Möglichkeiten gibt es sonst noch den z3 etwas zu beschleunigen? 
Oder soll ich auf einen anderen Solver zurückgreifen? (Parafrost?) Kann 
ich den als Backend für z3 verwenden, damit ich nichts am Code ändern 
muss?
von Andreas H. (ahz)


Lesenswert?

Stefan H. schrieb:
> das ist mein früher Entwurf eines Autorouters

Herzlichen Glückwunsch :)

Unklar ist mir persönlich allerdings was Das werden soll.
Constraintsolver für PCBs einzusetzen hat ja eigentlich schon eine lange 
Tradition. Oft mit dem Ergebniss das die Berechnung zu Costly ist. Das 
hast Du ja auch schon gemerkt.

Wolltest Du etwas Neues ausprobieren? Dann wäre ein Text mit der Idee 
sehr hilfreich. Ansonsten ist im Zweifelsfall unklar, ob man das Konzept 
noch nicht verstanden hat oder Du einfach etwas falsch implementiert 
hast. Und, last but not least, wäre dann auch schneller ersichtlich ob 
es überhaupt interessant ist.

Oder soll das mal ein Tool werden dass Du auch praktisch einsetzen 
willst?
Da frage ich mich aber ob es nicht schlauer wäre den kompletten Solver 
in eine existierende Umgebung einzubauen um dort die komplette 
Infrastruktur benutzen zu können. Tools dafür gibt es ja Einige (i.e. 
KiCad, LibreCAD, Freerouter) un dDu könntest Dich mehr um die "echten" 
Probleme der Lösung kümmern.

/regards
von Maximilian (maxclaus)


Lesenswert?

Ich möchte nichts zu deinem Projekt schreiben, jedoch meinen Finger auf 
die Komplexität des Problems legen. Ein schreckliches Beispiel ist 
Freerouting in der Version 2. Diese Version 2.x ist kompletter 
disfunktionaler Blödsinn. Der Author hat zwar das Benutzerinterface 
etwas verbessert, den eigentlichen Router aber gänzlich zerstört. Z.B. 
versagt der Router sofort, wenn schon einige Leiterzüge händisch gelegt 
wurden.

Damit hat dieser Entwickler das Projekt nahezu zerstört. Jeder der naiv 
die Version 2 installiert, denkt, Freerouting ist Unsinn. Dabei 
funktioniert Version 1.x sehr gut.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.