When using the non-project flow and running synth_ip, I receive the following Critical Warning:
CRITICAL WARNING: [BD 41-1715] Block design 'my_block.bd' is set for out-of-context synthesis mode Hierarchical (Out of context per IP). This is not supported in a non-project flow and
will be ignored. Please set the mode to None (Global Synthesis), or use Save Project As to save your work in a project flow to use this mode.
I subsequently receive errors like the following:
INFO: [Synth 8-638] synthesizing module 'debug_bridge_0' [/proj/.srcs/sources_1/ip/debug_bridge_0_5/synth/debug_bridge_0.v:58]
INFO: [Synth 8-638] synthesizing module 'bd_54be' [/proj//.srcs/sources_1/ip/debug_bridge_0_5/bd_0/hdl/bd_54be.v:13]
ERROR: [Synth 8-439] module 'bd_54be_xsdbm_0' not found [/proj/.srcs/sources_1/ip/debug_bridge_0_5/bd_0/hdl/bd_54be.v:68]
ERROR: [Synth 8-285] failed synthesizing module 'bd_54be' [/proj/.srcs/sources_1/ip/debug_bridge_0_5/bd_0/hdl/bd_54be.v:13]
ERROR: [Synth 8-285] failed synthesizing module 'debug_bridge_0' [/proj/.srcs/sources_1/ip/debug_bridge_0_5/synth/debug_bridge_0.v:58]
This is due to a Scoped Block Design (SBD) being synthesized, but not as a single out of context (OOC) module in non-project mode.
Additionally, for an SBD, synth_ip is not intended to work with OOC_NONE and is unsupported in Vivado 2016.x.
To work around this issue you can do the following:
1) Set out-of-context mode to None as instructed by the CRITICAL WARNING.
set_property generated_synth_checkpoint false [get_files .xci])
OOC is unsupported for an SBD IP in non-project mode.
2) Replace the 'synth_ip' command in Vivado script(s) with the synth_design command where applicable, in order to avoid errors stating that the synth_ip command does not support OOC_MODE==NONE.
synth_ip supports OOC enabled IP only
Note: When using Vivado IDE, the GUI handles the synth_ip vs synth_design /launch_runs as needed.
In Vivado 2016.3 calling 'synth_ip' on an IP with OOC disabled (for example, SBD IP) will result in the following error:
ERROR: [Vivado 12-3437] This command only supports sub-design files marked for netlist generation. To enable this functionality, set the GENERATE_SYNTH_CHECKPOINT property to true.
If the GENERATE_SYNTH_CHECKPOINT property is marked read-only, then select 'Report IP Status' from the 'Tools' menu, or run the 'report_ip_status' Tcl command to see why the sub-design is locked.