38 #include <shared_mutex>
39 #include <unordered_map>
40 #include <unordered_set>
196 std::unordered_map<u32, std::unordered_set<u32>>
suc_cache;
203 const std::set<std::set<u32>>& get_comparison_data()
const;
205 std::unordered_set<u32> get_signals_of_group(
u32 group_id,
const std::unordered_map<
u32, std::unordered_set<u32>>& signals)
const;
This file contains the struct that holds all information on the netlist abstraction used for dataflow...
Grouping used during dataflow analysis.
std::unordered_map< u32, std::vector< u32 > > group_control_fingerprint_map
std::unordered_map< u32, std::unordered_set< u32 > > gates_of_group
std::set< std::set< u32 > > comparison_cache
std::unordered_map< u32, u32 > parent_group_of_gate
std::unordered_map< u32, std::unordered_set< u32 > > suc_known_group_cache
std::unordered_set< u32 > get_known_predecessor_groups_of_group(u32 group_id) const
Get the known predecessor groups of a group.
std::unordered_map< u32, std::unordered_set< u32 > > pred_cache
const NetlistAbstraction & netlist_abstr
bool operator!=(const Grouping &other) const
Check two groupings for inequality.
std::unordered_set< u32 > get_predecessor_groups_of_group(u32 group_id) const
Get the predecessor groups of a group.
std::unordered_set< u32 > get_known_successor_groups_of_group(u32 group_id) const
Get the known successor groups of a group.
std::unordered_map< u32, std::unordered_set< u32 > > pred_known_group_cache
Grouping(const NetlistAbstraction &na)
Construct a new (empty) grouping from a netlist abstraction.
bool are_groups_allowed_to_merge(u32 group_1_id, u32 group_2_id, bool enforce_type_consistency) const
Check if two groups are allowed to be merged.
bool operator==(const Grouping &other) const
Check two groupings for equality.
std::unordered_map< u32, std::unordered_set< u32 > > suc_cache
std::unordered_set< u32 > get_successor_groups_of_group(u32 group_id) const
Get the successor groups of a group.
std::map< PinType, std::unordered_set< u32 > > get_control_signals_of_group(u32 group_id) const
Get the control signals of a group as a map from the control pin type to the connected net IDs.
std::set< u32 > get_register_stage_intersect_of_group(u32 group_id) const
Get the intersection of the register stages of all gates of the group.
std::map< u32, bool > operations_on_group_allowed
bool is_group_allowed_to_split(u32 group_id) const
Check if the group is allowed to be split.
The abstraction of the netlist that only contains gates of a specified type, e.g.,...