Replicado de bloques en Altium Designer

Alfonso Blanco Fontao
|  January 20, 2021
En este artículo Alfonso Blanco Fontao presenta la propiedad de Altium Designer que, en su opinión, se infravalora y desconoce: el replicado de bloques. Léelo aquí:

En ingeniería suele haber múltiples modos de resolver un problema. Seguramente, tantos como ingenieros haya. Los hay más o menos eficientes, más o menos costosos, más o menos elegantes… y los hay que reúnen las tres cualidades.

En este artículo me gustaría presentar una propiedad de Altium Designer que, en mi opinión, se infravalora y desconoce: el replicado de bloques.

Razón de ser

Resulta muy común que, como parte de un diseño hardware, una parte del circuito se tenga que repetir múltiples veces. Por ejemplo: canales de comunicación, convertidores de nivel de señal, sensores de temperatura, humedad, etc.

La manera más básica de resolver este problema sería creando una hoja de esquema para cada una de esas repeticiones y realizando el layout de cada una de ellas por separado. Veamos que Altium se anticipa a esa situación y nos ofrece una herramienta que solventa el problema eficiente y elegantemente, resultando además en un gran ahorro de tiempo de diseño.

Sobre jerarquías de diseño

Como punto previo, aclaremos cómo trabaja Altium a la hora de organizar jerárquicamente un esquema.

Existen tres maneras:

Opciones de proyecto, lugar donde se define el tipo de jerarquía del mismo

  • Plano (Flat): sólo los puertos son globales a todo el circuito. Las etiquetas y señales de potencia son locales a cada hoja de esquema. El elemento de interconexión entre hojas de esquema es, por tanto, el puerto.
  • Jerárquico: se caracteriza por la existencia de una hoja de esquema que contiene un diagrama de bloques del resto de hojas. Sería el nivel más alto en la jerarquía, además de la forma más clara y elegante de hacer comprensible un esquema. Se subdivide en dos modos:
    • Normal: señales de potencia y puertos son globales.
    • Estricto: sólo los puertos son globales.
  • Global: tanto etiquetas como puertos como señales de potencia son globales a todo el circuito. Este modo tendría sentido únicamente para esquemas muy simples de una o dos hojas.
  • Automático: dejamos que el programa identifique por sí sólo cómo hemos organizado el esquema.

Para poder usar la herramienta de replicado de bloques es necesario que nuestro proyecto esté organizado de forma jerárquica.

Replicado en el esquema

Cualquier hoja de esquema es susceptible de ser usada tantas veces como sea necesario sin necesidad de dibujarla más que una vez. El replicado, de hecho, se realiza en el nivel superior de la jerarquía.

Supongamos que tenemos, como parte de nuestro diseño, una hoja de esquema denominada TSensor.SchDoc que queremos usar dos veces. Dicho esquema consta de una salida de nombre A_TEMP que nos da un valor analógico de temperatura que será convertido a digital.

Nos situaremos como primer paso en la hoja del nivel superior de la jerarquía y haremos clic con el botón derecho del ratón sobre la superficie de diseño. Seleccionamos Sheet Actions → Create Sheet Symbol from Sheet or HDL y, de entre la lista, seleccionamos la hoja de esquema que queremos replicar. En este caso, TSensor. Acto seguido, colocamos el bloque que representa al sensor de temperatura y vemos que éste ya aparece con su correspondiente señal de salida (definida como puerto en el esquema):

Sensor de temperatura en la hoja superior o diagrama de bloques

Llega ahora el momento de replicar el bloque. Para ello, hacemos doble clic sobre el designador de hoja (en la imagen superior, U_TSensor) y lo modificamos de la siguiente manera:

Con el comando Repeat logramos el replicado

El designador pasa ahora a tener la siguiente forma: Repeat(Nombre, Primer valor, Número de repeticiones). Así pues, estamos repitiendo el bloque 2 veces comenzando con el índice 1 y llamándolo T. Tendremos 2 instancias de TSensor: T1 y T2.

