Files

Relevant classes

PhaseDependenciesTracker
├── ConfigurationFactory
│   └── ConfigurationBase
│       ├── DBPhaseEntryBase
│       └── DRAMTimeDependenciesBase
│           ├── DependencyMap
│           │   └── PhaseTimeDependencies
│           └── PoolControllerMap
└── DBDependencyEntry

PhaseDependenciesTracker

Responsible for the whole execution. Instantiates a configuration class through the ConfigurationFactory, loads the selected phases into memory, calculates the time dependencies between phases and saves into the database file.

ConfigurationFactory

Creates a configuration object given its name.

ConfigurationBase

Interface and common functionality of configuration classes. These include creating DBPhaseEntryBase objects from the database for the given device and delegate methods.

DBPhaseEntryBase

Interfaces to device specific phase entries. Specificities include object data, construction and dependency logic.

DRAMTimeDependenciesBase

Interfaces to device's time dependencies descriptor class.

DependencyMap

A STL map using auxiliar objects. Maps phases to their PhaseTimeDependencies.

PhaseTimeDependencies

An auxiliar class with initializer list constructor. Contains a vector of TimeDependency objects and its maximum time value.

PoolControllerMap

Maps pool names to PoolController objects. Pools keep track of all potential dependencies of a given phase.

DBDependencyEntry

Contains the data to be written to the database.

Suggested steps for creating a device:

  1. Create a time dependencies class inheriting from the DRAMTimeDependenciesBase object.
  2. Create the phase entry object inheriting from DBPhaseEntryBase. The object must determine the relevant data to be used and how phases may be correlated.
  3. Create a configuration class for your object inheriting from ConfigurationBase. This will contain the dependencies maps and instantiate the specialized DBPhaseEntryBase object.
  4. Add the newly created device to the functions of the ConfigurationFactory class. The device name is taken from the database.

Example

For instance, we have the necessary objects for calculating DDR3 device dependencies implemented in the following files:

  1. deviceDependencies/specialized/TimeDependenciesInfoDDR3.(h/cpp)
  2. dbEntries/specialized/DDR3dbphaseentry.(h/cpp)
  3. configurations/specialized/DDR3Configuration.(h/cpp)