diff --git a/src/sysc/core_complex.cpp b/src/sysc/core_complex.cpp index 7327e79..37205d3 100644 --- a/src/sysc/core_complex.cpp +++ b/src/sysc/core_complex.cpp @@ -45,11 +45,10 @@ #include #include #include -#include #include -#include #include #include +#include // clang-format on @@ -269,7 +268,7 @@ template void core_complex::before_end_of_elab sc_assert(cpu->vm != nullptr); auto disass = GET_PROP_VALUE(enable_disass); if(disass && trc->m_db) - SCCINFO(SCMOD)<<"Disasssembly will only be in transaction trace database!"; + SCCINFO(SCMOD) << "Disasssembly will only be in transaction trace database!"; cpu->vm->setDisassEnabled(disass || trc->m_db != nullptr); if(GET_PROP_VALUE(plugins).length()) { auto p = util::split(GET_PROP_VALUE(plugins), ';'); @@ -308,17 +307,20 @@ template void core_complex::before_end_of_elab template void core_complex::start_of_simulation() { // quantum_keeper.reset(); if(GET_PROP_VALUE(elf_file).size() > 0) { - istringstream is(GET_PROP_VALUE(elf_file)); - string s; - while(getline(is, s, ',')) { - std::pair start_addr = cpu->load_file(s); + auto file_names = util::split(GET_PROP_VALUE(elf_file), ','); + for(auto& s : file_names) { + std::pair load_result = cpu->load_file(s); + if(!std::get<1>(load_result)) { + SCCWARN(SCMOD) << "Could not load FW file " << s; + } else { #ifndef CWR_SYSTEMC - if(reset_address.is_default_value() && start_addr.second == true) - reset_address.set_value(start_addr.first); + if(reset_address.is_default_value()) + reset_address.set_value(load_result.first); #else - if(start_addr.second == true) - reset_address = start_addr.first; + if(start_addr.second == true) + reset_address = start_addr.first; #endif + } } } if(trc->m_db != nullptr && trc->stream_handle == nullptr) {