Enrutamiento (automatización de diseño electrónico)
Etapa del diseño de circuitos electrónicos.
En diseño electrónico , el enrutamiento de cables , comúnmente llamado simplemente enrutamiento , es un paso en el diseño de placas de circuito impreso (PCB) y circuitos integrados (CI). Se basa en un paso anterior, llamado colocación , que determina la ubicación de cada elemento activo de un IC o componente en una PCB. Después de la colocación, el paso de enrutamiento agrega los cables necesarios para conectar correctamente los componentes colocados y al mismo tiempo obedecer todas las reglas de diseño del CI. En conjunto, los pasos de ubicación y enrutamiento del diseño de circuitos integrados se conocen como lugar y ruta .
La tarea de todos los enrutadores es la misma. Se les proporcionan algunos polígonos preexistentes que consisten en pines (también llamados terminales) en las celdas y, opcionalmente, algún cableado preexistente llamado rutas previas. Cada uno de estos polígonos está asociado a una red , normalmente por nombre o número. La tarea principal del enrutador es crear geometrías tales que todos los terminales asignados a la misma red estén conectados, no se conecten terminales asignados a diferentes redes y se obedezcan todas las reglas de diseño. Un enrutador puede fallar al no conectar terminales que deberían estar conectados (un abierto), al conectar por error dos terminales que no deberían estar conectados (un cortocircuito) o al crear una violación de las reglas de diseño. Además, para conectar correctamente las redes, también se puede esperar que los enrutadores se aseguren de que el diseño cumpla con los tiempos, no tenga problemas de diafonía , cumpla con los requisitos de densidad del metal, no sufra efectos de antena , etc. Esta larga lista de objetivos, a menudo contradictorios, es lo que hace que el enrutamiento sea extremadamente difícil.
Se sabe que casi todos los problemas asociados con el enrutamiento son intratables . Se sabe que el problema de enrutamiento más simple, llamado problema del árbol de Steiner , que consiste en encontrar la ruta más corta para una red en una capa sin obstáculos y sin reglas de diseño, es NP-completo , tanto en el caso en que se permiten todos los ángulos como si el enrutamiento es restringido únicamente a cables horizontales y verticales. [1] También se ha demostrado que las variantes de enrutamiento de canales son NP-completas, [2] así como el enrutamiento que reduce la diafonía , el número de vías , etc. Por lo tanto, los enrutadores rara vez intentan encontrar un resultado óptimo. En cambio, casi todo el enrutamiento se basa en heurísticas que intentan encontrar una solución que sea lo suficientemente buena.
Las reglas de diseño a veces varían considerablemente de una capa a otra. Por ejemplo, el ancho y el espaciado permitidos en las capas inferiores pueden ser cuatro o más veces menores que los anchos y espaciados permitidos en las capas superiores. Esto introduce muchas complicaciones adicionales que no enfrentan los enrutadores para otras aplicaciones, como el diseño de placas de circuito impreso o módulos de múltiples chips . Surgen dificultades particulares si las reglas no son simples múltiplos de otras y cuando las vías deben atravesar capas con reglas diferentes.
Tipos de enrutadores
Una PCB como diseño en una computadora (izquierda) y realizada como un conjunto de placa poblado de componentes (derecha). La placa es de doble cara, con revestimiento de orificio pasante, resistencia a la soldadura verde y una leyenda blanca. Se han utilizado componentes de montaje en superficie y de orificio pasante.
Los primeros tipos de enrutadores EDA eran "enrutadores manuales": el redactor hacía clic con el mouse en el punto final de cada segmento de línea de cada red. El software de diseño de PCB moderno generalmente proporciona "enrutadores interactivos": el redactor selecciona un pad y hace clic en algunos lugares para darle a la herramienta EDA una idea de dónde ir, y la herramienta EDA intenta colocar los cables lo más cerca posible de esa ruta sin violar verificación de reglas de diseño (DRC). Algunos enrutadores interactivos más avanzados tienen funciones de "empujar y empujar" (también conocidas como "empujar a un lado" o "movimiento automático") en un enrutador interactivo; la herramienta EDA quita otras redes del camino, si es posible, para colocar un nuevo cable donde el redactor lo desee y aun así evitar violar la DRC. El software de diseño de PCB moderno también suele proporcionar "enrutadores automáticos" que enrutan todas las conexiones restantes no enrutadas sin intervención humana.
Los principales tipos de enrutadores automáticos son:
SimplifyPCB (un enrutador topológico centrado en el enrutamiento de paquetes con resultados de enrutamiento manual) [20]
Cómo funcionan los enrutadores
Muchos enrutadores ejecutan el siguiente algoritmo general:
Primero, determine un rumbo aproximado para cada red, a menudo encaminándola sobre una rejilla gruesa. Este paso se llama enrutamiento global , [21] y opcionalmente puede incluir la asignación de capas. El enrutamiento global limita el tamaño y la complejidad de los siguientes pasos de enrutamiento detallados, que se pueden realizar cuadrícula por cuadrícula.
Para un enrutamiento detallado, la técnica más común es romper y redireccionar, también conocido como romper y reintentar : [3]
Seleccione una secuencia en la que se deben tender las redes.
Enrute cada red en secuencia
Si no todas las redes se pueden enrutar exitosamente, aplique cualquiera de una variedad de métodos de "limpieza", en los que se eliminan las rutas seleccionadas, se cambia el orden de las redes restantes a enrutar y se intentan nuevamente las rutas restantes.
Este proceso se repite hasta que se enrutan todas las redes o el programa (o usuario) se da por vencido.
Un enfoque alternativo es tratar los cortocircuitos, las violaciones de las reglas de diseño, las obstrucciones, etc., de manera similar a como exceso de longitud del cable, es decir, como costos finitos que deben reducirse (al principio) en lugar de costos absolutos que deben evitarse. Este método de enrutamiento de "mejora iterativa" de múltiples pasadas [22] se describe mediante el siguiente algoritmo:
Para cada uno de varios pases iterativos:
Prescribir o ajustar los parámetros de peso de una "función objetiva" (que tiene un valor de parámetro de peso para cada unidad de exceso de longitud de cable y para cada tipo de infracción). Por ejemplo, para la primera pasada, normalmente se puede asignar un costo alto al exceso de longitud del cable, mientras que a las violaciones del diseño tales como cortocircuitos, adyacencia, etc. se les asigna un costo bajo. En pases posteriores, el orden relativo de los costos se cambia de modo que las infracciones sean costosas o puedan prohibirse absolutamente.
Seleccione (o elija al azar) una secuencia en la que se enrutarán las redes durante este paso.
"Romper" (si se enrutaron previamente) y redirigir cada red por turno, para minimizar el valor de la función objetivo de esa red. (Algunas de las rutas en general tendrán cortocircuitos u otras violaciones de diseño).
Continúe con el siguiente paso iterativo hasta que el enrutamiento esté completo y sea correcto, no se mejore más o se cumpla algún otro criterio de terminación.
La mayoría de los enrutadores asignan capas de cableado para transportar cableado predominantemente direccional "x" o "y", aunque ha habido enrutadores que evitan o reducen la necesidad de dicha asignación. [23] Cada enfoque tiene ventajas y desventajas. Las direcciones restringidas facilitan el diseño de la fuente de alimentación y el control de la diafonía entre capas, pero permitir rutas arbitrarias puede reducir la necesidad de vías y disminuir la cantidad de capas de cableado requeridas.
^ Garey, señor; Johnson, DS (1977). "El problema del árbol rectilíneo de Steiner es NP-completo". Revista SIAM de Matemática Aplicada . 32 (4): 826–834. doi :10.1137/0132071. ISSN 0036-1399.
^ Szymanski, Thomas G. (1985). "El enrutamiento del canal Dogleg es NP-completo". Transacciones IEEE sobre diseño asistido por computadora de circuitos y sistemas integrados . 4 (1): 31–41. doi :10.1109/tcad.1985.1270096. S2CID 17511882.
^ Ritchey, Lee W. (diciembre de 1999). "Enrutadores de PCB y métodos de enrutamiento" (PDF) . Revista PC Design (febrero de 1999). Borde de exceso de velocidad. Archivado (PDF) desde el original el 22 de octubre de 2018 . Consultado el 22 de octubre de 2018 .
^ Lee, Chester Y. (septiembre de 1961). "Un algoritmo para conexiones de rutas y sus aplicaciones". Transacciones IRE en Computadoras Electrónicas . CE-10 (3): 346–365. doi :10.1109/TEC.1961.5219222. S2CID 40700386.
^ abcde Kollipara, Ravindranath; Tripathi, Vijai K.; Sargento, Jerry E.; Blackwell, Glenn R.; Blanco, Donald; Staszak, Zbigniew J. (2005). «11.1.3 Sistemas Electrónicos de Embalaje - Diseño de Tableros de Cableado Impresos» (PDF) . En Whitaker, Jerry C.; Dorf, Richard C. (eds.). El manual de electrónica (2 ed.). Prensa CRC , Taylor & Francis Group, LLC . pag. 1266.ISBN978-0-8493-1889-4. LCCN 2004057106. Archivado (PDF) desde el original el 25 de septiembre de 2017 . Consultado el 25 de septiembre de 2017 .
^ Hadlock, Frank O. (1 de diciembre de 1977). "Un algoritmo de ruta más corta para gráficos de cuadrícula". Redes . 7 (4): 323–334. doi :10.1002/net.3230070404.
^ Mikami, Koichi; Tabuchi, Kinya (1968). Un programa informático para el enrutamiento óptimo de conectores de circuitos impresos . Actas IFIPS . vol. H47. págs. 1745-1478.
^ Torre alta, David W. (1969). "Una solución a los problemas de trazado de líneas en el plano continuo". DAC'69: Actas de la sexta conferencia anual sobre automatización del diseño . Prensa ACM . págs. 1–24. doi :10.1145/800260.809014.(NB. Esto contiene una de las primeras descripciones de un "enrutador de sonda de línea".)
^ abcd Minges, Merrill L. (1989). Manual de materiales electrónicos: embalaje. vol. 1. MAPE Internacional . ISBN978-0-87170-285-2. Consultado el 27 de septiembre de 2017 .
^ abc Shankar, Ravi; Fernández, Eduardo B. (2014-01-12). Einspruch, Norman G. (ed.). VLSI y Arquitectura de Computadores. Ciencia de la microestructura electrónica VLSI. vol. 20. Prensa Académica . ISBN978-1-48321784-0. Consultado el 22 de octubre de 2018 .
^ McLellan, Paul (23 de abril de 2012). "Memorias de enrutamiento de canales". Archivado desde el original el 18 de mayo de 2021 . Consultado el 1 de enero de 2022 .
^ Pinzón, Alan C.; Mackenzie, Ken J.; Balsdon, GJ; Symonds, G. (23 de junio de 1985). Un método para el enrutamiento sin rejilla de placas de circuito impreso (PDF) . 22ª Conferencia de Automatización de Diseño ACM/IEEE, Las Vegas, Nevada, EE.UU. Conferencia de automatización de diseño, 2009. Dac '09. 46° ACM/IEEE . Newtown, Tewkesbury, Gloucestershire, Reino Unido: Racal-Redac Ltd. págs. doi :10.1109/DAC.1985.1585990. ISBN0-8186-0635-5. ISSN 0738-100X. Archivado (PDF) desde el original el 22 de octubre de 2018 . Consultado el 22 de octubre de 2018 .
^ Webb, Darrell (20 de diciembre de 2012). "Un tributo a Alan Finch, el padre de Gridless Autorouting". Archivado desde el original el 22 de octubre de 2018 . Consultado el 22 de octubre de 2018 .
^ Wu, Bo (abril de 1992). Algoritmos de enrutamiento basados en la teoría de grafos (PDF) (Tesis). Universidad de Michigan Occidental . S2CID 3357923. Archivado desde el original (PDF) el 22 de octubre de 2018 . Consultado el 22 de octubre de 2018 .
^ "Computer-Partner Kiel GmbH:" Bloodhound "entflechtet Leiterplatten auf 16 Lagen". Computerwoche (en alemán). 13 de marzo de 1992. Archivado desde el original el 21 de octubre de 2018 . Consultado el 20 de octubre de 2018 .
^ Pfeil, Charles (2 de noviembre de 2017). "Toda una vida diseñando PCB: del diseño al software". Red EDN . Archivado desde el original el 21 de octubre de 2018 . Consultado el 20 de octubre de 2018 .
^ ab Redlich, Detlef. "1.6. Rechnergestützter Leiterplattenentwurf - Entflechtung" (PDF) . Schaltungsdesign (en alemán). Ernst-Abbe-Hochschule Jena (EAH). Archivado desde el original (PDF) el 21 de octubre de 2018 . Consultado el 20 de octubre de 2018 .
^ "Simplifique la automatización del diseño: la próxima generación en metodología de diseño".
^ Soukup, Jirí (1979). "Enrutador global". Actas de la 16ª Conferencia de Automatización del Diseño . San Diego, CA, EE.UU.: IEEE Press . págs. 481–489.
^ Rubin, Frank (1974). "Una técnica iterativa para el enrutamiento de cables impresos". Actas del XI Taller de Automatización del Diseño . págs. 308-13.
^ Linsker, Ralph (1984). "Un sistema de enrutamiento de cables impulsado por función de penalización de mejora iterativa" (PDF) . Revista IBM de investigación y desarrollo . 28 (5): 613–624. doi :10.1147/rd.285.0613.
Otras lecturas
Scheffer, Luis K.; Lavagno, Luciano; Martín, Grant (2006). "Capítulo 8: Enrutamiento ". Manual de automatización de diseño electrónico para circuitos integrados . vol. II. Boca Ratón, FL, EE.UU.: CRC Press / Taylor & Francis . ISBN 978-0-8493-3096-4.