Benchmarks de routage, notés par KiCad
Huit cartes open hardware routées par des professionnels, 2 à 4 couches, 125 à 997 connexions. Six routeurs reçoivent le même placement, les mêmes règles et le même plafond de temps. KiCad compte ce qui reste non routé et lance la DRC sur chaque carte rendue. Rien ici n’est auto-déclaré.
- Arbitre : kicad-cli
- Même placement pour chaque outil
- Un jeu de règles par carte, le même pour chaque outil
- Un plafond, une machine, une date
- Chaque carte liée à ses fichiers source
Six routeurs, huit cartes
Complétion par la ratsnest KiCad : 100 × (1 − non connectés / connexions). Les erreurs DRC sont celles qu’un outil a ajoutées par rapport aux constats de la carte humaine. Chaque outil disposait de 1200 s par carte sur la même machine ; un outil qui n’a rien rendu dans ce délai est noté temps dépassé. Mesures du 2026-10-14/16.
| Carte | Couches | Connexions | Koppar | Freerouting 2.5.0 | tscircuit 0.0.979 | KiCad Routing Tools 0.1.9 | TraceMaker 0.9.0 | Zap! (hébergé) |
|---|---|---|---|---|---|---|---|---|
pic-programmerKiCad demos ↗ | 2 | 125 | 100%0 DRC · 8 vias · 6 sVias remplis : 100% · 0 DRC · 6 vias · 6 s · 1 via dans une pastille | 100%5 DRC · 0 vias · 5 s | 100%115 DRC · 15 vias · 12 s | 100%95 DRC · 99 vias · 44 s | 96.8%0 DRC · 3 vias · atteint à 33 s sur 92 s | 100%0 DRC · 28 vias · 56 s |
rp2040-minimalRaspberry Pi ↗ | 2 | 150 | 100%0 DRC · 116 vias · 5 sVias remplis : 100% · 0 DRC · 83 vias · 6 s · 36 vias dans des pastilles | 86%4 DRC · 40 vias · atteint à 18 s sur 61 s | 100%149 DRC · 69 vias · 11 s | 26.67%12 DRC · 12 vias · 127 s | 100%0 DRC · 53 vias · 20 s · 14 vias dans des pastilles | 100%0 DRC · 52 vias · 22 s |
pico-vgaRaspberry Pi ↗ | 4 | 180 | 100%0 DRC · 96 vias · 8 sVias remplis : 100% · 0 DRC · 92 vias · 6 s · 75 vias dans des pastilles | 100%8 DRC · 48 vias · atteint à 5 s sur 11 s | 100%127 DRC · 69 vias · 12 s | 100%222 DRC · 116 vias · 42 s · 25 vias dans des pastilles | 100%0 DRC · 49 vias · atteint à 143 s sur 161 s · 21 vias dans des pastilles | 100%0 DRC · 83 vias · 17 s |
cm5ioRaspberry Pi CM5 IO ↗ | 4 | 431 | 100%0 DRC · 877 vias · atteint à 856 s sur 887 sVias remplis : 100% · 0 DRC · 831 vias · atteint à 724 s sur 752 s · 96 vias dans des pastilles | temps dépassé1200.2 s | aucune carte664.1 s | 50.12%88 DRC · 84 vias · 1208 s · 22 vias dans des pastilles | 94.9%0 DRC · 412 vias · atteint à 1201 s sur 1203 s · 34 vias dans des pastilles | temps dépassé1209 s |
rk3328-som-evbOLIMEX ↗ | 4 | 462 | 100%0 DRC · 359 vias · 46 sVias remplis : 100% · 0 DRC · 333 vias · 22 s · 151 vias dans des pastilles | 96.54%42 DRC · 245 vias · atteint à 195 s sur 610 s | 100%403 DRC · 391 vias · 163 s | 43.94%143 DRC · 104 vias · 971 s · 47 vias dans des pastilles | 100%0 DRC · 272 vias · atteint à 1201 s sur 1203 s · 88 vias dans des pastilles | 96.75%0 DRC · 333 vias · 375 s |
scalenode-cm4Antmicro ↗ | 4 | 446 | 100%0 DRC · 428 vias · 79 sVias remplis : 100% · 0 DRC · 459 vias · atteint à 404 s sur 429 s · 126 vias dans des pastilles | temps dépassé1200.1 s | 99.1%215 DRC · 368 vias · 77 s | 54.93%156 DRC · 102 vias · 533 s · 33 vias dans des pastilles | 100%0 DRC · 224 vias · atteint à 448 s sur 832 s · 41 vias dans des pastilles | carte refusée |
stmp157-som-evbOLIMEX ↗ | 4 | 905 | 100%0 DRC · 1131 vias · atteint à 412 s sur 484 sVias remplis : 100% · 0 DRC · 1100 vias · 109 s · 341 vias dans des pastilles | temps dépassé1200.1 s | temps dépassé1413.5 s | 21.66%246 DRC · 196 vias · 1202 s · 34 vias dans des pastilles | 100%0 DRC · 856 vias · 1203 s · 200 vias dans des pastilles | 96.24%0 DRC · 840 vias · 892 s |
imx8mp-som-evbOLIMEX ↗ | 4 | 997 | 100%0 DRC · 1429 vias · atteint à 1086 s sur 1194 sVias remplis : 100% · 0 DRC · 1116 vias · atteint à 149 s sur 223 s · 379 vias dans des pastilles | temps dépassé1200.2 s | 100%1052 DRC · 1247 vias · 826 s · 1 via dans une pastille | 30.79%469 DRC · 307 vias · 1203 s · 61 vias dans des pastilles | 99.3%0 DRC · 795 vias · 1203 s · 200 vias dans des pastilles | temps dépassé1200.5 s |
Mesures du 2026-10-14/16, KiCad 10.0.4 pour arbitre, une seule machine pour tous les outils. Le temps de Koppar couvre tout le parcours produit, tout ce que traverse la carte d’un utilisateur. Freerouting n’écrit sa carte qu’à la fin, donc un passage au-delà du plafond n’a pas de carte à noter. Les cartes tscircuit, KiCad Routing Tools, TraceMaker et Zap! sont notées telles que rendues, leurs plans éventuels remplis. Zap! est un service hébergé : son temps est la durée du travail sur le service, file d’attente exclue, et il a refusé une carte dont le design humain a une empreinte hors du contour. Les temps indiquent quand un outil a atteint la carte rendue, à côté de la durée de son exécution : un routeur qui continue de chercher après sa meilleure carte affiche les deux. La case de Koppar montre deux modes : la première ligne est son mode par défaut, sans aucun via dans les pastilles des broches, donc sans procédé de fabrication particulier ; la seconde est le mode vias remplis, qui autorise les vias dans ces pastilles, pour une carte commandée avec des vias remplis et bouchés. Chaque case compte les vias qu’un outil a laissés dans des pastilles de broches.
Méthode
- L’arbitre
- Une installation KiCad 10 figée exécute la DRC de kicad-cli et lit la ratsnest. Aucun outil ne note sa propre sortie ; la complétion auto-déclarée est enregistrée mais pas publiée.
- Les cartes
- Démos KiCad, designs de référence Raspberry Pi, cartes porteuses OLIMEX et Antmicro, chacune sous sa licence d’origine. Chaque routeur reçoit le placement seul : pistes, vias et plans de cuivre sont retirés, et chaque net, masse comprise, est à router. Les règles sont celles du benchmark : un plancher commun, publié carte par carte et appliqué à chaque outil comme à l’arbitre ; le tableau mesure donc le routage sous ce plancher, pas les contraintes propres à chaque design.
- La métrique
- Les airwires de KiCad. Une complétion par net lit trop haut sur une carte avec une pastille isolée ou un plan coupé ; la ratsnest, non.
- Une seule configuration
- La même configuration pour chaque carte, comme pour une carte client. Aucun réglage par carte, pour aucun outil.
Ce que nous ne prétendons pas
Un benchmark n’est utile que si ses limites sont dites.
- Pas de parité humaine. Koppar route toutes les cartes ici, mais le routage humain reste meilleur en vias, en longueur de pistes et en intégrité des plans, et TraceMaker perce moins de vias que Koppar sur chaque carte 4 couches. Le taux de routage et le DRC ne notent pas les plans : une carte 4 couches routée sans plan de masse peut atteindre 100 % ici.
- Chaque outil a été lancé tel que livré, avec ses réglages par défaut et les règles de la carte. L’auteur d’un outil connaît peut-être des réglages qui font mieux ; les harnais sont publics pour que chacun puisse relancer la mesure.
- La complétion n’est pas la qualité. Le dimensionnement des rails, la distance de découplage et les chemins de retour ne sont pas encore notés.
- Huit cartes, c’est un petit échantillon. 25 autres cartes open hardware publiques, de 2 à 8 couches, sont épinglées dans le dépôt du benchmark ; leur passage est à venir.
Lancez-le sur votre propre carte
Le même routeur et le même parcours de routage sont en ligne sur tools.koppar.ai : envoyez un .kicad_pcb placé et son .kicad_pro, récupérez-le routé avec un rapport DRC KiCad. Une carte jusqu’à 300 connexions se route sans compte ; au-delà, comme les cartes porteuses 4 couches ici, le routage prend jusqu’à 20 minutes de serveur et demande une clé API de compte. L’API tient en un POST.
Router votre propre carteCartes, règles, harnais et résultats sur GitHubcurl -s https://tools.koppar.ai/api/tools/route \
-H 'content-type: application/json' \
-H "Authorization: Bearer $KOPPAR_API_KEY" \
-d "{\"content\": $(jq -Rs . < board.kicad_pcb), \"project\": $(jq -Rs . < board.kicad_pro)}"