aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Cheng <kevin.cheng@arm.com>2021-10-20 19:51:41 +0000
committerKevin Cheng <kevin.cheng@arm.com>2021-10-26 19:09:45 +0000
commit1009674513d09af1a699a8bf0f646c7130d7a0ac (patch)
tree87d5aa66371d6608be2021826611ad4c0dd85523
parent8c06a6547a132f0a22fa34d467026f12fabb4e1f (diff)
downloadreference_model-1009674513d09af1a699a8bf0f646c7130d7a0ac.tar.gz
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 <kevin.cheng@arm.com> Change-Id: I554cf0fdead22e7e5f91d2e98831459286c40a2d
-rw-r--r--reference_model/src/func_config.cc9
-rw-r--r--reference_model/src/func_config.h2
-rw-r--r--reference_model/src/main.cpp26
m---------thirdparty/serialization_lib0
4 files changed, 33 insertions, 4 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 <Debug Mask - set component debug mask\n");
func_model_print_debug_masks(out);
fprintf(out, "\t-F <flatconfig> - parse <flatconfig> 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 <fstream>
#include <nlohmann/json.hpp>
+#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
-Subproject 6b078cac3ff2b33fd6d01c5e849424fbd9b2ac5
+Subproject e6563f52231c603b409638b22530d016757542c