Mostrando entradas con la etiqueta SRL. Mostrar todas las entradas
Mostrando entradas con la etiqueta SRL. Mostrar todas las entradas

martes, 29 de marzo de 2011

Cuidado con la implementación de los sincronizadores en el ISE !

La herramienta ISE tiene una opción no muy conocida que habilita el uso de los SRL (Shift Register Logic) de una LUT (Look-Up Table) como sincronizadores !! So.... se debe chequear el Map report para verificar la inclusión o no de SRLs en la lógica generada cuando se desea describir sincronizadores.


Para los nuevos Virtex-6 y Spartan-6 "shreg_min_size" es una propiedad de la herramienta de síntesis  XST que especifica el tamaño mínimo de registros de desplazamientos para ser inferidos e implementados en recursos SRL. Para los otros FPGAs la propiedad que habilita la inferencia de los SRL es llamada 'shift register extraction'. Un sincronizador compuesto de dos flip-flops, para la herramienta de síntesis es visto como un registro de desplazamiento de 2 estaps. Por defecto el valor de shreg_min_size es 2. Para cambiarlo estas propiedades se debe abrir las opciones de HDL del XST:
- Una vez abierto el proyecto en el ISE, seleccionar el proceso "Synthesize-XST' en la ventana 'Design'.
- Presione boton derecho del mouse y seleccione 'Process Properties'
- Seleccione 'HDL Options'
- Encuentre y modifique las propiedades mencionadas.


SIN EMBARGO, por mas que ese número se fije en un valor alto, por ejemplo 5, la herramienta de mapeo, re-sintetiza el diseño y puede usar los SRLs independientemente del número fijado en el atributo "shreg_min_size". En otras palabras "shreg_min_size" es un atributo que solo lo 've' el XST, y NO es pasado al MAP.

Para evitar este problema hay dos soluciones:


Solución 1- Usar el atributo de síntesis 'keep' en los registros sincronizadores. De este modo estos registros no serán tocados.


Solución 2- Usar una señal de reset para los sincronizadores. Así, los flip-flops sincronizadores no pueden ser llevados a SRL, porque no tienen entrada de reset. . . ..


Una razón mas, no muy conocida tampoco, para evitar el uso de los SRL como sincronizadores, es el hecho de que el tiempo de resolución de metaestabilidad de los  flip-flops de los SRL es muuuuuy malo.....(dicho por Austin Lesea de Xilinx.


Entonces, CUIDADO con la implementación de sincronizadores !