Observamos que, tras este cambio, el bloque pasa a tomar la siguiente forma:

La representación gráfica del bloque repetido señala que se está usando más de una vez

Si dejáramos así el bloque, la señal A_TEMP sería común tanto a T1 como a T2: las dos salidas estarían conectadas en una misma pista de cobre. No es esto lo que deseamos, si no tener dos salidas independientes (una de cada bloque). Para ello, hacemos doble clic sobre el puerto (A_TEMP) y lo modificamos a Repeat(A_TEMP).

De este modo, tenemos un bus compuesto por 2 señales a la salida del bloque replicado. Teniendo esto en cuenta, lo conectamos al resto del circuito usando un hilo (wire) en el nivel superior de la jerarquía. Podemos valernos de busses:

Interconexión entre diferentes bloques en el nivel superior

No olvidemos que todo bus debe estar correctamente etiquetado (tanto las señales individuales como el propio bus). Caso contrario, la compilación del proyecto arrojará errores.

De esta manera, el bloque U_Sensors está recibiendo dos señales de temperatura (una por canal repetido).

Tras compilar (verificar) el esquema veremos que en la hoja de esquema TSensor tenemos, además del editor, los dos canales creados:

Resultado del replicado

De igual modo, los componentes del primer canal reciben el sufijo _T1, mientras que los del segundo terminan con _T2. La forma del sufijo es configurable.

Replicado en el layout

Podemos inferir que, de igual manera que el replicado es sencillo a nivel esquema, deberá existir algo similar a nivel layout. Así es.

El concepto clave en este punto es el de Room. Un Room, por defecto, contiene todos los componentes dentro de una misma hoja de esquema (también llamado Component class). Cuando hacemos la transferencia del Netlist desde el esquema al layout, estas clases de componentes se crean automáticamente. Esto nos ayuda a distinguir qué componentes van juntos en el diseño. Si colocamos alguno de estos componentes fuera de su Room correspondiente, Altium nos dará un error.

En nuestro ejemplo, vemos que tenemos un Room correspondiente a cada canal de temperatura replicado. Tomemos uno de ellos y hagamos la colocación de los componentes, manteniéndolos siempre enteramente dentro de su Room. Adicionalmente, enrutaremos las señales internas a dicho Room (usando vías si fuera necesario).

Primer sensor de temperatura enrutado dentro de su Room

Estamos listos ahora para transferir esta parte del layout al segundo canal: accedemos a Design → Rooms → Copy Room Formats. Altium nos pide ahora seleccionar el Room de origen y acto seguido el de destino. El siguiente diálogo aparece:

Opciones de copiado de Rooms

Seleccionamos qué objetos queremos copiar y aceptamos y vemos que mágicamente, el segundo Room es idéntico al primero. Sólo los designadores de cada Room cambian: en el primer canal reciben el sufijo T1 (por ejemplo PT1_T1) mientras que en el segundo terminan en T2 (PT1_T2).

Podemos ahora mover libremente los Rooms y colocarlos donde mejor encajen con el resto del layout.

Conclusión

Siempre he encontrado los Rooms como una ayuda al diseño relativamente moderada (casi diría hasta inútil) salvo en dos casos muy concretos: uno es el ya visto (replicado de bloques) y el segundo sería para crear reglas de diseño que apliquen sólo a un espacio físico del layout. Esto último muy útil para trazar rutas de escape en componentes de encapsulados muy densos (como BGAs), donde los anchos de pista y espaciados son menores.

Con esto presento una solución elegante y efectiva a un problema que todo ingeniero de PCBs se encuentra alguna vez en su carrera.

About Author

About Author

Alfonso Blanco es Ingeniero Electrónico especializado en diseño de hardware y de PCBs.Tras múltiples años de experiencia en la industria de la electrónica, Alfonso ejerce actualmente como especialista de diseño de PCBs en el Instituto Politécnico Federal de Zúrich donde, además, imparte una asignatura de iniciación al mundo del circuito impreso. Alfonso posee la certificación CID+ otorgada por IPC.

most recent articles

Back to Home