42 #ifndef TECHNOLOGY_MANAGER_HPP 43 #define TECHNOLOGY_MANAGER_HPP 46 #include "config_HAVE_CIRCUIT_BUILT.hpp" 58 #define DESIGN std::string("design") 59 #define WORK_LIBRARY std::string("work") 61 #define OPENMP_LIBRARY std::string("OpenMP_library") 63 #define PROXY_LIBRARY std::string("proxy_library") 65 #define INTERFACE_LIBRARY std::string("interface_library") 67 #define LIBRARY_STD std::string("STD") 69 #define LIBRARY_STD_FU std::string("STD_FU") 71 #define CG_LIBRARY std::string("CG") 73 #define LIBRARY_PC std::string("STD_PC") 75 #define LIBRARY_STD_DATAFLOW std::string("STD_DATAFLOW") 114 const static unsigned int XML;
172 #if HAVE_CIRCUIT_BUILT 177 void add_resource(
const std::string& Library,
const std::string& fu_name,
185 const std::string& operation_name);
210 bool can_implement(
const std::string& fu_name,
const std::string& op_name,
const std::string& Library)
const;
233 std::string
get_library(
const std::string& Name)
const;
264 const std::string& Library)
const;
274 double get_execution_time(
const std::string& fu_name,
const std::string& op_name,
const std::string& Library)
const;
282 double get_area(
const std::string& fu_name,
const std::string& Library)
const;
289 bool IsBuiltin(
const std::string& component_name)
const;
317 void print(std::ostream& os)
const;
friend std::ostream & operator<<(std::ostream &os, const technology_managerRef &s)
Friend definition of the << operator.
double CGetSetupHoldTime() const
Return the setup hold time.
CONSTREF_FORWARD_DECL(Parameter)
RefCount type definition of the Parameter class structure.
technology_nodeRef get_fu(const std::string &fu_name, const std::string &Library) const
Return the reference to a component given its name.
void xwrite(xml_element *rootnode, const CustomOrderedSet< std::string > &libraries=CustomOrderedSet< std::string >())
add library elements operation node to an xml tree.
void print(std::ostream &os) const
Function that prints the class technology_manager.
const ParameterConstRef Param
class containing all the parameters
const std::vector< std::string > & get_library_list() const
Return the list of the libraries.
This class manages the circuit structures.
~technology_manager()
Destructor.
CustomUnorderedMap< std::string, library_managerRef > library_map_type
definition of the type for identifying the libraries
This class specifies the characteristic of a particular functional unit.
void xload(const xml_element *node)
Load a technology manager from an xml file.
redefinition of map to manage ordered/unordered structures
technology_nodeRef add_operation(const std::string &Library, const std::string &fu_name, const std::string &operation_name)
Add an operation to the specified functional unit.
technology_manager(const ParameterConstRef Param)
Constructor.
static const unsigned int XML
CustomSet< std::string > builtins
The builtin components.
double get_area(const std::string &fu_name, const std::string &Library) const
Return the area for a given component.
void add(const technology_nodeRef curr, const std::string &Library)
Add the given functional_unit to the specified library.
absl::flat_hash_map< T, U, Hash, Eq, Alloc > CustomUnorderedMap
This class manages the technology library structures.
int debug_level
The debug level for this class.
ControlStep get_initiation_time(const std::string &fu_name, const std::string &op_name, const std::string &Library) const
Return the initiation time for a given operation type and a given component.
redefinition of set to manage ordered/unordered structures
This class macros for the definition of strong typedef.
bool IsBuiltin(const std::string &component_name) const
Return true if a component is builtin.
This wrapper collects all the methods used by the High-level synthesis classes to retrieve informatio...
refcount< structural_manager > structural_managerRef
RefCount type definition of the structural_manager class structure.
UINT_STRONG_TYPEDEF_FORWARD_DECL(ControlStep)
bool is_library_manager(const std::string &Name) const
Check if a library is contained into the data structure.
Template definition of refcount.
library_map_type library_map
map between library name and the corresponding data structure
const functional_unit * CGetSetupHoldFU() const
Return the functional unit used to compute the setup hold time.
Very simple pretty printer functor.
std::vector< std::string > libraries
(reverse) ordered list of libraries; it gives a priority ordering for searching the nodes ...
This class manages the specific library structure.
REF_FORWARD_DECL(library_manager)
RefCount type definition of the library_manager class structure for representing libraries.
CustomUnorderedMap< std::string, technology_nodeRef > function_fu
Map function names to hardware module used for implementation.
void erase_library(const std::string &Name)
Release the given library.
TimeStamp CGetSetupHoldTimeStamp() const
Return the characterization timestamp of the setup hold time.
technology_nodeRef GetFunctionFU(const std::string &fname) const
Return FU used to implement given function if any.
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...
The type used for timestamp.
bool can_implement(const std::string &fu_name, const std::string &op_name, const std::string &Library) const
Check if an operation can be implemented by a given component in a given library. ...
Abstract pure class for the technology structure.
double get_execution_time(const std::string &fu_name, const std::string &op_name, const std::string &Library) const
Return the execution time for a given operation type and a given component.
library_managerRef get_library_manager(const std::string &Name) const
Return the library data structure corresponding to the given library id.
std::string get_library(const std::string &Name) const
Return the higher priority library where the given component is stored.
friend std::ostream & operator<<(std::ostream &os, const technology_manager &s)
Friend definition of the << operator.