OpenASIP
2.0
|
#include <XilinxBlockRamGenerator.hh>
Public Member Functions | |
XilinxBlockRamGenerator (int memMauWidth, int widthInMaus, int addrWidth, int portBDataWidth, int portBAddrWidth, const PlatformIntegrator *integrator, std::ostream &warningStream, std::ostream &errorStream, bool connectToArbiter=false, ProGe::NetlistBlock *almaifBlocks=nullptr, TCEString signalPrefix="", bool overrideAddrWidth=false, bool singleMemoryBlock=false) | |
virtual | ~XilinxBlockRamGenerator () |
virtual bool | generatesComponentHdlFile () const |
virtual std::vector< TCEString > | generateComponentFile (TCEString outputPath) |
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 |
Public Member Functions inherited from MemoryGenerator | |
MemoryGenerator (int memMauWidth, int widthInMaus, int addrWidth, TCEString initFile, const PlatformIntegrator *integrator, std::ostream &warningStream, std::ostream &errorStream) | |
virtual | ~MemoryGenerator () |
int | memoryTotalWidth () const |
int | memoryMauSize () const |
int | memoryWidthInMaus () const |
int | memoryAddrWidth () const |
TCEString | initializationFile () const |
void | addLsu (TTAMachine::FunctionUnit &lsuArch, std::vector< std::string > lsuPorts) |
Protected Member Functions | |
virtual TCEString | moduleName () const |
void | addPorts (std::string prefix, int addrWidth, int dataWidth) |
virtual TCEString | instanceName (int coreId, int) const |
TCEString | almaifPortName (const TCEString &portBaseName) |
Protected Member Functions inherited from MemoryGenerator | |
virtual bool | checkFuPort (const std::string fuPort, std::vector< TCEString > &reasons) const |
virtual void | connectPorts (ProGe::NetlistBlock &netlistBlock, const ProGe::NetlistPort &memPort, const ProGe::NetlistPort &corePort, bool inverted, int coreId) |
virtual MemoryGenerator::BlockPair | createMemoryNetlistBlock (ProGe::NetlistBlock &integratorBlock, int memIndex, int coreId) |
const PlatformIntegrator * | platformIntegrator () const |
std::ostream & | warningStream () |
std::ostream & | errorStream () |
int | portCount () const |
const HDLPort * | port (int index) const |
const HDLPort * | portByKeyName (TCEString name) const |
TCEString | portKeyName (const HDLPort *port) const |
void | addPort (const TCEString &name, HDLPort *port) |
int | parameterCount () const |
const ProGe::Parameter & | parameter (int index) const |
void | addParameter (const ProGe::Parameter &add) |
TCEString | ttaCoreName () const |
TCEString | memoryIndexString (int coreId, int memIndex) const |
TCEString | templatePath () const |
void | instantiateTemplate (const TCEString &inFile, const TCEString &outFile, const TCEString &entity) const |
bool | hasLSUArchitecture () const |
const TTAMachine::FunctionUnit & | lsuArchitecture () const |
TCEString | corePortName (const TCEString &portBaseName, int coreId) const |
Protected Attributes | |
const bool | connectToArbiter_ |
ProGe::NetlistBlock * | almaifBlock_ |
TCEString | signalPrefix_ |
const bool | overrideAddrWidth_ |
const bool | singleMemoryBlock_ |
Static Private Attributes | |
static const TCEString | DP_FILE = "xilinx_dp_blockram.vhdl" |
static const TCEString | SP_FILE = "xilinx_blockram.vhdl" |
Additional Inherited Members | |
Protected Types inherited from MemoryGenerator | |
typedef std::multimap< TCEString, HDLPort * > | PortMap |
typedef std::pair< ProGe::NetlistBlock *, ProGe::VirtualNetlistBlock * > | BlockPair |
Definition at line 41 of file XilinxBlockRamGenerator.hh.
XilinxBlockRamGenerator::XilinxBlockRamGenerator | ( | int | memMauWidth, |
int | widthInMaus, | ||
int | addrWidth, | ||
int | portBDataWidth, | ||
int | portBAddrWidth, | ||
const PlatformIntegrator * | integrator, | ||
std::ostream & | warningStream, | ||
std::ostream & | errorStream, | ||
bool | connectToArbiter = false , |
||
ProGe::NetlistBlock * | almaifBlocks = nullptr , |
||
TCEString | signalPrefix = "" , |
||
bool | overrideAddrWidth = false , |
||
bool | singleMemoryBlock = false |
||
) |
Definition at line 47 of file XilinxBlockRamGenerator.cc.
References MemoryGenerator::addParameter(), MemoryGenerator::addPort(), addPorts(), assert, ProGe::BIT, connectToArbiter_, ProGe::IN, MemoryGenerator::memoryAddrWidth(), MemoryGenerator::memoryTotalWidth(), ProGe::Parameter::setValue(), and Conversion::toString().
|
virtual |
Definition at line 97 of file XilinxBlockRamGenerator.cc.
|
virtual |
Reimplemented from MemoryGenerator.
Definition at line 149 of file XilinxBlockRamGenerator.cc.
References ProGe::NetlistBlock::addSubBlock(), almaifBlock_, almaifPortName(), assert, PlatformIntegrator::clockPort(), ProGe::Netlist::connect(), MemoryGenerator::connectPorts(), connectToArbiter_, MemoryGenerator::corePortName(), MemoryGenerator::createMemoryNetlistBlock(), HDLPort::name(), HDLPort::needsInversion(), ProGe::NetlistBlock::netlist(), overrideAddrWidth_, MemoryGenerator::platformIntegrator(), ProGe::NetlistBlock::port(), MemoryGenerator::port(), ProGe::NetlistBlock::portCount(), MemoryGenerator::portCount(), MemoryGenerator::portKeyName(), ProGe::NetlistPort::realWidth(), PlatformIntegrator::resetPort(), and singleMemoryBlock_.
|
protected |
Definition at line 106 of file XilinxBlockRamGenerator.cc.
References MemoryGenerator::addPort(), ProGe::BIT, ProGe::BIT_VECTOR, HDB::IN, ProGe::IN, HDB::OUT, ProGe::OUT, and overrideAddrWidth_.
Referenced by XilinxBlockRamGenerator().
Definition at line 263 of file XilinxBlockRamGenerator.cc.
References MemoryGenerator::platformIntegrator(), and signalPrefix_.
Referenced by addMemory().
|
virtual |
Implements MemoryGenerator.
Definition at line 227 of file XilinxBlockRamGenerator.cc.
References connectToArbiter_, FileSystem::copy(), FileSystem::DIRECTORY_SEPARATOR, DP_FILE, moduleName(), SP_FILE, and MemoryGenerator::templatePath().
|
virtual |
Implements MemoryGenerator.
Definition at line 101 of file XilinxBlockRamGenerator.cc.
|
protectedvirtual |
Implements MemoryGenerator.
Definition at line 253 of file XilinxBlockRamGenerator.cc.
References signalPrefix_.
|
virtual |
Tests that the memory generator is compatible with TTA core. If incompatible, reasons are appended to the reasons vector
ttaCore | TTA toplevel |
coreId | The core ID number |
reasons | Reasons why incompatible |
Reimplemented from MemoryGenerator.
Definition at line 274 of file XilinxBlockRamGenerator.cc.
References connectToArbiter_, and MemoryGenerator::isCompatible().
|
protectedvirtual |
Implements MemoryGenerator.
Definition at line 243 of file XilinxBlockRamGenerator.cc.
References connectToArbiter_.
Referenced by generateComponentFile().
|
protected |
Definition at line 82 of file XilinxBlockRamGenerator.hh.
Referenced by addMemory().
|
protected |
Definition at line 81 of file XilinxBlockRamGenerator.hh.
Referenced by addMemory(), generateComponentFile(), isCompatible(), moduleName(), and XilinxBlockRamGenerator().
|
staticprivate |
Definition at line 89 of file XilinxBlockRamGenerator.hh.
Referenced by generateComponentFile().
|
protected |
Definition at line 84 of file XilinxBlockRamGenerator.hh.
Referenced by addMemory(), and addPorts().
|
protected |
Definition at line 83 of file XilinxBlockRamGenerator.hh.
Referenced by almaifPortName(), and instanceName().
|
protected |
Definition at line 85 of file XilinxBlockRamGenerator.hh.
Referenced by addMemory().
|
staticprivate |
Definition at line 90 of file XilinxBlockRamGenerator.hh.
Referenced by generateComponentFile().