54 lines
2.4 KiB
Markdown
54 lines
2.4 KiB
Markdown
|
|
## 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)
|