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