PCB (Auto-) Enrutabilidad

1

Background

Estoy trabajando en un diseño de PCB de componentes PTH / SMD (montaje en orificio / superficie) mezclado bastante denso. Estoy usando Eagle CAD para la captura / disposición esquemática y estoy usando la función de enrutador automático para enrutar. Es un tablero de dos capas, y estoy tratando de mantener todos los componentes SMD en el mismo lado del tablero 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, gire los paquetes QFP 45 grados donde parece que podría ser útil, configure la cuadrícula de enrutamiento en 1 mil (¿es el mínimo? , establezca el ancho de trazo mínimo de DRC al mínimo permitido por mi fabricante, haga clic en Ir, tome un poco de sueño y vea cómo resulta en la mañana (o que 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 capacidad de enrutamiento (¿es eso una palabra?), Lo que puede contribuir a mis frustraciones con él.

Pregunta

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

    
pregunta vicatcu

5 respuestas

8

El enrutador automático Eagle es una herramienta decente, y lo uso mucho. Sin embargo, como cualquier herramienta, debes saber cómo usarla bien y entender sus limitaciones. Si solo esperas tirar todo a la salida automática, serás decepcionado. Ningún enrutador automático actual, y probablemente durante los próximos años, puede hacer eso por cualquier cosa más allá de problemas artificiales o de juguetes.

Usted dice que hay configuraciones en el enrutador automático Eagle que no entiende y con las que nunca se mete. Esta es una mala actitud, y probablemente una buena parte de su problema. No hay un conjunto de parámetros de control que funcione en todas las placas. Incluso dentro de los tableros de 2 capas hay varias compensaciones. Es absolutamente necesario que lea el manual y ajuste los parámetros para su situación particular.

Para tablas de dos capas, a menudo trato de mantener la mayor parte de la capa inferior como 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 hacer que la topología de enrutamiento funcione. En este caso, establezco un alto costo para el enrutamiento en la capa inferior.

Antes de la salida automática, debe mirar la pizarra y pensar en las áreas críticas que no puede explicar a un autorouter. Por ejemplo, desea mantener las corrientes de bucle de una fuente de alimentación de conmutación local y fuera del plano principal de tierra. Lo mismo ocurre con las corrientes de alta frecuencia locales a un chip digital, como las tapas de bypass y el cristal con sus tapas. Si está utilizando la capa de pseudo plano de tierra como lo describí anteriormente, entonces desea 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 enrutar una placa, incluso cuando se deja que el enrutador automático haga la mayor parte del trabajo duro, se ve así:

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

  2. Hacer enrutamiento pre-automático de limpieza básica. Esto incluye la conexión de todas las clavijas de tierra directamente al plano de tierra, por ejemplo.

  3. Busque áreas problemáticas en las que pueda ver que el enrutador automático podría meterse en 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 autouter en particular, omita este paso por ahora.

  4. Guarde una copia de la pizarra y luego ejecute el enrutador automático. Si esta es la primera a través de aquí, haz 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. Mire cuidadosamente 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 la ruta previa manual de acuerdo con lo que hizo el enrutador automático. Repita de nuevo al paso 4 hasta que el resultado parezca razonable. A medida que realiza más iteraciones a través de 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 pases posteriores convergen en una ruta real. Comienzo sin pases de optimización y uso 8 para las rutas finales. También configuro los pases tempranos para encontrar una solución, y luego los pases para optimizarla.

  6. Hacer limpieza manual en la ruta. En el caso de un tablero de dos capas con la mayor parte de tierra 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 menos islas grandes. A veces puede ver formas de reorganizar las señales localmente para minimizar los puentes en la capa inferior. En esta etapa, el panorama general ya se ha resuelto y usted se está enfocando en la optimización manual de áreas pequeñas. Esto es similar a un optimizador de mirilla de compiladores.

Aquí hay un archivo de control de Autorouter Eagle que utilicé en un proyecto de dos capas con la capa inferior en el plano de tierra en la medida de lo posible:

; EAGLE Autorouter Control File

[Default]

  RoutingGrid     = 4mil

  ; Trace Parameters:

  tpViaShape      = Round

  ; Preferred Directions:

  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      = *

  Active          =    1
  ; Cost Factors:

  cfVia           =   50
  cfNonPref       =    5
  cfChangeDir     =    2
  cfOrthStep      =    2
  cfDiagStep      =    3
  cfExtdStep      =    0
  cfBonusStep     =    1
  cfMalusStep     =    1
  cfPadImpact     =    4
  cfSmdImpact     =    4
  cfBusImpact     =    0
  cfHugging       =    3
  cfAvoid         =    4
  cfPolygon       =   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

  ; Maximum Number of...:

  mnVias          =   20
  mnSegments      = 9999
  mnExtdSteps     = 9999
  mnRipupLevel    =   50
  mnRipupSteps    =  300
  mnRipupTotal    =  500

[Busses]

  @Route

  Active          =    1
  cfVia           =   10
  cfChangeDir     =    5
  cfBusImpact     =    4
  cfPolygon       =   25
  cfBase.16       =   10
  mnVias          =    0
  mnRipupLevel    =   10
  mnRipupSteps    =  100
  mnRipupTotal    =  100

[Route]

  @Default

  Active          =    1

[Optimize1]

  @Route

  Active          =    1
  cfVia           =   99
  cfNonPref       =    4
  cfChangeDir     =    4
  cfExtdStep      =    1
  cfHugging       =    1
  cfPolygon       =   30
  cfBase.16       =   10
  mnExtdSteps     =   20
  mnRipupLevel    =    0
  mnRipupSteps    =  100
  mnRipupTotal    =  100

[Optimize2]

  @Optimize1

  Active          =    1
  cfNonPref       =    3
  cfChangeDir     =    3
  cfBonusStep     =    2
  cfMalusStep     =    2
  cfPadImpact     =    2
  cfSmdImpact     =    2
  cfHugging       =    0
  cfPolygon       =   40
  mnExtdSteps     =   15

[Optimize3]

  @Optimize2

  Active          =    1
  cfVia           =   80
  cfNonPref       =    2
  cfChangeDir     =    2
  cfPadImpact     =    0
  cfSmdImpact     =    0
  cfPolygon       =   50
  mnExtdSteps     =   10

[Optimize4]

  @Optimize3

  Active          =    1
  cfVia           =   60
  cfNonPref       =    1
  cfPolygon       =   60
  cfBase.16       =   12

[Optimize5]

  @Optimize4

  Active          =    1
  cfVia           =   40
  cfNonPref       =    0
  cfPolygon       =   70
  cfBase.16       =   14
  mnExtdSteps     =    5

[Optimize6]

  @Optimize5

  Active          =    1
  cfVia           =   20
  cfBase.16       =   16

[Optimize7]

  @Optimize6

  Active          =    1
  cfBase.16       =   18

[Optimize8]

  @Optimize7

  Active          =    1
  cfBase.16       =   20
    
respondido por el Olin Lathrop
4

La autorouting, en general, es más dolorosa de lo que vale. Incluso con enrutadores muy caros. Mi compañía usa Cadence Allegro (US $ 70,000 por asiento), y me parece que lleva más tiempo decirle al operador automático cómo hacer un buen trabajo que simplemente enrutar la cosa a mano. Y los resultados finales son siempre mejores. Esto ha sido cierto para todos los enrutadores automáticos que he probado, e independientemente de la complejidad de la placa. Las tablas que hago van desde cosas simples de 2 capas con solo un par de partes hasta monstruos de 14 capas con 16 redes BGA y más de 2000 redes.

    
respondido por el user3624
3

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

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

    
respondido por el Elena Fulton
1

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

    
respondido por el captncraig
1

Los autoresouters pueden ser muy exigentes, y los algoritmos varían, por lo que lo que funciona bien para uno puede no serlo con otro.
Aunque hago mucho de mi ruta a mano, no soy de los que piensan que deberían evitarse por completo. Son solo una herramienta como cualquier otra y si funciona y facilita su trabajo, entonces úsela. Sin embargo, personalmente nunca he encontrado un enrutador que pueda hacer un mejor trabajo que usted 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 limitaciones que el enrutador no conoce y no tiene una forma decente de "decirlo"), a menudo es mejor enrutar al menos parte. a mano. Si es por ejemplo Completo al 98%, a menudo puede simplemente terminarlo usted mismo, ya que puede juzgar dónde podría relajar las restricciones (o decirle al autorouter y volver a intentarlo para ciertas redes)

La red de colocación y enrutamiento es muy importante. También haga uso de las reglas que pueda para optimizar su rendimiento, ya que puede hacer 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 elaborar la "capacidad de enrutamiento" de una placa, según el tamaño de la placa, la cantidad de almohadillas, el ancho de traza, etc. Google sabrá más.

No he usado el enrutador eagle, por lo que no puedo recomendarlo específicamente, pero lea la documentación detenidamente e intente saber qué hace cada configuración individual. Tal vez haga esto en una placa 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 utilizado en cuanto a enrutamiento, por lo que vale la pena intentar ver si obtiene mejores resultados que los de Eagle.

    
respondido por el Oli Glaser

Lea otras preguntas en las etiquetas