Enrutamiento (automático) de PCB

Fondo

Estoy trabajando en un diseño de PCB de componentes mixtos PTH/SMD (agujero pasante/montaje en superficie) bastante denso. Estoy usando Eagle CAD para la captura / diseño esquemático y estoy usando la función de enrutador automático para enrutar. Es una placa de dos capas y trato de mantener todos los componentes SMD en el mismo lado de la placa para facilitar la fabricación.

Experiencia

Por lo general, coloco mis componentes en lo que creo que son ubicaciones sensibles desde el punto de vista de la proximidad de la interfaz, giro los paquetes QFP 45 grados donde parece que podría ser útil, configuro la cuadrícula de enrutamiento en 1 mil (¿es decir, el mínimo?), Configuro el Ancho de seguimiento mínimo de DRC al mínimo permitido por mi fabricante, haga clic en Ir, duerma un poco y vea cómo resulta en la mañana (o si falló). Hay muchas configuraciones en el enrutador automático y DRC con las que, francamente, nunca me meto porque no entiendo cómo afectan la enrutabilidad (¿es una palabra?), lo que puede contribuir a mis frustraciones con eso.

Pregunta

He usado mucho Eagle en este punto, y estoy muy contento con él, pero a menudo parece un verdadero desafío completar el enrutamiento automático, y la capacidad de enrutamiento parece ser muy sensible a la ubicación de los componentes. A menudo obtendrá hasta un 98% o más de enrutamiento y luego se dará por vencido. ¿Cuáles son algunas reglas generales/directrices/consejos sobre cómo ayudar al enrutador automático a hacer el trabajo?

Respuestas (5)

El enrutador automático Eagle es una herramienta decente y la uso mucho. Sin embargo, como toda herramienta, hay que saber utilizarla bien y comprender sus limitaciones. Si solo espera arrojar todo al enrutador automático, se sentirá decepcionado. Ningún enrutador automático actual, y probablemente durante varios años, puede hacer eso para cualquier cosa más allá de los problemas artificiales o de juguete.

Dices que hay configuraciones en el enrutador automático Eagle que no entiendes y con las que nunca te metes. Esta es una mala actitud y probablemente una buena parte de su problema. No existe un conjunto de parámetros de control que funcione en todas las placas. Incluso dentro de los tableros de 2 capas hay varias compensaciones. Tienes que leer absolutamente el manual y ajustar los parámetros para tu situación particular.

Para tableros de dos capas, a menudo trato de mantener la mayor parte de la capa inferior en un plano de tierra. Por lo tanto, uso la capa superior para interconexiones tanto como sea posible, y la capa inferior para "puentes" cortos para que la topología de enrutamiento funcione. En este caso, establecí un costo alto para el enrutamiento en la capa inferior.

Antes del enrutamiento automático, debe mirar el tablero y pensar en las áreas críticas que no puede explicar a un enrutador automático. Por ejemplo, desea mantener las corrientes de bucle de una fuente de alimentación conmutada local y fuera del plano de tierra principal. Lo mismo es válido para las corrientes de alta frecuencia locales en un chip digital, como las tapas de derivación y el cristal con sus tapas. Si está utilizando la capa del pseudo plano de tierra como describí anteriormente, entonces querrá conectar manualmente cada conexión a tierra inmediatamente al plano de tierra con su propia vía. Eso deja el máximo espacio en la capa superior para enrutar todo lo demás.

El proceso de enrutamiento de una placa, incluso cuando se permite que el enrutador automático haga la mayor parte del trabajo duro, se ve así:

  1. Enrute manualmente las rutas críticas, como mencioné anteriormente.

  2. Realice el enrutamiento previo a la limpieza automática básica. Esto incluye conectar todos los pines de tierra directamente al plano de tierra, por ejemplo.

  3. Busque áreas problemáticas donde pueda ver que el enrutador automático podría tener problemas. Si hay conexiones cortas en áreas densas, es posible que desee hacer algunas de ellas. Esto requiere algo de experiencia e intuición, por lo que si es nuevo en el enrutador automático en particular, omita este paso por ahora.

  4. Guarde una copia de la placa y luego ejecute el enrutador automático. Si este es el primero hasta aquí, solo haga que haga lo mínimo para encontrar una solución. El propósito de las primeras veces es ver dónde están las áreas problemáticas para que pueda ajustar el diseño y su ruta previa manual en consecuencia.

  5. Fíjese bien en la ruta resultante. Vea dónde están las áreas problemáticas. Vuelva a la copia guardada del paso 4 y ajuste su diseño y ruta previa manual de acuerdo con lo que hizo el enrutador automático. Repita el paso 4 hasta que el resultado parezca razonable. A medida que realiza más iteraciones hasta aquí, aumenta las optimizaciones del enrutador automático y otros parámetros para hacer una ruta más final. Al principio, solo está tratando de ver si puede encontrar una solución y cuáles son los grandes problemas. En pasadas posteriores converges en una ruta real. Comienzo sin pases de optimización y uso 8 para las rutas finales. También configuro pases tempranos para encontrar una solución, luego pases posteriores para optimizarla.

  6. Haz limpieza manual en la ruta. En el caso de un tablero de dos capas con tierra principalmente en la parte inferior, desea minimizar las dimensiones máximas de las islas en el plano de tierra. Es mejor tener un gran número de islas pequeñas que pocas islas grandes. A veces, puede ver formas de reorganizar las señales localmente para minimizar los puentes en la capa inferior. En esta etapa, ya se ha ocupado del panorama general y se está enfocando en optimizar manualmente áreas pequeñas. Esto es similar a un optimizador de mirilla de compiladores.

