mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-23 09:05:32 +00:00
Added call_on_selection() and call_on_module() API
This commit is contained in:
parent
2e358bd667
commit
8d04ca7d22
4 changed files with 37 additions and 16 deletions
|
@ -198,11 +198,11 @@ void Pass::call(RTLIL::Design *design, std::vector<std::string> args)
|
|||
design->check();
|
||||
}
|
||||
|
||||
void Pass::call_newsel(RTLIL::Design *design, std::string command)
|
||||
void Pass::call_on_selection(RTLIL::Design *design, const RTLIL::Selection &selection, std::string command)
|
||||
{
|
||||
std::string backup_selected_active_module = design->selected_active_module;
|
||||
design->selected_active_module.clear();
|
||||
design->selection_stack.push_back(RTLIL::Selection());
|
||||
design->selection_stack.push_back(selection);
|
||||
|
||||
Pass::call(design, command);
|
||||
|
||||
|
@ -210,11 +210,37 @@ void Pass::call_newsel(RTLIL::Design *design, std::string command)
|
|||
design->selected_active_module = backup_selected_active_module;
|
||||
}
|
||||
|
||||
void Pass::call_newsel(RTLIL::Design *design, std::vector<std::string> args)
|
||||
void Pass::call_on_selection(RTLIL::Design *design, const RTLIL::Selection &selection, std::vector<std::string> args)
|
||||
{
|
||||
std::string backup_selected_active_module = design->selected_active_module;
|
||||
design->selected_active_module.clear();
|
||||
design->selection_stack.push_back(RTLIL::Selection());
|
||||
design->selection_stack.push_back(selection);
|
||||
|
||||
Pass::call(design, args);
|
||||
|
||||
design->selection_stack.pop_back();
|
||||
design->selected_active_module = backup_selected_active_module;
|
||||
}
|
||||
|
||||
void Pass::call_on_module(RTLIL::Design *design, RTLIL::Module *module, std::string command)
|
||||
{
|
||||
std::string backup_selected_active_module = design->selected_active_module;
|
||||
design->selected_active_module = module->name;
|
||||
design->selection_stack.push_back(RTLIL::Selection(false));
|
||||
design->selection_stack.back().select(module);
|
||||
|
||||
Pass::call(design, command);
|
||||
|
||||
design->selection_stack.pop_back();
|
||||
design->selected_active_module = backup_selected_active_module;
|
||||
}
|
||||
|
||||
void Pass::call_on_module(RTLIL::Design *design, RTLIL::Module *module, std::vector<std::string> args)
|
||||
{
|
||||
std::string backup_selected_active_module = design->selected_active_module;
|
||||
design->selected_active_module = module->name;
|
||||
design->selection_stack.push_back(RTLIL::Selection(false));
|
||||
design->selection_stack.back().select(module);
|
||||
|
||||
Pass::call(design, args);
|
||||
|
||||
|
|
|
@ -60,8 +60,11 @@ struct Pass
|
|||
static void call(RTLIL::Design *design, std::string command);
|
||||
static void call(RTLIL::Design *design, std::vector<std::string> args);
|
||||
|
||||
static void call_newsel(RTLIL::Design *design, std::string command);
|
||||
static void call_newsel(RTLIL::Design *design, std::vector<std::string> args);
|
||||
static void call_on_selection(RTLIL::Design *design, const RTLIL::Selection &selection, std::string command);
|
||||
static void call_on_selection(RTLIL::Design *design, const RTLIL::Selection &selection, std::vector<std::string> args);
|
||||
|
||||
static void call_on_module(RTLIL::Design *design, RTLIL::Module *module, std::string command);
|
||||
static void call_on_module(RTLIL::Design *design, RTLIL::Module *module, std::vector<std::string> args);
|
||||
|
||||
static void init_register();
|
||||
static void done_register();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue