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: 
Explorer
Explorer
6,619 Views
Registered: ‎09-25-2014

OOC synthesis in Vivado 2016.4

Could someone tell me please, how to reset particular OOC run in OOC-per-IP mode?

It was simple in 2016.1, 2016.2, but after migrating to 2016.4, I have separate OOC run for block design, and changing one IP core leads to resetting this block design run, thus resetting everything else. Very strange. 

Screenshot in attachment.

ooc.png
0 Kudos
11 Replies
Moderator
Moderator
6,607 Views
Registered: ‎01-16-2013

Re: OOC synthesis in Vivado 2016.4

@alexkarnaukhov,

 

The GUI option is disabled but you can still use the TCL command reset_run.

Example: reset_run clk_core_synth_1

 

Check point number 5.a at page 115 in below User guide 

https://www.xilinx.com/support/documentation/sw_manuals/xilinx2016_4/ug896-vivado-ip.pdf

 

Regards,

Syed

---------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.

Did you check our new quick reference timing closure guide (UG1292)?
---------------------------------------------------------------------------------------------
0 Kudos
Explorer
Explorer
6,604 Views
Registered: ‎09-25-2014

Re: OOC synthesis in Vivado 2016.4

Ok, as I see in AR#68010 (https://www.xilinx.com/support/answers/68010.html), OOC-per-IP mode is completely broken in 2016.3-2016.4 versions. There is no synthesis time benefit, if you need whole BD synthesis every time you change some IP core. Very very sad.

0 Kudos
Explorer
Explorer
6,601 Views
Registered: ‎09-25-2014

Re: OOC synthesis in Vivado 2016.4

It was very simple in Vivado 2016.2 to change some IP and get bitstream.
1)Change IP
2)Push "Generate bitstream" button.
All OOC-per-IP things was done automatically, in most cases leads to resynth only affected IP`s.
Can I do the same thing in 2016.4 ?
0 Kudos
Moderator
Moderator
6,597 Views
Registered: ‎01-16-2013

Re: OOC synthesis in Vivado 2016.4

@alexkarnaukhov,

 

We have seen alot of issue with the reset run.

These IP OOC runs are Output Products of the IP and allowing individual run control was causing issues. Ideally, those runs should be launched by using the Generate Output Products command.

 

--Syed

---------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.

Did you check our new quick reference timing closure guide (UG1292)?
---------------------------------------------------------------------------------------------
0 Kudos
Explorer
Explorer
6,593 Views
Registered: ‎09-25-2014

Re: OOC synthesis in Vivado 2016.4

If I use "Generate Output Products" button with some changed IP, it leads to complete rebuild of every OOC core in that BD. Yes, in case of caching, unchanged cores resynth using cache, but still if there is a lot of cores, it takes longer time, than without resynth at all, as it was in 2016.2.

I still don`t understand what steps I should perform to resynth project with one changed core without rebuilding other cores.

1)Change some little core design_1_my_core_1 in BD design_1 with dozens of other unchanged IPs

2)??

3)Push generate bitstream button.

4)Get bitstream in the smallest possible time.

 

Is there is officially approved GUI steps to perform this in 2016.4? In 2016.2 I need not step 2) at all.

0 Kudos
Highlighted
Advisor evgenis1
Advisor
6,554 Views
Registered: ‎12-03-2007

Re: OOC synthesis in Vivado 2016.4

Hi @alexkarnaukhov,

 

The following TCL snippet works for me.

 

foreach ip_type "*.xci *.bd" {
        foreach ip_file [get_files $ip_type]  { 
           reset_target -quiet all [get_files $ip_file] 
           export_ip_user_files -of_objects [get_files $ip_file] -sync -no_script -force -quiet 
           delete_ip_run -quiet [get_files -of_objects $fileset] $ip_file]  
   }
}

Note that it iterates over *.xci and *.bd files of the projects, rather than run names.

