OpenASIP
2.0
|
Classes | |
struct | ICParameters |
Private Types | |
typedef std::vector< ICParameters > | FanInFanOutCombinationSet |
Private Member Functions | |
DelayInNanoSeconds | delayOfSocket (HDB::HDBManager &hdb, const TTAMachine::Socket &socket) |
DelayInNanoSeconds | delayOfBus (HDB::HDBManager &hdb, const TTAMachine::Bus &bus) |
DelayInNanoSeconds | delayOfSocket (HDB::HDBRegistry &hdbRegistry, const IDF::SocketImplementationLocation &implementation) |
DelayInNanoSeconds | delayOfBus (HDB::HDBRegistry &hdbRegistry, const IDF::BusImplementationLocation &implementation) |
DataObject | valueFromKeyValuePairString (const std::string &keyName, const std::string &keyValuePairString) |
FanInFanOutCombinationSet | generateFanInFanOutCombinations (std::vector< std::size_t > &inputWidths, std::vector< std::size_t > &outputWidths) |
FanInFanOutCombinationSet | socketParameters (const TTAMachine::Socket &socket) |
FanInFanOutCombinationSet | busParameters (const TTAMachine::Bus &bus) |
Private Attributes | |
std::set< std::string > | missingComponents_ |
Set for component names that are missing from HDB. More... | |
Additional Inherited Members | |
Protected Attributes inherited from CostEstimator::CostEstimationPlugin | |
std::string | name_ |
the name of the plugin class in the HDB; used to identify cost data More... | |
The default IC&decoder cost estimation plugin.
Definition at line 124 of file DefaultICDecoderPlugin.cc.
|
private |
Definition at line 725 of file DefaultICDecoderPlugin.cc.
|
inline |
Constructor.
name | The name of this plugin. |
dataSource | The HDB used to fetch cost estimation data. |
Definition at line 133 of file DefaultICDecoderPlugin.cc.
|
inlinevirtual |
|
inlineprivate |
Generates fanin/fanout/width combinations to a bus.
bus | Bus which parameters are generated. |
Definition at line 862 of file DefaultICDecoderPlugin.cc.
References TTAMachine::Machine::Navigator< ComponentType >::count(), TTAMachine::Socket::direction(), TTAMachine::Bus::isConnectedTo(), TTAMachine::Machine::Navigator< ComponentType >::item(), TTAMachine::Component::machine(), TTAMachine::Socket::OUTPUT, TTAMachine::Socket::port(), TTAMachine::Socket::portCount(), TTAMachine::Machine::socketNavigator(), and TTAMachine::Port::width().
|
inlineprivate |
Finds out the delay of the given bus.
Definition at line 583 of file DefaultICDecoderPlugin.cc.
References __func__, HDB::HDBManager::costEstimationDataValue(), DataObject::doubleValue(), Exception::errorMessage(), HDB::HDBManager::fileName(), DataObject::stringValue(), and Conversion::toString().
|
inlineprivate |
Finds out the delay of the given bus.
Definition at line 666 of file DefaultICDecoderPlugin.cc.
References __func__, HDB::HDBManager::busCostEstimationData(), DataObject::doubleValue(), Exception::errorMessage(), HDB::HDBRegistry::hdb(), and implementation.
|
inlineprivate |
Finds out the delay of the given socket.
Definition at line 522 of file DefaultICDecoderPlugin.cc.
References __func__, assert, HDB::HDBManager::costEstimationDataValue(), TTAMachine::Socket::direction(), DataObject::doubleValue(), Exception::errorMessage(), HDB::HDBManager::fileName(), TTAMachine::Socket::INPUT, TTAMachine::Socket::OUTPUT, DataObject::stringValue(), and Conversion::toString().
|
inlineprivate |
Finds out the delay of the given socket.
Not used with current implementation.
Definition at line 632 of file DefaultICDecoderPlugin.cc.
References __func__, HDB::HDBManager::costEstimationDataValue(), DataObject::doubleValue(), Exception::errorMessage(), HDB::HDBRegistry::hdb(), implementation, DataObject::integerValue(), HDB::HDBManager::socketCostEstimationData(), DataObject::stringValue(), and Conversion::toString().
|
inlinevirtual |
Estimates the area of an IC path.
The default implementation estimates the area by summing up areas of of all subcomponents of sockets and buses in the machine. Subcomponent data is entered by user to HDB before estimation. The estimation algorithm does not figure out the subcomponents, it only sums up the c costs of all subcomponents of a machine part. Subcomponent is a fanin/fanout combination included in a component. There can be multiple such combinations due to different widths in inputs and outputs.
The subcomponent data is fetched from HDB by first fetching all subcomponent ids of the machine part by looking for entries named 'subsocket_reference' or 'subbus_reference'. The values of these entries are identifiers of subsocket entries in the cost table. Each subsocket entry has a string of name/value pairs as their value. The cost data is stored in the name/value string. The cost data string must be in the following format: 'throughput_delay=53 area=5.2 active_energy=3 idle_energy=3 control_delay=3'
Reimplemented from CostEstimator::ICDecoderEstimatorPlugin.
Definition at line 220 of file DefaultICDecoderPlugin.cc.
References TTAMachine::Machine::busNavigator(), HDB::HDBManager::costEstimationDataValue(), TTAMachine::Machine::Navigator< ComponentType >::count(), debugLog, TTAMachine::Socket::direction(), DataObject::doubleValue(), Exception::errorMessage(), HDB::HDBManager::fileName(), HDB::HDBRegistry::hdb(), IDF::MachineImplementation::icDecoderHDB(), TTAMachine::Socket::INPUT, TTAMachine::Machine::Navigator< ComponentType >::item(), machine, TTAMachine::Socket::OUTPUT, TTAMachine::Machine::socketNavigator(), DataObject::stringValue(), and Conversion::toString().
|
inlinevirtual |
Estimates the delay of an IC path.
The default implementation estimates the delays by summing up delays of the subcomponent of the machine part that is registered to be the 'delay component'. In practice, an entry named 'delay_subsocket_reference' or 'delay_subbus_reference' is first fetched from HDB. The entry pointed to by the fetched entry contains the delay data for the socket/bus at hand.
path | Transport path of which delay is estimated. |
machineImplementation | Implementation of the machine. |
sourceSocketImplementation | Not used. |
busImplementation | Not used. |
destinationSocketImplementation | Not used. |
delay | Result delay of the transport path. |
Reimplemented from CostEstimator::ICDecoderEstimatorPlugin.
Definition at line 163 of file DefaultICDecoderPlugin.cc.
References CostEstimator::TransportPath::bus(), debugLog, CostEstimator::TransportPath::destinationSocket(), Exception::errorMessage(), HDB::HDBRegistry::hdb(), IDF::MachineImplementation::icDecoderHDB(), TTAMachine::Component::name(), and CostEstimator::TransportPath::sourceSocket().
|
inlinevirtual |
Estimates the energy consumed by IC.
The default implementation estimates the area by summing up energies of of all subcomponents of sockets and buses. For more information, see the comment of the area estimation function.
Reimplemented from CostEstimator::ICDecoderEstimatorPlugin.
Definition at line 351 of file DefaultICDecoderPlugin.cc.
References TTAMachine::Machine::busNavigator(), ExecutionTrace::busWriteCount(), HDB::HDBManager::costEstimationDataValue(), TTAMachine::Machine::Navigator< ComponentType >::count(), debugLog, TTAMachine::Socket::direction(), Exception::errorMessage(), HDB::HDBRegistry::hdb(), IDF::MachineImplementation::icDecoderHDB(), TTAMachine::Socket::INPUT, TTAMachine::Machine::Navigator< ComponentType >::item(), machine, TTAMachine::Component::name(), TTAMachine::Socket::OUTPUT, ExecutionTrace::simulatedCycleCount(), TTAMachine::Machine::socketNavigator(), ExecutionTrace::socketWriteCount(), DataObject::stringValue(), and Conversion::toString().
|
inlineprivate |
Generates all possible fanin/fanout/data width combinations (subcomponents) for given input and output widths.
inputWidths | Set containing component's input widths. |
outputWidths | Set containing component's output widths. |
Definition at line 736 of file DefaultICDecoderPlugin.cc.
References DefaultICDecoderEstimator::ICParameters::dataWidth, DefaultICDecoderEstimator::ICParameters::fanIn, and DefaultICDecoderEstimator::ICParameters::fanOut.
|
inlineprivate |
Generates fanin/fanout/width combinations to a socket.
socket | Socket which parameters are generated. |
Definition at line 831 of file DefaultICDecoderPlugin.cc.
References TTAMachine::Socket::direction(), TTAMachine::Socket::INPUT, TTAMachine::Socket::OUTPUT, TTAMachine::Segment::parentBus(), TTAMachine::Socket::port(), TTAMachine::Socket::portCount(), TTAMachine::Socket::segment(), TTAMachine::Socket::segmentCount(), TTAMachine::Port::width(), and TTAMachine::Bus::width().
|
inlineprivate |
Parses a string of key-value pairs and returns a value with given key.
The string must be in format "key1=value1 key2=value2" etc. the value must not have spaces in it.
keyName | The key of the value to fetch from the string. |
keyValuePairString | The key-value pair string to parse. |
KeyNotFound | In case the key was not found in the string. |
Definition at line 701 of file DefaultICDecoderPlugin.cc.
References __func__, and DataObject::setString().
|
private |
Set for component names that are missing from HDB.
Definition at line 516 of file DefaultICDecoderPlugin.cc.