33#ifndef TTA_NETLIST_GENERATOR_HH
34#define TTA_NETLIST_GENERATOR_HH
49 class MachineImplementation;
56 class FUImplementation;
65 class BaseRegisterFile;
73 class ICDecoderGeneratorPlugin;
79 class GeneratableFUNetlistBlock;
94 TCEString entityNameStr, std::ostream& warningStream);
161 typedef std::multimap<const TTAMachine::Port*, NetlistPort*>
164 typedef std::map<const TTAMachine::Unit*, NetlistBlock*>
171 typedef std::map<const TTAMachine::ImmediateUnit*, NetlistPort*>
238 const std::string& portName);
TTAMachine::Machine * machine
the architecture definition of the estimated processor
static MachInfoCmdLineOptions options
NetlistPort & fuGuardPort(const NetlistPort &fuPort) const
PortPurposeMap clkPorts_
Maps clock ports.
IUPortMap iuPortMap_
Maps the created netlist ports to immediate units.
std::map< std::string, HDB::FUEntry * > FUEntryMap
Map type for FUImplementation.
PortRelationMap loadPortMap_
Maps loads ports.
static const std::string DECOMP_GLOCK_PORT
Global lock out port name in decompressor.
static int instructionMemoryAddressWidth(const TTAMachine::Machine &machine)
void addFUExternalPortsToNetlist(const HDB::FUImplementation &fuImplementation, NetlistBlock &coreBlock, NetlistBlock &fuBlock, const TTAMachine::FunctionUnit &adfFU)
PortPurposeMap fuOpcodePorts_
Maps FU opcode ports.
static const std::string DECODER_LOCK_REQ_OUT_PORT
Lock request out port name in instruction decoder.
FUEntryMap fuEntryMap_
Maps FU implementations for different FU's.
void mapLoadPort(const NetlistPort &port, NetlistPort &loadPort)
RFEntryMap rfEntryMap_
Maps RF implementations for different RF's.
static bool isLSUDataPort(const TTAMachine::FunctionUnit &adfFU, const std::string &portName)
NetlistPort & rstPort(const NetlistBlock &block) const
void mapRFOpcodePort(const NetlistPort &port, NetlistPort &opcodePort)
NetlistBlock & netlistBlock(const TTAMachine::Unit &unit) const
ICDecoderGeneratorPlugin & plugin_
The generator plugin.
GeneratableFUNetlistBlock * addGeneratableFUsToNetlist(const IDF::FUGenerated &fug, NetlistBlock &netlistBlock)
NetlistBlock * generate(const ProGeOptions &options, int imemWidthInMAUs, TCEString entityNameStr, std::ostream &warningStream)
bool isParameterizable(const std::string ¶mName, const HDB::FUEntry *fuEntry) const
static const std::string DECODER_PC_LOAD_PORT
PC load port name in instruction decoder.
const ProGeContext & context_
void mapFUOpcodePort(const NetlistBlock &block, NetlistPort &opcodePort)
void addRFToNetlist(const ProGeOptions &options, const IDF::RFImplementationLocation &location, NetlistBlock &netlistBlock)
PortPurposeMap glockPorts_
Maps global lock ports.
static const std::string FETCHBLOCK_PORT_NAME
TCEString checkInstanceName(const TCEString &baseInstanceName, const TCEString &moduleName) const
unsigned int calculateAddressWidth(TTAMachine::FunctionUnit const *fu) const
NetlistPort & loadPort(const NetlistPort &port) const
void mapGlobalLockPort(const NetlistBlock &block, NetlistPort &glockPort)
static const std::string DECODER_PC_OPCODE_PORT
PC opcode port name in instruction decoder.
bool hasGlockPort(const NetlistBlock &block) const
static const std::string DECODER_CLOCK_PORT
Clock port name in instruction decoder.
std::map< std::string, HDB::RFEntry * > RFEntryMap
Map type for RFImplementation.
static const std::string ADDR_WIDTH
static const std::string DECODER_INSTR_WORD_PORT
Instruction word port name in instruction decoder.
NetlistBlock & ttaCore() const
PortPurposeMap rfGuardPorts_
Maps RF guard ports.
static const std::string DECODER_RA_LOAD_PORT
RA load port name in instruction decoder.
static const std::string DECOMP_INSTR_WORD_PORT
Instruction word port name in decompressor.
void mapNetlistPort(const TTAMachine::Port &adfPort, NetlistPort &netlistPort)
NetlistBlock * coreBlock_
The TTA core block.
NetlistPort * raOutPort_
Returns address out port in GCU (ifetch).
static Signal inferLSUSignal(const std::string &portName)
void mapNetlistBlock(const TTAMachine::Unit &unit, NetlistBlock &netlistBlock)
NetlistPort & gcuReturnAddressInPort() const
UnitCorrespondenceMap unitCorrespondenceMap_
Maps the ADF units to the netlist blocks.
NetlistPort & rfOpcodePort(const NetlistPort &port) const
bool hasGlockReqPort(const NetlistBlock &block) const
NetlistBlock * instructionDecompressor_
The instruction decompressor block.
virtual ~NetlistGenerator()
bool isLSU(const TTAMachine::FunctionUnit &fu) const
NetlistBlock & instructionDecompressor() const
void addFUToNetlist(const IDF::FUImplementationLocation &location, NetlistBlock &netlistBlock, std::ostream &warningStream)
HDB::FUEntry & fuEntry(const std::string &fuName) const
static int instructionMemoryWidth(const TTAMachine::Machine &machine)
NetlistBlock & instructionDecoder() const
PortPurposeMap rstPorts_
Maps reset ports.
void addBaseRFToNetlist(const ProGeOptions &options, const TTAMachine::BaseRegisterFile ®File, const IDF::RFImplementationLocation &location, NetlistBlock &netlistBlock, const std::string &blockNamePrefix)
void mapRFGuardPort(const NetlistBlock &block, NetlistPort &guardPort)
NetlistPort & immediateUnitWritePort(const TTAMachine::ImmediateUnit &iu) const
std::map< const TTAMachine::ImmediateUnit *, NetlistPort * > IUPortMap
Map type for port of immediate units.
static const std::string DECODER_LOCK_REQ_IN_PORT
Lock request in port name in instruction decoder.
NetlistPort & glockReqPort(const NetlistBlock &block) const
void mapResetPort(const NetlistBlock &block, NetlistPort &resetPort)
static TTAMachine::AddressSpace & instructionMemory(const TTAMachine::Machine &machine)
NetlistBlock & instructionFetch() const
void mapImmediateUnitWritePort(const TTAMachine::ImmediateUnit &iu, NetlistPort &port)
NetlistBlock * instructionDecoder_
The instruction decoder block.
std::map< const NetlistBlock *, NetlistPort * > PortPurposeMap
Map type for NetlistPorts.
NetlistPort & gcuReturnAddressOutPort() const
PortRelationMap rfOpcodePortMap_
Maps opcode ports.
void mapGlobalLockRequestPort(const NetlistBlock &block, NetlistPort &glockReqPort)
NetlistPort & netlistPort(const TTAMachine::Port &port, Direction dir=IN) const
static const std::string DECOMP_LOCK_REQ_IN_PORT
Lock request in port name in decompressor.
void mapClockPort(const NetlistBlock &block, NetlistPort &clkPort)
PortCorrespondenceMap portCorrespondenceMap_
Maps the ADF ports to the netlist ports.
bool hasOpcodePort(const NetlistPort &port) const
void mapFUGuardPort(const NetlistPort &dataPort, NetlistPort &guardPort)
void addGCUToNetlist(NetlistBlock &toplevelBlock, int imemWidthInMAUs)
void addIUToNetlist(const ProGeOptions &options, const IDF::RFImplementationLocation &location, NetlistBlock &netlistBlock)
std::map< const NetlistPort *, NetlistPort * > PortRelationMap
Map type for NetlistPorts.
NetlistPort & fuOpcodePort(const NetlistBlock &fuBlock) const
static int opcodePortWidth(const HDB::FUEntry &fu, std::ostream &warningStream)
NetlistPort & glockPort(const NetlistBlock &block) const
PortPurposeMap glockReqPorts_
Maps global lock request ports.
static TTAMachine::FUPort & findCorrespondingPort(const TTAMachine::FunctionUnit &fuToSearch, const TTAMachine::FunctionUnit &origFU, const std::string &portName)
std::multimap< const TTAMachine::Port *, NetlistPort * > PortCorrespondenceMap
Multimap type to map ADF ports to NetlistPorts.
NetlistPort * raInPort_
Return address in port in GCU (ifetch).
NetlistPort & clkPort(const NetlistBlock &block) const
bool netlistPortIsMapped(const TTAMachine::Port &adfPort)
const ProGeContext & context() const
NetlistBlock * instructionFetch_
The instruction fetch block.
NetlistPort & rfGuardPort(const NetlistBlock &rfBlock) const
std::map< const TTAMachine::Unit *, NetlistBlock * > UnitCorrespondenceMap
Map type to map ADF Units to NetlistBlocks.
PortRelationMap fuGuardPortMap_
Maps FU guard ports.
HDB::RFEntry & rfEntry(const std::string &rfName) const
static const std::string DECODER_LOCK_STATUS_PORT
static Direction translateDirection(HDB::Direction direction)
static const std::string DECODER_RESET_PORT
Reset port name in instruction decoder.
Direction
Direction of port.
Direction
Direction of the port.