PandA-2024.02
Functions
structural_manager.cpp File Reference

Implementation of the class that manages the creation of the graph associated with the circuit. More...

#include "structural_manager.hpp"
#include "Parameter.hpp"
#include "cg_node.hpp"
#include "custom_map.hpp"
#include "custom_set.hpp"
#include "dbgPrintHelper.hpp"
#include "exceptions.hpp"
#include "graph.hpp"
#include "graph_info.hpp"
#include "library_manager.hpp"
#include "refcount.hpp"
#include "string_manipulation.hpp"
#include "technology_manager.hpp"
#include "technology_node.hpp"
#include "typed_node_info.hpp"
#include "xml_element.hpp"
#include "xml_node.hpp"
#include <iosfwd>
#include <list>
#include <memory>
#include <ostream>
#include <utility>
#include <vector>
#include <boost/algorithm/string/predicate.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/filtered_graph.hpp>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/graphviz.hpp>
#include <boost/iterator/iterator_facade.hpp>
#include <boost/smart_ptr/shared_ptr.hpp>
#include "config_HAVE_TECHNOLOGY_BUILT.hpp"
Include dependency graph for structural_manager.cpp:

Go to the source code of this file.

Functions

template<class Graph >
void circuit_add_edge (typename boost::graph_traits< Graph >::vertex_descriptor A, typename boost::graph_traits< Graph >::vertex_descriptor B, int selector, Graph &g, const structural_objectRef from1, structural_objectRef to1, bool is_critical=false)
 this template function adds an edge to the bulk graph and possibly a label to the edge. More...
 
static void add_directed_edge_single (graphs_collection *bg, const std::map< structural_objectRef, boost::graph_traits< graphs_collection >::vertex_descriptor > &module_vertex_rel, const structural_objectRef &p1, const structural_objectRef &p2, boost::graph_traits< graphs_collection >::vertex_descriptor en, boost::graph_traits< graphs_collection >::vertex_descriptor ex, bool is_critical=false)
 Add a directed edge between the nodes associated with p1 and p2. More...
 
static void add_directed_edge (graphs_collection *bg, const std::map< structural_objectRef, boost::graph_traits< graphs_collection >::vertex_descriptor > &module_vertex_rel, const structural_objectRef &p1, const structural_objectRef &p2, boost::graph_traits< graphs_collection >::vertex_descriptor en, boost::graph_traits< graphs_collection >::vertex_descriptor ex, bool is_critical=false)
 Add a directed edge between the nodes associated with p1 and p2. More...
 
void remove_port_connection (const structural_objectRef &obj)
 

Detailed Description

Implementation of the class that manages the creation of the graph associated with the circuit.

This class implements functions which build the circuit and the graph associated with the circuit

Author
Matteo Barbati mbarb.nosp@m.ati@.nosp@m.gmail.nosp@m..com
Christian Pilato pilat.nosp@m.o@el.nosp@m.et.po.nosp@m.limi.nosp@m..it
Fabrizio Ferrandi fabri.nosp@m.zio..nosp@m.ferra.nosp@m.ndi@.nosp@m.polim.nosp@m.i.it $Revision$ $Date$ Last modified by $Author$

Definition in file structural_manager.cpp.

Function Documentation

◆ add_directed_edge()

static void add_directed_edge ( graphs_collection bg,
const std::map< structural_objectRef, boost::graph_traits< graphs_collection >::vertex_descriptor > &  module_vertex_rel,
const structural_objectRef p1,
const structural_objectRef p2,
boost::graph_traits< graphs_collection >::vertex_descriptor  en,
boost::graph_traits< graphs_collection >::vertex_descriptor  ex,
bool  is_critical = false 
)
static

Add a directed edge between the nodes associated with p1 and p2.

Parameters
module_vertex_relis the relation between modules and vertexes.
p1is the first port.
p2is the second object. It could be a port, a signal or a module.
enis the entry vertex.
exis the exit vertex.

gen port connection

Definition at line 1337 of file structural_manager.cpp.

References action_o_K, add_directed_edge_single(), bus_connection_o_K, channel_o_K, CHANNEL_SELECTOR, circuit_add_edge(), component_o_K, constant_o_K, data_o_K, DATA_SELECTOR, event_o_K, k, port_o_K, port_vector_o_K, signal_o_K, signal_vector_o_K, THROW_ASSERT, THROW_ERROR, and THROW_WARNING.

Referenced by structural_manager::build_graph().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_directed_edge_single()

static void add_directed_edge_single ( graphs_collection bg,
const std::map< structural_objectRef, boost::graph_traits< graphs_collection >::vertex_descriptor > &  module_vertex_rel,
const structural_objectRef p1,
const structural_objectRef p2,
boost::graph_traits< graphs_collection >::vertex_descriptor  en,
boost::graph_traits< graphs_collection >::vertex_descriptor  ex,
bool  is_critical = false 
)
static

Add a directed edge between the nodes associated with p1 and p2.

Parameters
module_vertex_relis the relation between modules and vertexes.
p1is the first port.
p2is the second port.
enis the entry vertex.
exis the exit vertex.

p2 is a top port

p1 is a top port

hyper-edge and not significant connectivity

Definition at line 1137 of file structural_manager.cpp.

References circuit_add_edge(), CLOCK_SELECTOR, DATA_SELECTOR, port_o_K, port_vector_o_K, THROW_ASSERT, and THROW_ERROR.

Referenced by add_directed_edge().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ circuit_add_edge()

template<class Graph >
void circuit_add_edge ( typename boost::graph_traits< Graph >::vertex_descriptor  A,
typename boost::graph_traits< Graph >::vertex_descriptor  B,
int  selector,
Graph g,
const structural_objectRef  from1,
structural_objectRef  to1,
bool  is_critical = false 
)

this template function adds an edge to the bulk graph and possibly a label to the edge.

Parallel edges are allowed.

Definition at line 1105 of file structural_manager.cpp.

References EDGE_ADD_FROM_PORT, EDGE_ADD_TO_PORT, EDGE_SET_CRITICAL, GET_FROM_PORT, GET_TO_PORT, and lenet_tvm::target.

Referenced by add_directed_edge(), and add_directed_edge_single().

Here is the caller graph for this function:

◆ remove_port_connection()

void remove_port_connection ( const structural_objectRef obj)

Definition at line 1766 of file structural_manager.cpp.

References structural_manager::remove_connection().

Referenced by structural_manager::remove_module().

Here is the call graph for this function:
Here is the caller graph for this function:

Generated on Mon Feb 12 2024 13:03:14 for PandA-2024.02 by doxygen 1.8.13