02-28-2018 08:53 AM
I'm running vivado 2017.2 tools
I want to use the suggested methodology of running different synthesis properties on various modules within the design hierarchy.
One particular module needs to have max_fanout of 128 or won't meet timing.
However there is no MAX_FANOUT or equivalent synthesis parameter listed in the BLOCK_SYNTH.xyz property list.
There are 16 options, but none offer maximum fanout.
How do I work around this? Do I have to declare a whole new custom synthesis strategy which includes a max_fanout and then apply it? Why has this parameter been forgotten?
02-28-2018 09:15 AM
...... except it is not possible to do this. You can only set one of the standard set of strategies. See below.
set_property BLOCK_SYNTH.STRATEGY Simon_Flow_PerfOptimzed_high_PCIe2 [get_cells ABCDEFG123 ]
ERROR: [Netlist 29-154] Cannot set property 'BLOCK_SYNTH.STRATEGY' because incorrect value 'Simon_Flow_PerfOptimzed_high_PCIe2' specified. Expecting type 'enum' with possible values of 'DEFAULT,AREA_OPTIMIZED,ALTERNATE_ROUTABILITY,PERFORMANCE_OPTIMIZED'.
Resolution: Please check the value of the property and set to a correct value.
02-28-2018 09:51 AM
Block level synthesis flow (using BLOCK_SYNTH property) doesn't have any option related to MAX FANOUT. Also the block level flow supports some of the predefined strategies only. The strategies that are allowed are: DEFAULT, AREA_OPTIMIZED, ALTERNATE_ROUTABILITY, and PERFORMANCE_OPTIMIZED.
>>How do I work around this? Do I have to declare a whole new custom synthesis strategy which includes a max_fanout and then apply it? Why has this parameter been forgotten?
As you say you want to set MAX_FANOUT on a particular module otherwise it fails timing. In that case, check for the register which is having high fanout nets (you can get this in timing reports of the failing path). Hence try setting MAX_FANOUT attribute on that particular register or signal in the RTL.
(* max_fanout = 128 *) reg sig1;