Showing results for 
Search instead for 
Did you mean: 
Honored Contributor I

Quartus does not recompile generic parameter correctly: build bug ?

Hello Forum Members, 

I have built a small frequency divider with a generic max count parameter: 

generic (cl_max : in natural:= 50000000 -- 1 hz ); port( reset : in std_logic:='0'; cl_in : in std_logic; cl_out : out std_logic; cl_up : in natural range 0 to cl_max:=0; cl_dn : in natural range 0 to cl_max:=cl_max/2 ); end entity; 


If I instantiate the module using default values, everything is ok: 

fDiv : entity work.cl_div_ent(cl_div_arch) port map(cl_in=>CLOCK_50, reset=>RESET_N, cl_out=>pulse_sec); 


However if I change the default value in the submodule: 

generic ( cl_max : in natural:= 5000000 -- 10Hz ); 

Quartus keeps on using the previous value (seen in RTL viewer and tested with DE0) 


If I redefine the default value in main: 

fDiv : entity work.cl_div_ent(cl_div_arch) generic map(cl_max=>50000000) -- 1Hz port map(cl_in=>CLOCK_50, reset=>RESET_N, cl_out=>pulse_sec); 

Everything works correctly, 


If i then remove the definition in main,  


fDiv : entity work.cl_div_ent(cl_div_arch) port map(cl_in=>CLOCK_50, reset=>RESET_N, cl_out=>pulse_sec); 


the modified initial value in the submodule (10Hz), that was not taken correctly the previous time, now is taken correctly, even if it differs from the value in main. 

I have the impression that Quartus II is not recompiling my file correctly, however the file is in the project and introducing a bug in the file with the entity generates a syntax error so it is compiled. 


(All projects are part of the project I have this verified) 


It could be that I am missing someting but I have no idea what ? 


Is there way to tell Quartus II 16.0 to reset compilation completely as workaround ? 


Any ideas welcome. 


Best regards, 

0 Kudos
1 Reply
Honored Contributor I

I remember that the reported problem existed in old Quartus versions (e.g. V7 or V8). I was under the impression that it has been fixed since long, but I didn't check with every new version. Particularly I'm no using yet V16. 


A solution had been and will surely be to delete the db folders and enforce a clean recompilation.