Go to the documentation of this file.
33 #include <boost/format.hpp>
62 for (
int i = 0; i < pLine->
latency(); i++) {
68 readOperands.begin(), readOperands.end());
70 writtenOperands.begin(), writtenOperands.end());
74 for (ExecutionPipeline::OperandSet::const_iterator iter =
76 iter != usedOperands.end(); iter++) {
80 boost::format errorMsg(
81 "IO number %1% is not bound to any port in "
82 "operation %2% in FU %3%.");
83 errorMsg % io % operation->
name() % fu.
name();
108 for (
int i = 0; i < pLine->
latency(); i++) {
111 for (ExecutionPipeline::OperandSet::const_iterator iter =
112 readOperands.begin(); iter != readOperands.end(); iter++) {
121 boost::format errorMsg(
"FU %1% has no valid operations.");
122 errorMsg % fu.
name();
static void checkOperandBindings(const TTAMachine::FunctionUnit &fu, MachineValidatorResults &results)
virtual TCEString name() const
@ USED_IO_NOT_BOUND
Pipeline uses an IO which is not bound.
OperandSet writtenOperands(int cycle) const
OperandSet readOperands(int cycle) const
virtual bool isTriggering() const
virtual FUPort * port(int operand) const
const std::string & name() const
void addError(MachineValidator::ErrorCode code, const std::string &errorMsg)
virtual int operationCount() const
static void checkOperations(const TTAMachine::FunctionUnit &fu, MachineValidatorResults &results)
std::set< int > OperandSet
Set for operand indexes.
ExecutionPipeline * pipeline() const
virtual HWOperation * operation(const std::string &name) const
@ FU_NO_VALID_OPERATIONS
FU has no operations with a trigger.