diff --git a/src/sysc/core_complex.h b/src/sysc/core_complex.h index caecfcf..74b48eb 100644 --- a/src/sysc/core_complex.h +++ b/src/sysc/core_complex.h @@ -112,6 +112,8 @@ class core_complex : public sc_core::sc_module, public scc::traceable, public co cci::cci_param reset_address{"reset_address", 0ULL}; + cci::cci_param finish_condition{"finish_condition", static_cast(iss::finish_cond_e::NONE)}; + cci::cci_param core_type{"core_type", "rv32imac_m"}; cci::cci_param backend{"backend", "interp"}; @@ -270,7 +272,7 @@ class core_complex : public sc_core::sc_module, public scc::traceable, public co core->setup_mt(); quantum_keeper.check_and_sync(sc_core::SC_ZERO_TIME); quantum_keeper.run_thread([this]() { - vm->start(std::numeric_limits::max(), dump_ir); + vm->start(std::numeric_limits::max(), dump_ir, static_cast(finish_condition.get_value())); return quantum_keeper.get_local_absolute_time(); }); } @@ -295,7 +297,7 @@ class core_complex : public sc_core::sc_module, public scc::traceable, public co f(); } template typename std::enable_if::value>::type run_iss() { - vm->start(std::numeric_limits::max(), dump_ir); + vm->start(std::numeric_limits::max(), dump_ir, static_cast(finish_condition.get_value())); } /////////////////////////////////////////////////////////////////////////////// //