OpenASIP  2.0
Functions
TTAUnitTester.cc File Reference
#include <cstdlib>
#include <string>
#include <vector>
#include "MachineImplementation.hh"
#include "Machine.hh"
#include "ADFSerializer.hh"
#include "IDFSerializer.hh"
#include "IDFValidator.hh"
#include "TTAUnitTester.hh"
#include "HDBTester.hh"
#include "Exception.hh"
#include "UnitImplementationLocation.hh"
#include "TTAUnitTesterCmdLineOptions.hh"
Include dependency graph for TTAUnitTester.cc:

Go to the source code of this file.

Functions

int main (int argc, char *argv[])
 
TTAMachine::MachinereadAdf (std::string adfName)
 
IDF::MachineImplementationreadIdf (std::string idfName)
 
bool validateIdf (const IDF::MachineImplementation &idf, const TTAMachine::Machine &machine)
 
bool testUnits (const IDF::MachineImplementation &idf, VhdlSim simulator, bool verbose, bool leaveDirty)
 

Detailed Description

Implementation of TTAUnitTester utility program

Author
Otto Esko 2010 (otto.esko-no.spam-tut.fi)
Note
rating: red

Definition in file TTAUnitTester.cc.

Function Documentation

◆ main()

int main ( int  argc,
char *  argv[] 
)

Definition at line 48 of file TTAUnitTester.cc.

48  {
49 
51  try {
52  options.parse(argv, argc);
53  } catch (ParserStopRequest) {
54  return EXIT_SUCCESS;
55  } catch (const IllegalCommandLine& exception) {
56  std::cerr << exception.errorMessage() << std::endl;
57  return EXIT_FAILURE;
58  }
59 
60  string idfFile = "";
61  if (options.numberOfArguments() == 0) {
62  std::cerr << "IDF file was not given" << std::endl;
64  return EXIT_FAILURE;
65  } else if (options.numberOfArguments() > 1) {
66  std::cerr << "Illegal arguments" << std::endl;
68  return EXIT_FAILURE;
69  } else {
70  idfFile = options.idfFileName();
71  }
72 
73  string adfFile = options.adfFileName();
74 
75  string sim = options.vhdlSim();
76  VhdlSim simulator = SIM_GHDL;
77  if (sim == "modelsim") {
78  simulator = SIM_MODELSIM;
79  } else {
80  simulator = SIM_GHDL;
81  }
82 
83  bool verbose = options.verbose();
84  bool leaveDirty = options.leaveDirty();
85 
86  IDF::MachineImplementation* idf = readIdf(idfFile);
87  if (!idf) {
88  return EXIT_FAILURE;
89  }
90 
91  // validate idf if adf was given
92  if (!adfFile.empty()) {
93  TTAMachine::Machine* mach = readAdf(adfFile);
94  if (!mach) {
95  return EXIT_FAILURE;
96  }
97  if (!validateIdf(*idf, *mach)) {
98  delete(mach);
99  delete(idf);
100  return EXIT_FAILURE;
101  }
102  delete(mach);
103  }
104 
105  if (!testUnits(*idf, simulator, verbose, leaveDirty)) {
106  delete(idf);
107  return EXIT_FAILURE;
108  }
109 
110  delete(idf);
111  return EXIT_SUCCESS;
112 }

References Exception::errorMessage(), CmdLineParser::numberOfArguments(), options, CmdLineOptions::parse(), MachInfoCmdLineOptions::printHelp(), readAdf(), readIdf(), SIM_GHDL, SIM_MODELSIM, testUnits(), and validateIdf().

Here is the call graph for this function:

◆ readAdf()

TTAMachine::Machine* readAdf ( std::string  adfName)

Definition at line 116 of file TTAUnitTester.cc.

116  {
117 
118  ADFSerializer reader;
119  reader.setSourceFile(adfName);
120  TTAMachine::Machine* mach = NULL;
121  try {
122  mach = reader.readMachine();
123  } catch (Exception& e) {
124  std::cerr << "Failed to load ADF file " << adfName << ": "
125  << e.errorMessage() << std::endl;
126  return NULL;
127  }
128  return mach;
129 }

References Exception::errorMessage(), ADFSerializer::readMachine(), and XMLSerializer::setSourceFile().

Referenced by main().

Here is the call graph for this function:

◆ readIdf()

IDF::MachineImplementation* readIdf ( std::string  idfName)

Definition at line 133 of file TTAUnitTester.cc.

133  {
134 
135  IDF::IDFSerializer reader;
136  reader.setSourceFile(idfName);
138  try {
140  } catch (Exception& e) {
141  std::cerr << "Failed to load IDF file " << idfName << ": "
142  << e.errorMessage() << std::endl;
143  return NULL;
144  }
145  return implementation;
146 }

References Exception::errorMessage(), implementation, IDF::IDFSerializer::readMachineImplementation(), and XMLSerializer::setSourceFile().

Referenced by main().

Here is the call graph for this function:

◆ testUnits()

bool testUnits ( const IDF::MachineImplementation idf,
VhdlSim  simulator,
bool  verbose,
bool  leaveDirty 
)

Definition at line 167 of file TTAUnitTester.cc.