Aquí hay un archivo de control de enrutador automático Eagle que usé en un proyecto de dos capas con la capa inferior como un plano de tierra en la medida de lo posible:

; Archivo de control de enrutador automático EAGLE

[Por defecto]

  EnrutamientoGrid = 4mil

  ; Parámetros de seguimiento:

  tpViaShape = Redondo

  ; Direcciones preferidas:

  PrefDir.1 = *
  PrefDir.2 = 0
  PrefDir.3 = 0
  PrefDir.4 = 0
  PrefDir.5 = 0
  PrefDir.6 = 0
  PrefDir.7 = 0
  PrefDir.8 = 0
  PrefDir.9 = 0
  PrefDir.10 = 0
  PrefDir.11 = 0
  PrefDir.12 = 0
  PrefDir.13 = 0
  PrefDir.14 = 0
  PrefDir.15 = 0
  PrefDir.16 = *

  Activo = 1
  ; Factores de costo:

  cfVía = 50
  cfNonPref = 5
  cfChangeDir = 2
  cfOrthStep = 2
  cfDiagStep = 3
  cfExtdStep = 0
  cfBonusStep = 1
  cfMalusPaso = 1
  cfPadImpact = 4
  cfSmdImpact = 4
  cfBusImpact = 0
  cfAbrazando = 3
  cfEvitar = 4
  cfPolígono = 10

  cfBase.1 = 0
  cfBase.2 = 1
  cfBase.3 = 1
  cfBase.4 = 1
  cfBase.5 = 1
  cfBase.6 = 1
  cfBase.7 = 1
  cfBase.8 = 1
  cfBase.9 = 1
  cfBase.10 = 1
  cfBase.11 = 1
  cfBase.12 = 1
  cfBase.13 = 1
  cfBase.14 = 1
  cfBase.15 = 1
  cfBase.16 = 5

  ; Número máximo de...:

  mnVías = 20
  mnSegmentos = 9999
  mnPasosExtd = 9999
  mnRipupLevel = 50
  mnRipupSteps = 300
  mnRipupTotal = 500

[Autobuses]

  @Ruta

  Activo = 1
  cfVía = 10
  cfChangeDir = 5
  cfBusImpact = 4
  cfPolígono = 25
  cfBase.16 = 10
  mnVías = 0
  mnRipupLevel = 10
  mnRipupSteps = 100
  mnRipupTotal = 100

[Ruta]

  @Por defecto

  Activo = 1

[Optimizar1]

  @Ruta

  Activo = 1
  cfVía = 99
  cfNonPref = 4
  cfChangeDir = 4
  cfExtdStep = 1
  cfAbrazando = 1
  cfPolígono = 30
  cfBase.16 = 10
  mnExtdSteps = 20
  mnRipupLevel = 0
  mnRipupSteps = 100
  mnRipupTotal = 100

[Optimizar2]

  @Optimizar1

  Activo = 1
  cfNonPref = 3
  cfChangeDir = 3
  cfBonusStep = 2
  cfMalusPaso = 2
  cfPadImpact = 2
  cfSmdImpact = 2
  cfAbrazando = 0
  cfPolígono = 40
  mnExtdSteps = 15

[Optimizar3]

  @Optimizar2

  Activo = 1
  cfVía = 80
  cfNonPref = 2
  cfChangeDir = 2
  cfPadImpact = 0
  cfSmdImpact = 0
  cfPolígono = 50
  mnExtdSteps = 10

[Optimizar4]

  @Optimize3

  Activo = 1
  cfVía = 60
  cfNonPref = 1
  cfPolígono = 60
  cfBase.16 = 12

[Optimizar5]

  @Optimize4

  Activo = 1
  cfVía = 40
  cfNonPref = 0
  cfPolígono = 70
  cfBase.16 = 14
  mnExtdSteps = 5

[Optimizar6]

  @Optimize5

  Activo = 1
  cfVía = 20
  cfBase.16 = 16

[Optimizar7]

  @Optimize6

  Activo = 1
  cfBase.16 = 18

[Optimizar8]

  @Optimize7

  Activo = 1
  cfBase.16 = 20
