«NUNCA confíes en el autorouter»
Consigue la camiseta. Live by it.
En casi 30 años de usar – o al menos intentar usar – la función de autoroute en Altium/Protel (y han tenido unos cuantos motores de autoroute instalados a lo largo de los años, uno o dos de ellos de empresas que adquirieron), en el mejor de los casos he estado constantemente muy decepcionado por los resultados, y en el peor el resultado es completamente inutilizable.
Se nos ha prometido motores de autorouter basados en IA/redes neuronales desde la segunda mitad de los años 90, pero hasta ahora nunca se ha cumplido la promesa. He oído hablar de algunos motores de autorouter en otros productos que suenan más prometedores, aprovechando la tecnología moderna de IA, pero aún no los he experimentado personalmente. En última instancia, un día, probablemente habrá un autorouter de PCB que supere incluso a un diseñador de PCB experimentado, pero todavía no estamos allí.
El reto para un autorouter viene en varias partes:
- para obtener los mejores resultados de un autorouter, hay que ser muy explícito y exhaustivo en la configuración de las reglas de diseño de la placa: crear clases de componentes, clases de redes, asignaciones multicanal cuando sea relevante, y asignarles reglas, como el ancho de pista y el espaciado de pista (que a su vez pueden ser gobernados por las regulaciones específicas que se aplican en la aplicación/industria con la que su placa tiene que ser compatible), considerando la diafonía, y aplicando cualquier regla de control de impedancia y longitud de pista para las señales de alta velocidad o par diferencial cuando sea apropiado. esto lleva mucho tiempo – a veces en placas complicadas tanto tiempo como enrutarlo manualmente usted mismo, ergo, no hay beneficio para usar el autorouter.
- Eso es todo después de haber colocado al menos los componentes clave que suelen tener posiciones necesariamente fijas, como los conectores, pantallas/LEDs, respetado la diferente altura máxima de los componentes en varios lugares a través de la PCB en relación con lo que la PCB vive dentro de (algunas partes de la PCB podría tener sólo Xmm de espacio libre de altura porque parte del área de la PCB se sienta al lado de algún otro componente no-PCB dentro de la caja del producto, por ejemplo).
- A finales de los años 90, Protel (antes de que la empresa pasara a llamarse Altium), su «autorouter basado en redes neuronales» podía realmente mover y girar componentes y empujar y desplazar secciones enteras de enrutamiento para desbloquear y dar paso a nuevas rutas. era una visión grandiosa, que a veces producía resultados impresionantes en circunstancias ideales, pero nunca llegó a serlo para la mayoría de los diseños del mundo real.
- Si no se capturan TODAS las reglas de diseño, aunque muchas de esas reglas son las que un diseñador de PCBs experimentado hace «automáticamente» sin necesidad de introducirlas en el diseño de la PCB, las posibilidades de que el autorouter haga algo que no se desea aumentan exponencialmente; «Oh, mierda, sí, ese regulador de voltaje buck necesita que el área de bucle del interruptor de potencia, el diodo de captura y la tapa del filtro se mantengan muy ajustados (de lo contrario el rendimiento podría ser una mierda, o ni siquiera funcionar, e irradiar como un sol y fallar las pruebas de EMC)» – AFAIK el autorouter de Altium no tiene ningún concepto de minimizar el área de bucle de una ruta de circuito específica.
Es posible utilizar el autorouter para tareas específicas dentro del diseño general. Por ejemplo, una placa en la que trabajé el año pasado y en la que tenía un plazo muy ajustado para completarla, todavía tenía 80 señales «no críticas» de baja velocidad, bajo voltaje y baja potencia con un ancho de pista estándar y un espaciado aplicable entrecruzando la PCB, incluso después de haber enrutado manualmente todo lo demás. Así que le di una oportunidad al autorouter. Me costó una media docena de repeticiones del autorouter, ajustando su configuración cada vez, sólo para conseguir que completara la mayoría -pero no todas- de las rutas, e incluso entonces todavía tuve que pasar horas limpiando después, arreglando rutas «estúpidas» que desmienten la tontería del autorouter. ¡Además, descubrí que el motor actual del autorouter de Altium es «ciego» a los polígonos colocados manualmente – que felizmente ruta sus pistas directamente a través de ellos como si el polígono no estuviera allí – srslywtf!
En los años 90 y 00, cuando había grandes buses de direcciones y datos de 16 o 32 bits entre un microprocesador y sus chips de RAM o ROM/Flash, y no particularmente de alta velocidad, y en los días en que los tiempos de subida/bajada de la señal no habían crecido tan corto y convertido «todo» en una pesadilla de alta velocidad, por ejemplo, el autorouter podría ser útil para el enrutamiento de ese tipo de señales de bus de direcciones y datos. Aquellos días, en los que el diseño de una PCB era raramente más difícil que simplemente «unir los puntos» de cualquier manera, se han ido, a menos que estés en el diseño de ordenadores retro.
Por último, los neófitos se entusiasman con los autorouters por varias razones, y tienden a apoyarse en ellos como una forma de compensar la falta de experiencia. Esto es una idea totalmente mala – no aprenderán mucho al intentar usar un autorouter, ¡porque el propio autorouter da tan malos ejemplos de cómo enrutar!
Lo que Altium ha estado poniendo un montón de esfuerzo de desarrollo en los últimos tiempos es la función «ActiveRoute», mediante la cual se selecciona un grupo de pistas – por ejemplo, un bus de memoria – y luego se traza una ruta de ancho adecuado, y el diseñador traza la ruta general que el bus debe tomar, y el motor ActiveRoute entonces va y traza todas las pistas, hasta el punto de llevarlas cerca de sus puntos finales de destino. El usuario puede trazar esa ruta con su cerebro humano que «conoce el panorama general» y que tiene la mayoría, si no todos, los requisitos del diseño en su cabeza, incluso si no se han plasmado en las reglas de diseño, y reduce drásticamente el tiempo de enrutamiento manual. Por el tiempo que se tarda en enrutar 1 o 2 señales, se pueden hacer 10, 20, 30, todo a la vez. Ese es un gran uso de la tecnología de enrutamiento semi-auto.