¿La configuración de los pines como virtual afecta la sincronización?

2

Tengo un submódulo Verilog que estoy probando de forma independiente. Este módulo tiene demasiados pines de nivel superior para que quepan en mi FPGA, por lo que he establecido algunos de los pines como virtuales para que se compilen sin optimizar las señales correspondientes.

Sin embargo, me preocupa que el análisis de tiempo se vea afectado al configurar esos pines como virtuales. Tengo la sensación de que los pines son efectivamente falsos.

¿La configuración de los pines de nivel superior como virtual en Quartus II afecta la sincronización? Si es así, ¿cómo puedo asegurarme de que el análisis de tiempo sea como si el FPGA tuviera suficientes pines para comenzar?

    
pregunta Randomblue

3 respuestas

3

Acabo de terminar un proyecto en el sitio del cliente asignando una IP con más de 2700 IO. En los primeros pasos del proyecto, utilizamos una envoltura para colocar todas las señales en un registro de desplazamiento gigante para asegurarnos de que no estaban optimizadas. Pero más adelante, utilizamos los IO virtuales para corregir el tiempo de diseño y obtener la estimación correcta de los recursos necesarios para el proyecto.

En mi experiencia, el uso de Virtual IO no afecta el tiempo de su diseño. Puede "FALSE PATH" esas señales si lo desea, pero si no lo hace y esas señales están conectadas a uno de sus relojes, entonces obtendrá el análisis de sincronización adecuado de esas señales.

    
respondido por el FarhadA
0

Necesitas crear otro módulo dentro de tu FPGA que se conecte a todas esas señales y que también tenga conexiones a pines reales en tu FPGA. Algo así como un registro de turno largo - piense en la cadena JTAG. Esto obligará a las herramientas de síntesis a tratar todas esas señales como reales y les aplicará las restricciones de tiempo correctas.

    
respondido por el Dave Tweed
0

Los pines virtuales se colocan como alimentación de la LUT de entrada en un ALM libre, que se puede colocar muy cerca de su lógica de diseño. La sincronización a la LUT asignada se verificará como de costumbre, incluidas las salidas combinatorias que su bloque tenga en esa ruta. Esto es lo que desea al inspeccionar la complejidad del bloque, aunque durante la integración el destino real podría estar mucho más lejos.

Si observa ChipPlanner, encontrará el submódulo densamente empaquetado en el centro utilizando pines IO virtuales. Si se dirige a los pines físicos, suponiendo que haya suficiente, encontrará el diseño extendido como una telaraña mientras el instalador intenta cumplir con el tiempo (y lo más probable es que no pueda). Debido a que la mayoría de las IO probablemente pasarán a través de buses de bloques PCS duros dedicados desde almohadillas HSSI en los núcleos IP, no tiene sentido adaptarlos a los pines duros.

Actualización: Lo que le gustaría probar es agregar una partición de diseño para su bloque y configurar una región de bloqueo lógico para esa partición que es una pequeña subsección de todo el chip. Esto le dará un pequeño cuadrado de área que el núcleo tendrá que cumplir con el tiempo dentro, con un número ilimitado de interconexiones que salen de la periferia. Esto le dará un análisis de tiempo en las entradas / salidas a un límite estricto, que puede ser más realista que las LUT de pines virtuales colocadas de forma arbitraria / favorable.

Ayuda de Quartus: def_virtual_pin

    
respondido por el shuckc

Lea otras preguntas en las etiquetas