5. Quick Start for Vivado

InTime is a software tool that solves FPGA timing, fitting and optimization problems with massive computing power and machine learning. The tool contains built-in intelligence to analyze an FPGA design and determine strategies for synthesis and place-and-route. FPGA designers use InTime in a few scenarios:

  • To solve a timing or fitting problem at a critical juncture in the design flow.
  • To continuously optimize the synthesis or place-and-route results throughout the design process.

The ensuing sections help users get started quickly.


5.2. Run InTime

  1. There are 2 ways to run InTime: the installer creates desktop shortcuts for both InTime and InTime Agent.
  • Double-click the InTime desktop shortcut shown in Figure 126.

Figure 126: InTime Desktop Icon

  • In Linux, open a commandline terminal and enter the following command:

    <InTime installation directory>/intime.sh
  1. Next, go to File > Open Project to open your FPGA project. If successful, the project name will be displayed, similar to the one shown in Figure 127.

Figure 127: Project successfully opened

5.3. Select a Recipe

An InTime Recipe represents a compilation and learning flow. For example, Directive Exploration is a recipe that tries different compilation “directives” in Vivado.


Figure 128: Recipe flow guide


Plunify recommends starting with the InTime Default recipe at the beginning.

Based on your design, this recipe generates 3 rounds of compilation using different synthesis and implementation options. The purpose of this recipe is to learn about the dependencies between the design and the tool parameters through multiple rounds of compilations, in order to get the best timing results possible. A list of available recipes for the Xilinx Vivado software is shown in Figure 129.


Figure 129: Typical Recipe list

5.4. Set Flow Properties

Before clicking the “Start Recipe” button, please specify the required server resource parameters, most importantly, the number of compilations, the number of rounds to run, and finally the number of servers (see Figure 130).


Figure 130: Essential flow properties


When selecting the Private Cloud run target, please make sure your private cloud is properly configured as described in the InTime Configuration Guide.

5.5. Start Recipe

  1. Click “Start Recipe” as shown in Figure 131.

Figure 131: Just click to begin!

  1. When InTime is running, the generated strategies and their statuses will automatically refresh (see Figure 132).

Figure 132: Status of each strategy as the job progresses

What is InTime doing?

  1. Analyze the design locally. If it is the first time, compile the design once, otherwise re-use existing results.
  2. From the database, extract related learning data from previous builds.
  3. Generate strategies according to the Runs Per Round and assign a new Job ID.
  4. Look for available servers.
  5. Replicate and distribute the project for the servers to compile.
  6. After compilation, extract the results and delete temporary files. If any compilation exceeds the maximum specified runtime, stop it and clean up.

5.6. Analyze Results

  1. After a successful compilation, a green circle will appear beside each strategy, along with the timing and area results (see Figure 133).

Figure 133: Compilation results

  1. A green highlight for the result metric (Timing Score in this example) means that the result improved and yellow means that it got worse. You can sort the results by clicking the respective column header(s).
  1. Right-click and select “Analyze Job XX + Child Jobs” to see the rate of improvement and results across jobs (see Figure 134 and Figure 135).

Figure 134: Analysis options


Figure 135: Results of all compilations

  1. Select “Multiple Job Analysis” to see the results across rounds as shown in Figure 136.

Figure 136: Results improved from job to job

5.7. Export Selected Result

When you have obtained a good result, you can export it to your FPGA software to verify the result. If not, continue to run more rounds.

To export a result for an XPR project,

  1. Right-click the desired result and choose “Export”. In the example below, we choose the revision “explore_1”.
  2. You can apply the selected strategy to your project as a new revision or to the default revision. See Figure 137 for all available export options.

Figure 137: Export result

  1. You can accept the default revision name or specify a new one.

Figure 138: Provide a new revision name

  1. After exporting, open this project in your FPGA software. The revision that you exported, explore_1, is now 2 new runs named explore_synth_1 and explore_impl_1 for the synthesis and implementation portions respectively.

Figure 139: Switch to the exported revision

  1. To verify the result, re-run your project to check that the timing result is the same as what is reported in InTime. You can view the reports provided by the FPGA software to understand more about the design.

Figure 140: View the result in the FPGA software

The TNS and WNS values are equal to those reported by InTime. (Note: These values are rounded to 2 decimal places in Vivado)

To export a result for a DCP checkpoint,

  1. Right-click the desired result and choose “Export > Save Strategy to Tcl Script...”. In the example below, we choose the revision “explore_1”.
  2. You can save the exported Tcl script apply_explore_1.tcl into any directory. See Figure 141 for available export options.

Figure 141: Export result via Save Strategy to Tcl Script...

  1. Make a backup copy of the DCP checkpoint, and open it in Vivado.
  2. Go to the Tcl Console and source the exported apply_explore_1.tcl to apply the strategy and start compiling.

Figure 142: Apply the exported Tcl script

  1. The timing result should be the same as what is reported in InTime.

5.8. Further References

In summary, the Quick Start guide shows you how to run InTime, view the results and export selected ones to your FPGA project. For more details and tips on InTime features and flows, please refer to the full InTime documentation (intime.pdf).