La Implementación (Implementation) es la fase de diseño físico que
transforma la netlist lógica (mapeada en la síntesis) en una configuración
de hardware completamente enrutada sobre la matriz de la FPGA.
A diferencia de la síntesis, que trabaja con lógica, la implementación
trabaja con coordenadas físicas y recursos de interconexión. Su objetivo
principal es ubicar los componentes en sitios específicos del chip
(Placement) y conectarlos mediante las pistas de metal disponibles (Routing),
garantizando que se cumplan las restricciones de tiempo
(timing) y de ubicación física (pines) definidas en los archivos de
restricciones (XDC).
En la fase de implementación se utilizan dos ficheros de restricciones XDC,
se encuentran en la carpeta constraints del proyecto:
01_timing.xdc: Define las restricciones temporales (Input/Output Delay)
que guían la optimización del diseño para cumplir con los requisitos de
tiempo.
02_basys3_io.xdc: Asigna los pines físicos de la FPGA a los puertos
lógicos del diseño, definiendo el conexionado con los periféricos de la
placa Basys 3.
1# -------------------------------------------------------------------------------- 2# Archivo: 02_basys3_io.xdc 3# Descripción: Asignación de pines y configuración de voltaje para Basys3 4# -------------------------------------------------------------------------------- 5## Switches (Entradas A y B) 6## <pin> <port> 7set_propertyPACKAGE_PINV17[get_ports{A[0]}] 8set_propertyPACKAGE_PINV16[get_ports{A[1]}] 9set_propertyPACKAGE_PINW16[get_ports{A[2]}]10set_propertyPACKAGE_PINW17[get_ports{A[3]}]11set_propertyPACKAGE_PINW15[get_ports{A[4]}]12set_propertyPACKAGE_PINV15[get_ports{A[5]}]13set_propertyPACKAGE_PINW14[get_ports{A[6]}]14set_propertyPACKAGE_PINW13[get_ports{A[7]}]1516set_propertyPACKAGE_PINV2[get_ports{B[0]}]17set_propertyPACKAGE_PINT3[get_ports{B[1]}]18set_propertyPACKAGE_PINT2[get_ports{B[2]}]19set_propertyPACKAGE_PINR3[get_ports{B[3]}]20set_propertyPACKAGE_PINW2[get_ports{B[4]}]21set_propertyPACKAGE_PINU1[get_ports{B[5]}]22set_propertyPACKAGE_PINT1[get_ports{B[6]}]23set_propertyPACKAGE_PINR2[get_ports{B[7]}]2425## Buttons (Selectores ALU)26set_propertyPACKAGE_PINW19[get_ports{ALU[1]}]27set_propertyPACKAGE_PINT17[get_ports{ALU[0]}]2829## LEDs (Salidas)30set_propertyPACKAGE_PINXXX[get_ports{SALIDA[0]}]31set_propertyPACKAGE_PINXXX[get_ports{SALIDA[1]}]32set_propertyPACKAGE_PINXXX[get_ports{SALIDA[2]}]33set_propertyPACKAGE_PINXXX[get_ports{SALIDA[3]}]34set_propertyPACKAGE_PINXXX[get_ports{SALIDA[4]}]35set_propertyPACKAGE_PINXXX[get_ports{SALIDA[5]}]36set_propertyPACKAGE_PINXXX[get_ports{SALIDA[6]}]37set_propertyPACKAGE_PINXXX[get_ports{SALIDA[7]}]3839set_propertyPACKAGE_PINXXX[get_ports{Z}]4041# --------------------------------------------------------------------------42# Configuración Eléctrica y de Dispositivo43# --------------------------------------------------------------------------44#45# Estándar I/O: Aplicamos LVCMOS33 a todos los puertos46# Configuración para Entradas (Switches y Botones)47set_propertyIOSTANDARDLVCMOS33[get_ports{A[*]B[*]ALU[*]}]48# Configuración para Salidas (LEDs)49set_propertyIOSTANDARDLVCMOS33[get_ports{SALIDA[*]Z}]5051# Configuración de compresión de Bitstream y Voltaje de Bancos52set_propertyCFGBVSVCCO[current_design]53set_propertyCONFIG_VOLTAGE3.3[current_design]
El archivo está incompleto, sustituye los valores XXX por los pines correctos.
Verifica además, que el fichero 02_basys3_io.xdc contiene las directivas que
corresponden con la asignación de pines mostrada en la figura siguiente.
Conexionado señales entrada/salida en la placa BASYS3.
Tras realizar el proceso de implementación se pueden obtener informes de
resultados. El comando report_utilization (en la pestaña Tcl Console)
genera un informe que muestra los recursos hardware utilizados
tras la implementación, mientras que el comando report_timing analiza los
tiempos de propagación de las señales en el circuito.
Análisis de resultados de implementación
Utilizando los comandos report_utilization y report_timing, anote los
siguientes datos:
Recursos hardware utilizados:
Slice LUTs:
Slice Registers:
Bonded IOBs:
Primitivas:
IBUF:
OBUF:
LUT2:
LUT4:
LUT5:
CARRY4:
Tiempo máximo de propagación: ____ ns, correspondiente al camino crítico
entre las señales ____ y ____.
Compara estos resultados con los obtenidos tras la síntesisis. ¿Han cambiado
los recursos hardware utilizados? ¿Y el tiempo máximo de propagación?
Justifica las diferencias observadas.