One popular example of a custom Tcl script in InTime is one that automatically executes multiple InTime Recipes in a user-defined order. For example, you can create a Tcl script to run InTime Recipe in the order of
Hot Start -> InTime Default -> Deep Dive -> Seed Effort Level Exploration
When each recipe completes, you can set the revision with the best timing result as the parent revision for the next recipe.
To try the sample Tcl script, download this an_pin003_autorun_multi_recipes.zip file. After extraction, it should contains the following file and folders:
- eight_bit_uc_quartusii_16p0_std folder – Quartus sample project
- eight_bit_uc_vivado_2016p4 folder – Vivado sample project
Then follows the steps below
- Start InTime and open the eight_bit_uc_quartusii_16p0_std/eight_bit_uc.qpf project ( Quartus ) or eight_bit_uc_vivado_2016p4/eight_bit_uc.xpr project ( Vivado )
- Run the autorun_multi_recipes.tcl script at the Tcl Console using the following command:
% source ../autorun_multi_recipes.tcl
When it finishes, you should able to get the result as shown in Figure 1.(1) As shown, the script stops the current recipe once it finds a revision that meets the recipe’s goal (Total Negative Slack (TNS) of -2500ns for the Hot Start recipe in this example). Next, it sets that revision as the parent revision for the next recipe. This process repeats until the last recipe is run, or InTime meets the subsequent goal of TNS = 0.
For more details, please refers to this application note:(link)
- As there is an element of randomness during strategy generation, the timing results might be different.