Go to the documentation of this file.
92 std::vector<std::string> globalOptions,
93 const std::vector<IDF::FUGenerated>& generatetFUs,
98 typedef std::pair<std::string, std::string>
Replace;
132 std::vector<HDB::OperationImplementationResource>
resources;
161 bool isSynthesizable);
172 std::deque<std::string>& sink);
174 std::deque<std::string> statements,
176 std::set<std::string>& addedStatements);
177 std::deque<std::string>
readFile(std::string filename);
181 bool hasToken(std::string line, std::string token);
235 std::unordered_multimap<std::string, OutputConnection>
portInputs_;
TTAMachine::FunctionUnit * adfFU_
std::vector< HDB::Variable > renamedGlobalSignals_
void createShadowRegisters()
std::string pipelineValid(std::string port, int cycle)
std::vector< HDB::OperationImplementationResource > resources
const ProGeOptions & options_
std::string findAbsolutePath(std::string file)
std::vector< std::string > resourceInputs_
HDLGenerator::Language selectedLanguage()
std::vector< std::string > globalOptions_
std::string triggerSignal(int stage)
std::string replaceToken(std::string line, Replace replace)
std::unordered_set< std::string > extInputs_
std::vector< HDB::Variable > globalsignals
std::vector< std::string > subOperations
virtual bool hasAddressSpace() const
TTAMachine::Machine * machine
the architecture definition of the estimated processor
bool hasToken(std::string line, std::string token)
std::string subOpName(OperationNode *node)
std::unordered_map< std::string, std::vector< Replace > > replacesPerOp_
std::unordered_map< std::string, int > subOpCount_
std::deque< std::string > initial
std::set< std::pair< std::string, std::string > > extOutputs_
std::unordered_map< std::string, ProGe::Direction > portDirection_
std::vector< std::string > resourceOutputs_
std::deque< std::string > postOp
std::unordered_map< std::string, int > dagConstantCount_
std::unordered_multimap< std::string, OutputConnection > portInputs_
void createOperationResources()
std::map< std::string, int > resourceOffsets
std::unordered_map< std::string, BaseOperation > baseOperations_
void createOutputPipeline()
virtual AddressSpace * addressSpace() const
void createMandatoryPorts()
FUGen & operator=(const FUGen &)=delete
std::unordered_set< std::string > extIfaces_
void scheduleOperations()
static void implement(const ProGeOptions &options, std::vector< std::string > globalOptions, const std::vector< IDF::FUGenerated > &generatetFUs, const TTAMachine::Machine &machine, ProGe::NetlistBlock *core)
std::deque< std::string > implementation
std::vector< std::string > registers_
std::unordered_map< int, DAGConstant > dagConstants_
std::vector< std::string > operations_
std::vector< HDB::Variable > renamedVariables_
std::deque< std::string > readFile(std::string filename)
std::vector< OperandConnection > operands
std::string sensitiveOpcode
std::unordered_map< int, int > nodeImplementations_
void createFUHeaderComment()
void createExternalInterfaces(bool genIntegrator)
std::pair< std::string, std::string > Replace
ProGe::NetlistBlock * core_
ProGe::NetlistBlock * netlistBlock_
HDLGenerator::Behaviour behaviour_
int DAGNodeOperandWidth(OperationDAGNode &node, int id, OperationDAG *dag)
std::unordered_map< std::string, int > pipelineLength_
std::unordered_map< std::string, int > resourceCount_
std::string operandPlaceholder(int id)
void addRegisterIfMissing(std::string name, int width, HDLGenerator::WireType wt=HDLGenerator::WireType::Auto)
std::string opcodeConstant(std::string operation)
std::string constantName(ConstantNode *node, OperationDAG *dag)
std::string opcodeSignal(int stage)
std::unordered_map< std::string, int > operationCycles_
static MachInfoCmdLineOptions options
std::string operandSignal(std::string operation, int id)
FUGen(const ProGeOptions &options, std::vector< std::string > globalOptions, IDF::FUGenerated &fug, const TTAMachine::Machine &machine, ProGe::NetlistBlock *core)
void readImplementation(std::string filename, std::string opName, std::deque< std::string > &sink)
std::vector< Replace > buildReplaces(std::string opName)
bool isLSUDataPort(const std::string &portName)
std::vector< HDB::Variable > variables
const std::string & moduleName() const
std::unordered_map< std::string, OperationSchedule > scheduledOperations_
std::unordered_map< std::string, OperationDAG * > implementapleDAGs_
void createImplementationFiles()
virtual size_t subBlockCount() const
std::unordered_map< std::string, int > implLatency_
NetlistBlock & subBlock(size_t index) override
void copyImplementation(std::string file, std::string format, bool isSynthesizable)
void createPortPipeline()
OperandConnection subOpConnection(OperationDAG *dag, OperationDAGEdge *edge, bool isOutput)
std::string pipelineName(std::string port, int cycle)
void prepareSnippet(std::string name, std::deque< std::string > statements, HDLGenerator::CodeBlock &sink, std::set< std::string > &addedStatements)
ProGe::Signal inferLSUSignal(const std::string &portName) const