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
Visitor spinh3ad
Visitor
116 Views
Registered: ‎07-09-2019

Detecting stale IP with TCL

Jump to solution

I'm using a TCL script to generate IP out of context, and I would like to be able to generate only the IP that is 'stale'. So if I have a piece of custom IP defined in RTL (one or more .v files), that IP would be considered stale if one or more of the .v files used the generate the IP have been modified after the IP was generated (ie, after the .dcp checkpoint for that IP was written). My process for generating the IP is to create a project using create_project (not 'in-memory'). I then add all my source files and my .bd file to the project. I enable out-of-context IP synthesis by setting generate_synth_checkpoint property of the .bd file to 1, and I perform generate_target on the .bd file.

At this stage, I can invoke get_ips for a full list of IPs referenced in the .bd file. I create runs for these IPs using the create_ip_run command. At this point it appears that runs are created for all the IP that do not have a .dcp file in place. Calling create_ip_run for an IP with an existing .dcp file results in this INFO:

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

Note that this happens regardless of whether the .v files associated with the IP have been modified; The tcl command only checks if a .dcp file exists for that IP, not whether the source has been modified since the .dcp was generated.

My question is, is there a way to detect and generate runs for IP where the .dcp already exists, but is stale relative to the source from which it was generated? The reason for wanting to do this is to only launch_runs for the IP that needs to be regenerated rather than all IP each time, thus saving time.

0 Kudos
1 Solution

Accepted Solutions
Xilinx Employee
Xilinx Employee
53 Views
Registered: ‎05-14-2008

Re: Detecting stale IP with TCL

Jump to solution

Correct. 

It does not detect any change in IP source files.

Since user knows which IP was modified, you can manully call create_ip_run for that IP and launch_runs.

Maybe you can try deleting the .dcp file of the IP that was modified.

-vivian

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
3 Replies
Xilinx Employee
Xilinx Employee
100 Views
Registered: ‎05-14-2008

Re: Detecting stale IP with TCL

Jump to solution

I'm afraid you need to launch_runs for the specific IPs whose source file was modified.

-vivian

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 Kudos
Visitor spinh3ad
Visitor
77 Views
Registered: ‎07-09-2019

Re: Detecting stale IP with TCL

Jump to solution

Thank you for the reply.

As far as I can tell, launch_runs simply executes any run that has been created, so it isn't the critical command here. The critical command is create_ip_run, since the logic behind this command creates a run when there is no .dcp present associated with that run, and does not create a run otherwise, EVEN IF the .dcp is stale.

So just to make sure I understand your reply correctly, you are saying there is no way to check for staleness of the checkpoint in TCL, and that I must manually call create_ip_run -force followed by launch_runs in order to regenerate a stale checkpoint. Is that correct?

0 Kudos
Xilinx Employee
Xilinx Employee
54 Views
Registered: ‎05-14-2008

Re: Detecting stale IP with TCL

Jump to solution

Correct. 

It does not detect any change in IP source files.

Since user knows which IP was modified, you can manully call create_ip_run for that IP and launch_runs.

Maybe you can try deleting the .dcp file of the IP that was modified.

-vivian

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------