Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
17256 Discussions

How to control fan out of an asynchrounous signal

Altera_Forum
Honored Contributor II
7,123 Views

Hi, 

 

We had a design let say would be replicated more than 8000 times or would generate 8000 of fan-out for the reset signal. 

 

Module:process(reset,clock) 

Begin 

If (reset=’1’) then 

Some operation 

Else if rising_edge(clock) then 

Some operation 

End if 

End process Module 

 

Had tried  

force the signal to non global resource, -> causing that to failed for the recovery time.  

Max_fanout setting used to control this net and duplicate the flip-flop. -> failed 

This node feeds to an asynchronous control port -> attached is the picture. 

 

For this case, can we still set false path in between the register? Or need rerouting? Or there is any assignment setting that need to set? To control the fan-out of an asynchronous signal in Quartus. 

 

Thanks in advance for the help 

Best regards 

kenny
0 Kudos
9 Replies
Altera_Forum
Honored Contributor II
5,566 Views

You didn't report, if you observed any problems, if you just let Quartus do it's work? I assume none.

0 Kudos
Altera_Forum
Honored Contributor II
5,566 Views

Dear FVM, 

 

Thanks for your response, 

the Quartus shows “Warning: Ignored Maximum Fan-Out assignment” 

 

We try use MAX_FANOUT setting to control the net and to duplicate the flip-flop driving this net. Unfortunately, this cannot be used because the node feeds to an asynchronous Control ports. You may refer to the picture above. 

 

http://www.altera.com/literature/hb/qts/qts_qii5v1_03.pdf (http://www.altera.com/literature/hb/qts/qts_qii5v1_03.pdf) -> page 9-47 

 

So how do we control the fan-out for an asynchronous signal in Quartus?  

 

Thanks in advance, 

Best regards 

Kenny
0 Kudos
Altera_Forum
Honored Contributor II
5,566 Views

Had tried also  

PHYSICAL_SYNTHESIS_ASYNCHRONOUS_SIGNAL_PIPELINING & ASYNC_PIPELINE_REG_REACH setting to duplicate the source register but failed. 

 

thanks 

regards 

kenny
0 Kudos
Altera_Forum
Honored Contributor II
5,566 Views

Did you observe any real problems, besides the said warning?

0 Kudos
Altera_Forum
Honored Contributor II
5,566 Views

Hi, 

 

Had tried send a mail, but i guess it failed to send. It initially failed for the recovery timing in Time Quest. 

 

thanks  

regards 

kenny
0 Kudos
Altera_Forum
Honored Contributor II
5,566 Views

Please excuse my penetrant asking, it wasn't actually clear to me. I think, it's not mainly a fanout problem rather than of achieving the correct timing for the reset signal along the clock path at a rather high clock frequency. Avoiding asynchronous controls for fast registers simplifies timing closure a lot. Do you really need an asynchronous reset?

0 Kudos
Altera_Forum
Honored Contributor II
5,566 Views

To understand the Quartus behaviour with signal fanout, I set up a simple circuit with 8000 registers (simply connected as a shift register chain) and a reset synchronizer driving the asynchronous reset of each register. 

 

With Cyclone III, Quartus used a global clock resource to connect the reset signal and had no problem to achieve 250 MHz clock rate.
0 Kudos
Altera_Forum
Honored Contributor II
5,566 Views

Dear Fvm, 

 

Thanks for your input, I am using Stratix II EP3SE110F78014 and the fan out is about 60000. The result show slack ~-0.7 and End Point TNS ~-4000.  

 

By improving the TNS, I had tried to set the following 

 

1) set the global signal to off in the assignment editor. 

2) Increase the Effort level to Extra in the setting 

3) Perform automatic asynchronous signal pipelining in the setting 

 

And the result shows TNS ~-3000 in improvement. Is there anything that I can do to improve the TNS? I am following the guideline from the attached notes. 

 

Thank for your patient and help. 

Best regards 

Kenny
0 Kudos
Altera_Forum
Honored Contributor II
5,566 Views

After long reseach, Quartus does not encourage do reduce the max fan out. However, we can set some setting in the QSF file to control it: 

 

set_instance_assignment -name ADV_NETLIST_OPT_ALLOWED "ALWAYS ALLOW" -to  

set_instance_assignment -name MAX_FANOUT 500 -to  

set_instance_assignment -name IGNORE_MAX_FANOUT_ASSIGNMENTS OFF to  

set_instance_assignment -name MAX_FANOUT 500 -to  

set_instance_assignment -name ADV_NETLIST_OPT_ALLOWED "ALWAYS ALLOW" -to  

set_instance_assignment -name IGNORE_MAX_FANOUT_ASSIGNMENTS OFF -to  

set_instance_assignment -name ADV_NETLIST_OPT_ALLOWED "ALWAYS ALLOW" -to  

set_instance_assignment -name IGNORE_MAX_FANOUT_ASSIGNMENTS OFF -to  

set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS ON 

set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL ON 

set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC ON 

set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING ON 

set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION ON 

set_global_assignment -name PHYSICAL_SYNTHESIS_ASYNCHRONOUS_SIGNAL_PIPELINING ON 

set_instance_assignment -name MAX_FANOUT 500 -to set_instance_assignment -name ADV_NETLIST_OPT_ALLOWED "ALWAYS ALLOW" -to  

set_instance_assignment -name MAX_FANOUT 500 -to set_instance_assignment -name ADV_NETLIST_OPT_ALLOWED "ALWAYS ALLOW" -to  

set_instance_assignment -name AUTO_GLOBAL_REGISTER_CONTROLS ON -to
0 Kudos
Reply