Una cosa que no estás considerando es que un esquema no contiene suficiente información para diseñar una placa correctamente .
Básicamente, el diseño de la placa de circuito impreso requiere tener en cuenta y acomodar algunas docenas de requisitos de diseño por parte , ninguno de los cuales está codificado en el esquema. Considere sólo los condensadores de derivación. Para que un sistema automatizado coloque correctamente el condensador de bypass para cada componente, necesitarías tener algunas directivas adicionales en el esquema que dicten al autorouter que la traza entre los dos nodos debe ser inferior a una determinada longitud.
Es de suponer que entonces se necesitarían más directivas para codificar el prioridad de minimización de la longitud de varias redes, algo para dictar pares diferenciales/impedancia controlada, trazas de protección (si son necesarias), etc.
Básicamente, hay un montón de variables adicionales que impulsan la colocación y que normalmente no se codifican en absoluto en los documentos esquemáticos/ratsnest.
Además, incluso si se asume que se tienen todas las restricciones de diseño anteriores, el tamaño del espacio del problema para un diseño común es enorme . Es el equivalente a intentar resolver una ecuación con miles de entradas, donde cada entrada tiene un efecto diferente y no lineal sobre todas las demás. Efectivamente, el problema es completamente intratable desde la perspectiva de la fuerza bruta. Por lo tanto, cualquier solución debe implicar algún tipo de mecanismo heurístico, que tiene sus propias complejidades.
Siendo realistas, la principal razón por la que no hay al menos mejor autorouters es que simplemente no hay mercado. El mercado de EDA es comparativamente pequeño en comparación con muchos otros nichos de mercado de software de propósito especial, e incluso el mejor autorouter de la historia ni siquiera se acercará a un diseño real realizado por un humano real.
Cuando estoy en medio de un trazado particularmente aburrido, suelo tener algunas fantasías de intentar diseñar mi propio autorouter, haciendo algo con campos vectoriales y recocido simulado, pero incluso eso sólo se acercaría a un óptimo local, más que a un trazado óptimo general.
9 votos
Los autorouters deberían ser capaces de colocar los componentes de forma óptima basándose en restricciones (por ejemplo, "el botón debe ir aquí", "el LED puede estar en cualquier lugar de esta zona"). También deberían ser capaces de seleccionar los pines óptimos a utilizar en las partes que tienen un montón de pines equivalentes (es decir, "utilizar cualquier pin io que tiene PWM"). Lamentablemente, nunca he visto uno que haga ninguna de estas funciones. Quizás algún día.
0 votos
Creo que Altium tiene un autoplacer, pero algunos componentes están destinados a ser colocados en lugares estratégicos en el tablero y el software no tiene idea de lo que es estratégico y no. Y si minimizas el área total de la placa, podrías hacer imposible el enrutamiento limpio. Nunca he usado el autoplacer y rara vez uso el autoroute, y cuando lo hago, es para señales selectas como la tierra.
7 votos
La colocación (y la orientación, el intercambio de puertas, el intercambio de pines) es muy, muy importante. Es lo más importante para conseguir un buen enrutamiento. Creo que un autoplacer inteligente debería empezar desde la colocación del esquema, a menos que el esquema sea una de esas modernas abominaciones de "cajas rodeadas de netlists".
2 votos
Viniendo de un fondo que no es el diseño de circuitos, me parece que el nido de ratas debe ser suficiente para diseñar todos los componentes de manera óptima, tal vez a algunas limitaciones. ¿La mayoría de los circuitos reales se diseñan más manualmente que esto?
1 votos
Diptrace tiene diseño automático. Sin embargo, es terrible.
3 votos
En resumen, la disposición óptima de los componentes -incluso sin todas las consideraciones que se derivan de que sea un circuito real y no ideal- es un problema de CS muy difícil. De hecho, es una instancia del Problema del Vendedor Viajero, y como tal una solución óptima es inviable.
0 votos
Temas relacionados: aquí y aquí . Ambas son revisiones de diseño de PCBs de principiantes que han sido autorouted.
1 votos
Esta pregunta me hace dudar por qué ¡estos autorouters / autoplacers son tan malos! ¿Por qué la gente no investiga y se esfuerza más en hacerlos funcionar? (Tal vez lo hacen, y todas estas características están ocultas en paquetes propietarios...) No puede ser tan difícil añadir una pequeña casilla de verificación "esta tapa pertenece a estos pines de potencia"...
2 votos
@Gregd'Eon me pregunto lo mismo. Seguro que con más trabajo los autoplacers pueden entender las funciones de las cápsulas de desacoplamiento, y simular el ruido del circuito, etc.
1 votos
@Adam Sí, supongo que esa es otra pregunta que nunca responderemos. ¿Por qué todos los programas de diseño de PCB son tan malos que sólo son ligeramente mejores que el lápiz y el papel?
1 votos
@Navin, Si crees eso, me gustaría saber cuántos diseños complejos has trazado con CAD y cuántos con lápiz y papel.
0 votos
Posible duplicado de ¿Software para traducir la descripción del código al diseño de la placa de circuito impreso?
0 votos
@NickJohnson: No es inviable, prácticamente hablando. Aunque calcular el resultado realmente óptimo es caro desde el punto de vista informático, hay algoritmos que pueden obtener resultados "suficientemente buenos" en un tiempo muy razonable. En la mayoría de los casos, se puede llegar a un 95%-98% de la solución óptima. En segundo lugar, dependiendo del número de componentes, obtener la solución óptima puede ser factible si se está dispuesto a dejar que el ordenador funcione durante un tiempo.
0 votos
@whatsisname Sí, se pueden obtener buenas aproximaciones del TSP básico. Sin embargo, esto es mucho más difícil de hacer con las restricciones de diseño de un circuito real.
0 votos
@NickJohnson: Esa parte es cierta, sí, ya que hay una gran cantidad de información importante que no se indica al software en la especificación.
0 votos
@NickJohnson Sólo comentarios: En algún momento entre 10 y 30 años atrás (te da un poco de margen) recuerdo haber leído un informe de que el TSP había sido resuelto - lo que sea que signifique "resuelto" en ese contexto. Supongo que "resuelto" significa que se reivindicaba un algoritmo o método que producía resultados óptimos para un conjunto de restricciones. | Después, sin duda, pasaron al problema de los N-cuerpos :-).
0 votos
Incluso hace mucho tiempo los paquetes PCD tenían un autoplace rudimentario que NO intentaba colocar los componentes de forma óptima pero que era útil para evitar que todo acabara en un gran montón para empezar. En los viejos tiempos del DOS Protel, escribí un programa que procesaba el archivo de salida del esquema basado en texto para reubicar y redimensionar los identificadores de los componentes en la pantalla de seda, de modo que quedaran dentro de la huella del componente y no se superpusieran a ningún agujero. Lo utilicé principalmente para componentes axiales de dos conductores, como las resistencias. Ampliando esto con un conjunto de reglas para mover los componentes seleccionados a la dirección ....
0 votos
....relativa a los lugares sería sólo cuestión de hacerlo. Definir qué es "eso" sería la parte difícil. No sé si el software más moderno le da el grado de acceso y gestión de los descriptores y propiedades de los componentes que el software de DOS basado en texto (bastante inadvertido).
0 votos
@Adam Estás subestimando. ¿Cómo sabe qué tapas van con cada componente? ¿Qué circuitos integrados son más sensibles al ruido o hacen más ruido y, por tanto, tienen prioridad? ¿O simplemente esperabas que se dirigiera a la media más baja de ruido en todo el tablero, sin importar los picos mientras haya valles profundos para que se promedie, y esperabas que funcionara? ¿Y cómo esperabas que simulara el ruido ANTES de colocar las pistas y sin saber nada de los circuitos integrados?