Go to the documentation of this file. 1 #ifndef __ELASTICMODULES__H__
2 #define __ELASTICMODULES__H__
6 #define DEFAULT_EB_DEPTH 2
7 #define DEFAULT_FANIN_FANOUT 2
8 #define DEFAULT_LFORK_IMPL 1 // LKFork design
61 static const std::map<OpGraphOpCode,LLVMMode>
all_modes;
84 static const std::map<OpGraphOpCode,LLVMMode>
all_modes;
218 static const std::map<OpGraphOpCode, LLVMMode>
all_modes;
239 bool isNodeInCycle(
const MRRGNode* originNode,
const MRRGNode* thisNode, std::set<const MRRGNode*>& visited,std::set<const MRRGNode*>& mrrgnodes_mapped_to )
const;
MRRG * createMRRG(unsigned II) override
virtual std::string GenericName() override
virtual std::string GenericName() override
#define DEFAULT_LFORK_IMPL
ElasticEagerFork(std::string name, Location, int size, int fanout_=DEFAULT_FANIN_FANOUT, int unit_fork_fanout_=DEFAULT_FANIN_FANOUT, bool isElastic=true)
int getUnitFanout() const
MRRG * createMRRG(unsigned II) override
virtual std::string GenericName() override
auto & getSupportedModes() const
MRRG * createMRRG(unsigned II) override
virtual nlohmann::json CoreIRGenFunctionality() override
ElasticDiverge(std::string name, Location, int size=DEFAULT_SIZE, int fanout_=DEFAULT_FANIN_FANOUT)
std::map< OpGraphOp *, std::set< MRRG::NodeDescriptor > > MRRGNodesFromOpNode
virtual BitConfig getBitConfig(const MRRG &mrrg, const OpGraph &og, const Mapping &map, const ConfigCell &ccell, const MRRGNodesFromOpNode &mrrg_nodes_from_op_node, const MRRGNodesFromValNode &mrrg_nodes_from_val_node) const override
MRRG * createMRRG(unsigned II) override
virtual BitConfig getBitConfig(const MRRG &mrrg, const OpGraph &og, const Mapping &map, const ConfigCell &ccell, const MRRGNodesFromOpNode &mrrg_nodes_from_op_node, const MRRGNodesFromValNode &mrrg_nodes_from_val_node) const override
#define DEFAULT_FANIN_FANOUT
MRRG * createMRRG(unsigned II) override
virtual std::string GenericName() override
ElasticBufferFifo(std::string name, Location, int depth_=DEFAULT_EB_DEPTH, int size=DEFAULT_SIZE, bool hasEnable_=true, bool isElastic=true)
virtual BitConfig getBitConfig(const MRRG &mrrg, const OpGraph &og, const Mapping &map, const ConfigCell &ccell, const MRRGNodesFromOpNode &mrrg_nodes_from_op_node, const MRRGNodesFromValNode &mrrg_nodes_from_val_node) const override
virtual nlohmann::json CoreIRGenFunctionality() override
virtual ~ElasticRegisterFile()
virtual ~ElasticTokenInducer()
virtual std::string GenericName() override
static const std::map< OpGraphOpCode, LLVMMode > all_modes
std::vector< OpGraphOpCode > supported_modes
virtual nlohmann::json CoreIRGenFunctionality() override
virtual nlohmann::json CoreIRGenFunctionality() override
virtual nlohmann::json CoreIRGenFunctionality() override
virtual ~ElasticMemPort()
FPUnit_wrapper(std::string name, Location, int max_latency, std::vector< OpGraphOpCode > supported_modes)
virtual ~ElasticLazyFork()
MRRG * createMRRG(unsigned II) override
ElasticLazyFork(std::string name, Location, int size=DEFAULT_SIZE, int fanout_=DEFAULT_FANIN_FANOUT, int unit_fork_fanout_=DEFAULT_FANIN_FANOUT, int impl_type_=DEFAULT_LFORK_IMPL)
virtual nlohmann::json CoreIRGenFunctionality() override
ElasticForkBranch(std::string name, Location, int size, int fanout_=DEFAULT_FANIN_FANOUT, bool isElastic=true)
virtual std::string GenericName() override
virtual ~ElasticSelMultiplexer()
virtual ~FPUnit_wrapper()
virtual std::string GenericName() override
ElasticJoin(std::string name, Location, int size=DEFAULT_SIZE, int fanin_=DEFAULT_FANIN_FANOUT, bool isElastic=true)
MRRG * createMRRG(unsigned II) override
virtual BitConfig getBitConfig(const MRRG &mrrg, const OpGraph &og, const Mapping &map, const ConfigCell &ccell, const MRRGNodesFromOpNode &mrrg_nodes_from_op_node, const MRRGNodesFromValNode &mrrg_nodes_from_val_node) const override
std::map< OpGraphVal *, std::set< MRRG::NodeDescriptor > > MRRGNodesFromValNode
virtual nlohmann::json CoreIRGenFunctionality() override
virtual nlohmann::json CoreIRGenFunctionality() override
ElasticFPUnit(std::string name, Location loc, std::vector< OpGraphOpCode > supported_modes_, unsigned size, int II, int latency, bool predExist, bool isElastic, int contexts=1)
virtual ~ElasticVLUWrapper()
virtual std::string GenericName() override
virtual std::string GenericName() override
virtual std::string GenericName() override
bool isNodeInCycle(const MRRGNode *originNode, const MRRGNode *thisNode, std::set< const MRRGNode * > &visited, std::set< const MRRGNode * > &mrrgnodes_mapped_to) const
static const std::map< OpGraphOpCode, LLVMMode > all_modes
virtual std::string GenericName() override
virtual BitConfig getBitConfig(const MRRG &mrrg, const OpGraph &og, const Mapping &map, const ConfigCell &ccell, const MRRGNodesFromOpNode &mrrg_nodes_from_op_node, const MRRGNodesFromValNode &mrrg_nodes_from_val_node) const override
ElasticTokenInducer(std::string name, Location, int size=DEFAULT_SIZE, int iteration_interval=2, bool isEalstic=true)
ElasticRegisterFile(std::string name, Location, int numInputPorts, int numOutputPorts, int log2Registers, int size=DEFAULT_SIZE, int contexts=1, int eb_depth=DEFAULT_EB_DEPTH)
virtual nlohmann::json CoreIRGenFunctionality() override
virtual nlohmann::json CoreIRGenFunctionality() override
static const std::map< OpGraphOpCode, LLVMMode > all_modes
virtual nlohmann::json CoreIRGenFunctionality() override
ElasticCrossbar(std::string name, Location, int num_inputs, int num_outputs, int data_size, int type, bool predExist=false, std::string pred_type="full", int contexts=1)
virtual BitConfig getBitConfig(const MRRG &mrrg, const OpGraph &og, const Mapping &map, const ConfigCell &ccell, const MRRGNodesFromOpNode &mrrg_nodes_from_op_node, const MRRGNodesFromValNode &mrrg_nodes_from_val_node) const override
MRRG * createMRRG(unsigned II) override
virtual std::string GenericName() override
virtual ~ElasticMemoryUnit()
MRRG * createMRRG(unsigned II) override
virtual nlohmann::json CoreIRGenFunctionality() override
MRRG * createMRRG(unsigned II) override
virtual std::string GenericName() override
virtual ~ElasticDiverge()
ElasticMemPort(std::string name, Location, int size=DEFAULT_SIZE, int eb_depth=DEFAULT_EB_DEPTH, int num_connections=2, bool pred=false, int contexts=1)
virtual nlohmann::json CoreIRGenFunctionality() override
virtual BitConfig getBitConfig(const MRRG &mrrg, const OpGraph &og, const Mapping &map, const ConfigCell &ccell, const MRRGNodesFromOpNode &mrrg_nodes_from_op_node, const MRRGNodesFromValNode &mrrg_nodes_from_val_node) const override
MRRG * createMRRG(unsigned II) override
virtual std::string GenericName() override
virtual ~ElasticEagerFork()
virtual ~ElasticForkBranch()
virtual BitConfig getBitConfig(const MRRG &mrrg, const OpGraph &og, const Mapping &map, const ConfigCell &ccell, const MRRGNodesFromOpNode &mrrg_nodes_from_op_node, const MRRGNodesFromValNode &mrrg_nodes_from_val_node) const override
ElasticSelMultiplexer(std::string, Location, unsigned mux_size, unsigned size=DEFAULT_SIZE, bool isElastic=false)
virtual BitConfig getBitConfig(const MRRG &mrrg, const OpGraph &og, const Mapping &map, const ConfigCell &ccell, const MRRGNodesFromOpNode &mrrg_nodes_from_op_node, const MRRGNodesFromValNode &mrrg_nodes_from_val_node) const override
ElasticConfigCell(std::string name, int iteration_interval=1, Location loc={0, 0})
ElasticFuncUnit(std::string name, Location loc, std::vector< OpGraphOpCode > supported_modes_, unsigned size, int II, int latency, bool predExist, bool isElastic, int contexts=1)
virtual std::string GenericName() override
virtual BitConfig getBitConfig(const MRRG &mrrg, const OpGraph &og, const Mapping &map, const ConfigCell &ccell, const MRRGNodesFromOpNode &mrrg_nodes_from_op_node, const MRRGNodesFromValNode &mrrg_nodes_from_val_node) const override
virtual std::string GenericName() override
virtual nlohmann::json CoreIRGenFunctionality() override
MRRG * createMRRG(unsigned II) override
virtual BitConfig getBitConfig(const MRRG &mrrg, const OpGraph &og, const Mapping &map, const ConfigCell &ccell, const MRRGNodesFromOpNode &mrrg_nodes_from_op_node, const MRRGNodesFromValNode &mrrg_nodes_from_val_node) const override
virtual std::string GenericName() override
ElasticMerge(std::string name, Location, int size=DEFAULT_SIZE, int fanin_=DEFAULT_FANIN_FANOUT)
virtual std::string GenericName() override
ElasticVLUWrapper(std::string name, Location, int size=DEFAULT_SIZE, int input_count_=1)
virtual ~ElasticBufferFifo()
ElasticMemoryUnit(std::string name, Location, unsigned size=DEFAULT_SIZE, unsigned addr_size=DEFAULT_SIZE)