Skip to content

Overview of some important TaPaSCo classes and their runtime interactions

Marco Hartmann edited this page Jul 20, 2020 · 1 revision

Overview

The following graphic show some of the most important classes as well as their runtime interactions for the example of a HighLevel-Synthesis job.


Tapasco Class Diagram

Description of Steps

  1. Instantiation of a Tasks pool. The number of tasks (i.e. the degree of parallelism) is determined by the --maxTasks command line parameter.
  2. Parse the command line parameters to determine the Jobs to be started. Examples for jobs are import, hls or compose.
  3. Iterate the set of jobs and from the trait Executor call method execute().
  4. For each type of Job there is a matching executor that extends the Executor trait. Call the execute() method of the executor that corresponds to the current Job (e.g. HighLevelSynthesisJob).
  5. A Job consists of one or more Tasks. From the current job collect the comprising Tasks.
  6. Dispatch those Tasks to the Tasks pool created in step 1.
  7. Each Task has a job() method that is invoked by the Tasks pool once there are free ressources.
  8. The activity package contains the concrete implementation for specific synthesis tools. For example, for a HighLevelSynthesisTask in combination with the Vivado backend, the synthesize() method of the VivadoHighLevelSynthesis object is invoked.