"MAI fidarsi dell'autoroute"
Prendi la maglietta. Live by it.
In quasi 30 anni di utilizzo - o almeno di tentativi di utilizzo - della funzione Autoroute in Altium/Protel (e hanno avuto alcuni motori autoroute installati nel corso degli anni, uno o due dei quali da aziende che hanno acquisito), nel migliore dei casi sono sempre stato molto deluso dai risultati, e nel peggiore i risultati sono completamente inutilizzabili.
Ci hanno promesso motori autorouter basati su AI/neural-network dalla seconda metà degli anni '90, ma finora non hanno mai mantenuto la promessa. Ho sentito parlare di alcuni motori autorouter in altri prodotti che sembrano più promettenti, sfruttando la moderna tecnologia AI, ma non li ho ancora sperimentati personalmente. In definitiva, un giorno, ci sarà probabilmente un autorouter per PCB che supererà anche un progettista esperto di PCB, ma non siamo ancora a quel punto.
La sfida per un autorouter si presenta in diverse parti:
- per ottenere i migliori risultati da un autorouter, è necessario essere molto espliciti ed esaustivi nell'impostare le regole di progettazione della scheda: creare classi di componenti, classi di rete, assegnazioni multicanale dove pertinente, e assegnare loro delle regole, come la larghezza e la spaziatura delle tracce (che a loro volta possono essere governate da regolamenti specifici che si applicano nell'applicazione/industria a cui la scheda deve essere conforme), considerando il cross-talk, e applicando qualsiasi regola di controllo dell'impedenza e della lunghezza delle tracce per segnali ad alta velocità o a coppie differenziali, dove appropriato. Questo richiede molto tempo - a volte in schede complicate tanto tempo quanto il routing manuale, ergo, nessun beneficio nell'usare l'autorouter.
- Questo è tutto dopo aver posizionato almeno i componenti chiave che tipicamente hanno necessariamente posizioni fisse, come connettori, display/LED, rispettando le diverse altezze massime dei componenti in vari punti del PCB in relazione a ciò che il PCB vive all'interno (alcune parti del PCB potrebbero avere solo Xmm di spazio in altezza perché parte dell'area del PCB si trova accanto a qualche altro componente non-PCB all'interno del case del prodotto, per esempio).
- Alla fine degli anni '90, Protel (prima che l'azienda fosse rinominata Altium), il loro 'autorouter basato sulla forma', basato sulla rete neurale, poteva effettivamente spostare e ruotare i componenti e spingere intere sezioni di routing per sbloccare e fare spazio a nuovi percorsi. era una grande visione, a volte produceva risultati impressionanti in circostanze ideali, ma non lo ha mai fatto per la maggior parte dei progetti del mondo reale.
- se non si catturano TUTTE le regole di progettazione, anche se molte di queste regole sono ciò che un progettista esperto di PCB fa 'automaticamente' senza bisogno di inserirle nel progetto PCB, le possibilità che l'autorouter faccia qualcosa che non si vuole aumentano esponenzialmente; "oh, merda, sì, quel regolatore di tensione buck switch-mode ha bisogno che l'area di loop dell'interruttore di alimentazione, del diodo di cattura e del condensatore di filtro sia tenuta molto stretta (altrimenti le prestazioni potrebbero essere una merda, o non funzionare affatto, e irradiare come un sole e fallire i test EMC)" - AFAIK l'autorouter di Altium non ha alcun concetto di minimizzazione dell'area di loop di un percorso specifico del circuito.
E' possibile usare l'autorouter per compiti specifici all'interno del progetto complessivo. Per esempio una scheda su cui ho lavorato l'anno scorso, dove avevo una scadenza stretta per completarla, aveva ancora circa 80 segnali "non critici" a bassa velocità, bassa tensione e bassa potenza con larghezza e spaziatura delle tracce standard che attraversavano il PCB, anche dopo aver instradato manualmente tutto il resto. Così ho dato una possibilità all'autorouter. C'è voluta una mezza dozzina di ripetizioni dell'autorouter, modificando il suo setup ogni volta, solo per fargli completare la maggior parte -ma non tutti- i percorsi, e anche allora ho dovuto passare ore a pulire dopo, sistemando percorsi 'stupidi' che credono alla stupidità dell'autorouter. E ho scoperto che l'attuale motore dell'autorouter di Altium è 'cieco' ai poligoni posizionati manualmente - instrada beatamente le sue tracce attraverso di essi come se il poligono non fosse nemmeno lì - srslywtf!
Negli anni '90 e '00, quando si avevano grandi bus di indirizzi e dati a 16 o 32 bit tra un microprocessore e i suoi chip RAM o ROM/Flash, e non particolarmente ad alta velocità, e nei giorni in cui i tempi di salita/discesa dei segnali non erano diventati così brevi e trasformavano "tutto" in un incubo ad alta velocità, per esempio, l'autorouter poteva essere utile per instradare quei tipi di segnali di bus indirizzi e dati. Quei giorni, in cui un sacco di progettazione di PCB era raramente più difficile del semplice "unire i punti" in qualsiasi modo, sono finiti, a meno che non si progettino computer retrò.
Infine, i neofiti sono eccitati dagli autorouter per varie ragioni, e tendono ad appoggiarsi ad essi come un modo per compensare la mancanza di esperienza. Questa è solo una pessima idea - non impareranno molto dal tentativo di usare un autorouter, perché l'autorouter stesso dà pessimi esempi di come instradare!
Quello su cui Altium sta facendo molti sforzi di sviluppo ultimamente è la funzione 'ActiveRoute', per cui si seleziona un gruppo di tracce - per esempio, un bus di memoria - e poi si traccia un percorso di larghezza adeguata, e il progettista traccia il percorso complessivo che il bus dovrebbe fare, e il motore ActiveRoute poi va e disegna tutte le tracce, fino al punto di portarle vicino ai loro punti finali di destinazione. Puoi tracciare quel percorso con il tuo cervello umano che "conosce il quadro generale" e che ha in testa la maggior parte, se non tutti, i requisiti dell'intero progetto, anche se non è catturato nelle regole di progettazione, e ridurre drasticamente il tempo di instradamento manuale. Per il tempo necessario a instradare 1 o 2 segnali, potete farne 10, 20, 30, tutti in una volta. Questo è un grande uso della tecnologia dei router semi-automatici.