Nuovo nel design PCB: perché non esistono componenti di posizionamento automatico?


23

Il software di progettazione di circuiti che ho visto ha la capacità di instradare automaticamente tracce ecc. Su un PCB.
Ma perché questo software non è in grado di posizionare automaticamente i componenti su un PCB per ridurre al minimo le dimensioni totali della scheda?
È troppo complicato per essere automatizzato?


8
Gli autorouter dovrebbero essere in grado di posizionare i componenti in modo ottimale in base ai vincoli (ovvero "il pulsante deve andare qui", "il LED può trovarsi ovunque in quest'area"). Dovrebbero anche essere in grado di selezionare i pin ottimali da utilizzare su parti che hanno molti pin equivalenti (ovvero "utilizzare qualsiasi pin io che abbia PWM"). Sfortunatamente, non ne ho mai visto uno che svolga una di queste funzioni. Forse un giorno.
bigjosh,

7
il posizionamento (e l'orientamento, lo scambio di gate, lo scambio di pin) è davvero molto importante. È la cosa più importante per ottenere un buon routing. Penso che un intelligente autoplacer dovrebbe partire dal posizionamento schematico, a meno che lo schema non sia una di quelle moderne abominazioni "scatole circondate da netlist".
markrages

2
proveniente da uno sfondo che non è un progetto di circuito, mi sembra che il nido dei ratti dovrebbe essere sufficiente per disporre tutti i componenti in modo ottimale, forse con alcuni vincoli. La maggior parte dei circuiti reali è progettata più manualmente di così?
Adam,

3
In breve, la disposizione ottimale dei componenti - anche senza tutte le considerazioni che derivano dal fatto che si tratta di un circuito reale, non ideale - è un problema CS molto difficile. In realtà, è un'istanza del Problema del commesso viaggiatore e come tale una soluzione ottimale è impossibile.
Nick Johnson,

2
@ Gregd'Eon Mi chiedo lo stesso. Sicuramente con più lavoro i posizionatori automatici possono capire i ruoli del disaccoppiamento dei cappucci e simulare il rumore del circuito, ecc.
Adam

Risposte:


19

Ho progettato alcuni PCB di recente e suggerirei di NON utilizzare il posizionatore automatico o il router automatico per il prodotto finale. (Proteus ha il posizionatore automatico.)

Prima di tutto: il tuo software è intelligente come un lombrico quando si tratta di posizionamento automatico o routing automatico. In altre parole, è stupido come una patata.

Il routing automatico non saprebbe quale posizionamento offrirà un migliore tracciato che ti consentirà non solo di realizzare un design efficiente, ma anche di ridurre al minimo il rumore nel circuito. Allo stesso modo, il routing automatico non sa che spostare leggermente un componente verso sinistra o verso destra consentirebbe di indirizzare una traccia in un modo migliore. Questi strumenti ti daranno solo un design che è corretto in base al circuito. Ma quando si tratta di esibizioni nel mondo reale, le cose sono diverse.
Per esempio:

  • Il disaccoppiamento dei condensatori dovrebbe essere fisicamente vicino all'IC.
  • Dovrebbero esserci anelli della zona meno chiusa.
  • Il piano di massa dovrebbe essere il più solido possibile.
  • Nessun segnale di interferenza dovrebbe essere vicino all'oscillatore a cristallo, ecc.

Il tuo software non rispetterà questi concetti perché non sono menzionati nel tuo schema. Saprai solo quando avrai fabbricato il PCB e non funzionerà sempre come previsto. Non sto dicendo che non funzionerà. Potrebbe funzionare, per il 90% delle volte, ma devi prendere in considerazione anche quel 10%.

Il mio suggerimento è che dovresti imparare alcuni concetti di progettazione del PCB e provare a posizionarlo e instradarlo da solo. Puoi sempre pubblicare il tuo schema e il layout della scheda nei forum e gli esperti ti daranno la loro opinione / suggerimenti.


5
+1 per il lombrico e la patata. Ogni volta che ho usato il posizionatore automatico e l'autorouter, avevo fatto i bit critici e l'avevo lasciato un po 'facile ma anche quello era troppo da chiedere: il 60% della scheda veniva posizionato e indirizzato dopo il passaggio finale. Meglio fare tutto da soli, tranne forse per progetti con requisiti enormi con molto spazio libero.
Mister Mystère,

1
@Mister - Sì, hai ragione. Anche ogni tanto uso il router automatico per farmi un'idea del routing e finisco le sezioni critiche. Tuttavia sto usando Eagle in questi giorni e non ha il posizionatore automatico.
Whiskeyjack il

1
Errore di battitura nel mio commento sopra: "per enormi progetti con requisiti BASSI *". Ovviamente, una frequenza digitale ad alta frequenza non funzionerà bene con l'autorouting e l'autoplacing ...
Mister Mystère,

1
Non vedo alcun motivo teorico per cui un router automatico non possa tenere conto di tutti i vincoli e le migliori pratiche sopra menzionati quando si posizionano automaticamente le parti. In effetti, un auto-router ideale dovrebbe essere in grado di trovare la posizione ottimale che soddisfi questi obiettivi meglio di una lattina umana. Certo, è un problema difficile, ma non impossibile e scommetto che presto inizieremo a vedere i router automatici basati sul cloud con i posizionatori automatici che possono battere anche i migliori umani.
bigjosh,

1
@bigjosh - Il tuo commento ha molto senso. Il corretto instradamento e posizionamento ha alcune linee guida che, se suddivise in semplici logiche, dovrebbero consentire ai computer di superare le prestazioni di un essere umano. Tutto ciò che resterà saranno forse trilioni di calcoli: controllare migliaia di schede completamente instradate e capire la soluzione ottimale. Con i sistemi basati su cloud, ciò non dovrebbe essere troppo difficile. Speriamo che qualche progetto open source inizi presto per renderlo realtà. Potrebbe essere meglio degli umani in un modo in cui gli umani non fanno realmente più iterazioni una volta trovata una soluzione funzionante - almeno io no.
Whiskeyjack,

13

Il mio router ha un posizionatore e supporto per "stanze". Ciò consente di disegnare aree e assegnare parti a "stanze" dallo schema. Il posizionatore automatico li raggrupperà nella stanza a cui è assegnata la parte. Abbastanza sicuro che abbia il supporto per questo connettore dovrebbe andare anche in questa posizione. C'è anche uno strumento in grado di eseguire il disaccoppiamento automatico del posizionamento e la selezione / ottimizzazione delle parti in base ai risultati della simulazione. Non è economico però :) ma funziona.

Il posizionatore automatico può farti risparmiare un po 'di tempo mettendo tutto insieme così. Ma preferisco ancora il cross probing dello schema al layout in modalità place.

Proprio come il router automatico, ottieni ciò che metti in termini di vincoli e quanto bene puoi usarlo. Se si tenta di utilizzare il router automatico senza vincolarlo correttamente, si dirige semplicemente ovunque. Se impostato correttamente, lo utilizziamo per instradare correttamente sezioni DDR di lunghezza corrispondente. Su schede molto più grandi e più dense è quasi una necessità e certamente un requisito per un negozio di servizi di layout che ha bisogno della velocità. Tuttavia, queste cose potrebbero non valerne la pena per qualcuno che fa solo poche piccole tavole all'anno.


4
Qual è il tuo pacchetto CAD?
Mister Mystère,

5
La versione di fascia alta di Allegro, il disaccoppiamento è di Sigrity, ora di proprietà della cadenza. Mi piacciono anche gli elettrodi. Quel nuovo router automatico basato su percorso che dovrebbe sembrare un routing manuale sembra interessante.
Some Hardware Guy,

Ho avuto la sensazione che questo potrebbe essere Cadence. L'ho usato per un'introduzione alla progettazione di circuiti integrati, è davvero un pacchetto eccellente e credo che il suo autorouter e autoplacer potrebbero essere efficaci solo se i vincoli sono formulati correttamente (il che si riduce all'esperienza / formazione).
Mister Mystère,

Ben detto. Posizionare parti e instradare non è impossibile, è solo molto più difficile e sfocato rispetto alla cattura schematica. Prima di tutto, lo schema elettrico è di gran lunga a corto di un ingresso completo per posizionare automaticamente le parti. I normali pacchetti PCB sono progettati per il cablaggio, non per il posizionamento automatico.
tomnexus,

12

Una cosa che non stai considerando è che uno schema non contiene abbastanza informazioni per disporre correttamente una scheda .

Fondamentalmente, il layout del PCB richiede considerazione e adattamento per alcune dozzine di requisiti di layout per parte , nessuno dei quali è codificato nello schema. Considera solo i condensatori di bypass. Per avere un sistema automatizzato che posiziona correttamente il condensatore di bypass per ciascun componente, è necessario disporre di alcune direttive aggiuntive sullo schema che dettano all'autorouter che la traccia tra i due nodi deve essere inferiore a una certa lunghezza.
Presumibilmente, avresti quindi bisogno di ulteriori direttive per codificare la priorità della minimizzazione della lunghezza per varie reti, qualcosa per dettare coppie differenziali / impedenza controllata, tracce di guardia (se necessario), ecc ...
Fondamentalmente, ci sono molte altre variabili che guidano il posizionamento che di solito non sono codificate nei documenti schematici / ratsnest.

Inoltre, anche se si presume di avere tutti i vincoli di progettazione di cui sopra, la vastità dello spazio problematico per un layout comune è enorme . È l'equivalente di cercare di risolvere un'equazione con migliaia di input, in cui ogni input ha un effetto diverso, non lineare su tutti gli altri. In effetti, il problema è completamente intrattabile dal punto di vista della forza bruta. Qualsiasi soluzione deve quindi comportare una sorta di meccanismo euristico, che ha le sue complessità.


Realisticamente, la ragione principale per cui non ci sono almeno autorouter migliori è che non c'è proprio mercato. Il mercato EDA è relativamente piccolo rispetto a molti altri mercati di nicchia, per scopi speciali e persino il miglior autorouter non si avvicinerà mai a un layout reale da parte di un vero essere umano.

Quando sono nel mezzo di un layout particolarmente noioso, di solito ho alcune fantasie di provare a progettare il mio autorouter, facendo qualcosa con campi vettoriali e ricottura simulata, ma anche questo si avvicinerebbe solo a un ottimale locale, piuttosto che a un layout ottimale generale.


10

Negli anni 1974-1975 ho lavorato nel dipartimento di automazione del design di Honeywell. Da allora il problema non è cambiato:

  1. Non è fattibile dal punto di vista computazionale per ottimizzare. Come la maggior parte dei problemi di ottimizzazione globale, è NP-Complete, il che significa che la complessità del calcolo cresce orribilmente rapidamente. Dal momento che non puoi aspettare circa trilioni di anni (o peggio), possiamo considerare impossibile trovare la soluzione ottimale.
  2. Non è chiaro al programma esattamente ciò che si desidera ottimizzare. Raggruppamento logico secondo il modello dell'organizzazione del circuito? Lunghezza della traccia? Area consiglio? Accoppiamento parassitario? Ritardo di propagazione? Dissipazione termica (temperatura massima)? Sanguinamento termico da sezioni di potenza superiore a componenti sensibili alla temperatura? Emissione RF? Rumore? Proprietà meccaniche (ad esempio, posizionando componenti più massicci vicino ai supporti meccanici? Caratteristiche del servizio, come non avvicinare i connettori di bordo più vicini di quanto le dita umane possano gestire? Vincoli esterni, come la posizione dei connettori, o adattamento all'interno dello spazio disponibile (nessun conflitto con casi, fan, ecc.)

Esistono approcci basati sull'intelligenza artificiale per affrontare problemi come questo. Tuttavia, ad un certo punto, è più facile per il progettista provare le cose e ottenere feedback dal software sui criteri di progettazione a cui è interessato. Dire al software AI tutto ciò che sai può essere un compito infinito e ingrato. In definitiva, il software deve soddisfare te, il progettista e il tuo set di compromessi.

Il modo migliore per farlo funzionare, quindi, è vederlo come una collaborazione tra designer e software, con il designer che prende le decisioni finali. Il software può fornire informazioni sulle proprietà e può suggerire modi per migliorare una proprietà di interesse e aiutare a esplorare le conseguenze di una modifica.

Ma prevedo che non vedremo mai, mai, un layout completamente automatizzato - finché avremo umani che guardano e si prendono cura del risultato.


Questo per quanto riguarda la singolarità ...
Peter Mortensen,

@PeterMortensen Le opinioni umane non contano dopo la Singolarità.
Spehro Pefhany,

1
Penso che il punto 2 sia davvero l'unica parte rilevante della risposta. Esistono molti algoritmi che possono risolvere molto rapidamente i problemi NP-completi, con dimensioni significative del problema, in misura "abbastanza buona" con un costo del tempo molto accettabile, abbastanza buono che spesso rientra nel 2-3% dell'ottimale.
whatsisname

Questo è un aspetto positivo di "abbastanza buono"! Anche se per essere completamente tecnicamente accurati, dovremmo qualificare attentamente la parola "risolvere" (come hai fatto tu). Tuttavia, il costo in CPU e archiviazione era un grosso problema. Ma anche se le dimensioni del problema sono aumentate, la nostra capacità computazionale è cresciuta ancora di più.
Bob Kerns,

9

Il mio software ha un posizionatore. L'ho eseguito una volta solo per vedere cosa sarebbe successo. Riesce a squarciare ruggendo attraverso la scheda e contiene tutti i componenti. Quando l'ho guardato, le parti erano OVUNQUE. L'IC era in un angolo e il suo berretto di disaccoppiamento era nell'altro. Il percorso critico è stato zigzagato avanti e indietro su tutta la linea.

Il mio punto qui è il posizionamento è la parte più difficile del layout per ottenere il giusto. Innanzitutto ci sono i vincoli meccanici. Il progettista ME / industriale desidera che il tuo connettore / interruttore / pot / LED / qualunque altro componente di interfaccia esterno venga rimosso dalla scheda in un determinato punto. Alcuni componenti potrebbero essere troppo alti per trovarsi in determinate aree all'interno della custodia. Potrebbero esserci parti del circuito che devono mantenere una certa distanza per l'isolamento.

Il software può essere configurato per gestire alcuni di questi fattori, ma non farà mai un buon lavoro o sarà in grado di vedere visivamente i problemi come un umano può fare. In un mondo perfetto, se si ottiene il posizionamento corretto, si esegue l'alimentazione, la terra e l'instradamento del percorso critico, un passaggio rapido dell'autorouter dovrebbe essere in grado di completare il layout.


Mi piace questa risposta, anche se sembra che il software non sia all'altezza del lavoro che dovrebbe essere.
Adam,

6
@Adam Man mano che acquisisci più esperienza, capirai meglio. Il processo di collocamento è incredibilmente complesso e il nido di un topo racconta solo una parte della storia. Prendiamo ad esempio i tappi di disaccoppiamento, come dovrebbe il posizionatore sapere dove metterli? Per quanto riguarda, quei tappi possono essere tutti messi insieme in una posizione arbitraria.
Matt Young,

2
I vincoli di distanza sembrano un'opzione fattibile per questo.
Tim Seguine,

Qual è il nome del tuo software?
Daniele Testa,

2

Ho usato auto-posizionatori prima, e sono davvero stupidi come un mucchio di pietre. L'unica cosa per cui puoi usarli saggiamente è per districare un mucchio di impronte che tutte sono state importate nella tua scheda nello stesso posto su di essa; qualsiasi altra cosa è semplicemente troppo da chiedere.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.