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í:
- Enrutar manualmente las rutas críticas, como mencioné anteriormente.
- 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.
- 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.
- 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.
- 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.
- 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