71 integratorBlock_(NULL),
78 warningStream_(std::cout),
79 errorStream_(std::cerr),
87 unconnectedPorts_(NULL) {
95 std::ostream& warningStream, std::ostream& errorStream,
99 integratorBlock_(NULL),
101 progeOutputDir_(progeOutputDir),
102 sharedOutputDir_(
""),
103 coreEntityName_(coreEntityName),
104 outputDir_(outputDir),
105 programName_(programName),
106 targetFrequency_(targetClockFreq),
107 warningStream_(warningStream),
108 errorStream_(errorStream),
116 unconnectedPorts_(NULL) {
155 TCEString fileName,
bool absolute)
const {
201 if (original.find(tag) != TCEString::npos) {
202 signal = original.substr(original.find(tag));
210 std::vector<TCEString>& files)
const {
212 bool makeAbsolute =
false;
216 std::vector<std::string> gcuFiles =
219 for (
unsigned int i = 0; i < gcuFiles.size(); i++) {
220 files.push_back(gcuFiles.at(i));
228 bool foundImemMau =
false;
233 std::vector<std::string> vhdlFiles =
235 for (
unsigned int i = 0; i < vhdlFiles.size(); i++) {
236 if (vhdlFiles.at(i).find(imemMau) != TCEString::npos) {
239 files.push_back(vhdlFiles.at(i));
246 files.push_back(path);
255 std::string sharedVhdl =
257 std::vector<std::string> sharedFiles =
259 for (
unsigned int i = 0; i < sharedFiles.size(); i++) {
260 files.push_back(sharedFiles.at(i));
275 throw IOException(__FILE__, __LINE__,
"PlatformIntegrator",
276 "Couldn't create dir " + absolute);
348 for (
int i = 0; i < fuNav.
count(); i++) {
356 std::string prefix = operation.substr(0, 2);
357 if (prefix ==
"ld" || prefix ==
"st") {
377std::vector<std::string>
379 if (
idf()->hasFUImplementation(fu.
name())) {
383 int id = location.
id();
389 " does not contain " +
"implementation!";
390 throw InvalidData(__FILE__, __LINE__,
"PlatformIntegrator", msg);
395 std::vector<std::string> ports;
400 }
else if (
idf()->hasFUGeneration(fu.
name())) {
402 std::vector<std::string> ports = {
403 "avalid_out",
"aready_in",
"aaddr_out",
"awren_out",
"astrb_out",
404 "rvalid_in",
"rready_out",
"rdata_in",
"adata_out"};
407 TCEString msg =
"Function Unit " + fu.
name() +
" does not have an " +
409 throw InvalidData(__FILE__, __LINE__,
"PlatformIntegrator", msg);
419 unsigned int internalAddrw =
421 unsigned int dataWidth = 0;
425 dataWidth = std::max((
unsigned)port->
width(), dataWidth);
429 ceil(
static_cast<double>(dataWidth)/dmem.
mauWidth));
430 int bytemaskWidth = 0;
432 unsigned int maus =
static_cast<unsigned int>(dmem.
widthInMaus) - 1;
435 dmem.
portAddrw = internalAddrw - bytemaskWidth;
466 for (
size_t i = 0; i < core.
portCount(); i++) {
484 if (width == 0 || width == 1) {
508 return signal.find(
pinTag()) != TCEString::npos;
558 vector<TCEString> imemFiles;
564 if (imemFiles.size() != 0) {
569 for (
unsigned int i = 0; i <
lsus_.size(); i++) {
578 vector<TCEString> dmemFiles;
582 if (dmemFiles.size() != 0) {
592 int memIndex,
int coreId) {
595 vector<TCEString> reasons;
597 errorStream() <<
"TTA core doesn't have compatible memory "
598 <<
"interface:" << std::endl;
599 for (
unsigned int i = 0; i < reasons.size(); i++) {
610 if (generatedFiles.size() == 0) {
611 errorStream() <<
"Failed to create mem component" << endl;
630 writer->
write(platformDir);
637 TCEString msg =
"NetlistWriter failed to create file " + toplevelFile;
638 throw FileNotFound(__FILE__, __LINE__,
"platformIntegrator", msg);
653 vector<TCEString> progeOutFiles;
655 for (
unsigned int i = 0; i < progeOutFiles.size(); i++) {
672 throw InvalidData(__FILE__, __LINE__,
"PlatformIntegrator", msg);
674 return dmem_.find(as)->second;
680 if (index >
static_cast<int>(
dmem_.size())) {
681 TCEString msg =
"Data memory index out of range";
682 throw OutOfRange(__FILE__, __LINE__,
"PlatformIntegrator", msg);
684 std::map<TTAMachine::AddressSpace*, MemInfo>::const_iterator iter =
707 msg <<
"PlatformIntegrator was not initialized properly";
719 msg <<
"PlatformIntegrator was not initialized properly";
#define assert(condition)
IDF::MachineImplementation * implementation
the implementation definition of the estimated processor
TTAMachine::Machine * machine
the architecture definition of the estimated processor
std::string errorMessage() const
static std::string absolutePathOf(const std::string &pathName)
static bool createDirectory(const std::string &path)
static const std::string DIRECTORY_SEPARATOR
static std::vector< std::string > directoryContents(const std::string &directory, const bool absolutePaths=true)
static bool fileExists(const std::string fileName)
FUImplementation & implementation() const
virtual bool hasImplementation() const
FUEntry * fuByEntryID(RowID id) const
static HDBRegistry & instance()
CachedHDBManager & hdb(const std::string fileName)
FUImplementationLocation & fuImplementation(const std::string &fu) const
virtual std::string hdbFile() const
virtual std::vector< TCEString > generateComponentFile(TCEString outputPath)=0
virtual bool generatesComponentHdlFile() const =0
virtual void addMemory(const ProGe::NetlistBlock &ttaCore, ProGe::NetlistBlock &integratorBlock, int memIndex, int coreId)
virtual bool isCompatible(const ProGe::NetlistBlock &ttaCore, int coreId, std::vector< TCEString > &reasons) const
virtual size_t parameterCount() const
NetlistBlock * shallowCopy(const std::string &instanceName) const
virtual size_t packageCount() const
virtual const Parameter & parameter(const std::string &name) const
void addSubBlock(BaseNetlistBlock *subBlock, const std::string &instanceName="")
virtual const std::string & package(size_t idx) const
void setParameter(const std::string &name, const std::string &type, const std::string &value)
virtual NetlistPort * port(const std::string &portName, bool partialMatch=true)
virtual size_t portCount() const
void addPackage(const std::string &packageName)
virtual const Netlist & netlist() const
bool realWidthAvailable() const
std::string widthFormula() const
DataType dataType() const
Direction direction() const
virtual void write(const std::string &dstDirectory)=0
bool connect(const NetlistPort &port1, const NetlistPort &port2, int port1FirstBit, int port2FirstBit, int width=1)
void setParameter(const std::string &name, const std::string &type, const std::string &value)
Parameter parameter(size_t index) const
const TCEString & name() const
void addHdlFiles(const std::vector< TCEString > &files)
void addHdlFile(const TCEString &file)
virtual ULongWord end() const
virtual int width() const
virtual int width() const
virtual TCEString name() const
virtual bool isTriggering() const
virtual AddressSpace * addressSpace() const
virtual HWOperation * operation(const std::string &name) const
virtual int operationCount() const
virtual FUPort * operationPort(const std::string &name) const
virtual int operationPortCount() const
virtual bool hasAddressSpace() const
const std::string & name() const
ComponentType * item(int index) const
virtual FunctionUnitNavigator functionUnitNavigator() const
virtual bool isInput() const
@ BIT_VECTOR
Several bits.
HDL
HDLs supported by ProGe.