33#ifndef TTA_PROGRAMMABILITY_VALIDATOR_HH
34#define TTA_PROGRAMMABILITY_VALIDATOR_HH
97 const std::set<ErrorCode>& errorsToCheck);
108 string> >& toConnections,
110 string> >& fromConnections);
118 const Port* destPort,
124 set<Segment*>& connections);
127 set<HWOperation*>& operations);
134 const Port* destPort,
143 const Port* destPort,
148 const Port* destPort,
168 vector<pair<const Port*, set<Segment*> > >
inputs;
221 typedef map<string, map<const Socket*, Connections> >::iterator
mapIter;
223 typedef set<pair<const Port*, const Port*> >::iterator
portSetIter;
TTAMachine::Machine * machine
the architecture definition of the estimated processor
set< pair< const RegisterFile *, const RegisterFile * > > gcrRegisterConnections
void addOperationConnections(const FunctionUnit *fu, set< HWOperation * > &operations)
void searchMissingRFConnections(const RegisterFile *rf, vector< pair< string, string > > &toConnections, vector< pair< string, string > > &fromConnections)
map< string, map< const Socket *, Connections > > FUConnections
Function unit connections.
set< pair< constPort *, constPort * > >::iterator portSetIter
type definition for going through connection sets
int gcrCounter
The counter of global register file connections added to the program.
set< pair< constPort *, constRegisterFile * > >::iterator portRegisterSetIter
RegisterFile * booleanRegister_
Boolean register file of the machine.
ErrorCode
Error codes for different errors.
@ BOOLEAN_REGISTER_GUARD_MISSING
Bus is missing a boolean register file guard.
@ OPERATION_MISSING_FROM_THE_PRIMITIVE_OPERATION_SET
Machine don't have all the operations needed to support ANSI C.
@ GLOBAL_CONNECTION_REGISTER_NOT_FOUND
Global connection register could not be determined.
@ MISSING_CONNECTION
Connection is missing to or from the global connection register.
@ BOOLEAN_REGISTER_ERROR
Machine should have one and only one boolean register.
const Machine & machine_
the target machine
void findGlobalRegisterConnections()
map< string, map< const Socket *, Connections > > RFConnections
Register file connections.
void addGlobalRegisterConnection(const Port *sourcePort, const Port *destPort, Segment *segment)
vector< pair< const Port *, set< Segment * > > > inputs
All inputs found in the machine are stored here.
set< pair< const Port *, const Port * > > gcrConnections
bool checkBooleanRegister(ProgrammabilityValidatorResults &results)
int directCounter
The counter of direct connections added to the program.
set< pair< const Port *, const Port * > > allConnections
Set of connections to ensure that same Move is not done in multiple buses.
set< pair< const RegisterFile *, const RegisterFile * > > registerRegisterConnections
~ProgrammabilityValidator()
void addDirectConnection(const Port *sourcePort, const Port *destPort, Segment *segment)
map< string, map< constSocket *, Connections > >::iterator mapIter
type definition for going through connection maps
RegisterFile * globalConnectionRegister_
The global connection register of the machine.
vector< ConnectionSet > globalRegisterConnections
Storage of all Moves to and from the Global Connection Register.
void checkPrimitiveSet(ProgrammabilityValidatorResults &results) const
void printConnection(const Port *sourcePort, const Port *destPort, Segment *segment, int &counter)
Procedure * procedure_
Procedure of the program.
void printNotConnectedSockets(const RegisterFile *rf)
void addConnectionToProgram(const Port *sourcePort, const Port *destPort, Segment *segment, int &counter)
void addDirectConnectionsToProgram()
map< string, map< const Socket *, Connections > > IMMConnections
Immediate unit connections.
void listConnections(set< Segment * > &connections, const Socket *socket)
MinimalOpSetCheck * minimalOpSetCheck_
Minimal operation checker.
const RegisterFile * findGlobalConnectionRegister()
set< pair< const Port *, const RegisterFile * > > portGcrConnections
TPEF::Binary * profile(ProgrammabilityValidatorResults &results)
set< pair< const RegisterFile *, const Port * > > gcrPortConnections
void printRegisterConnections()
set< pair< constRegisterFile *, constRegisterFile * > >::iterator registerRegisterSetIter
vector< ConnectionSet > directConnections
Storage of all the Moves that are found in the machine.
map< string, map< const Socket *, Connections > > GCUConnections
Global control unit connections.
set< pair< const RegisterFile *, const Port * > > registerPortConnections
Program * program_
Program where moves are generated.
void addGlobalRegisterConnectionsToProgram()
void addConnections(set< Segment * > &newConnections, set< Segment * > &connections)
set< pair< const Port *, const RegisterFile * > > portRegisterConnections
Set of unit connections to ensure that only one connection per register file is added.
ProgrammabilityValidatorResults * validate()
void findRegisterGuard(Segment *segment, RegisterGuard *&guard)
set< pair< constRegisterFile *, constPort * > >::iterator registerPortSetIter
Moves are generated from these.
set< Segment * > triggeredInputs
set< HWOperation * > operations