Go to the documentation of this file.00001
00021 #ifndef HARDWARE_TASK_H
00022 #define HARDWARE_TASK_H
00023
00024 #include <iostream>
00025 #include <string>
00026 #include <vector>
00027 #include <set>
00028 using namespace std;
00029
00030 #include "task.h"
00031 #include "RZ.h"
00032 #include "device.h"
00033 #include "synthesisReport.h"
00034 #include "resourceRequirements.h"
00035 #include "RZFinderManager.h"
00036 #include "coordinates.h"
00037 #include "interface_location.h"
00038 #include "XMLTaskDescription.h"
00039
00040
00041 class HwTask : public Task {
00042
00043 protected:
00044 ResourceRequirements *resourceRequirements;
00045 vector<Coordinates> requiredColumns;
00046 vector<InterfaceLocation> possibleInterfaceLocations;
00047
00048 private:
00049 string netlistName;
00050 string resourceFileName;
00051 TaskResourceFile* resourceFile;
00052
00053 public:
00054
00055 HwTask(string n, string netlist, string synth) : Task(n), netlistName(netlist), resourceFileName(synth) {
00056 HwTaskInit();
00057 }
00058 HwTask(){
00059 HwTaskInit();
00060 }
00061
00062 HwTask(string n, string netlist, string synth, vector<Coordinates> vec) : Task(n), netlistName(netlist), resourceFileName(synth), requiredColumns(vec) {
00063 HwTaskInit();
00064 }
00065
00066
00067 HwTask(const HwTask &other) : Task(other) {
00068 resourceRequirements = other.resourceRequirements;
00069 requiredColumns = other.requiredColumns;
00070 possibleInterfaceLocations = other.possibleInterfaceLocations;
00071 netlistName = other.netlistName;
00072 resourceFileName = other.resourceFileName;
00073
00074
00075 if(other.resourceFile == 0) resourceFile = 0;
00076 else HwTaskInit(other.resourceFile);
00077 }
00078
00079 ~HwTask() {
00080 if(resourceFile != 0) delete resourceFile;
00081 }
00082
00083
00084 string getNetlistName(void);
00085 string getDeviceID(void);
00086 DeviceClass getDeviceClass(void);
00087 Device* getDevicePtr(void);
00088 vector<RZ> getRZSet(void);
00089 vector<RZ>* getRZSetPtr(void);
00090 ResourceRequirements * getResourceRequirementsPtr(void);
00091 ResourceRequirements& getResourceRequirements(void);
00092 TaskResourceFile* getTaskResourceFile(void);
00093
00094
00095 void info(void);
00096 void findRZs(void);
00097 void defineResourceRequirements(void);
00098 bool fitsRZ(RZ *rz);
00099 int computeInternalFragmentation(RZ &rz);
00100 int getTaskCost(void);
00101 int readResourceFile(void);
00102 bool hasPlacementRequirements(void);
00103 void setResourceMargin(double v);
00104 void setLOCConstraint(vector<Coordinates> &vec);
00105 void setPossibleInterfaceLocations(vector<InterfaceLocation> &vec);
00106
00107 bool isInterfaceDefined(string interfaceType);
00108
00109 void HwTaskInit(void);
00110 void HwTaskInit(TaskResourceFile* res);
00111
00112 };
00113
00114 #endif