diff --git a/compiler2/makefile.c b/compiler2/makefile.c
index 58ff4154d628624b9622c32405698308e8ae1b28..1145b463ce7264494ec11cf061d5ca069f073b8c 100644
--- a/compiler2/makefile.c
+++ b/compiler2/makefile.c
@@ -251,6 +251,8 @@ struct makefile_struct {
   const char *cxxcompiler;
   const char *optlevel;
   const char *optflags;
+  boolean semanticcheckonly;
+  boolean disableattibutevalidation;
   boolean disableber;
   boolean disableraw;
   boolean disabletext;
@@ -2252,7 +2254,7 @@ static void print_makefile(struct makefile_struct *makefile)
           "AR = ar\n"
           "ARFLAGS = \n\n"
           "# Flags for the TTCN-3 and ASN.1 compiler:\n"
-          "COMPILER_FLAGS =%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n\n"
+          "COMPILER_FLAGS =%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n\n"
           "# Execution mode: (either ttcn3 or ttcn3-parallel)\n"
           "TTCN3_LIB = ttcn3%s%s%s\n\n"
 #ifdef LICENSE
@@ -2275,6 +2277,8 @@ static void print_makefile(struct makefile_struct *makefile)
           (makefile->code_splitting_mode ? makefile->code_splitting_mode : ""),
           (makefile->quietly ? " -q" : ""),
           (makefile->disablesubtypecheck ? " -y" : ""),
+          (makefile->semanticcheckonly ? " -s" : ""),
+          (makefile->disableattibutevalidation ? " -0" : ""),
           (makefile->disableber ? " -b" : ""),
           (makefile->disableraw ? " -r" : ""),
           (makefile->disabletext ? " -x" : ""),
@@ -4673,8 +4677,9 @@ static void generate_makefile(size_t n_arguments, char *arguments[],
   boolean Lflag, boolean Zflag, boolean Hflag, struct string_list* sub_project_dirs, struct string_list* ttcn3_prep_includes,
   struct string_list* ttcn3_prep_defines, struct string_list* ttcn3_prep_undefines, struct string_list* prep_includes,
   struct string_list* prep_defines, struct string_list* prep_undefines, char *codesplittpd, boolean quietly, boolean disablesubtypecheck,
-  const char* cxxcompiler, const char* optlevel, const char* optflags, boolean disableber, boolean disableraw, boolean disabletext,
-  boolean disablexer, boolean disablejson, boolean disableoer, boolean forcexerinasn, boolean defaultasomit, boolean gccmsgformat,
+  const char* cxxcompiler, const char* optlevel, const char* optflags, boolean semanticcheckonly, boolean disableattibutevalidation,
+  boolean disableber, boolean disableraw, boolean disabletext, boolean disablexer, boolean disablejson, boolean disableoer,
+  boolean forcexerinasn, boolean defaultasomit, boolean gccmsgformat,
   boolean linenumbersonlymsg, boolean includesourceinfo, boolean addsourcelineinfo, boolean suppresswarnings,
   boolean outparamboundness, boolean omit_in_value_list, boolean warnings_for_bad_variants, boolean activate_debugger,
   boolean ignore_untagged_on_top_union, boolean disable_predef_ext_folder, boolean enable_legacy_encoding, boolean disable_userinfo,
@@ -4714,6 +4719,8 @@ static void generate_makefile(size_t n_arguments, char *arguments[],
   makefile.cxxcompiler = cxxcompiler;
   makefile.optlevel = optlevel;
   makefile.optflags = optflags;
+  makefile.semanticcheckonly = semanticcheckonly;
+  makefile.disableattibutevalidation = disableattibutevalidation;
   makefile.disableber = disableber;
   makefile.disableraw = disableraw;
   makefile.disabletext = disabletext;
@@ -5318,6 +5325,9 @@ int main(int argc, char *argv[])
   }
   free_license(&lstr);
 #endif
+  
+  boolean semantic_check_only = FALSE;
+  boolean disable_attibute_validation = FALSE;
 
   boolean free_argv = FALSE;
   if (tflag) {
@@ -5401,7 +5411,8 @@ int main(int argc, char *argv[])
       &gflag, &sflag, &cflag, &aflag, &pflag,
       &Rflag, &lflag, &mflag, &Pflag, &Lflag, rflag, Fflag, Tflag, output_file, &abs_work_dir, sub_project_dirs, program_name, prj_graph_fp,
       create_symlink_list, ttcn3_prep_includes, ttcn3_prep_defines, ttcn3_prep_undefines, prep_includes, prep_defines, prep_undefines, &csmode,
-      &quflag, &dsflag, &cxxcompiler, &optlevel, &optflags, &dbflag, &drflag, &dtflag, &dxflag, &djflag, &doerflag, &fxflag, &doflag, &gfflag, &lnflag, &isflag,
+      &quflag, &dsflag, &cxxcompiler, &optlevel, &optflags, &semantic_check_only, &disable_attibute_validation,
+      &dbflag, &drflag, &dtflag, &dxflag, &djflag, &doerflag, &fxflag, &doflag, &gfflag, &lnflag, &isflag,
       &asflag, &temp_wflag, &Yflag, &Mflag, &Eflag, &nflag, &Nflag, &diflag, &Gflag, &duflag, &iflag,
       solspeclibraries, sol8speclibraries, linuxspeclibraries, freebsdspeclibraries, win32speclibraries, &ttcn3prep,
       linkerlibraries, additionalObjects, linkerlibsearchpath, Vflag, Dflag, &Zflag, &Hflag,
@@ -5449,8 +5460,9 @@ int main(int argc, char *argv[])
       output_file, ets_name, project_name, gflag, sflag, cflag, aflag, pflag, dflag, fflag||Fflag,
       Rflag, lflag, mflag, Cflag, code_splitting_mode, tcov_file_name, profiled_file_list,
       file_list_file_name, Lflag, Zflag, Hflag, rflag ? sub_project_dirs : NULL, ttcn3_prep_includes,
-      ttcn3_prep_defines, ttcn3_prep_undefines, prep_includes, prep_defines, prep_undefines, csmode, quflag, dsflag, cxxcompiler, optlevel, optflags, dbflag,
-      drflag, dtflag, dxflag, djflag, doerflag, fxflag, doflag, gfflag, lnflag, isflag, asflag, wflag, Yflag, Mflag, Eflag, nflag, Nflag, diflag,
+      ttcn3_prep_defines, ttcn3_prep_undefines, prep_includes, prep_defines, prep_undefines, csmode, quflag, dsflag, cxxcompiler, optlevel, optflags,
+      semantic_check_only, disable_attibute_validation, dbflag, drflag, dtflag, dxflag, djflag, doerflag,
+      fxflag, doflag, gfflag, lnflag, isflag, asflag, wflag, Yflag, Mflag, Eflag, nflag, Nflag, diflag,
       Gflag, duflag, iflag, solspeclibraries, sol8speclibraries, linuxspeclibraries,
       freebsdspeclibraries, win32speclibraries, ttcn3prep, linkerlibraries, additionalObjects,
       linkerlibsearchpath, generatorCommandOutput, target_placement_list);
diff --git a/compiler2/xpather.cc b/compiler2/xpather.cc
index 17f01d24b53f865e081b5d7c065d810f0376eb79..7fa18d0ddae48c9486ebe801f9395b5a4e314ac2 100644
--- a/compiler2/xpather.cc
+++ b/compiler2/xpather.cc
@@ -1266,8 +1266,9 @@ static tpd_result process_tpd_internal(const char **p_tpd_name, char* tpdName, c
   const char* program_name, FILE* prj_graph_fp, struct string2_list* create_symlink_list, struct string_list* ttcn3_prep_includes,
   struct string_list* ttcn3_prep_defines, struct string_list* ttcn3_prep_undefines, struct string_list* prep_includes,
   struct string_list* prep_defines, struct string_list* prep_undefines, char **p_csmode, boolean *p_quflag, boolean* p_dsflag,
-  char** cxxcompiler, char** optlevel, char** optflags, boolean* p_dbflag, boolean* p_drflag, boolean* p_dtflag, boolean* p_dxflag,
-  boolean* p_djflag, boolean* p_doerflag, boolean* p_fxflag, boolean* p_doflag, boolean* p_gfflag, boolean* p_lnflag, boolean* p_isflag,
+  char** cxxcompiler, char** optlevel, char** optflags, boolean* semantic_check_only, boolean* disable_attibute_validation,
+  boolean* p_dbflag, boolean* p_drflag, boolean* p_dtflag, boolean* p_dxflag, boolean* p_djflag, boolean* p_doerflag,
+  boolean* p_fxflag, boolean* p_doflag, boolean* p_gfflag, boolean* p_lnflag, boolean* p_isflag,
   boolean* p_asflag, boolean* p_swflag, boolean* p_Yflag, boolean* p_Mflag, boolean *p_Eflag, boolean* p_nflag, boolean* p_Nflag,
   boolean* p_diflag, boolean* p_enable_legacy_encoding, boolean* p_disable_userinfo, boolean* p_realtime_features,
   struct string_list* solspeclibs, struct string_list* sol8speclibs,
@@ -1287,8 +1288,9 @@ extern "C" tpd_result process_tpd(const char **p_tpd_name, const char *actcfg,
   const char* program_name, FILE* prj_graph_fp, struct string2_list* create_symlink_list, struct string_list* ttcn3_prep_includes,
   struct string_list* ttcn3_prep_defines, struct string_list* ttcn3_prep_undefines, struct string_list* prep_includes, 
   struct string_list* prep_defines, struct string_list* prep_undefines, char **p_csmode, boolean *p_quflag, boolean* p_dsflag,
-  char** cxxcompiler, char** optlevel, char** optflags, boolean* p_dbflag, boolean* p_drflag, boolean* p_dtflag, boolean* p_dxflag, 
-  boolean* p_djflag, boolean* p_doerflag, boolean* p_fxflag, boolean* p_doflag, boolean* p_gfflag, boolean* p_lnflag, boolean* p_isflag,
+  char** cxxcompiler, char** optlevel, char** optflags, boolean* semantic_check_only, boolean* disable_attibute_validation,
+  boolean* p_dbflag, boolean* p_drflag, boolean* p_dtflag, boolean* p_dxflag, boolean* p_djflag, boolean* p_doerflag,
+  boolean* p_fxflag, boolean* p_doflag, boolean* p_gfflag, boolean* p_lnflag, boolean* p_isflag,
   boolean* p_asflag, boolean* p_swflag, boolean* p_Yflag, boolean* p_Mflag, boolean* p_Eflag, boolean* p_nflag, boolean* p_Nflag,
   boolean* p_diflag, boolean* p_enable_legacy_encoding, boolean* p_disable_userinfo, boolean* p_realtime_features,
   struct string_list* solspeclibs, struct string_list* sol8speclibs,
@@ -1318,8 +1320,9 @@ extern "C" tpd_result process_tpd(const char **p_tpd_name, const char *actcfg,
       program_name, prj_graph_fp, create_symlink_list, ttcn3_prep_includes,
       ttcn3_prep_defines, ttcn3_prep_undefines, prep_includes, prep_defines,
       prep_undefines, p_csmode, p_quflag, p_dsflag, cxxcompiler,
-      optlevel, optflags, p_dbflag, p_drflag, p_dtflag, p_dxflag, p_djflag,
-      p_doerflag, p_fxflag, p_doflag, p_gfflag, p_lnflag, p_isflag,
+      optlevel, optflags, semantic_check_only, disable_attibute_validation,
+      p_dbflag, p_drflag, p_dtflag, p_dxflag, p_djflag, p_doerflag,
+      p_fxflag, p_doflag, p_gfflag, p_lnflag, p_isflag,
       p_asflag, p_swflag, p_Yflag, p_Mflag, p_Eflag, p_nflag, p_Nflag,
       p_diflag, p_enable_legacy_encoding, p_disable_userinfo,
       p_realtime_features, solspeclibs, sol8speclibs,
@@ -1348,8 +1351,9 @@ extern "C" tpd_result process_tpd(const char **p_tpd_name, const char *actcfg,
       program_name, prj_graph_fp, create_symlink_list, ttcn3_prep_includes,
       ttcn3_prep_defines, ttcn3_prep_undefines, prep_includes, prep_defines,
       prep_undefines, p_csmode, p_quflag, p_dsflag, cxxcompiler,
-      optlevel, optflags, p_dbflag, p_drflag, p_dtflag, p_dxflag, p_djflag,
-      p_doerflag, p_fxflag, p_doflag, p_gfflag, p_lnflag, p_isflag,
+      optlevel, optflags, semantic_check_only, disable_attibute_validation,
+      p_dbflag, p_drflag, p_dtflag, p_dxflag, p_djflag, p_doerflag,
+      p_fxflag, p_doflag, p_gfflag, p_lnflag, p_isflag,
       p_asflag, p_swflag, p_Yflag, p_Mflag, p_Eflag, p_nflag, p_Nflag,
       p_diflag, p_enable_legacy_encoding, p_disable_userinfo,
       p_realtime_features, solspeclibs, sol8speclibs,
@@ -1453,8 +1457,9 @@ static tpd_result process_tpd_internal(const char **p_tpd_name, char *tpdName, c
   const char* program_name, FILE* prj_graph_fp, struct string2_list* create_symlink_list, struct string_list* ttcn3_prep_includes,
   struct string_list* ttcn3_prep_defines, struct string_list* ttcn3_prep_undefines, struct string_list* prep_includes,
   struct string_list* prep_defines, struct string_list* prep_undefines, char **p_csmode, boolean *p_quflag, boolean* p_dsflag,
-  char** cxxcompiler, char** optlevel, char** optflags, boolean* p_dbflag, boolean* p_drflag, boolean* p_dtflag, boolean* p_dxflag,
-  boolean* p_djflag, boolean* p_doerflag, boolean* p_fxflag, boolean* p_doflag, boolean* p_gfflag, boolean* p_lnflag, boolean* p_isflag,
+  char** cxxcompiler, char** optlevel, char** optflags, boolean* semantic_check_only, boolean* disable_attibute_validation,
+  boolean* p_dbflag, boolean* p_drflag, boolean* p_dtflag, boolean* p_dxflag, boolean* p_djflag, boolean* p_doerflag,
+  boolean* p_fxflag, boolean* p_doflag, boolean* p_gfflag, boolean* p_lnflag, boolean* p_isflag,
   boolean* p_asflag, boolean* p_swflag, boolean* p_Yflag, boolean* p_Mflag, boolean* p_Eflag, boolean* p_nflag, boolean* p_Nflag,
   boolean* p_diflag, boolean* p_enable_legacy_encoding, boolean* p_disable_userinfo, boolean* p_realtime_features,
   struct string_list* solspeclibs, struct string_list* sol8speclibs,
@@ -2043,6 +2048,8 @@ static tpd_result process_tpd_internal(const char **p_tpd_name, char *tpdName, c
   xsdbool2boolean(xpathCtx, actcfg, "singleMode", p_sflag);
   xsdbool2boolean(xpathCtx, actcfg, "quietly", p_quflag);
   xsdbool2boolean(xpathCtx, actcfg, "disableSubtypeChecking", p_dsflag);
+  xsdbool2boolean(xpathCtx, actcfg, "semanticCheckOnly", semantic_check_only);
+  xsdbool2boolean(xpathCtx, actcfg, "disableAttributeValidation", disable_attibute_validation);
   xsdbool2boolean(xpathCtx, actcfg, "disableBER", p_dbflag);
   xsdbool2boolean(xpathCtx, actcfg, "disableRAW", p_drflag);
   xsdbool2boolean(xpathCtx, actcfg, "disableTEXT", p_dtflag);
@@ -3010,8 +3017,8 @@ static tpd_result process_tpd_internal(const char **p_tpd_name, char *tpdName, c
           &my_mflag, &my_Pflag, &my_Lflag, recursive, force_overwrite, gen_only_top_level, NULL, &sub_proj_abs_work_dir,
           sub_project_dirs, program_name, prj_graph_fp, create_symlink_list, ttcn3_prep_includes, ttcn3_prep_defines, ttcn3_prep_undefines, 
           prep_includes, prep_defines, prep_undefines, &my_csmode,
-          &my_quflag, &my_dsflag, cxxcompiler, optlevel, optflags, &my_dbflag, &my_drflag,
-          &my_dtflag, &my_dxflag, &my_djflag, &my_doerflag, &my_fxflag, &my_doflag,
+          &my_quflag, &my_dsflag, cxxcompiler, optlevel, optflags, semantic_check_only, disable_attibute_validation,
+          &my_dbflag, &my_drflag, &my_dtflag, &my_dxflag, &my_djflag, &my_doerflag, &my_fxflag, &my_doflag,
           &my_gfflag, &my_lnflag, &my_isflag, &my_asflag, &my_swflag, &my_Yflag, &my_Mflag, &my_Eflag, &my_nflag, &my_Nflag, &my_diflag,
           &my_enable_legacy_encoding, &my_duflag, &my_realtime_features, solspeclibs, sol8speclibs, linuxspeclibs, freebsdspeclibs, win32speclibs,
           ttcn3prep, linkerlibs, additionalObjects, linkerlibsearchp, Vflag, FALSE, &my_Zflag, 
diff --git a/compiler2/xpather.h b/compiler2/xpather.h
index 16aefa225b7c0fc555d5c232a5988ed824c070ef..493add35ad98f9e6af758e33dc3b75a8adbffd19 100644
--- a/compiler2/xpather.h
+++ b/compiler2/xpather.h
@@ -283,8 +283,9 @@ tpd_result process_tpd(const char **p_tpd_name, const char *actcfg,
   const char* program_name, FILE* prj_graph_fp, struct string2_list* create_symlink_list, struct string_list* ttcn3_prep_includes,
   struct string_list* ttcn3_prep_defines, struct string_list* ttcn3_prep_undefines, struct string_list* prep_includes,
   struct string_list* prep_defines, struct string_list* prep_undefines, char **codesplit, boolean *quietly, boolean *disablesubtypecheck,
-  char** cxxcompiler, char** optlevel, char** optflags, boolean *disableber, boolean *disableraw, boolean *disabletext, boolean *disablexer,
-  boolean *disablejson, boolean *disableoer, boolean *forcexerinasn, boolean *defaultasomit, boolean *gccmessageformat,
+  char** cxxcompiler, char** optlevel, char** optflags, boolean* semantic_check_only, boolean* disable_attibute_validation,
+  boolean *disableber, boolean *disableraw, boolean *disabletext, boolean *disablexer, boolean *disablejson, boolean *disableoer,
+  boolean *forcexerinasn, boolean *defaultasomit, boolean *gccmessageformat,
   boolean *linenumber, boolean *includesourceinfo, boolean *addsourcelineinfo, boolean *suppresswarnings,
   boolean *outparamboundness, boolean *omit_in_value_list, boolean *warnings_for_bad_variants, boolean *activate_debugger, boolean* ignore_untagged_union,
   boolean *disable_predef_exp_folder, boolean* enable_legacy_encoding, boolean* disable_userinfo, boolean* realtime_features,
diff --git a/etc/xsd/TPD.xsd b/etc/xsd/TPD.xsd
index 594dda3ab7dddeacd562f1ca23d6952b4f2b2d72..3618be92f3395be4ddb6115740ccfb04bda264f0 100644
--- a/etc/xsd/TPD.xsd
+++ b/etc/xsd/TPD.xsd
@@ -113,6 +113,8 @@
                       </xs:complexType>
                     </xs:element>
 
+                    <xs:element name="semanticCheckOnly" minOccurs="0" maxOccurs="1" type="xs:boolean" />
+                    <xs:element name="disableAttributeValidation" minOccurs="0" maxOccurs="1" type="xs:boolean" />
                     <xs:element name="disableBER" minOccurs="0" maxOccurs="1" type="xs:boolean" />
                     <xs:element name="disableRAW" minOccurs="0" maxOccurs="1" type="xs:boolean" />
                     <xs:element name="disableTEXT" minOccurs="0" maxOccurs="1" type="xs:boolean" />
diff --git a/usrguide/referenceguide/8-the_titan_project_descriptor_file.adoc b/usrguide/referenceguide/8-the_titan_project_descriptor_file.adoc
index 850480d3230b2b5012dc2504afa12abfae527210..cbde75ab336087fd082b14aba55c83ac9f821ecd 100644
--- a/usrguide/referenceguide/8-the_titan_project_descriptor_file.adoc
+++ b/usrguide/referenceguide/8-the_titan_project_descriptor_file.adoc
@@ -206,6 +206,8 @@ Useful information can be found in TITAN Designer documentation <<13-references.
 |`TTCN3preprocessor (the name of the preprocessor meaningful only in Eclipse)` |- |- |cpp |O
 |`TTCN3preprocessorIncludes` |- |- |empty |O
 |`preprocessorIncludes` |-p |- |emtpy |O
+|`semanticCheckOnly` |- |-s |emtpy |O
+|`disableAttributeValidation` |- |-0 |emtpy |O
 |`disableBER (disable BER encoder/decoder functions)` |- |-b |false |O
 |`disableRAW (disable RAW encoder/decoder functions)` |- |-r |false |O
 |`disableTEXT (disable TEXT encoder/decoder functions)` |- |-x |false |O