169  {
170 
171  HDBTester tester(std::cout, std::cerr, simulator, verbose, leaveDirty);
172 
173  bool allPassed = true;
174  for (int i = 0; i < idf.fuImplementationCount(); i++) {
176  string hdb = unit->hdbFile();
177  int entryId = unit->id();
178  if (!tester.testOneFU(hdb, entryId)) {
179  allPassed = false;
180  }
181  }
182 
183  for (int i = 0; i < idf.rfImplementationCount(); i++) {
185  string hdb = unit->hdbFile();
186  int entryId = unit->id();
187  if (!tester.testOneRF(hdb, entryId)) {
188  allPassed = false;
189  }
190  }
191 
192  return allPassed;
193 }

References IDF::MachineImplementation::fuImplementation(), IDF::MachineImplementation::fuImplementationCount(), IDF::UnitImplementationLocation::hdbFile(), IDF::UnitImplementationLocation::id(), IDF::MachineImplementation::rfImplementation(), IDF::MachineImplementation::rfImplementationCount(), HDBTester::testOneFU(), and HDBTester::testOneRF().

Referenced by main().

Here is the call graph for this function:

◆ validateIdf()

bool validateIdf ( const IDF::MachineImplementation idf,
const TTAMachine::Machine machine 
)

Definition at line 150 of file TTAUnitTester.cc.

152  {
153 
154  IDFValidator validator(idf, machine);
155 
156  bool success = validator.validate();
157  if (!success) {
158  for (int i = 0; i < validator.errorCount(); i++) {
159  std::cerr << validator.errorMessage(i) << std::endl;
160  }
161  }
162  return success;
163 }

References IDFValidator::errorCount(), IDFValidator::errorMessage(), machine, and IDFValidator::validate().

Referenced by main().

Here is the call graph for this function:
IDF::UnitImplementationLocation
Definition: UnitImplementationLocation.hh:48
MachInfoCmdLineOptions::printHelp
virtual void printHelp() const
Definition: MachInfoCmdLineOptions.cc:89
ParserStopRequest
Definition: Exception.hh:491
XMLSerializer::setSourceFile
void setSourceFile(const std::string &fileName)
Definition: XMLSerializer.cc:115
machine
TTAMachine::Machine * machine
the architecture definition of the estimated processor
Definition: EstimatorCmdLineUI.cc:59
CmdLineParser::numberOfArguments
virtual int numberOfArguments() const
implementation
IDF::MachineImplementation * implementation
the implementation definition of the estimated processor
Definition: EstimatorCmdLineUI.cc:61
IDF::IDFSerializer::readMachineImplementation
MachineImplementation * readMachineImplementation()
Definition: IDFSerializer.cc:148
IllegalCommandLine
Definition: Exception.hh:438
testUnits
bool testUnits(const IDF::MachineImplementation &idf, VhdlSim simulator, bool verbose, bool leaveDirty)
Definition: TTAUnitTester.cc:167
IDF::MachineImplementation::rfImplementation
RFImplementationLocation & rfImplementation(const std::string &rf) const
Definition: MachineImplementation.cc:377
TTAUnitTesterCmdLineOptions
Definition: TTAUnitTesterCmdLineOptions.hh:39
SIM_GHDL
@ SIM_GHDL
Definition: ImplementationTester.hh:48
ADFSerializer
Definition: ADFSerializer.hh:49
IDFValidator
Definition: IDFValidator.hh:52
validateIdf
bool validateIdf(const IDF::MachineImplementation &idf, const TTAMachine::Machine &machine)
Definition: TTAUnitTester.cc:150
IDF::MachineImplementation::rfImplementationCount
int rfImplementationCount() const
Definition: MachineImplementation.cc:310
Exception
Definition: Exception.hh:54
VhdlSim
VhdlSim
Definition: ImplementationTester.hh:47
readAdf
TTAMachine::Machine * readAdf(std::string adfName)
Definition: TTAUnitTester.cc:116
HDBTester
Definition: HDBTester.hh:39
Exception::errorMessage
std::string errorMessage() const
Definition: Exception.cc:123
CmdLineOptions::parse
void parse(char *argv[], int argc)
Definition: CmdLineOptions.cc:107
options
static MachInfoCmdLineOptions options
Definition: MachInfo.cc:46
IDF::MachineImplementation::fuImplementationCount
int fuImplementationCount() const
Definition: MachineImplementation.cc:299
IDF::UnitImplementationLocation::id
virtual int id() const
Definition: UnitImplementationLocation.cc:127
ADFSerializer::readMachine
TTAMachine::Machine * readMachine()
Definition: ADFSerializer.cc:275
IDF::UnitImplementationLocation::hdbFile
virtual std::string hdbFile() const
Definition: UnitImplementationLocation.cc:99
SIM_MODELSIM
@ SIM_MODELSIM
Definition: ImplementationTester.hh:49
IDF::MachineImplementation::fuImplementation
FUImplementationLocation & fuImplementation(const std::string &fu) const
Definition: MachineImplementation.cc:355
readIdf
IDF::MachineImplementation * readIdf(std::string idfName)
Definition: TTAUnitTester.cc:133
IDF::IDFSerializer
Definition: IDFSerializer.hh:45
IDF::MachineImplementation
Definition: MachineImplementation.hh:54
TTAMachine::Machine
Definition: Machine.hh:73