diff options
author | Clifford Wolf <clifford@clifford.at> | 2019-04-20 18:13:37 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2019-04-20 18:13:37 +0200 |
commit | fc23af170768926e645b6c94c54b4c2e6e8d0808 (patch) | |
tree | 76428161a9ca1b3a46bb97045d6fcdfc9c7b2a58 /passes/opt/pmux2shiftx.cc | |
parent | 97e9caa4fa1f874b693a9d948f48418f22babb6c (diff) | |
download | yosys-fc23af170768926e645b6c94c54b4c2e6e8d0808.tar.gz yosys-fc23af170768926e645b6c94c54b4c2e6e8d0808.tar.bz2 yosys-fc23af170768926e645b6c94c54b4c2e6e8d0808.zip |
Auto-initialize OnehotDatabase on-demand in pmux2shiftx.cc
Signed-off-by: Clifford Wolf <clifford@clifford.at>
Diffstat (limited to 'passes/opt/pmux2shiftx.cc')
-rw-r--r-- | passes/opt/pmux2shiftx.cc | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/passes/opt/pmux2shiftx.cc b/passes/opt/pmux2shiftx.cc index 5fd49a571..5f897b131 100644 --- a/passes/opt/pmux2shiftx.cc +++ b/passes/opt/pmux2shiftx.cc @@ -28,6 +28,7 @@ struct OnehotDatabase Module *module; const SigMap &sigmap; bool verbose = false; + bool initialized = false; pool<SigBit> init_ones; dict<SigSpec, pool<SigSpec>> sig_sources_db; @@ -40,6 +41,9 @@ struct OnehotDatabase void initialize() { + log_assert(!initialized); + initialized = true; + for (auto wire : module->wires()) { auto it = wire->attributes.find("\\init"); @@ -176,6 +180,9 @@ struct OnehotDatabase if (verbose) log("** ONEHOT QUERY START (%s)\n", log_signal(sig)); + if (!initialized) + initialize(); + query_worker(sig, retval, cache, 3); if (verbose) @@ -273,9 +280,6 @@ struct Pmux2ShiftxPass : public Pass { OnehotDatabase onehot_db(module, sigmap); onehot_db.verbose = verbose_onehot; - if (optimize_onehot) - onehot_db.initialize(); - dict<SigBit, pair<SigSpec, Const>> eqdb; for (auto cell : module->cells()) @@ -743,7 +747,6 @@ struct OnehotPass : public Pass { SigMap sigmap(module); OnehotDatabase onehot_db(module, sigmap); onehot_db.verbose = verbose_onehot; - onehot_db.initialize(); for (auto cell : module->selected_cells()) { |