Síntesis

Un vistazo a la síntesis física con Alliance

Figura 2: Resultado de la síntesis, un acercamiento.

Tras una breve introducción a VHDL mediante los ejemplos realizados en las últimas entradas, es tiempo de abrir paso a otro tema de gran relevancia en el diseño de sistemas digitales: la síntesis física.

Síntesis física

La síntesis física es el proceso mediante el cual se genera el layout a nivel transistor a partir de un componente descrito mediante un HDL. El layout es la representación de un circuito integrado en términos de formas geométricas planas que corresponden a los patrones de los materiales utilizados en la fabricación (eso sonó sorprendentemente técnico).

Alliance

Es un conjunto de herramientas de código abierto desarrollado en la University Pierre et Marie Curie en París, Francia. Dentro de estas herramientas se incluye: compilador, simulador y sintetizador de HDL, minimizador de expresiones booleanas, ruteador, entre otras.

Alliance corre bajo un entorno UNIX y forma parte de Fedora Electronic Lab. Como introducción al uso de estas herramientas se muestra el listado 1, correspondiente a un script cuya función es generar el layout de un componente de manera automática a partir de un archivo VHDL. Incluye la ejecución de diversas herramientas: VASY, ASimuT, BooM, BooG, LooN, OCP, NeRo, Cougar, LVX, y s2r.

#!/bin/bash
echo "======= Síntesis de circuitos digitales con Alliance ======="
echo "============= Script para síntesis automática =============="

if [ $# -ge 1 ]
then
    #Al menos un argumento fue dado al ejecutar el script.
    NOMBRE=$1
else
    #No fue dado ningún argumento.
    printf "Escriba el nombre del archivo vhd, sin extensión, a "
    printf "ser sintetizado: "
    read NOMBRE
fi

printf "Iniciando el proceso de síntesis para ${NOMBRE}"
sleep 1; printf "."; sleep 1; printf "."; sleep 1; printf ".";
echo ""; echo ""; echo ""

vasy -VaopI vhd ${NOMBRE} ${NOMBRE}            &&
asimut -c -b ${NOMBRE}                         &&
boom ${NOMBRE} ${NOMBRE}_o                     &&
boog ${NOMBRE}_o ${NOMBRE} -x 1 -m 2           &&
asimut -c ${NOMBRE}                            &&
loon -x 1 -m 2 ${NOMBRE} ${NOMBRE}_o           &&
ocp ${NOMBRE}_o ${NOMBRE}_p                    &&
nero -V -p ${NOMBRE}_p ${NOMBRE}_o ${NOMBRE}_r &&
MBK_OUT_LO=al                                  &&
cougar ${NOMBRE}_r ${NOMBRE}_c                 &&
lvx vst al ${NOMBRE}_o ${NOMBRE}_c             &&
s2r -v ${NOMBRE}_r ${NOMBRE}_f                 &&
dreal -l ${NOMBRE}_f
echo "============== Proceso de síntesis finalizado =============="

El layout

De momento pasaremos al resultado de la síntesis del divisor de frecuencia, mostrado en la figura 1. Ese conjunto de líneas de colores conforman el layout, cada uno de los transistores, fuentes de voltaje e interconexiones (a decir verdad, a mí me parece algo similar al arte contemporáneo).

Figura 1: Resultado de la síntesis.

Figura 1: Resultado de la síntesis.

La figura 2 muestra el resultado con más detalle, los distintos materiales que componen el circuito: polisilicio en color rojo, regiones activas en color verde, conexiones de VDD y VSS en azul, contactos en color morado, entre otros.

Figura 2: Resultado de la síntesis, un acercamiento.

Figura 2: Resultado de la síntesis, un acercamiento.

Lo que sigue

Así que… ¿qué paso en este artículo? La verdad es que nada y todo a la vez. Ahora ya sabemos que existen las herramientas gratuitas de Alliance y que son capaces de sintetizar componentes digitales para su posterior fabricación, aunque no sabemos que clase de magia arcana realizan tras bambalinas. Dentro de las próximas entradas estaré analizando cada una de las herramientas y su labor en el proceso.

You Might Also Like

No hay comentarios

Deja tu comentario