UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 59335

Vivado IP Flows - Using a Tcl file to add and create a Vivado IP to a project I get errors [Opt 31-30] where the IP core is considerd a Black Box

Description

I use the following Tcl commands to create and add a single IP core to a design, however opt_design fails due to the IP being a black box:

create_project -force -in_memory my_project
set_property target_language vhdl [current_project]
set_property part xc7k70tfbg676-1 [current_project]
read_vhdl my_top.vhd
read_ip core.xci
generate_target -force synthesis [get_files *my_core.xci]
synth_design -top my_top
opt_design

I receive the error below:

ERROR: [Opt 31-30] Blackbox my_core_1 (my_core) is driving pin I of primitive cell dout_OBUF[14]_inst. This blackbox cannot be found in the existing library.
Resolution: Please check the input design and ensure that the specific blackbox module is defined. Once the design is modified, then re-run the Vivado flow.
ERROR: [Opt 31-30] Blackbox my_core_1 (my_core) is driving pin I of primitive cell dout_OBUF[15]_inst. This blackbox cannot be found in the existing library.

Why does this occur?

Is this expected behavior?

Solution

This occurs because the IP is a black box in the design. 

The generate_target command in the script above does not generate the DCP checkpoint for the IP core.

As a result, when opt_design is run, the black box in the Synthesis run is not resolved and remains a black box in opt_design.

This means that these errors are valid. 

To correctly add the IP core to the design, the IP core needs to be synthesized using the synth_ip command. 

See the modified script below with the key line in bold:

# created on disk
create_project -in_memory -part xc7k70tfbg676-1 -force my_project
# read an IP customization
read_ip my_core.xci
# Generate all the output products
generate_target all [get_files *my_core.xci]
# Create a DCP for the IP
synth_ip [get_files *my_core.xci]
# Query all the files for this IP (optional)
get_files -all -of_objects [get_files *my_core.xci]
read_vhdl my_top.vhd
synth_design -top my_top
opt_design

Linked Answer Records

Associated Answer Records

AR# 59335
Date Created 02/06/2014
Last Updated 11/27/2014
Status Active
Type General Article
Tools
  • Vivado Design Suite - 2013.4