It also handles *.xcix containers; there is corresponding *.xci inside.

 

There are few "hairy" details.

For example, you might want to check IS_ENABLED, and IS_GENERATED properties of the IP to make sure you don't touch OOC that are disabled and already generated. GENERATE_SYNTH_CHECKPOINT property tells if this IP core is OOC or part of the project.

 

Thanks,

Evgeni

Tags (2)
0 Kudos
Moderator
Moderator
6,531 Views
Registered: ‎07-21-2014

Re: OOC synthesis in Vivado 2016.4

@alexkarnaukhov

 

>>unchanged cores resynth using cache, but still if there is a lot of cores, it takes longer time, than without resynth at all, as it was in 2016.2

Anusheel: If tool finds a cache hit for a run then synthesis/OOC run will be skipped for that particular run. However you might see a message from tool "Synthesizing OOC run" but then tool takes(if available) the generated netlist and reports in the log "Using available netlist" and then synthesis run will be skipped, this reduces the overall run time.

 

If this is not the case for you, let us know the script commands/steps you followed. 

 

Thanks,
Anusheel
-----------------------------------------------------------------------------------------------
Search for documents/answer records related to your device and tool before posting query on forums.
Search related forums and make sure your query is not repeated.

Please mark the post as an answer "Accept as solution" in case it helps to resolve your query.
Helpful answer -> Give Kudos
-----------------------------------------------------------------------------------------------

0 Kudos
Explorer
Explorer
6,503 Views
Registered: ‎09-25-2014

Re: OOC synthesis in Vivado 2016.4

source C:/#############/gen_out_prod.tcl
# foreach ip_type "*.xci *.bd" {
#         foreach ip_file [get_files $ip_type]  { 
#            reset_target -quiet all [get_files $ip_file] 
#            export_ip_user_files -of_objects [get_files $ip_file] -sync -no_script -force -quiet 
#            delete_ip_run -quiet [get_files -of_objects $fileset] $ip_file]  
#    }
# }
can't read "fileset": no such variable
    while executing
"get_files -of_objects $fileset"
    ("foreach" body line 4)
    invoked from within
"foreach ip_file [get_files $ip_type]  { 
           reset_target -quiet all [get_files $ip_file] 
           export_ip_user_files -of_objects [get_fil..."
    ("foreach" body line 2)
    invoked from within
"foreach ip_type "*.xci *.bd" {
        foreach ip_file [get_files $ip_type]  { 
           reset_target -quiet all [get_files $ip_file] 
           ex..."
    (file "C:/###########/gen_out_prod.tcl" line 1)
0 Kudos
Advisor evgenis1
Advisor
6,486 Views
Registered: ‎12-03-2007

Re: OOC synthesis in Vivado 2016.4

Hi @alexkarnaukhov ,

 

Try this:

 

foreach ip_type "*.xci *.bd" {
        foreach ip_file [get_files $ip_type]  { 
           set fileset_name [file rootname [file tail $ip_file]]
           set fileset [get_fileset -quiet $fileset_name]
           reset_target -quiet all [get_files $ip_file] 
           export_ip_user_files -of_objects [get_files $ip_file] -sync -no_script -force -quiet 
           delete_ip_run -quiet [get_files -of_objects $fileset] $ip_file]  
   }
}

Thanks,

Evgeni

Tags (1)
0 Kudos
Adventurer
Adventurer
833 Views
Registered: ‎01-09-2014

Re: OOC synthesis in Vivado 2016.4

0 Kudos
Moderator
Moderator
812 Views
Registered: ‎07-21-2014

Re: OOC synthesis in Vivado 2016.4

@tomasz.janicki.tj

FYI..By locking the IP, user will not be able to edit/modify the .xci. Please make sure your script handles it carefully else the flow may break.

Also, IP Cache is another way of saving overall build time for the BD generation.

Thanks
Anusheel 

0 Kudos