cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Newbie
Newbie
1,335 Views
Registered: ‎04-03-2018

Help - Resource Sharing Enable/Disable by Module

I have a design that has inherited IP which requires resource sharing to be turned on.  However, for the code I have developed that is a separate module but part of the same overall project I want resource sharing to be turned off. How can I selectively do this in Vivado?

 

(FYI, I am using a Virtex 7).

0 Kudos
2 Replies
Highlighted
Mentor
Mentor
1,312 Views
Registered: ‎02-24-2014

Re: Help - Resource Sharing Enable/Disable by Module

Unfortunately, resource sharing is only controlled by a synthesis command line option, and not a module property usable by block synthesis.  The only way I can imagine you can do this is to compile your inherited IP separately and include it into your project as a design checkpoint (DCP) file.    Or vice versa.   Compile your new IP separately without resource sharing and include it as a DCP.

Don't forget to close a thread when possible by accepting a post as a solution.
Highlighted
Scholar
Scholar
1,282 Views
Registered: ‎04-26-2012

Re: Help - Resource Sharing Enable/Disable by Module

@fractal99  "How can I selectively do this in Vivado?"

 

FWIW, Vivado 2017.x added some support for applying synthesis options/strategies to a given module/entity in the hierarchy; see Chapter 3, "Using Block Synthesis Strategies", of UG901 2017.4

Examples from UG901:

 

set_property BLOCK_SYNTH.<option name> <value> [get_cells <instance_name>]
  set_property BLOCK_SYNTH.MAX_LUT_INPUT 4 [get_cells fftEngine]
  set_property BLOCK_SYNTH.KEEP_EQUIVALENT_REGISTER 1 [get_cells mod_inst]

set_property BLOCK_SYNTH.STRATEGY {<value>} [get_cells <inst_name>]
  set_property BLOCK_SYNTH.STRATEGY {ALTERNATE_ROUTABILITY} [get_cells mod_inst]

  

Querying  BLOCK_SYNTH with list_property gives the following list of supported options:

 

BLOCK_SYNTH.ADDER_THRESHOLD
BLOCK_SYNTH.AUTO_PIPELINING 
BLOCK_SYNTH.COMPARATOR_THRESHOLD BLOCK_SYNTH.CONTROL_SET_THRESHOLD BLOCK_SYNTH.EXTRACT_PARTITION BLOCK_SYNTH.FLATTEN_HIERARCHY BLOCK_SYNTH.FLATTEN_INSIDE_PARTITION BLOCK_SYNTH.FSM_EXTRACTION BLOCK_SYNTH.KEEP_EQUIVALENT_REGISTER BLOCK_SYNTH.LUT_COMBINING BLOCK_SYNTH.MAX_LUT_INPUT BLOCK_SYNTH.MUXF_MAPPING
BLOCK_SYNTH.PRESERVE_BOUNDARY BLOCK_SYNTH.RETIMING BLOCK_SYNTH.SHREG_MIN_SIZE BLOCK_SYNTH.STRATEGY BLOCK_SYNTH.USER_PROVIDED

 

Although RESOURCE_SHARING isn't listed in the above, it might be worth experimenting with "USER_PROVIDED" to see what exactly that supports.

 

I'd also try the PERFORMANCE_OPTIMIZED block strategy to see if that disables resource sharing:

 

set_property BLOCK_SYNTH.STRATEGY {PERFORMANCE_OPTIMIZED} [get_cells mod_inst]

 

-Brian