Truco para obligar al Quartus a actualizar relojes

Cuestiones generales sobre uso de Quartus y diseño digital con él (las cuestiones que sean específicas de UnAmiga, dirigirlas a "Desarrollo" del foro UnAmiga)
Responder
Avatar de Usuario
jepalza
Spartan 3
Mensajes: 226
Registrado: 14 Ago 2018, 18:51

Truco para obligar al Quartus a actualizar relojes

Mensaje por jepalza » 17 Ago 2018, 18:50

Si te has encontrado con el problema del Quartus a la hora de convertir entre versiones (en concreto, subir de versión desde una inferior), hay un truco muy sencillo.
Si eres usuario del Quartus, y has leído un proyecto de una versión anterior o de un modelo de FPGA diferente, habrás visto que, automaticamente, sale un cartel amarillo de advertencia, que te permite (en teoría) actualizar los componentes a la nueva versión y/o fpga.
Pero es un infierno, la mayoría de la veces, no funciona, o se deja de lado los relojes.

Si te ocurre eso, haz lo siguiente:
busca el fichero que corresponde al reloj (si se sigue la norma, suelen tener en el nombre, las letras "PLL"), y edítalo con un editor de texto externo, al estilo del "Notepad" (mejor el notepad++), y localiza el texto que corresponde a la FPGA que lo originó, y cámbialo por tu FPGA.
Pero ello, debes conocer de antemano, el nombre que Quartus emplea para tu FPGA, por ejemplo, en el caso del UnAmiga, tenemos que una Altera "Cyclone IV E". Sabiendo eso, busca en el fichero del reloj que hemos abierto, el nombre de la FPGA original, por ejemplo, imagina que es "Cyclone II". Es tan sencillo, como sustituir TODAS las coincidencias "Cyclone II" por la nuestra "Cyclone IV E". Y cuando dogo "todas", me refiero incluso a los comentarios que comienzan con "--" o "//" (el indicativo de comentarios verilog o VHDL. Esto es debido, a que el Quartus emplea esos comentarios para adecuar el generador de relojes al modelo en cuestión. Puede parecer una tontería, pero funciona. Al principio, no cambiaba los de los comentarios, y no funcionaba, hasta que me dió por probar, y mano de santo.

ejemplo de líneas cambiadas:
en vhdl
intended_device_family => "Cyclone IV E",
-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone IV E"

en verilog
altpll_component.intended_device_family = "Cyclone IV E",
// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone IV E"

Avatar de Usuario
jepalza
Spartan 3
Mensajes: 226
Registrado: 14 Ago 2018, 18:51

Re: Truco para obligar al Quartus a actualizar relojes

Mensaje por jepalza » 17 Ago 2018, 18:55

Otro truco, si se pone "burro" el Quartus, y ni con esas nos deja abrir el reloj, es engañar al fichero de configuración con extensión ".QIP", que acompañan a los relojes creados mediante el MegaWizard, es editarlo a mano (notepad++) y cambiar la versión de este modo:

set_global_assignment -name IP_TOOL_VERSION "17.1" ------------------------------- cambiar 13.1 por 17.1
set_global_assignment -name IP_GENERATED_DEVICE_FAMILY "{Cyclone IV E}" ------------------ añadir esta

y si ademas, tenemos un fichero con extensión ".PPF" (mas raro, pero también le he encontrado), hacemos esto:
<pinplan intended_family="Cyclone IV E" variation_name="pll" megafunction_name="ALTPLL" specifies="all_ports">
(cambiar "Cyclone xxx" por "Cyclone IV E") :)

Alguno de los métodos, acaba funcionando.

Todo esto es extensible a memorias BRAM, FIFOS y lo que haya, pero en un principio, el mayor problema lo he visto en relojes.

Responder

Volver a “Quartus”