No quise parecer con una mala actitud...

Autorouting, en general, es más doloroso de lo que vale. Incluso con enrutadores súper caros. Mi empresa utiliza Cadence Allegro (US$70.000 por asiento) y me parece que lleva más tiempo decirle al enrutador automático cómo hacer un buen trabajo que simplemente enrutarlo a mano. Y los resultados finales siempre son mejores. Esto ha sido cierto para todos los enrutadores automáticos que he probado, e independientemente de la complejidad de la placa. Los tableros que hago van desde cosas simples de 2 capas con solo un par de partes hasta monstruos de 14 capas con 16 BGA y más de 2000 redes.

¿ Has probado TopoR ? No tengo experiencia personal con él, pero siempre he pensado que los enrutadores convencionales son estúpidos, y este no parece estúpido según los materiales de marketing.
@romkyns No he probado TopoR. No parece tan útil para mis propósitos. No admite reglas más complejas sobre trazas diferenciales, trazas de impedancia coincidentes, longitudes de traza coincidentes, clases de red con diferentes reglas para cada clase, etc. Tal vez tenga esas cosas, pero no las vi mencionadas en su sitio web.
Me han dicho que es posible hacer todas esas cosas. Ver la respuesta de Elena. Siempre he tenido un buen presentimiento sobre este enrutador automático... :)

Me gustaría sugerir TopoR . TopoR es muy eficiente en tableros de 2 capas (pero también enruta con éxito tableros de una sola capa y multicapa de alta densidad). Puedo decirle que en tablero de 2 capas le proporcionará el mejor resultado (en comparación con otros CAD)

Si está interesado, podría hacer una ruta de muestra de su proyecto (necesitaría un archivo .brd) -> diztempa{at}gmail.com

Consulte el comentario de David Kessner en respuesta a mi sugerencia de TopoR: ¿es compatible con alguna de las funciones mencionadas?
@romkyns Es posible configurar la variedad de reglas en TopoR. Hablando de reglas de alta velocidad, TopoR le permite: - Crear los pares diferenciales - Especificar los parámetros del par diferencial: impedancia, ancho de cable y separación para cada capa de señal. - Haga coincidir el retraso de la señal en los grupos de redes y establezca la relación de retraso entre el grupo de redes, etc. respuesta detallada :)

He encontrado que el enrutador automático de Eagle es inadecuado. Mucha gente aquí dirá que el enrutamiento automático es malo y debe evitarse, pero tiendo a estar en desacuerdo. He tenido un gran éxito con el enrutamiento libre, y encuentro que generalmente ofrece rutas mucho mejores que el águila con menos vías y menos longitud total de la pista. Tienen scripts para importar y exportar desde eagle fácilmente y, en general, es fácil de usar.

Entonces, si uno usa FreeRouting con Eagle, asumo que solo necesita comprar los módulos esquemáticos y de diseño de CadSoft.

Los autorouters pueden ser muy quisquillosos y los algoritmos varían, por lo que lo que funciona bien para uno puede no funcionar con otro.
Aunque hago gran parte de mi enrutamiento a mano, no soy de los que piensan que deben evitarse por completo. Son solo una herramienta como cualquier otra y si funciona y facilita su trabajo, utilícela. Sin embargo, personalmente nunca me he encontrado con un enrutador que pueda hacer un mejor trabajo que uno a mano, por lo que no trataría de usarlo exclusivamente.

Sin embargo, si la placa es muy compleja o el enrutamiento es sensible (es decir, tiene restricciones que el enrutador no conoce y no tiene una forma decente de "decirla"), entonces a menudo es mejor enrutar al menos una parte a mano. Si se completa, por ejemplo, en un 98%, a menudo puede terminarlo usted mismo, ya que puede juzgar dónde podría relajar las restricciones (o decirle al enrutador automático y volver a intentarlo para ciertas redes)

La cuadrícula de ubicación y enrutamiento es muy importante. También haga uso de cualquier regla que pueda para optimizar su rendimiento; puede marcar una gran diferencia si dedica algún tiempo a configurarlo correctamente en lugar de simplemente hacer clic en "ruta".

A veces, simplemente no es posible enrutar la placa y cumplir con las reglas de diseño que haya establecido. Existen fórmulas para calcular la "capacidad de ruta" de una placa, según el tamaño de la placa, la cantidad de almohadillas, el ancho del trazo, etc. Google sabrá más.

No he usado el enrutador águila, por lo que no puedo aconsejar sobre eso específicamente, pero lea la documentación detenidamente e intente conocer qué hace cada configuración individual. Tal vez haga esto en un tablero de prueba para ver qué funciona mejor en diferentes situaciones.
Estoy de acuerdo con CMP en Freerouter. En realidad, es mejor que la mayoría de los enrutadores automáticos nativos que he usado en cuanto a enrutamiento, por lo que vale la pena intentar ver si obtiene mejores resultados que Eagle.