From 1009674513d09af1a699a8bf0f646c7130d7a0ac Mon Sep 17 00:00:00 2001 From: Kevin Cheng Date: Wed, 20 Oct 2021 19:51:41 +0000 Subject: Add version to reference model - update serialization_lib hash - check model version against serializer version - add "-v" to command line option to print out model version Signed-off-by: Kevin Cheng Change-Id: I554cf0fdead22e7e5f91d2e98831459286c40a2d --- reference_model/src/func_config.cc | 9 ++++++++- reference_model/src/func_config.h | 2 +- reference_model/src/main.cpp | 26 ++++++++++++++++++++++++-- thirdparty/serialization_lib | 2 +- 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/reference_model/src/func_config.cc b/reference_model/src/func_config.cc index bd1ce32..6880829 100644 --- a/reference_model/src/func_config.cc +++ b/reference_model/src/func_config.cc @@ -428,6 +428,7 @@ int func_model_print_help(FILE* out) fprintf(out, "\t-d - parse as file of config options\n"); + fprintf(out, "\t-v - Print refererence model version\n"); fprintf(out, "\t-h - show this help message and exit\n"); fprintf( out, @@ -459,7 +460,8 @@ static const char* get_arg_text(int& index, const int argc, const char** argv) } // Read the command line arguments -int func_model_parse_cmd_line(func_config_t* func_config, func_debug_t* func_debug, const int argc, const char** argv) +int func_model_parse_cmd_line( + func_config_t* func_config, func_debug_t* func_debug, const int argc, const char** argv, const char* version) { int i; programname = argv[0]; @@ -542,6 +544,11 @@ int func_model_parse_cmd_line(func_config_t* func_config, func_debug_t* func_deb func_debug_set_file(func_debug, get_arg_text(i, argc, argv)); break; } + case 'v': + { + fprintf(stdout, "Model Version %s\n", version); + return 1; + } default: func_model_print_help(stderr); ARG_ERROR("Unrecognized argument at position %d: %s", i, argv[i]); diff --git a/reference_model/src/func_config.h b/reference_model/src/func_config.h index f941300..33cc1b1 100644 --- a/reference_model/src/func_config.h +++ b/reference_model/src/func_config.h @@ -45,7 +45,7 @@ int func_model_init_config(); int func_model_set_default_config(func_config_t*); int func_model_config_set_option(func_config_t*, const char* name, const char* value); int func_model_print_config(func_config_t*, FILE* out); -int func_model_parse_cmd_line(func_config_t*, func_debug_t* func_debug, const int argc, const char** argv); +int func_model_parse_cmd_line(func_config_t*, func_debug_t* func_debug, const int argc, const char** argv, const char* version); int func_model_parse_flat_config_file(func_config_t*, const char* filename); int func_model_config_cleanup(); int func_model_config_get_str_option_by_name(func_config_t*, const char* name, char* value, const uint32_t len); diff --git a/reference_model/src/main.cpp b/reference_model/src/main.cpp index 0bf0697..71d8885 100644 --- a/reference_model/src/main.cpp +++ b/reference_model/src/main.cpp @@ -25,6 +25,11 @@ #include #include +#define MODEL_VERSION_MAJOR 0 +#define MODEL_VERSION_MINOR 23 +#define MODEL_VERSION_PATCH 0 +#define MODEL_VERSION_DRAFT true + using namespace TosaReference; using namespace tosa; using json = nlohmann::json; @@ -40,17 +45,34 @@ int loadGraph(TosaSerializationHandler& tsh, json test_desc); int main(int argc, const char** argv) { + TosaVersion model_version(MODEL_VERSION_MAJOR, MODEL_VERSION_MINOR, MODEL_VERSION_PATCH, MODEL_VERSION_DRAFT); + // Initialize configuration and debug subsystems func_model_init_config(); func_model_set_default_config(&g_func_config); func_init_debug(&g_func_debug, 0); - TosaSerializationHandler tsh; - if (func_model_parse_cmd_line(&g_func_config, &g_func_debug, argc, argv)) + if (func_model_parse_cmd_line(&g_func_config, &g_func_debug, argc, argv, model_version.to_string().c_str())) { return 1; } + TosaSerializationHandler tsh; + TosaVersion::compat_t is_compat = model_version.is_compatible(tsh.GetVersion()); + switch (is_compat) + { + case TosaVersion::compat_t::COMPLETELY_COMPATIBLE: + break; + case TosaVersion::compat_t::PARTIALLY_COMPATIBLE: + printf("WARNING: Reference model version %s is partially compatible with serializer version %s\n", + model_version.to_string().c_str(), tsh.GetVersion().to_string().c_str()); + break; + case TosaVersion::compat_t::NOT_COMPATIBLE: + printf("ERROR: Reference model version %s is not compatible with serializer version %s\n", + model_version.to_string().c_str(), tsh.GetVersion().to_string().c_str()); + return TOSA_VERSION_MISMATCH; + } + json test_desc; // Initialize test descriptor diff --git a/thirdparty/serialization_lib b/thirdparty/serialization_lib index 6b078ca..e6563f5 160000 --- a/thirdparty/serialization_lib +++ b/thirdparty/serialization_lib @@ -1 +1 @@ -Subproject commit 6b078cac3ff2b33fd6d01c5e849424fbd9b2ac58 +Subproject commit e6563f52231c603b409638b22530d016757542c8 -- cgit v1.2.1