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!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Explorer
Explorer
403 Views
Registered: ‎10-12-2018

[Vivado 12-3453] The given sub-design is up-to-date, no action was taken.

Jump to solution

I have a tcl based script environment wich compiles the FPGA desings. The build fails. The first strange things happens during creating runs for IPs.

create_ip_run PCIe_to_64_clk_gen

Prints:

INFO: [Vivado 12-3453] The given sub-design is up-to-date, no action was taken.  If a run is still desired, use the '-force' option for the file:'<path>/src/ip/PCIe_to_64_clk_gen/PCIe_to_64_clk_gen.xci'

What does this info means? Is IP stored after synthesis state? How can I get which IP need to be synthesized?

(This IP is a clk_wiz IP)

I use:

  • Win10
  • Vivado 2017.4
Tags (3)
0 Kudos
1 Solution

Accepted Solutions
Scholar richardhead
Scholar
387 Views
Registered: ‎08-01-2012

Re: [Vivado 12-3453] The given sub-design is up-to-date, no action was taken.

Jump to solution

IPs are synthesised out of context before the main synth run. So next time the project built, unless you explicitly force the rebuild, or clear out the cache, it will use the previously generated version.

Cache is stored in the build folder. 

You only need to store the XCI file, and the IP can be rebuilt.

You can interrogate the IP using the "get_property" function. eg.

set is_generated [get_property IS_IP_GENERATED [get_files $full_file_path]]
set is_locked    [get_property IS_LOCKED       [get_files $full_file_path]]

So I have the following script for adding IPs to a project (that allows a "-clean" option on command line to forcibly re-build IPs)

read_ip $full_file_path_list

foreach file $file_list {
  set full_file_path "$src_folder/$file/$file.xci"
  
  upgrade_ip [get_ips $file]
  

  # If it is already locked, it has probably already been generated. 
  set is_generated [get_property IS_IP_GENERATED [get_files $full_file_path]]
  set is_locked    [get_property IS_LOCKED       [get_files $full_file_path]]

  if { $full_rebuild } { puts "Forcing rebuild of $file" }

  if { $full_rebuild && $is_locked } {
    puts "$file is locked, unlocking to allow full rebuild"
    set_property IS_LOCKED false [get_files $full_file_path]
  }

  if { (!$is_generated && !$is_locked) || $full_rebuild } {
    puts "Adding synth run for $file"
    reset_target all [get_files  "$src_folder/$file/$file.xci"]
    generate_target all [get_files  "$src_folder/$file/$file.xci"]
    create_ip_run [get_files -of_objects [get_fileset sources_1] "$src_folder/$file/$file.xci"]

  } elseif { $is_locked && !$is_generated } {
    puts "Error: IP has been locked by user, but has not been generated. IP cannot be added or generated."
    return -code error

  } else {
    puts "Adding IP $file - synth already completed"
  }

}
0 Kudos
1 Reply
Scholar richardhead
Scholar
388 Views
Registered: ‎08-01-2012

Re: [Vivado 12-3453] The given sub-design is up-to-date, no action was taken.

Jump to solution

IPs are synthesised out of context before the main synth run. So next time the project built, unless you explicitly force the rebuild, or clear out the cache, it will use the previously generated version.

Cache is stored in the build folder. 

You only need to store the XCI file, and the IP can be rebuilt.

You can interrogate the IP using the "get_property" function. eg.

set is_generated [get_property IS_IP_GENERATED [get_files $full_file_path]]
set is_locked    [get_property IS_LOCKED       [get_files $full_file_path]]

So I have the following script for adding IPs to a project (that allows a "-clean" option on command line to forcibly re-build IPs)

read_ip $full_file_path_list

foreach file $file_list {
  set full_file_path "$src_folder/$file/$file.xci"
  
  upgrade_ip [get_ips $file]
  

  # If it is already locked, it has probably already been generated. 
  set is_generated [get_property IS_IP_GENERATED [get_files $full_file_path]]
  set is_locked    [get_property IS_LOCKED       [get_files $full_file_path]]

  if { $full_rebuild } { puts "Forcing rebuild of $file" }

  if { $full_rebuild && $is_locked } {
    puts "$file is locked, unlocking to allow full rebuild"
    set_property IS_LOCKED false [get_files $full_file_path]
  }

  if { (!$is_generated && !$is_locked) || $full_rebuild } {
    puts "Adding synth run for $file"
    reset_target all [get_files  "$src_folder/$file/$file.xci"]
    generate_target all [get_files  "$src_folder/$file/$file.xci"]
    create_ip_run [get_files -of_objects [get_fileset sources_1] "$src_folder/$file/$file.xci"]

  } elseif { $is_locked && !$is_generated } {
    puts "Error: IP has been locked by user, but has not been generated. IP cannot be added or generated."
    return -code error

  } else {
    puts "Adding IP $file - synth already completed"
  }

}
0 Kudos