Problemas de migración de Quartus FPGA

Tengo un Quartus de diseño FPGA que compila y funciona correctamente para un ciclón IV EP4CE15F17C8 (42% usado).

Estoy tratando de migrar el mismo diseño a un FPGA EP4CE10F17C8 más pequeño, pero al cambiar el dispositivo FPGA obtengo errores de compilación relacionados con una Megafunción PLL que tengo:

Error (176554): No se puede colocar PLL "top_level_d9620:top_level_d9620_comp|pll25MHZ_b:G5|altpll:altpll_component|pll25MHZ_b_altpll:auto_generated|pll1" -- El reloj de pin de E/S (tipo de puerto INCLK del PLL) está asignado a una ubicación que no está conectado al tipo de puerto INCLK de ningún PLL en el dispositivo

No sé cómo evitar este error. ¿Hay una solución para esto? Incluso si elimino el PLL, obtengo muchos errores como este:

Error (176337): Cell top_laser:top_laser_comp|gene_freq_dpi1:U35|retard_t40[0] alimentado por 5 señales de control no globales; solo 4 señales de control pueden ser no globales

¿Algunas ideas?

Parece que ha seleccionado un FPGA que no tiene los recursos que necesita.
EP4CE15F17C8 tiene 4 PLL y EP4CE10F17C8 tiene 2 PLL :: ¿Por qué no puedo usar uno de estos 2 PLL disponibles?
No se trata solo de la cantidad de PLL; también se trata de los recursos de enrutamiento globales/locales disponibles y los pines que ha seleccionado para llevar los relojes al chip.

Respuestas (2)

Parece que podría estar usando un pin de entrada para el reloj que no es un pin compatible con el reloj. Eche un vistazo a la hoja de datos y asegúrese de que está utilizando un pin de reloj válido. Esta es una de las pocas cosas en un FPGA que realmente debe tener en cuenta específicamente qué pin está usando. Básicamente, se pueden colocar otras señales donde sea más conveniente, pero los relojes deben conectarse a pines capaces de controlar las redes de reloj y los PLL.

Sin embargo, no estoy seguro sobre el segundo error. Consulte: http://quartushelp.altera.com/13.0/mergedProjects/msgs/msgs/efsac_fsac_too_many_non_global_control_signals_for_lcell_ff.htm . Podría ser un problema de enrutamiento del reloj si el reloj no pasa por la red de reloj adecuada.

Alex y Dave ya resolvieron tu primer error. La explicación del segundo error es un poco más sutil.

Cada bloque de matriz lógica (LAB) tiene una cierta cantidad de "señales de control", más comúnmente relojes, pero también restablecimientos y borrados. Estas señales se distribuyen comúnmente a través de los recursos de enrutamiento "globales" (a veces llamados recursos de enrutamiento de "reloj"), por lo que los LAB están optimizados para traer todas las señales de control que necesitan de los recursos de enrutamiento globales.

También puede alimentar señales de control a través del enrutamiento local, pero solo hasta cuatro de ellas por LAB. Así es como está construido el hardware.

La razón por la que ve este error cuando elimina el PLL es probablemente porque básicamente está convirtiendo las señales de control de señales globales (los PLL solo pueden alimentar globales) en señales locales. Si encuentra un lugar mejor para colocar los PLL, el error debería desaparecer.