HAL  v4.5.0-83-g30c8f0afc
The Hardware Analyzer - a comprehensive reverse engineering and manipulation framework for gate-level netlists.
plugin_module_identification.h
Go to the documentation of this file.
1 #pragma once
2 
7 
8 #include <memory.h>
9 
10 namespace hal
11 {
12  class Gate;
13  class Module;
14 
15  namespace module_identification
16  {
17  class BaseCandidate;
18  class StructuralCandidate;
19  } // namespace module_identification
20 
29  {
34  u32 m_max_thread_count = 1;
35 
40  u32 m_max_control_signals = 3;
41 
46  bool m_do_multithreading = false;
47 
52  bool m_button_clicked = false;
53 
58  u32 m_check_selector = 0;
59 
65 
69  std::vector<module_identification::CandidateType> m_types_to_check = module_identification::all_checkable_candidate_types;
70 
71  public:
76 
82  std::vector<PluginParameter> get_parameter() const override;
83 
89  void set_parameter(const std::vector<PluginParameter>& params) override;
90 
100  void execute_function(std::string tag, Netlist* nl, const std::vector<u32>& mods, const std::vector<u32>& gats, const std::vector<u32>& nets) override;
101 
107  virtual void register_progress_indicator(std::function<void(int, const std::string&)> pif) override;
108 
112  static std::function<void(int, const std::string&)> s_progress_indicator_function;
113 
123  std::vector<ContextMenuContribution> get_context_contribution(const Netlist* nl, const std::vector<u32>& mods, const std::vector<u32>& gats, const std::vector<u32>& nets);
124  };
125 
133  {
134  public:
139 
144 
150  std::string get_name() const override;
151 
157  std::string get_description() const override;
158 
164  std::string get_version() const override;
165 
171  std::set<std::string> get_dependencies() const override;
172  };
173 } // namespace hal
#define PLUGIN_API
Definition: arch_linux.h:32
This file contains the enumeration and constants for the candidate types used in the module identific...
GUI extension interface for the module identification plugin.
virtual void register_progress_indicator(std::function< void(int, const std::string &)> pif) override
Register function to indicate work progress when busy.
std::vector< ContextMenuContribution > get_context_contribution(const Netlist *nl, const std::vector< u32 > &mods, const std::vector< u32 > &gats, const std::vector< u32 > &nets)
Get context menu contributions based on the current netlist and selection.
void set_parameter(const std::vector< PluginParameter > &params) override
Set configurable parameters to values.
GuiExtensionModuleIdentification()=default
Default constructor for GuiExtensionModuleIdentification.
static std::function< void(int, const std::string &)> s_progress_indicator_function
Static progress indicator function.
void execute_function(std::string tag, Netlist *nl, const std::vector< u32 > &mods, const std::vector< u32 > &gats, const std::vector< u32 > &nets) override
Execute a function with a specific tag on a netlist.
std::vector< PluginParameter > get_parameter() const override
Get list of configurable parameters.
Plugin for identifying functional modules within a netlist.
~ModuleIdentificationPlugin()=default
Default destructor for ModuleIdentificationPlugin.
uint32_t u32
Definition: defines.h:41
This file contains the enum class for multithreading strategies in the module identification process.
const std::vector< CandidateType > all_checkable_candidate_types
A list of all candidate types that are selectable to be checked.
MultithreadingPriority
Specifies the strategy for multithreading in the module identification process.
@ memory_priority
Prioritize memory efficiency in multithreading.
Definition: defines.h:45