Autor Tema: Altium designer autorouter  (Leído 10966 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado damago

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Altium designer autorouter
« en: 20 de Febrero de 2008, 17:27:13 »
Hola,

el otro dia, despues de pasar 2 semanas haciendo una placa  :x, volvio a mi cabeza el tema del autorouter. Siempre ruteo a mano. Si alguna vez, por probar, le he dado al autorouter, me ha hecho un desastre.
De hecho es normal, porque tampoco es adivino, necesita de una serie de reglas para que haga las cosas a tu gusto ('supuestamente').

Estas reglas podrian basarse en restricciones simples como: el ancho minimo de algunas pistas, distancia entre ellas, u otras mas complejas (que no tengo ni idea de como se haria) como que una señal tenga su retorno 'muy cerca', o que una net no cambie de capa, o le limitemos la longitud maxima. O incluso narices, que el aspecto sea decente, que he visto que el autorouter me conecta una pista a un pad con un aspecto que da pena.

Pues mi idea, ahora que hay mas gente utilizando el protel, es la siguiente:
- podriamos coger una placa hecha de alguien (ya ruteada decentemente a mano), y sobre esa misma con ciertas restricciones prefijadas de partida (como posicion de los componentes o ancho minimo de la alimetacion o cualquier otra) empezar a investigar las posibilidades de las reglas.
Cada uno podria poner las reglas que ha utilizado y el resultado (o poner directamente el archivo pcb). Comentar que regla le ha hecho mayor papel, y como se usa.

Supongo que debe ser pesado colocar un numero grande de reglas, y mas cuando no sabes ni como empezar. De echo, ni siquiera se, si al final el protel haria algo decente con unas buenas reglas. Pero si lo hace, es cierto que podria ahorrar horas de ruteo, de manera que el resultado final es similar a lo que hubieras hecho por ti mismo, o incluso mejor (si en las reglas ya compruebas automaticamente ciertas cosas que deban cumplirse).

Supongo que el camino correcto al final, seria, rutear a mano algunas partes criticas de la placa (oscilador, cond. de desacoplo, algunas señales muy rapidas,....) y despues dejar el resto del trabajo al autorouter (con un buen set de reglas).

La idea de basarnos en una misma placa, es por comparar informacion, debatir un poco los resultados, y no se, tener un punto de partida (yo creo que la mayoria ruteamos todo a mano, por desconfianza del autorouter, y tal vez (que no se) pueda sernos mas util de lo que pensamos).

Un saludo.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Altium designer autorouter
« Respuesta #1 en: 20 de Febrero de 2008, 17:29:42 »
Muy buena idea, si se trabaja en pequeñas partes o en buscar reglas simples al final se puede tener una colección de reglas que permitan obtener lo que comentas.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Altium designer autorouter
« Respuesta #2 en: 21 de Febrero de 2008, 13:32:23 »
(yo creo que la mayoria ruteamos todo a mano, por desconfianza del autorouter, y tal vez (que no se) pueda sernos mas util de lo que pensamos).

Un saludo.


Pues en las placas que he hecho nunca ruteo a mano a lo mas que llego hacer es: separar unas lineas para que a la hora de planchar no se fundan. El autorouter nunca me ha dado problemas de hecho ha mejorado lo que si da un poco de dolor de cabeza es el autoplacer.

Saludos
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado damago

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: Altium designer autorouter
« Respuesta #3 en: 21 de Febrero de 2008, 19:13:58 »
Hola navaismo, que tal?,

has profundizado en las reglas para el autorouter? o simplemente le das al boton?
Es decir, la idea que comentaba, era profundizar un poco, para que el trazado siga unas pautas. No simplemente que funcione el circuito, ya que con que una todas las conexiones (y da igual como lo haga) la placa funcionara igual (en diseños que no sean criticos, de alta velocidad,....).
Ej: http://img125.imageshack.us/my.php?image=autorouterrl6.jpg (le he dado a autorouter sin mas a ese componente)
http://img295.imageshack.us/my.php?image=manualqz5.jpg (placa ruteada a mano. Como se ve, todas las pitas que salen de U11 se intetan llevar de una manera 'mejor' al micro).


Por ej. mmmm comento algunas reglas mentales que se me pasan por la cabeza ahora mismo, a ver si alguien mas se interesa en el tema:
- una regla que delimite una zona por la cual debe autorutearse un conjunto de pistas, nets,... (por ej. tu quiere que desde un componente a otro, todas las pistas no se salgan de una determinada zona, vamos que no rutee por donde le salga de las narices)
- una regla para que rutee un conjunto de pistas mas o menos paralelas (tipo bus), y que no las distribuyan por cualquier lado
- una regla para que una net solo se rutee en determinada capa, sin cambiar a otra
- una regla para que una net rutee en el camino mas corto, sin dar mil vueltas, o limitandole su longitud
- una regla para que no pase una pista entre los pad de los conectores
- una regla para que saque la pista hacia fuera del componente
- una regla....

No se, no es que sean buenos ejemplos tal vez (bueno el primero si creo que seria una buena regla), pero si es la idea que llevaba.
Es decir, encontrar la manera de formular reglas que dirijan el autoruteo, de manera similar al comportamiento de nuestro cerebro al rutear a mano.
A parte de que rutee como 'pensamos' manualmente, otras reglas se podrian dedicar a asegurarse que se cumplen ciertos requisitos tecnicos ('electricos') que dependeran del tipo de diseño y señales que contuviera este.

A ver si alguien mas se interesa, y cogemos una placa cualquiera, y a probar mil cosas... y a debatir, y ver que partido conseguimos sacarle.

Un saludo. Dani.
« Última modificación: 21 de Febrero de 2008, 19:19:31 por damago »

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Altium designer autorouter
« Respuesta #4 en: 21 de Febrero de 2008, 21:12:45 »
AAh ya entendi asi se me hace mas claro.

- una regla que delimite una zona por la cual debe autorutearse un conjunto de pistas, nets,... (por ej. tu quiere que desde un componente a otro, todas las pistas no se salgan de una determinada zona, vamos que no rutee por donde le salga de las narices)
- una regla para que rutee un conjunto de pistas mas o menos paralelas (tipo bus), y que no las distribuyan por cualquier lado
- una regla para que una net solo se rutee en determinada capa, sin cambiar a otra
- una regla para que una net rutee en el camino mas corto, sin dar mil vueltas, o limitandole su longitud
- una regla para que no pase una pista entre los pad de los conectores
- una regla para que saque la pista hacia fuera del componente

La primera y segunda -tomando los guiones- se me hace que necitaremos los scripts alguna vez lo intente pero como que no le hayo a este lenguaje que segun la ayuda es parecido al DELPHI

Para la tercera creo que seria suficiente añadiendo en las layer la regla "belong to net" y seleccionar la net y la capa que deseamos

La cuarta tambien podria creer que bastaria con una regla igual "Belong to net" dentro de la topologia y escoger shortest u horizontal -no se igual y hablo pendejadas-

y Asi sucesivamente que te parece si propones un sch de medio skill y todos nos ponemos a jugar con el.

Saludos
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Altium designer autorouter
« Respuesta #5 en: 25 de Febrero de 2008, 07:46:35 »
Yo echo de menos dos reglas:
- que no ponga vías bajo componentes SMD
- que no rutee por la cara TOP los componentes through-hole

Desconectado damago

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: Altium designer autorouter
« Respuesta #6 en: 26 de Febrero de 2008, 17:53:03 »
Hola,

el trabajo me tiene megaabsorbido... si es que tenia que haberle dado mas patadas al balon de pequeño....

Estoy empezando a probar el tema de las reglas. La regla de:
- una regla para que una net solo se rutee en determinada capa, sin cambiar a otra

como dices, Navaismo, funciona bien utilizando "belong to net" en la regla de tipo 'layers'.

Sabes como añadir un monton de nets a una 'netclass' de manera practica? Se ir a Design->classes y poner manualmente una a una las net que pertenecen a una 'netclass' que yo me cree. Pero es muy lento y pesado. Sabes como hacerlo, simplemente seleccionando, y diciendole que con lo seleccionado me cree una 'netclass'??

A ver si voy probando tb, las que comenta Nocturno, y puedo decir algo...

Un saludo. Dani.

Desconectado damago

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: Altium designer autorouter
« Respuesta #7 en: 28 de Febrero de 2008, 17:34:32 »
Para los 2 casos de nocturno:

"- que no rutee por la cara TOP los componentes through-hole"

Una forma, es la que ya hablamos en otro post. Se coloca un FILL (en la capa que deseamos no rutear) ocupando el area de un componente. Con esto conseguimos que todas las conexiones de los pads de ese componente salgan por la otra cara forzosamente.

Otra forma que he visto es, utilizando una regla de tipo 'clearance'. Para el primer objeto pondriamos: "(IsPad AND OnLayer('MultiLayer')) ", y para el segundo: "OnLayer('TopLayer') "

Y en constraints seleccionadmos: Same Nets Only.
De este modo, cualquier pista y pad que pertenezcan a la misma net, no podran unirse por la capa de arriba, y saldran forzosamente por la cara de abajo.

"que no ponga vías bajo componentes SMD"

De momento el mismo truco. Colocamos un FILL del tamaño del componente smd, en la capa BOTTOMLAYER. De este modo, todas las pistas saldran del pad por la cara de arriba (logicamente porque el pad esta en al cara de arriba), y nunca hara una via dentro de ese area, porque violaria la regla de 'short circuit'

Si tienes el componente en la capa de abajo, hacemos justo lo contrario (el FILL en el TOPLAYER)


Desventajas con el metodo del FILL: La zona definida por el FILL quedara inutilizada para pasar cualquier pista (en la cara que este definido el FILL claro).

Un saludo
« Última modificación: 28 de Febrero de 2008, 17:39:31 por damago »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Altium designer autorouter
« Respuesta #8 en: 28 de Febrero de 2008, 18:24:44 »
Lo del fill es lo que vengo usando, pero con el inconveniente que tú comentas.
Probaré eso de la regla Clearance, suena bien.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Altium designer autorouter
« Respuesta #9 en: 28 de Febrero de 2008, 20:31:40 »
Sabes como añadir un monton de nets a una 'netclass' de manera practica? Se ir a Design->classes y poner manualmente una a una las net que pertenecen a una 'netclass' que yo me cree. Pero es muy lento y pesado. Sabes como hacerlo, simplemente seleccionando, y diciendole que con lo seleccionado me cree una 'netclass'??

No pues lo hago igual como aqui. Que es identico.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado damago

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: Altium designer autorouter
« Respuesta #10 en: 29 de Febrero de 2008, 08:05:59 »
Hola navaismo,

no consigo ver ese video. En propiedades pone que usa mp3 (audio) y MS-CRAM (video). No se que codec de video es ese. El audio tpco lo puedo oir con ningun programa (VLC, windows media, cool edit, ....).

He instalado los ultimos codecs del 'K-Lite codec pack' y nada. Osea no hay error, simplemente no reproduce imagen, y reproduce 'silencio'.

Que tengo que instalarme para verlo?

Un saludo

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Altium designer autorouter
« Respuesta #11 en: 29 de Febrero de 2008, 13:59:04 »
Pues mira el video viene sin audio y tampoco anotaciones. El formato es AVI yo lo veo con el WMPLAYER y con los codecs de FDSHOW o algo asi.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Altium designer autorouter
« Respuesta #12 en: 29 de Febrero de 2008, 15:29:08 »
Os dejo aquí el link para el que considero el mejor reproductor, es el Kmplayer, es free, lleva los codecs más usuales integrados, está en castellano, etc etc!
http://kmplayer.com/es
http://rapidshare.com/files/88036031/KMP_293_1429.exe

saludos!

Desconectado damago

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: Altium designer autorouter
« Respuesta #13 en: 29 de Febrero de 2008, 17:30:45 »
Thanks J1M, con ese reproductor si he podido ver el video.

navaismo: esa es la manera que comentaba. Es manual y algo tediosa si quieres crear una net class con muchas nets (seleccionas  una a una, y ademas si no tienen nombres claros tienes que estar constantemente mirando el pcb).
Gracias por el video.

Un saludo.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Altium designer autorouter
« Respuesta #14 en: 14 de Julio de 2008, 23:17:20 »
Y bueno amigos reviviendo viejos temas...

Quisiera pedir su ayuda para poder implementar aquello que han comentado pero via un boton. Es decir, mediante un Script.

Tras varias horas de estar leyendo y re-leyendo las sintaxis y los ejemplos del Scripting en Protel, me llego la iluminacion a mi cabeza -bueno no aquella que resolveria el problema- me dije: "que no mas cabezas piensan mejor que una?" Y por ello empece a escribir este tema, bueno revivirlo.

Vamos a poner en la mesa las ideas o por lo menos mi idea:

1.- Lo que se requiere principalmente es hacer un script que al estar la PCB -a 2 layers- ya ruteada identifique los pads que hacen funcion de vias, dicho de otro modo, que encuentre aquellos pads que poseen tracks tanto en la bottom layer como en la top layer.

2.- Una vez que identifico esos pads  romper el ruteo del track -en un principio y pensando mas en los componentes TH, seria el de la top layer- Poner una via sobre el track onTop a unos milimetros del pad y rutear esa via onBotom hacia el pad.

Ahora bien habra que identificar los procesos y los objetos que podemos usar. Para ello podemos basarnos en algunos ejemplos del DXP o Altium como quieran llamarle. El primero en el que me estaba basando es el de COUNTPAD.PAS y es el siguiente:

Código: Pascal
  1. Procedure Display(Const AString : AnsiString);
  2. Begin
  3.     DisplayFormDialog.Label1.Caption := AString;
  4.     DisplayFormDialog.ShowModal;
  5. End;
  6.  
  7. Procedure PadCount;
  8. Var
  9.     BoardHandle : IPCB_Board;
  10.     Pad         : IPCB_Primitive;
  11.     Iterator    : IPCB_BoardIterator;
  12.     PadNumber   : Integer;
  13. Begin
  14.     PadNumber       := 0;
  15.     // retrieve the current board
  16.  
  17.     Board := PCBServer.GetCurrentPCBBoard;
  18.  
  19.     // retrieve the iterator
  20.     Iterator        := Board.BoardIterator_Create;
  21.     Iterator.AddFilter_ObjectSet(MkSet(ePadObject));
  22.     Iterator.AddFilter_LayerSet(AllLayers);
  23.     Iterator.AddFilter_Method(eProcessAll);
  24.  
  25.  
  26.     // search and count pads
  27.     Pad := Iterator.FirstPCBObject;
  28.     While (Pad <> Nil) Do
  29.     Begin
  30.         Inc(PadNumber);
  31.         Pad := Iterator.NextPCBObject;
  32.     End;
  33.     Board.BoardIterator_Destroy(Iterator);
  34.  
  35.     // Display the count result on a dialog.
  36.     Display('Pad Count = ' + IntToStr(PadNumber));
  37. End;

Se que esta demas que lo comente pues es muy claro lo que se hace pero nos podria ayudar. Lo que nos interesa realmente es esta parte del codigo

Citar
// retrieve the iterator
    Iterator        := Board.BoardIterator_Create;
    Iterator.AddFilter_ObjectSet(MkSet(ePadObject));
    Iterator.AddFilter_LayerSet(AllLayers);
    Iterator.AddFilter_Method(eProcessAll);


    // search and count pads
    Pad := Iterator.FirstPCBObject;
    While (Pad <> Nil) Do
    Begin
        Inc(PadNumber);
        Pad := Iterator.NextPCBObject;
    End;

Donde se crean los filtros de busqueda y los iteradores de nuestra placa. El ITERATOR es una variable que apunta -si se le puede llamar asi- a una interfaz de nuestro sistema en este caso es a IPCB_BoardIterator, Lo mismo pasa con la varibale Pad la cual "apunta" a otra interfaz de sistema ahora a IPC_Primitive.

Segun lei en la ayuda los iteradores nos ayudan a accesar a todos los componentes de nuestra PCB sin generar arreglos o bases de datos, segun esto existen 4 tipos: "espaciales", "de placa", "de grupo" y "de librerias".

"de placa": son usados para hacer busquedas globales en la placa
"espaciales": son usados para hacer busquedas dentro de limites especificos.
"de grupo": son usados para hacer busquedas dentro de un grupo de objetos como componentes
"de libreria": son usados para buscardentro de un documento de PCB library.

En este ejemplo usamos un iterador de Placa, ya que es definido aqui: Iterator:=board.BoardIterator_Create;

Despues a ese Iterador le añade los filtros que son estos 3

Citar
Iterator.AddFilter_ObjectSet(MkSet(ePadObject));
    Iterator.AddFilter_LayerSet(AllLayers);
    Iterator.AddFilter_Method(eProcessAll);

Donde el primero y mas importante es que el objeto a buscar es el PAD definido por ePadObject, despues le dice que en todas las layers y cualquier proceso.

Ahora bien lo que no hayo aun es como añadir un filtro referente a la conexion. Tenemos una interfaz de sistema que se llama IPCB_Connection la cual nos permitiria buscar conexiones en top y bottom layer sobre un mismo pad. Antes de eso tendriamos que asignar alguna variable como lo hacen arriba algo como conn        : IPCB_Connection; y podriamos meter un IF que dependiendo si esa conexion se cumple haga la siguiente busqueda.

El problema es que no me hayo de como sacar los filtros ya que la ayuda es muy escueta y los ejemplos ni se digan.

Esta misera idea solo resolveria el primer punto de esta idea, despues podriamos usar los ejemplos de PLACEVIA para poner lo que queremos pero por ahora llevo medio dia y no he podido dar con la solucion, espero alguien se anime y podamos avanzar juntos en este tema.

Saludos



"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."