27#ifndef TTA_RV32_TRANSLATOR_HH
28#define TTA_RV32_TRANSLATOR_HH
33#include <unordered_map>
71 const std::string& entityName);
75 const std::string& fileDst);
81 std::unordered_map<std::string, BaseFUPort*>
rs1Ports_;
82 std::unordered_map<std::string, BaseFUPort*>
rs2Ports_;
83 std::unordered_map<std::string, BaseFUPort*>
rdPorts_;
90 std::unordered_map<Port*, std::vector<std::string>>
98 ops, std::unordered_map<std::string, InstructionBitVector*>
100 std::ofstream& stream) const;
103 ops, std::unordered_map<std::string, InstructionBitVector*>
105 std::ofstream& stream) const;
120 const std::unordered_map<std::string, BaseFUPort*>& ports)
const;
128 void addRPorts(
const std::string& opName);
129 void addIPorts(
const std::string& opName);
130 void addSPorts(
const std::string& opName);
131 void addBPorts(
const std::string& opName);
145 std::unordered_map<std::string, InstructionBitVector*>
147 std::unordered_map<std::string, InstructionBitVector*>
149 std::unordered_map<std::string, InstructionBitVector*>
151 std::unordered_map<std::string, InstructionBitVector*>
153 std::unordered_map<std::string, InstructionBitVector*>
155 std::unordered_map<std::string, InstructionBitVector*>
157 std::unordered_map<std::string, InstructionBitVector*>
161 std::unordered_map<std::string, InstructionBitVector*> instructions,
162 const std::map<std::string, std::string> encodings,
163 std::ofstream& stream)
const;
168 const std::string& fileDst);
175 const std::string& type)
const;
178 const std::string& type)
const;
181 const std::string& type)
const;
184 const std::string& op,
int required,
int found)
const;
TTAMachine::Machine * machine
the architecture definition of the estimated processor
std::vector< Bus * > busses_
void findOperationSources()
void addRs2ForwardingConditions(std::map< std::string, std::string > ops, std::unordered_map< std::string, InstructionBitVector * >(ProGe::RV32MicroCodeGenerator::*instructionFunc)(Port *p1, Port *p2) const, std::ofstream &stream) const
std::unordered_map< std::string, InstructionBitVector * > constructIInstructions(Port *src1, Port *src2) const
void generateWrapper(HDLTemplateInstantiator &instantiator, const std::string &fileDst)
void generateMap(const std::string &dstDirectory)
void addR1RPorts(const std::string &opName)
void addRs1ForwardingConditions(std::map< std::string, std::string > ops, std::unordered_map< std::string, InstructionBitVector * >(ProGe::RV32MicroCodeGenerator::*instructionFunc)(Port *p1, Port *p2) const, std::ofstream &stream) const
std::unordered_map< std::string, BaseFUPort * > rs1Ports_
FunctionUnit * mapFunctionUnit(const std::string &operation) const
bool findConnectedBusses(Connection &rs1, Connection &rs2, Connection &rd, Connection &simm, const bool &forwarding) const
void setBypassInstructionRegister(const bool &value)
std::unordered_map< std::string, BaseFUPort * > simmPorts_
std::unordered_map< std::string, BaseFUPort * > rdPorts_
std::string generateOperationLatencyLogic(HDLTemplateInstantiator &instantiator)
std::map< std::string, std::string > r1rOperations_
ProgramImageGenerator * pig_
void throwOutputPortError(const BaseFUPort *port, const std::string &type) const
void validateOperations() const
void addR1Ports(const std::string &opName)
bool variableLengthOpLatency_
std::map< std::string, std::string > r1Operations_
void addBitsToMap(std::unordered_map< std::string, InstructionBitVector * > instructions, const std::map< std::string, std::string > encodings, std::ofstream &stream) const
std::unordered_map< std::string, InstructionBitVector * > constructR1Instructions(Port *src1, Port *src2) const
void addRPorts(const std::string &opName)
void addSPorts(const std::string &opName)
void addUJPorts(const std::string &opName)
void generateRTL(HDLTemplateInstantiator &instantiator, const std::string &fileDst)
std::map< std::string, std::string > iOperations_
std::map< std::string, std::string > bOperations_
bool hasCustom0Operations_
std::unordered_map< std::string, InstructionBitVector * > constructRInstructions(Port *src1, Port *src2) const
std::map< std::string, std::string > rOperations_
~RV32MicroCodeGenerator()
void throwOperationNotFoundError(const std::string &op) const
std::unordered_map< std::string, InstructionBitVector * > constructSInstructions(Port *src1, Port *src2) const
void generateFUTargetProcess(std::ofstream &stream)
std::map< std::string, std::string > sOperations_
std::unordered_map< std::string, BaseFUPort * > rs2Ports_
std::unordered_map< Port *, std::vector< std::string > > sourceOperationMap_
void throwTriggeringPortError(const BaseFUPort *port, const std::string &type) const
std::map< std::string, std::string > ujOperations_
std::unordered_map< std::string, InstructionBitVector * > constructR1RInstructions(Port *src1, Port *src2) const
void initializeOperations()
void addIPorts(const std::string &opName)
std::unordered_map< Port *, int > sourcePortID_
bool bypassInstructionRegister_
void throwOperandCountError(const std::string &op, int required, int found) const
std::unordered_map< std::string, InstructionBitVector * > constructUJInstructions() const
std::set< Port * > operationPorts(const std::unordered_map< std::string, BaseFUPort * > &ports) const
void findOperationPorts()
std::unordered_map< std::string, InstructionBitVector * > constructBInstructions(Port *src1, Port *src2) const
void throwInputPortError(const BaseFUPort *port, const std::string &type) const
void addBPorts(const std::string &opName)