RELEASENOTES revision 12027
1 Release Notes for SystemC 2.3.1 2 =============================== 3 4 Andrew C. Goodrich, Forte Design Systems 5 Philipp A. Hartmann, OFFIS Institute for Information Technology 6 7CONTENTS 8======== 9 10 1) What's new in this release? 11 12 2) Bug fixes and enhancements 13 14 3) New features 15 16 4) Incompatibitilies with previous releases 17 18 5) Expanded dynamic process support 19 20 6) Experimental features 21 22 7) Known problems 23 24 8) Fixed-point library 25 26 9) TLM Release Notes 27 28 291) What's new in this release? 30============================== 31 32This version of SystemC contains the "Proof of Concept" simulator 33for the IEEE 1666-2011 SystemC standard. Please consult the IEEE Std 341666-2011 SystemC Language Reference Manual for details about the 35current SystemC standard. 36 37TLM-2.0 is merged into the main SystemC release since 2.3.0. 38Please see section 9) below for more details related to TLM. 39 40Compared to the 2.3.0, this release has the following new items: 41 42 - New features, partly beyond the current IEEE 1666-2011 standard, 43 see section 3. 44 45 - Experimental features (disabled by default), see section 5. 46 Testing and feedback welcome via the Accellera SystemC forums 47 at http://forums.accellera.org/forum/9-systemc/. 48 49 - Bug fixes, see section 2. 50 51 - Expanded platform support, see the README. 52 53 54 552) Bug fixes and enhancements 56============================= 57 58Following is the list of bug fixes and enhancements for this release: 59 60 - For fixes and enhancements of the embedded TLM-2.0 implementation, 61 please see section 9. 62 63 - Additional changes and cleanups leading to incompatibilities with 64 previous versions of SystemC are described in section 4. 65 66 - Fix nested SC_METHOD preemptions caused by resetting a method, which 67 throws an exception in a thread process. The control now correctly 68 goes back to the throwing method. 69 70 - Handle the case of a suppressed multiple-writer error in sc_signal 71 (and related channels) consistently with SystemC 2.2.0 again. 72 73 - The 'sc_buffer<bool>' and 'sc_buffer<sc_logic>' channels now correctly 74 notify their (pos|neg)edge_events, if someone is waiting on them. 75 76 - Cleanup the renaming of the internal Boost namespaces. The embedded 77 Boost implementation resides in the (renamed) top-level namespaces 78 - sc_boost 79 - sc_unnamed (for placeholders, part of IEEE 1666-2011) 80 - sc_mpl_ (internal ADL barrier) 81 82 - Minor fixes in sc_vector-related classes 83 - correctly determine instantiation context 84 - sc_vector_iter: addition/substraction operators fixed 85 - sc_vector_assembly: add swap, fix missing return statement in 86 assignment 87 88 - WIF tracing of 64-bit integers: fix widths and masks on some 89 64-bit platforms. 90 91 - Suppressed a warning in case of calling sc_start in case of pending 92 delta notifications without any pending (or resulting) process 93 activations afterwards (1666-2011 compatbility). 94 95 - Fix sc_string_old implementation to handle very long strings (>1024) 96 (known issue in <=2.3.0). Note, that sc_string_old is no longer 97 included by default, see section 4. 98 99 - Add "risc_cpu" example to Automake build system ("make check"). 100 101 - Add missing files to the MS Visual C++ SystemC.vcproj project file. 102 103 - Add a missing "break" statement to "scfx_utils.h" in the "SC_CSD" 104 format parsing logic. 105 106 - Fix several integer conversion warnings raised by some compilers 107 throughout the SystemC implementation. 108 109 - Fixed incorrect GCC i386/x86_64 function call stack alignment when 110 using the QuickThreads/WinFiber-based process implementations (16-byte 111 boundary). This avoids segmentation faults in some cases where the 112 stricter stack requirement is implicitly assumed by the compiler. 113 114 - The default stack size for threads, SC_DEFAULT_STACK_SIZE, has been 115 increased on 64-bit platforms and is overridable at library build 116 time (see INSTALL). 117 118 - The sc_report implementation now correctly handles empty and NULL 119 message type arguments (avoiding a segmentation fault in these cases). 120 The sc_report default constructor is made private to follow IEEE 1666. 121 122 - Missing namespace qualifiers added to all reporting macros, namely 123 - SC_DEFAULT_*_ACTIONS 124 - SC_REPORT_INFO_VERB 125 to make them usable again while including <systemc> instead of 126 <systemc.h> 127 128 - VCD/WIF tracing: fix support for very long values 129 130 The sc_(un)signed and sc_fxnum(_fast) data types can potentially hold 131 longer values than 1000 bit, which used to be the fixed size of the 132 intermediate buffers in sc_(vcd,wif)_trace for these types. 133 134 - Cleanup systemc.h 135 136 - Drop any in-library dependencies on the old 'sc_string' class, 137 removing the need to provide the corresponding header externally 138 (see section 4). 139 - Drop explicit in-header dependencies on <windows.h> on Windows 140 platforms, removing the automatic inclusion from <systemc[.h]> 141 (see section 4). 142 - Drop inclusion of 'strstream' by default on some platforms 143 (see section 4) 144 - assume working C++ standard library on all platforms 145 - assume working argument-dependent lookup on MSVC 146 (which should be working since MSVC 2003 already) 147 - see section 4 and INSTALL file 148 149 - Improved compile/runtime check of the SystemC library config 150 151 Some preprocessor switches need to be consistent between the application 152 and the library (e.g. if sizes of classes are affected or other parts of 153 the ABI are affected). These can now be checked at link-time. 154 155 Secondly, some preprocessor switches need to be consistent between 156 different translation units of an application, which is checked at 157 runtime startup. 158 159 - sc_context: avoid reinterpret_cast from integer to pointer 160 161 - The SC_VERSION_ORIGINATOR has been renamed from "ASI" to "Accellera" 162 to follow the naming policies of the Accellera Systems Initiative. 163 164 - Cleanups of the VCD/WIF tracing implementation 165 166 - Removal of internal files from the public headers (see section 4) 167 - Report any information (infos, warnings, errors) via the SystemC 168 reporting mechanism instead of directl printing to std::cout/cerr 169 - Automatically unregister trace updates when closing a trace file 170 during the simulation 171 172 - Drop the 'register' storage class specifier, which has been 173 deprecated in the C++11 standard (and therefore might cause warnings 174 on some compilers). 175 176 - Expanded naming of traced objects in VCD traces to use 5 characters 177 rather than 3 to accommodate more signals (incomplete in 2.3.0). 178 179 - Fix sc_signed/sc_unsigned conversion bug on GCC 4.8 or later, coming 180 from its aggressive optimization in case of integer over/underflows 181 (by avoiding the C++ undefined behaviour in the implementation). 182 183 - An output stream operator<< for sc_status is added to enable 184 pretty-printing of sc_status values (and bitwise combinations of 185 such values). 186 187 - Various minor code cleanups and compiler warning fixes 188 - removal of some workarounds for very old versions of some 189 compilers (e.g. MSVC < 8.0). 190 - removal of unused variables and macros 191 - some deduplication of redundant code paths 192 193 1943) New features 195=============== 196 197Here is an overview of changes in 2.3.1 compared to 2.3.0. 198 199Note: These features partly add functionality beyond the current 200 IEEE Std. 1666-2011. 201 202 203 - Major rewrite of the Autoconf/Automake build system 204 - better control of the installation directories 205 - improved libtool library dependency detection, especially 206 in cross-compilation scenarios (--host=...) 207 - support for pkg-config for SystemC and TLM 208 (see http://www.freedesktop.org/wiki/Software/pkg-config/) 209 - accept arbitrary GCC-compatible compilers 210 (e.g. Clang, Intel compiler, compiler-wrappers like scan-build) 211 - avoid deprecation warnings, cleanup implementation 212 - less recursive build, silent rules by default 213 - improved "make check" test handling 214 215 216 - Updated MS Visual C++ project and solution files to include 217 support for Visual Studio 2012 and 64-bit builds on Windows 218 platforms. 219 220 221 - Improved conversion between the underlying integral time 222 representation and sc_time objects: 223 224 - Add a nested typedef "value_type" to sc_time to enable an 225 implementation-independent use of the underlying integral 226 time representation (see IEEE 1666-2011, 5.11.1). 227 228 - Adding an inverse to the 'sc_time::value()' function to 229 convert a plain value back to an sc_time object: 230 static sc_time sc_time::from_value( value_type t ); 231 232 - Adding modulus operators (%, %=) to compute time offsets from 233 clock or quantum boundaries: 234 235 sc_time operator%(const sc_time& lhs, const sc_time& rhs); 236 237 sc_time& sc_time::operator%=(); 238 239 Note: These operators are missing from IEEE 1666-2011, which 240 make e.g. the tlm_global_quantum implementation nearly 241 impossible within the limits of the SystemC standard. 242 243 244 - Add function to determine the current object hierarchy: 245 246 sc_object* sc_core::sc_get_current_object() 247 248 Returns a pointer to the sc_object instance (or NULL) that would 249 currently become the parent object of a newly created sc_object 250 instance (i.e. the current module during elaboration, and the 251 currently active process during simulation). 252 253 254 - Add compile-time configurable default signal writer policy 255 (see INSTALL). 256 257 Defining SC_DEFAULT_WRITER_POLICY to one of the sc_writer_policy 258 values before including systemc(.h) allows application-wide selection 259 of the default sc_writer_policy used for signals. 260 261 Defining SC_NO_WRITE_CHECK is equivalent to 262 SC_DEFAULT WRITER_POLICY=SC_UNCHECKED_WRITERS 263 264 By default, the writer policy still disallows multiple 265 writers (SC_ONE_WRITER). 266 267 268 - Add an sc_signal initialization which does not create an event 269 via newly provided constructors to the signal classes: 270 271 sc_signal<T>::sc_signal( const char* name 272 , const T& initial_value ); 273 274 (similarly for sc_buffer and sc_signal_resolved) 275 276 Compared to calling the "write()" function on a signal during 277 the elaboration, these constructors will set the initial value 278 of the signal without triggering an event at the beginning of the 279 simulation (and therefore may avoid triggering sensitive processes). 280 281 282 - Add a static function to sc_report_handler to query the current 283 report handler function: 284 285 static sc_report_handler_proc sc_report_handler::get_handler(); 286 287 Additionally, sc_report_handler::set_handler() now returns the 288 previously set handler (c.f. sc_report_handler::set_actions). 289 290 291 - Improved conversion from bitvector element references to bool 292 293 As it is surprising to the user that a reference to an explicit 294 element of a sc_bv could not be used in a boolean context, a safe 295 conversion has been added to this release. 296 297 This enables the following coding style: 298 299 sc_bv<8> mybits; 300 // ... 301 if( mybits[0] ) // no longer a compiler error here! 302 /* do something */ ; 303 304 Note: For logic vectors, the bit-references still need to be 305 converted to bool explicitly (e.g. via the "to_bool()" 306 function. 307 308 309 3104) Incompatibilities with previous releases 311=========================================== 312 313Here is a list of known incompatibilities between this release and 3142.3.0 (or earlier): 315 316 - The non-standard sc_time constructors 317 - sc_time( uint64, bool scale ) 318 - sc_time( double, bool scale ) 319 have been deprecated and issue a warning when being used. 320 Use the new 'sc_time::from_value' function instead (see section 3). 321 322 - The non-standard function 'sc_object::get_parent()' has been 323 deprecated, use 'sc_object::get_parent_object()' instead. 324 325 - The non-standard function 'sc_signal::get_new_value()' has been 326 deprecated (as required by IEEE 1666-2011). 327 328 - The non-standard implementation classes for the VCD and WIF tracing 329 (vcd_trace_file, wif_trace_file) are now hidden from an application 330 and no longer part of the public headers. 331 Use the IEEE 1666-2011 functions 332 - sc_trace 333 - sc_create_[vcd|wif]_trace_file 334 - sc_close_[vcd|wif]_trace_file 335 - sc_trace_file::set_time_unit 336 to set up the tracing in your application. 337 338 - The non-standard header 'src/sysc/communication/sc_reset.h' is 339 no longer part of the public headers. 340 341 - The 'sc_string_old' class is no longer available by default. 342 Define 'SC_USE_SC_STRING_OLD' before including "systemc.h", 343 see INSTALL. 344 345 - The implicit inclusion of the system-headers "windows.h" (on Windows) 346 and (deprecated) "strstream" have been removed. See INSTALL. 347 348 - The incomplete implementation of old "W_*" watching macros and the 349 non-standard struct sc_watch have been removed. 350 351Here is a list of known incompatibilities between this release and 2.2.0: 352 353 - The order that processes (SC_METHODs and SC_THREADs) are dispatched 354 for execution may be different than the order with SystemC 2.2.0 for 355 some SystemC programs. This is related to the new starvation policy 356 support for the sc_start() function introduced with IEEE 1666_2011. 357 358 - The various bind() functions for ports and exports are "virtual" as 359 of IEEE 1666-2011. This leads to an incompatibility with the 360 TLM 2.0.x release. To use SystemC 2.3 together with TLM 2.0.{0,1}, 361 define SC_DISABLE_VIRTUAL_BIND during the build of the simulator and 362 before including systemc.h (see INSTALL). 363 364 3655) Expanded Dynamic Process Support 366=================================== 367 368This version implements the dynamic process extensions described in the 369IEEE Std 1666-2011 Language Reference Manual. 370 371Compared to SystemC 2.3.0, some bugs in corner cases of the 372specification have been fixed (see section 2). 373 374 3756) Experimental features 376======================== 377 378In this section the experimental features of this release are listed. 379 380Note: These features are not enabled in the default library 381 configuration and need to be explicitly activated during at 382 library build time. See INSTALL file. 383 384 385 - Extended Simulation Phase Callbacks 386 387 This release adds an optional mechanism to register callbacks 388 to several simulation phases. This can be used to integrate 389 custom introspection techniques in a non-invasive manner. 390 391 New phases are added to the sc_status enumeration: 392 393 SC_END_OF_INITIALIZATION, 394 SC_END_OF_UPDATE, 395 SC_BEFORE_TIMESTEP 396 397 to enable a more fine-grained view to the SystemC simulation phases. 398 399 When the phase callback mechanism is activated (see the INSTALL file), 400 any sc_object can subscribe to a (set of) elaboration/simulation phases 401 for dynamic callbacks explicitly: 402 403 // trigger current object before updating the simulation time 404 this->register_simulation_phase_callback( SC_BEFORE_TIMESTEP ); 405 406 // trigger current object before returning to "sc_start" 407 this->register_simulation_phase_callback( SC_PAUSED | SC_STOPPED ); 408 409 Unsubscribing from any simulation phase is possible via the corresponding 410 unregister_simulation_phase_callback( phase_cb_mask ) 411 function. 412 413 Both functions return the effective mask after the requested callback mask 414 update. Therefore, querying the currently active mask can be achieved by 415 calling the (un)registration functions with an empty mask: 416 417 sc_object::phase_cb_mask current_cb_mask = 418 this->register_simulation_phase_callback( 0u ); 419 420 To enable the external (un)registration of callbacks for a user-defined 421 sc_object class, the (un)registration functions can be made public by 422 adding the following using directives to a 'public:' section of the 423 class definition: 424 425 using sc_core::sc_object::register_simulation_phase_callback; 426 using sc_core::sc_object::unregister_simulation_phase_callback; 427 428 When the simulation passes a phase where dynamic callbacks are registered, 429 the subscribed objects are triggered via the function: 430 431 virtual void sc_object::simulation_phase_callback(); 432 433 which should then be implemented by the subscribing object's class. 434 435 Within a simulation callback, the triggering phase can be determined 436 via the IEEE 1666-2011 'sc_get_status()' function: 437 438 void simulation_phase_callback() { 439 std::cout << sc_core::sc_get_status() << std::endl; 440 } 441 442 A related feature is the triggering of sc_trace updates via these 443 simulation phase callbacks instead of the hard-coded calls in various 444 places of the simulation loop. This feature has to be enabled separately, 445 see INSTALL file. 446 447 448 - Allow creation of sc_max_time() objects before fixing the sc_time 449 resolution 450 451 Currently. IEEE 1666-2011 requires that any call to 452 453 sc_core::sc_set_time_resolution( double, sc_time_unit ) 454 455 happens before the construction of the first non-SC_ZERO_TIME 456 sc_time object. 457 458 This can be inconvenient in cases, where an "uninitialized sc_time value" 459 is needed, which needs to be separate from SC_ZERO_TIME in some cases. 460 461 A relaxation of the strict sc_time construction rules wrt. to 462 the simulation time resolution can be optionally enabled via the 463 preprocessor switch SC_ENABLE_EARLY_MAXTIME_CREATION (see INSTALL). 464 465 When this option is enabled, the creation of time objects with the 466 values SC_ZERO_TIME and 'sc_max_time()' are allowed before fixing the 467 time resolution. The resolution is still fixed once the actual 468 relationship between the internal time representation and the physical 469 time units (SC_FS, SC_PS, ...) is used or observed by the application. 470 471 472 473 4747) Known Problems 475================= 476 477 - When building the SystemC library with QuickThreads support, the 478 resulting shared library is marked as requiring an executable stack 479 by certain compilers/assemblers (or rather not marked as not needing 480 one). As a result, some system security systems (like SELinux) might 481 refuse to load the library. As a workaround for GNU (compatible) 482 assemblers, pass the assembler flags variable with the option 483 CCASFLAGS="-Wa,--noexecstack" 484 to the `configure' script call before building the SystemC library. 485 486 487 - IEEE 1666-2011 does not explicitly define the behaviour in the corner 488 cases of attempting to create sc_time objects smaller than the time 489 resolution or bigger than sc_max_time(). This implementation currently 490 truncates "small" sc_time objects to SC_ZERO_TIME, while "too big" 491 objects wrap-around sc_max_time() and lead to a value modulo the 492 maximum time. In both cases, no warning is generated. 493 494 495 - The sign-extension of mixed-signedness logic expressions (&,|) 496 involving one sc_bigint<> operand and C++ builtin integral types 497 (int, short, etc.) is inconsistent between 32-bit and 64-bit 498 platforms in some cases. Convert both operands to sc_bigint<> first. 499 500 501 - The definition of sc_dt::(u)int64 differs from std::(u)int64_t types 502 on some platforms. This may lead to problems with function overloads 503 and/or format-string placeholders. As a workaround, convert these 504 values explicitly to the correct type before passing them to functions 505 expecting one of these types. For sc_time, use the new nested type 506 sc_time::value_type to hold values of the underlying representation. 507 508 509 - Bit/logic-vector reductions (or_reduce, and_reduce, etc.) return an 510 'sc_logic_value_t' enum value, instead of a bool or sc_logic (as required 511 by IEEE 1666-2011). Using the return value of these functions in a 512 boolean context, e.g. 513 if( lv.or_reduce() ) { /* ... */ } 514 might lead to wrong results in case of 'X' or 'Z' bits in the vector. 515 Avoid this by converting the result to an 'sc_logic' first and perform 516 a safe conversion to bool: 517 if( sc_logic( lv.or_reduce() ).to_bool() ) { /* ... */ } 518 519 520 - The use of the DEBUG_SYSTEMC macro does not work properly with certain 521 compilers (e.g., gcc 2.95.x) if it was not also specified when the 522 SystemC library was built. The problem is caused by the use of the 523 library compiled version of some inline methods. This problem does not 524 appear to be present in the gcc 3.3, Solaris, and aCC compilers. 525 The work-around is to specify DEBUG_SYSTEMC when the SystemC library 526 is built. 527 528 529 - On some recent compilers (e.g. Clang, Solaris Studio), warnings are 530 generated about the "hidden overloaded virtual function" bind of the 531 sc_port(_b) class templates in the 'specialized_signals' example. 532 These warnings are caused by the introduction of the virtual bind 533 implementation in IEEE 1666-2011. 534 As a workaround, check your compiler documentation how to suppress 535 the warning (e.g. 'CXXFLAGS=-Wno-overloaded-virtual') or mark 536 the SystemC include directory as "system directory" by using 537 '-isystem ${SYSTEMC_HOME}/include' (or equivalent) instead of 538 the usual '-I'. 539 540 This also affects the TLM-2.0 sockets, see Section 9.3. 541 542 543 - Some paths in this release are longer than the historical 99 character 544 limit of tar archives, and several Windows archivers (e.g. WinZip) 545 have been reported to trip over this. The open source archiver 7-zip 546 (http://7-zip.org) is known to work. 547 548 5498) Fixed-point library 550====================== 551 552SystemC contains a fixed-point datatypes package. 553 554Changes compared to SystemC 2.0.1 555 556 - support for explicit construction from "float" values 557 558 - removing a conversion ambiguity by marking some constructors of 559 sc_fxval[_fast] classes as 'explicit' 560 561Compile-time macro SC_INCLUDE_FX must be defined in order to build 562applications that use fixed point types. You can specify a compiler 563flag, e.g., g++ -DSC_INCLUDE_FX ... or use a define statement before 564you include systemc.h, e.g.: 565 566 #define SC_INCLUDE_FX 567 #include "systemc.h" 568 569Due to the large size of the fixed-point datatypes header files, 570compilation can take considerably more time. 571 572If you want to use the fixed-point data types only (i.e., not data- 573types sc_int, sc_uint, sc_bigint, sc_biguint), compilation time can be 574reduced by defining compile-time macro SC_FX_EXCLUDE_OTHER (in addition 575to SC_INCLUDE_FX). 576 577 5789) TLM Release Notes 579==================== 580 581CONTENTS 582======== 583 584 1) Supported SystemC versions 585 2) What's changed in this kit? 586 3) Known issues 587 588 5899.1) Supported SystemC versions 590=============================== 591 592SystemC 2.2.0 and 2.3.x are supported and have been tested. 593SystemC 2.1.v1 is still supported in principle, but has not 594been tested extensively. 595 596 5979.2) What's changed in this kit? 598================================ 599 600Compared to TLM 2.0.2 kit (part of SystemC 2.3.0), the following has changed: 601 602 603 - The tlm_utils headers have been cleaned up to include <tlm>, 604 instead of <tlm.h> 605 606 607 - The convenience sockets with base-protocol NB/B conversion support 608 now automatically define the required SC_INCLUDE_DYNAMIC_PROCESSES, 609 if not already provided by the user (since the B/NB conversion 610 depends on the SystemC dynamic process support). 611 612 613 - Improve the NB/B conversion in the simple_target_socket to avoid 614 the dynamic allocation (and deletion) of sc_event instances in the 615 use of the spawned helper processes for the converesion. 616 617 618 - Fix a bug in the same simple_target_socket NB/B conversion thread, 619 where the target socket may not detect the early completion of the 620 response phase via a "TLM_UPDATED" return value and a "TLM_END_RESP" 621 phase (base protocol violation). 622 623 624 - Fix the "get_base_interface()" implementation provided by the 625 multi_passthrough_target_socket. Prior to this release, a 626 dummy interface object has been used as a return value in case 627 of a hierarchical bind. Return the first bound interface instead. 628 629 630 - Fixed missing initialization of some member variables in the 631 callback_binder_fw|bw implementations, that caused segfaults 632 in some cases. 633 634 635 - The implementation-defined tlm::circular_buffer class has been 636 updated with the following changes 637 - now provides a "clear()" member function to drop the current 638 contents, 639 - fix a segmentation fault due to freeing invalid memory in 640 "resize()", which could happen in some cases, 641 - work around a parsing error on some EDG-based C++ frontends. 642 643 644 - tlm_global_quantum: use sc_time::operator% 645 646 Instead of relying on a manual remainder calculation based on 647 sc_time::value and the non-standard backwards conversion, the new 648 sc_time::operator% is used to compute the remaining time in the 649 current quantum (see section 3). 650 651 652 - The internal tlm_array class (to hold payload extensions) has been 653 reimplemented based on std::vector (fixes copy constructor bug). 654 655 656 - The TLM_VERSION_ORIGINATOR has been renamed from "ASI" to "Accellera" 657 to follow the naming policies of the Accellera Systems Initiative. 658 659 660 661 6629.3) Known issues 663================= 664 665a. The tlm_simple_target_socket in tlm_utils does not obey the END_REQ rule 666 when only an nb_ call is registered, an b_ call is being handled in the 667 socket and there is an nb_ call coming in at the same time. In this case 668 the incoming nb_ call will be forwarded to the registered nb_ call without 669 checking whether the earlier b_ call has passed the END_REQ timing point. 670 671b. The implementation of the PEQ 'peq_with_get' in tlm_utils does not properly 672 distinguish between immediate notifications and delta notifications. In the 673 case that a immediate and delta notification happen at the same simulation 674 time both types of notifications emerge from the PEQ in the same evaluation 675 phase. This is wrong immediate notifications should overtake delta 676 notifications. 677 678c. On some recent compilers (e.g. Clang, Solaris Studio), warnings are generated 679 about the "hidden overloaded virtual function" bind of the sc_port(_b) 680 class templates when using the TLM-2.0 sockets. These warnings are caused by 681 the introduction of the virtual bind implementation in IEEE 1666-2011. 682 As a workaround in your application, check your compiler documentation how to 683 suppress the warning (e.g. adding the flag -Wno-overloaded-virtual), or mark 684 the SystemC include directory as "system directory" by using 685 '-isystem ${SYSTEMC_HOME}/include' (or equivalent) instead of the usual '-I'. 686