Overview of some important TaPaSCo classes and their runtime interactions - mhrtmnn/tapasco GitHub Wiki
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.
Description of Steps
- Instantiation of a Tasks pool. The number of tasks (i.e. the degree of parallelism) is determined by the
--maxTasks
command line parameter. - Parse the command line parameters to determine the Jobs to be started. Examples for jobs are
import
,hls
orcompose
. - Iterate the set of jobs and from the trait Executor call method
execute()
. - 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). - A Job consists of one or more Tasks. From the current job collect the comprising Tasks.
- Dispatch those Tasks to the Tasks pool created in step 1.
- Each Task has a
job()
method that is invoked by the Tasks pool once there are free ressources. - The
activity
package contains the concrete implementation for specific synthesis tools. For example, for a HighLevelSynthesisTask in combination with the Vivado backend, thesynthesize()
method of the VivadoHighLevelSynthesis object is invoked.