The InTime Flow¶
A typical InTime flow is shown below. The flow's starting point is an FPGA project created separately in an FPGA vendor tool (Vivado/Quartus/Libero) or a generic build script such as a non-project mode script.
1. Analyze Design¶
When InTime starts, it detects existing synthesis and place-and-route results for the active revision/run (also known as the default revision). Its initial analysis checks whether the design has any timing, placement or routing issues.
Types of Challenges¶
- Placement or Routing failures
- Timing failures
InTime relies on an initial Design Assessment step to identify and classify design challenges. In order to shorten the overall turnaround time for a design, it is important to diagnose the issues accurately upfront, so that the tool can determine and automatically apply fixes.
Some designs may not be constrained properly, leading to poor quality of results and long runtimes.
In the Self Repair step, InTime will highlight inherent designs issues and prompt the user to fix them before entering the main optimization flow.
If the design has not been compiled yet, the user will be prompted to let InTime build it before proceeding. The default revision then becomes the parent revision of the strategy evaluation step. Using the parent revision, InTime generates strategies which are optimized for the design.
In cases where the compilation runtime is too long, the user can choose not to compile the original design and proceed with strategy generation.
2. Strategy Generation & Learning¶
When InTime generates strategies, it uses built-in knowledge that is optimized for the design. This knowledge leads to strategies with higher probabilities of improving the design's performance in order to meet design goals.
Strategies can consist of timing and location constraints as well as synthesis and place-and-route settings.
Types of Strategies¶
- Auto Floorplan: Floorplanning constraints for critical logic.
- Smart Parameter Selection: Synthesis, place-and-route settings and timing constraints.
The diagram below shows how this process works and how it becomes smarter and better.
3. Bringing It Together¶
Once all strategies have been compiled, InTime determines if the design goals and targets are met. If so, optimization has succeeded. If not, the next iteration of the flow will be started using the best result of the previous iteration as the reference (referred to as the parent revision throughout the documentation).
To cater to the needs of a wide range of situations and applications, InTime provides different optimization methods called recipes. These recipes work on different aspects of the design such as synthesis, floorplanning, place and route, overclocking, incremental optimization, tackling high fanout nets and floorplanning.