OpenASIP
2.0
|
#include <AlmaIFIntegrator.hh>
Protected Member Functions | |
virtual MemoryGenerator & | imemInstance (MemInfo imem, int coreId) |
virtual MemoryGenerator & | dmemInstance (MemInfo dmem, TTAMachine::FunctionUnit &lsuArch, std::vector< std::string > lsuPorts) |
Protected Member Functions inherited from PlatformIntegrator | |
ProGe::NetlistBlock * | integratorBlock () |
virtual void | initPlatformNetlist (const ProGe::NetlistBlock *progeBlock) |
virtual void | connectToplevelPort (const ProGe::NetlistPort &corePort, const TCEString signalPrefix="") |
virtual bool | hasPinTag (const TCEString &signal) const |
void | copyProgeBlockToNetlist (const ProGe::NetlistBlock *progeBlock) |
virtual bool | createMemories (int coreId) |
virtual bool | generateMemory (MemoryGenerator &memGen, std::vector< TCEString > &generatedFiles, int memIndex, int coreId) |
virtual void | writeNewToplevel () |
void | addProGeFiles () const |
TCEString | programName () const |
TCEString | progeFilePath (TCEString fileName, bool absolute=false) const |
TCEString | chopSignalToTag (const TCEString &original, const TCEString &tag) const |
void | progeOutputHdlFiles (std::vector< TCEString > &files) const |
std::ostream & | warningStream () const |
std::ostream & | errorStream () const |
TCEString | platformEntityName () const |
void | parseDataMemories () |
void | clearDataMemories () |
MemInfo | readLsuParameters (const TTAMachine::FunctionUnit &lsu) |
Private Member Functions | |
void | addMemoryPorts (const TCEString as_name, int data_width, int addr_width, const bool isShared, const bool overrideAsWidth) |
void | addMemoryPorts (const TCEString as_name, int mem_count, int data_width, int addr_width, int strb_width, const bool overrideAsWidth) |
void | initAlmaifBlock () |
void | addAlmaifFiles () |
void | copyPlatformFile (const TCEString inputPath, std::vector< TCEString > &fileList, bool isScript=false) const |
TCEString | axiAddressWidth () const |
void | findMemories () |
void | exportUnconnectedPorts (int coreId) |
void | connectCoreMemories (MemInfo mem, TCEString mem_name, TCEString mem_block_name, bool seconds) |
void | addPortToGroup (ProGe::NetlistPortGroup *port_group, const ProGe::Direction dir, const TCEString name, const TCEString width) |
void | addPortToAlmaIFBlock (const TCEString name, const TCEString width, const ProGe::Direction dir, const TCEString core_name="") |
void | addPortToAlmaIFBlock (const TCEString name, const int width, const ProGe::Direction dir, const TCEString core_name="") |
ProGe::NetlistPortGroup * | axiSlavePortGroup () |
ProGe::NetlistPortGroup * | axiMasterPortGroup () |
Private Attributes | |
MemoryGenerator * | imemGen_ |
std::map< TCEString, MemoryGenerator * > | dmemGen_ |
std::map< TCEString, ProGe::NetlistPort * > | almaif_ttacore_ports |
ProGe::NetlistBlock * | almaifBlock_ |
TCEString | deviceFamily_ |
TCEString | deviceName_ |
DefaultProjectFileGenerator * | fileGen_ |
MemInfo | dmemInfo_ |
MemInfo | pmemInfo_ |
bool | secondDmem_ |
bool | secondPmem_ |
bool | dmemHandled_ |
bool | pmemHandled_ |
std::string | secondDmemName_ |
int | secondDmemDataw_ = 0 |
int | secondDmemAddrw_ = 0 |
std::string | secondPmemName_ |
int | secondPmemDataw_ |
int | secondPmemAddrw_ |
HDLTemplateInstantiator | accelInstantiator_ |
bool | hasMinimalDebugger_ |
bool | hasSeparateLocalMemory_ = true |
bool | syncReset_ |
bool | broadcast_pmem_ |
bool | dmem_dram_ = false |
bool | imem_dp_ = false |
Static Private Attributes | |
static const TCEString | DMEM_NAME = "data" |
static const TCEString | PMEM_NAME = "param" |
static const TCEString | AXI_AS_NAME = "axi_as" |
static const TCEString | ALMAIF_MODULE = "tta_accel" |
static const TCEString | DEFAULT_DEVICE = "xc7z020clg400-1" |
static const int | DEFAULT_RESERVED_PRIVATE_MEM_SIZE = 2048 |
static const int | DEFAULT_LOCAL_MEMORY_WIDTH = 12 |
Additional Inherited Members | |
Static Protected Attributes inherited from PlatformIntegrator | |
static const TCEString | TTA_CORE_CLK = "clk" |
static const TCEString | TTA_CORE_RSTX = "rstx" |
Definition at line 40 of file AlmaIFIntegrator.hh.
AlmaIFIntegrator::AlmaIFIntegrator | ( | ) |
Definition at line 61 of file AlmaIFIntegrator.cc.
AlmaIFIntegrator::AlmaIFIntegrator | ( | const TTAMachine::Machine * | machine, |
const IDF::MachineImplementation * | idf, | ||
ProGe::HDL | hdl, | ||
TCEString | progeOutputDir, | ||
TCEString | entityName, | ||
TCEString | outputDir, | ||
TCEString | programName, | ||
int | targetClockFreq, | ||
std::ostream & | warningStream, | ||
std::ostream & | errorStream, | ||
const MemInfo & | imem, | ||
MemType | dmemType, | ||
bool | syncReset | ||
) |
Definition at line 64 of file AlmaIFIntegrator.cc.
References hasMinimalDebugger_, IDF::MachineImplementation::icDecoderParameterValue(), and PlatformIntegrator::idf().
|
virtual |
Definition at line 96 of file AlmaIFIntegrator.cc.
|
private |
Definition at line 817 of file AlmaIFIntegrator.cc.
References accelInstantiator_, ProjectFileGenerator::addHdlFile(), MemInfo::asAddrw, copyPlatformFile(), PlatformIntegrator::coreEntityName(), Environment::dataDirPath(), PlatformIntegrator::deviceName(), FileSystem::DIRECTORY_SEPARATOR, DS, hasMinimalDebugger_, HDLTemplateInstantiator::instantiateTemplateFile(), PlatformIntegrator::outputFilePath(), PlatformIntegrator::outputPath(), pmemInfo_, PlatformIntegrator::progeFilePath(), projectFileGenerator(), HDLTemplateInstantiator::replacePlaceholder(), and HDLTemplateInstantiator::replacePlaceholderFromFile().
Referenced by integrateProcessor().
|
private |
Definition at line 778 of file AlmaIFIntegrator.cc.
Referenced by connectCoreMemories(), and initAlmaifBlock().
|
private |
Definition at line 797 of file AlmaIFIntegrator.cc.
References addPortToAlmaIFBlock(), ProGe::IN, and ProGe::OUT.
|
private |
Definition at line 688 of file AlmaIFIntegrator.cc.
References almaif_ttacore_ports, almaifBlock_, ProGe::BIT_VECTOR, and Conversion::toString().
|
private |
Definition at line 679 of file AlmaIFIntegrator.cc.
References almaif_ttacore_ports, almaifBlock_, and ProGe::BIT_VECTOR.
Referenced by addMemoryPorts(), connectCoreMemories(), and initAlmaifBlock().
|
private |
Definition at line 698 of file AlmaIFIntegrator.cc.
References ProGe::NetlistPortGroup::addPort(), ProGe::BIT, and ProGe::BIT_VECTOR.
Referenced by axiMasterPortGroup(), and axiSlavePortGroup().
|
private |
Returns the AXI bus facing address width: 2 bits for address space select
Definition at line 237 of file AlmaIFIntegrator.cc.
References MemInfo::asAddrw, DEFAULT_LOCAL_MEMORY_WIDTH, dmemInfo_, PlatformIntegrator::imemInfo(), MemInfo::mauWidth, pmemInfo_, MemInfo::portAddrw, MathTools::requiredBits0Bit0(), Conversion::toString(), VHDL_ARRAY, and MemInfo::widthInMaus.
Referenced by initAlmaifBlock().
|
private |
Builds a representation of the AXI4-Lite master interface as a port group.
Definition at line 753 of file AlmaIFIntegrator.cc.
References addPortToGroup(), ProGe::IN, and ProGe::OUT.
Referenced by initAlmaifBlock().
|
private |
Builds a representation of the AXI4 bus slave interface as a port group. Hardcoded signal widths for data (32b) and IDs (12b)
Definition at line 714 of file AlmaIFIntegrator.cc.
References addPortToGroup(), ProGe::IN, and ProGe::OUT.
Referenced by initAlmaifBlock().
|
virtual |
Implements PlatformIntegrator.
Definition at line 1114 of file AlmaIFIntegrator.cc.
|
private |
Definition at line 553 of file AlmaIFIntegrator.cc.
References accelInstantiator_, addMemoryPorts(), addPortToAlmaIFBlock(), almaifBlock_, MemInfo::asAddrw, MemInfo::asName, broadcast_pmem_, Environment::dataDirPath(), FileSystem::DIRECTORY_SEPARATOR, DMEM_NAME, DRAM, ProGe::IN, MemInfo::isShared, MemInfo::lsuName, MemInfo::mauWidth, ProGe::OUT, PMEM_NAME, MemInfo::portAddrw, HDLTemplateInstantiator::replacePlaceholderFromFile(), secondDmemAddrw_, secondDmemDataw_, secondDmemName_, secondPmemAddrw_, secondPmemDataw_, secondPmemName_, ProGe::NetlistBlock::setParameter(), Conversion::toString(), MemInfo::type, and MemInfo::widthInMaus.
Referenced by initAlmaifBlock().
|
private |
Definition at line 877 of file AlmaIFIntegrator.cc.
References FileSystem::copy(), FileSystem::fileOfPath(), PlatformIntegrator::outputFilePath(), PlatformIntegrator::outputPath(), and PlatformIntegrator::progeFilePath().
Referenced by addAlmaifFiles().
|
virtual |
Returns the FPGA device family
Implements PlatformIntegrator.
Definition at line 1119 of file AlmaIFIntegrator.cc.
References deviceFamily_.
|
virtual |
Returns the device package name
Implements PlatformIntegrator.
Definition at line 1132 of file AlmaIFIntegrator.cc.
|
virtual |
Returns the device speed class
Implements PlatformIntegrator.
Definition at line 1137 of file AlmaIFIntegrator.cc.
|
protectedvirtual |
Implements PlatformIntegrator.
Definition at line 1016 of file AlmaIFIntegrator.cc.
References MemoryGenerator::addLsu(), almaifBlock_, MemInfo::asAddrw, MemInfo::asName, AXI_AS_NAME, DMEM_NAME, dmemGen_, dmemHandled_, dmemInfo_, DRAM, PlatformIntegrator::errorStream(), MemInfo::isShared, MemInfo::mauWidth, ONCHIP, PMEM_NAME, pmemHandled_, pmemInfo_, MemInfo::portAddrw, secondDmemAddrw_, secondDmemDataw_, secondPmemAddrw_, secondPmemDataw_, MemInfo::type, PlatformIntegrator::warningStream(), and MemInfo::widthInMaus.
|
privatevirtual |
Reimplemented from PlatformIntegrator.
Definition at line 969 of file AlmaIFIntegrator.cc.
References almaifBlock_, PlatformIntegrator::connectToplevelPort(), PlatformIntegrator::exportUnconnectedPorts(), PlatformIntegrator::integratorBlock(), ProGe::NetlistBlock::port(), and ProGe::NetlistBlock::portCount().
Referenced by integrateCore().
|
private |
Definition at line 112 of file AlmaIFIntegrator.cc.
References TTAMachine::FunctionUnit::addressSpace(), MemInfo::asAddrw, assert, TTAMachine::Machine::Navigator< ComponentType >::count(), dmem_dram_, DMEM_NAME, dmemInfo_, DRAM, TTAMachine::Machine::functionUnitNavigator(), TTAMachine::FunctionUnit::hasAddressSpace(), TTAMachine::AddressSpace::hasNumericalId(), hasSeparateLocalMemory_, TTAMachine::Machine::Navigator< ComponentType >::item(), MemInfo::lsuName, PlatformIntegrator::machine(), MemInfo::mauWidth, TTAMachine::HWOperation::name(), TTAMachine::Component::name(), TTAMachine::FunctionUnit::operation(), TTAMachine::FunctionUnit::operationCount(), PMEM_NAME, pmemInfo_, MemInfo::portAddrw, PlatformIntegrator::readLsuParameters(), secondDmem_, secondDmemAddrw_, secondDmemDataw_, secondDmemName_, secondPmem_, secondPmemAddrw_, secondPmemDataw_, secondPmemName_, MemInfo::type, UNKNOWN, and MemInfo::widthInMaus.
Referenced by integrateProcessor().
|
protectedvirtual |
Implements PlatformIntegrator.
Definition at line 981 of file AlmaIFIntegrator.cc.
References almaifBlock_, assert, PlatformIntegrator::errorStream(), imem_dp_, imemGen_, PlatformIntegrator::imemInfo(), MemInfo::mauWidth, NONE, ONCHIP, MemInfo::portAddrw, PlatformIntegrator::programName(), MathTools::requiredBits0Bit0(), MathTools::roundUpToPowerTwo(), MemInfo::type, UNKNOWN, VHDL_ARRAY, PlatformIntegrator::warningStream(), and MemInfo::widthInMaus.
|
private |
Definition at line 272 of file AlmaIFIntegrator.cc.
References accelInstantiator_, addMemoryPorts(), ProGe::NetlistBlock::addPortGroup(), addPortToAlmaIFBlock(), ALMAIF_MODULE, almaifBlock_, MemInfo::asAddrw, assert, axiAddressWidth(), axiMasterPortGroup(), axiSlavePortGroup(), ProGe::BIT, broadcast_pmem_, TTAMachine::Machine::busNavigator(), PlatformIntegrator::clockPort(), ProGe::NetlistPortGroup::clone(), ProGe::Netlist::connect(), connectCoreMemories(), ProGe::Netlist::connectGroupByName(), TTAMachine::Machine::Navigator< ComponentType >::count(), Environment::dataDirPath(), DEFAULT_LOCAL_MEMORY_WIDTH, DEFAULT_RESERVED_PRIVATE_MEM_SIZE, FileSystem::DIRECTORY_SEPARATOR, dmem_dram_, dmemInfo_, hasMinimalDebugger_, hasSeparateLocalMemory_, imem_dp_, PlatformIntegrator::imemInfo(), ProGe::IN, PlatformIntegrator::integratorBlock(), TTAMachine::Machine::Navigator< ComponentType >::item(), PlatformIntegrator::machine(), MemInfo::mauWidth, ProGe::NetlistBlock::netlist(), ProGe::OUT, pmemInfo_, MemInfo::portAddrw, HDLTemplateInstantiator::replacePlaceholder(), HDLTemplateInstantiator::replacePlaceholderFromFile(), MathTools::requiredBits0Bit0(), PlatformIntegrator::resetPort(), MathTools::roundUpToPowerTwo(), secondDmem_, secondDmemAddrw_, secondDmemDataw_, secondPmem_, secondPmemAddrw_, secondPmemDataw_, ProGe::NetlistBlock::setParameter(), syncReset_, Conversion::toString(), VHDL_ARRAY, and MemInfo::widthInMaus.
Referenced by integrateProcessor().
|
virtual |
Integrates a single TTA core
cores | NetlistBlock containing the core(s) |
coreId | Index of the core to be integrated |
Reimplemented from PlatformIntegrator.
Definition at line 892 of file AlmaIFIntegrator.cc.
References almaif_ttacore_ports, almaifBlock_, PlatformIntegrator::clockPort(), ProGe::Netlist::connect(), PlatformIntegrator::createMemories(), dmem_dram_, dmemInfo_, exportUnconnectedPorts(), imem_dp_, PlatformIntegrator::imemInfo(), PlatformIntegrator::integratorBlock(), MemInfo::lsuName, ProGe::NetlistPort::name(), ProGe::NetlistBlock::netlist(), ProGe::NetlistBlock::port(), ProGe::NetlistBlock::portCount(), PlatformIntegrator::resetPort(), PlatformIntegrator::TTA_CORE_CLK, and PlatformIntegrator::TTA_CORE_RSTX.
Referenced by integrateProcessor().
|
virtual |
Integrates the TTA core(s) generated by ProGe
progeBlock | The toplevel netlist block created by ProGe |
Implements PlatformIntegrator.
Definition at line 205 of file AlmaIFIntegrator.cc.
References addAlmaifFiles(), PlatformIntegrator::addProGeFiles(), findMemories(), initAlmaifBlock(), PlatformIntegrator::initPlatformNetlist(), integrateCore(), PlatformIntegrator::progeBlock(), projectFileGenerator(), PlatformIntegrator::writeNewToplevel(), and ProjectFileGenerator::writeProjectFiles().
|
virtual |
Implements PlatformIntegrator.
Definition at line 1147 of file AlmaIFIntegrator.cc.
|
virtual |
Prints information about the platform
Implements PlatformIntegrator.
Definition at line 1099 of file AlmaIFIntegrator.cc.
|
virtual |
Implements PlatformIntegrator.
Definition at line 1152 of file AlmaIFIntegrator.cc.
References fileGen_.
Referenced by addAlmaifFiles(), and integrateProcessor().
|
virtual |
Set the FPGA device family.
Intended for TTA IP integration. Integrator can device whether this overrides the default device family.
Implements PlatformIntegrator.
Definition at line 1125 of file AlmaIFIntegrator.cc.
References deviceFamily_.
|
virtual |
Returns the target clock frequency in MHz
Reimplemented from PlatformIntegrator.
Definition at line 1142 of file AlmaIFIntegrator.cc.
|
private |
Definition at line 149 of file AlmaIFIntegrator.hh.
Referenced by addAlmaifFiles(), connectCoreMemories(), and initAlmaifBlock().
|
staticprivate |
Definition at line 123 of file AlmaIFIntegrator.hh.
Referenced by initAlmaifBlock().
|
private |
Definition at line 131 of file AlmaIFIntegrator.hh.
Referenced by addPortToAlmaIFBlock(), and integrateCore().
|
private |
Definition at line 133 of file AlmaIFIntegrator.hh.
Referenced by addPortToAlmaIFBlock(), connectCoreMemories(), dmemInstance(), exportUnconnectedPorts(), imemInstance(), initAlmaifBlock(), and integrateCore().
|
staticprivate |
Definition at line 122 of file AlmaIFIntegrator.hh.
Referenced by dmemInstance().
|
private |
Definition at line 154 of file AlmaIFIntegrator.hh.
Referenced by connectCoreMemories(), and initAlmaifBlock().
|
staticprivate |
Definition at line 124 of file AlmaIFIntegrator.hh.
|
staticprivate |
Definition at line 127 of file AlmaIFIntegrator.hh.
Referenced by axiAddressWidth(), and initAlmaifBlock().
|
staticprivate |
Definition at line 126 of file AlmaIFIntegrator.hh.
Referenced by initAlmaifBlock().
|
private |
Definition at line 135 of file AlmaIFIntegrator.hh.
Referenced by deviceFamily(), and setDeviceFamily().
|
private |
Definition at line 136 of file AlmaIFIntegrator.hh.
|
private |
Definition at line 155 of file AlmaIFIntegrator.hh.
Referenced by findMemories(), initAlmaifBlock(), and integrateCore().
|
staticprivate |
Definition at line 120 of file AlmaIFIntegrator.hh.
Referenced by connectCoreMemories(), dmemInstance(), findMemories(), and printInfo().
|
private |
Definition at line 130 of file AlmaIFIntegrator.hh.
Referenced by dmemInstance(), and ~AlmaIFIntegrator().
|
private |
Definition at line 143 of file AlmaIFIntegrator.hh.
Referenced by dmemInstance().
|
private |
Definition at line 140 of file AlmaIFIntegrator.hh.
Referenced by axiAddressWidth(), dmemInstance(), findMemories(), initAlmaifBlock(), and integrateCore().
|
private |
Definition at line 138 of file AlmaIFIntegrator.hh.
Referenced by projectFileGenerator().
|
private |
Definition at line 151 of file AlmaIFIntegrator.hh.
Referenced by addAlmaifFiles(), AlmaIFIntegrator(), and initAlmaifBlock().
|
private |
Definition at line 152 of file AlmaIFIntegrator.hh.
Referenced by findMemories(), and initAlmaifBlock().
|
private |
Definition at line 156 of file AlmaIFIntegrator.hh.
Referenced by imemInstance(), initAlmaifBlock(), and integrateCore().
|
private |
Definition at line 129 of file AlmaIFIntegrator.hh.
Referenced by imemInstance(), and ~AlmaIFIntegrator().
|
staticprivate |
Definition at line 121 of file AlmaIFIntegrator.hh.
Referenced by connectCoreMemories(), dmemInstance(), findMemories(), and printInfo().
|
private |
Definition at line 143 of file AlmaIFIntegrator.hh.
Referenced by dmemInstance().
|
private |
Definition at line 140 of file AlmaIFIntegrator.hh.
Referenced by addAlmaifFiles(), axiAddressWidth(), dmemInstance(), findMemories(), and initAlmaifBlock().
|
private |
Definition at line 142 of file AlmaIFIntegrator.hh.
Referenced by findMemories(), and initAlmaifBlock().
|
private |
Definition at line 146 of file AlmaIFIntegrator.hh.
Referenced by connectCoreMemories(), dmemInstance(), findMemories(), and initAlmaifBlock().
|
private |
Definition at line 145 of file AlmaIFIntegrator.hh.
Referenced by connectCoreMemories(), dmemInstance(), findMemories(), and initAlmaifBlock().
|
private |
Definition at line 144 of file AlmaIFIntegrator.hh.
Referenced by connectCoreMemories(), and findMemories().
|
private |
Definition at line 142 of file AlmaIFIntegrator.hh.
Referenced by findMemories(), and initAlmaifBlock().
|
private |
Definition at line 148 of file AlmaIFIntegrator.hh.
Referenced by connectCoreMemories(), dmemInstance(), findMemories(), and initAlmaifBlock().
|
private |
Definition at line 148 of file AlmaIFIntegrator.hh.
Referenced by connectCoreMemories(), dmemInstance(), findMemories(), and initAlmaifBlock().
|
private |
Definition at line 147 of file AlmaIFIntegrator.hh.
Referenced by connectCoreMemories(), and findMemories().
|
private |
Definition at line 153 of file AlmaIFIntegrator.hh.
Referenced by initAlmaifBlock().