diff options
author | Eddie Hung <eddie@fpgeh.com> | 2020-01-11 17:26:25 -0800 |
---|---|---|
committer | Eddie Hung <eddie@fpgeh.com> | 2020-01-11 17:26:25 -0800 |
commit | 79db12f238b2f8c5d547ea731a056f98d89bc4b9 (patch) | |
tree | 777a7b6e595ea9bdc97094380abcbb80b4cacf10 /kernel | |
parent | 11128dccb53983e7bb784cf2514edcaa6eb822fb (diff) | |
parent | 04a2eb82045a658de22cea610a3ac8c5dee9333c (diff) | |
download | yosys-79db12f238b2f8c5d547ea731a056f98d89bc4b9.tar.gz yosys-79db12f238b2f8c5d547ea731a056f98d89bc4b9.tar.bz2 yosys-79db12f238b2f8c5d547ea731a056f98d89bc4b9.zip |
Merge remote-tracking branch 'origin/master' into eddie/abc9_refactor
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/register.cc | 15 | ||||
-rw-r--r-- | kernel/register.h | 3 | ||||
-rw-r--r-- | kernel/yosys.cc | 3 |
3 files changed, 20 insertions, 1 deletions
diff --git a/kernel/register.cc b/kernel/register.cc index 37f2e5e1b..5d0fb3c8c 100644 --- a/kernel/register.cc +++ b/kernel/register.cc @@ -114,20 +114,35 @@ void Pass::run_register() void Pass::init_register() { + vector<Pass*> added_passes; while (first_queued_pass) { + added_passes.push_back(first_queued_pass); first_queued_pass->run_register(); first_queued_pass = first_queued_pass->next_queued_pass; } + for (auto added_pass : added_passes) + added_pass->on_register(); } void Pass::done_register() { + for (auto &it : pass_register) + it.second->on_shutdown(); + frontend_register.clear(); pass_register.clear(); backend_register.clear(); log_assert(first_queued_pass == NULL); } +void Pass::on_register() +{ +} + +void Pass::on_shutdown() +{ +} + Pass::~Pass() { } diff --git a/kernel/register.h b/kernel/register.h index 85d552f0d..821faff3e 100644 --- a/kernel/register.h +++ b/kernel/register.h @@ -62,6 +62,9 @@ struct Pass virtual void run_register(); static void init_register(); static void done_register(); + + virtual void on_register(); + virtual void on_shutdown(); }; struct ScriptPass : Pass diff --git a/kernel/yosys.cc b/kernel/yosys.cc index 5018a4888..8190d8902 100644 --- a/kernel/yosys.cc +++ b/kernel/yosys.cc @@ -544,6 +544,8 @@ void yosys_shutdown() already_shutdown = true; log_pop(); + Pass::done_register(); + delete yosys_design; yosys_design = NULL; @@ -553,7 +555,6 @@ void yosys_shutdown() log_errfile = NULL; log_files.clear(); - Pass::done_register(); yosys_celltypes.clear(); #ifdef YOSYS_ENABLE_TCL |