RELEASENOTES revision 12027
112027Sjungma@eit.uni-kl.de Release Notes for SystemC 2.3.1 212027Sjungma@eit.uni-kl.de =============================== 312027Sjungma@eit.uni-kl.de 412027Sjungma@eit.uni-kl.de Andrew C. Goodrich, Forte Design Systems 512027Sjungma@eit.uni-kl.de Philipp A. Hartmann, OFFIS Institute for Information Technology 612027Sjungma@eit.uni-kl.de 712027Sjungma@eit.uni-kl.deCONTENTS 812027Sjungma@eit.uni-kl.de======== 912027Sjungma@eit.uni-kl.de 1012027Sjungma@eit.uni-kl.de 1) What's new in this release? 1112027Sjungma@eit.uni-kl.de 1212027Sjungma@eit.uni-kl.de 2) Bug fixes and enhancements 1312027Sjungma@eit.uni-kl.de 1412027Sjungma@eit.uni-kl.de 3) New features 1512027Sjungma@eit.uni-kl.de 1612027Sjungma@eit.uni-kl.de 4) Incompatibitilies with previous releases 1712027Sjungma@eit.uni-kl.de 1812027Sjungma@eit.uni-kl.de 5) Expanded dynamic process support 1912027Sjungma@eit.uni-kl.de 2012027Sjungma@eit.uni-kl.de 6) Experimental features 2112027Sjungma@eit.uni-kl.de 2212027Sjungma@eit.uni-kl.de 7) Known problems 2312027Sjungma@eit.uni-kl.de 2412027Sjungma@eit.uni-kl.de 8) Fixed-point library 2512027Sjungma@eit.uni-kl.de 2612027Sjungma@eit.uni-kl.de 9) TLM Release Notes 2712027Sjungma@eit.uni-kl.de 2812027Sjungma@eit.uni-kl.de 2912027Sjungma@eit.uni-kl.de1) What's new in this release? 3012027Sjungma@eit.uni-kl.de============================== 3112027Sjungma@eit.uni-kl.de 3212027Sjungma@eit.uni-kl.deThis version of SystemC contains the "Proof of Concept" simulator 3312027Sjungma@eit.uni-kl.defor the IEEE 1666-2011 SystemC standard. Please consult the IEEE Std 3412027Sjungma@eit.uni-kl.de1666-2011 SystemC Language Reference Manual for details about the 3512027Sjungma@eit.uni-kl.decurrent SystemC standard. 3612027Sjungma@eit.uni-kl.de 3712027Sjungma@eit.uni-kl.deTLM-2.0 is merged into the main SystemC release since 2.3.0. 3812027Sjungma@eit.uni-kl.dePlease see section 9) below for more details related to TLM. 3912027Sjungma@eit.uni-kl.de 4012027Sjungma@eit.uni-kl.deCompared to the 2.3.0, this release has the following new items: 4112027Sjungma@eit.uni-kl.de 4212027Sjungma@eit.uni-kl.de - New features, partly beyond the current IEEE 1666-2011 standard, 4312027Sjungma@eit.uni-kl.de see section 3. 4412027Sjungma@eit.uni-kl.de 4512027Sjungma@eit.uni-kl.de - Experimental features (disabled by default), see section 5. 4612027Sjungma@eit.uni-kl.de Testing and feedback welcome via the Accellera SystemC forums 4712027Sjungma@eit.uni-kl.de at http://forums.accellera.org/forum/9-systemc/. 4812027Sjungma@eit.uni-kl.de 4912027Sjungma@eit.uni-kl.de - Bug fixes, see section 2. 5012027Sjungma@eit.uni-kl.de 5112027Sjungma@eit.uni-kl.de - Expanded platform support, see the README. 5212027Sjungma@eit.uni-kl.de 5312027Sjungma@eit.uni-kl.de 5412027Sjungma@eit.uni-kl.de 5512027Sjungma@eit.uni-kl.de2) Bug fixes and enhancements 5612027Sjungma@eit.uni-kl.de============================= 5712027Sjungma@eit.uni-kl.de 5812027Sjungma@eit.uni-kl.deFollowing is the list of bug fixes and enhancements for this release: 5912027Sjungma@eit.uni-kl.de 6012027Sjungma@eit.uni-kl.de - For fixes and enhancements of the embedded TLM-2.0 implementation, 6112027Sjungma@eit.uni-kl.de please see section 9. 6212027Sjungma@eit.uni-kl.de 6312027Sjungma@eit.uni-kl.de - Additional changes and cleanups leading to incompatibilities with 6412027Sjungma@eit.uni-kl.de previous versions of SystemC are described in section 4. 6512027Sjungma@eit.uni-kl.de 6612027Sjungma@eit.uni-kl.de - Fix nested SC_METHOD preemptions caused by resetting a method, which 6712027Sjungma@eit.uni-kl.de throws an exception in a thread process. The control now correctly 6812027Sjungma@eit.uni-kl.de goes back to the throwing method. 6912027Sjungma@eit.uni-kl.de 7012027Sjungma@eit.uni-kl.de - Handle the case of a suppressed multiple-writer error in sc_signal 7112027Sjungma@eit.uni-kl.de (and related channels) consistently with SystemC 2.2.0 again. 7212027Sjungma@eit.uni-kl.de 7312027Sjungma@eit.uni-kl.de - The 'sc_buffer<bool>' and 'sc_buffer<sc_logic>' channels now correctly 7412027Sjungma@eit.uni-kl.de notify their (pos|neg)edge_events, if someone is waiting on them. 7512027Sjungma@eit.uni-kl.de 7612027Sjungma@eit.uni-kl.de - Cleanup the renaming of the internal Boost namespaces. The embedded 7712027Sjungma@eit.uni-kl.de Boost implementation resides in the (renamed) top-level namespaces 7812027Sjungma@eit.uni-kl.de - sc_boost 7912027Sjungma@eit.uni-kl.de - sc_unnamed (for placeholders, part of IEEE 1666-2011) 8012027Sjungma@eit.uni-kl.de - sc_mpl_ (internal ADL barrier) 8112027Sjungma@eit.uni-kl.de 8212027Sjungma@eit.uni-kl.de - Minor fixes in sc_vector-related classes 8312027Sjungma@eit.uni-kl.de - correctly determine instantiation context 8412027Sjungma@eit.uni-kl.de - sc_vector_iter: addition/substraction operators fixed 8512027Sjungma@eit.uni-kl.de - sc_vector_assembly: add swap, fix missing return statement in 8612027Sjungma@eit.uni-kl.de assignment 8712027Sjungma@eit.uni-kl.de 8812027Sjungma@eit.uni-kl.de - WIF tracing of 64-bit integers: fix widths and masks on some 8912027Sjungma@eit.uni-kl.de 64-bit platforms. 9012027Sjungma@eit.uni-kl.de 9112027Sjungma@eit.uni-kl.de - Suppressed a warning in case of calling sc_start in case of pending 9212027Sjungma@eit.uni-kl.de delta notifications without any pending (or resulting) process 9312027Sjungma@eit.uni-kl.de activations afterwards (1666-2011 compatbility). 9412027Sjungma@eit.uni-kl.de 9512027Sjungma@eit.uni-kl.de - Fix sc_string_old implementation to handle very long strings (>1024) 9612027Sjungma@eit.uni-kl.de (known issue in <=2.3.0). Note, that sc_string_old is no longer 9712027Sjungma@eit.uni-kl.de included by default, see section 4. 9812027Sjungma@eit.uni-kl.de 9912027Sjungma@eit.uni-kl.de - Add "risc_cpu" example to Automake build system ("make check"). 10012027Sjungma@eit.uni-kl.de 10112027Sjungma@eit.uni-kl.de - Add missing files to the MS Visual C++ SystemC.vcproj project file. 10212027Sjungma@eit.uni-kl.de 10312027Sjungma@eit.uni-kl.de - Add a missing "break" statement to "scfx_utils.h" in the "SC_CSD" 10412027Sjungma@eit.uni-kl.de format parsing logic. 10512027Sjungma@eit.uni-kl.de 10612027Sjungma@eit.uni-kl.de - Fix several integer conversion warnings raised by some compilers 10712027Sjungma@eit.uni-kl.de throughout the SystemC implementation. 10812027Sjungma@eit.uni-kl.de 10912027Sjungma@eit.uni-kl.de - Fixed incorrect GCC i386/x86_64 function call stack alignment when 11012027Sjungma@eit.uni-kl.de using the QuickThreads/WinFiber-based process implementations (16-byte 11112027Sjungma@eit.uni-kl.de boundary). This avoids segmentation faults in some cases where the 11212027Sjungma@eit.uni-kl.de stricter stack requirement is implicitly assumed by the compiler. 11312027Sjungma@eit.uni-kl.de 11412027Sjungma@eit.uni-kl.de - The default stack size for threads, SC_DEFAULT_STACK_SIZE, has been 11512027Sjungma@eit.uni-kl.de increased on 64-bit platforms and is overridable at library build 11612027Sjungma@eit.uni-kl.de time (see INSTALL). 11712027Sjungma@eit.uni-kl.de 11812027Sjungma@eit.uni-kl.de - The sc_report implementation now correctly handles empty and NULL 11912027Sjungma@eit.uni-kl.de message type arguments (avoiding a segmentation fault in these cases). 12012027Sjungma@eit.uni-kl.de The sc_report default constructor is made private to follow IEEE 1666. 12112027Sjungma@eit.uni-kl.de 12212027Sjungma@eit.uni-kl.de - Missing namespace qualifiers added to all reporting macros, namely 12312027Sjungma@eit.uni-kl.de - SC_DEFAULT_*_ACTIONS 12412027Sjungma@eit.uni-kl.de - SC_REPORT_INFO_VERB 12512027Sjungma@eit.uni-kl.de to make them usable again while including <systemc> instead of 12612027Sjungma@eit.uni-kl.de <systemc.h> 12712027Sjungma@eit.uni-kl.de 12812027Sjungma@eit.uni-kl.de - VCD/WIF tracing: fix support for very long values 12912027Sjungma@eit.uni-kl.de 13012027Sjungma@eit.uni-kl.de The sc_(un)signed and sc_fxnum(_fast) data types can potentially hold 13112027Sjungma@eit.uni-kl.de longer values than 1000 bit, which used to be the fixed size of the 13212027Sjungma@eit.uni-kl.de intermediate buffers in sc_(vcd,wif)_trace for these types. 13312027Sjungma@eit.uni-kl.de 13412027Sjungma@eit.uni-kl.de - Cleanup systemc.h 13512027Sjungma@eit.uni-kl.de 13612027Sjungma@eit.uni-kl.de - Drop any in-library dependencies on the old 'sc_string' class, 13712027Sjungma@eit.uni-kl.de removing the need to provide the corresponding header externally 13812027Sjungma@eit.uni-kl.de (see section 4). 13912027Sjungma@eit.uni-kl.de - Drop explicit in-header dependencies on <windows.h> on Windows 14012027Sjungma@eit.uni-kl.de platforms, removing the automatic inclusion from <systemc[.h]> 14112027Sjungma@eit.uni-kl.de (see section 4). 14212027Sjungma@eit.uni-kl.de - Drop inclusion of 'strstream' by default on some platforms 14312027Sjungma@eit.uni-kl.de (see section 4) 14412027Sjungma@eit.uni-kl.de - assume working C++ standard library on all platforms 14512027Sjungma@eit.uni-kl.de - assume working argument-dependent lookup on MSVC 14612027Sjungma@eit.uni-kl.de (which should be working since MSVC 2003 already) 14712027Sjungma@eit.uni-kl.de - see section 4 and INSTALL file 14812027Sjungma@eit.uni-kl.de 14912027Sjungma@eit.uni-kl.de - Improved compile/runtime check of the SystemC library config 15012027Sjungma@eit.uni-kl.de 15112027Sjungma@eit.uni-kl.de Some preprocessor switches need to be consistent between the application 15212027Sjungma@eit.uni-kl.de and the library (e.g. if sizes of classes are affected or other parts of 15312027Sjungma@eit.uni-kl.de the ABI are affected). These can now be checked at link-time. 15412027Sjungma@eit.uni-kl.de 15512027Sjungma@eit.uni-kl.de Secondly, some preprocessor switches need to be consistent between 15612027Sjungma@eit.uni-kl.de different translation units of an application, which is checked at 15712027Sjungma@eit.uni-kl.de runtime startup. 15812027Sjungma@eit.uni-kl.de 15912027Sjungma@eit.uni-kl.de - sc_context: avoid reinterpret_cast from integer to pointer 16012027Sjungma@eit.uni-kl.de 16112027Sjungma@eit.uni-kl.de - The SC_VERSION_ORIGINATOR has been renamed from "ASI" to "Accellera" 16212027Sjungma@eit.uni-kl.de to follow the naming policies of the Accellera Systems Initiative. 16312027Sjungma@eit.uni-kl.de 16412027Sjungma@eit.uni-kl.de - Cleanups of the VCD/WIF tracing implementation 16512027Sjungma@eit.uni-kl.de 16612027Sjungma@eit.uni-kl.de - Removal of internal files from the public headers (see section 4) 16712027Sjungma@eit.uni-kl.de - Report any information (infos, warnings, errors) via the SystemC 16812027Sjungma@eit.uni-kl.de reporting mechanism instead of directl printing to std::cout/cerr 16912027Sjungma@eit.uni-kl.de - Automatically unregister trace updates when closing a trace file 17012027Sjungma@eit.uni-kl.de during the simulation 17112027Sjungma@eit.uni-kl.de 17212027Sjungma@eit.uni-kl.de - Drop the 'register' storage class specifier, which has been 17312027Sjungma@eit.uni-kl.de deprecated in the C++11 standard (and therefore might cause warnings 17412027Sjungma@eit.uni-kl.de on some compilers). 17512027Sjungma@eit.uni-kl.de 17612027Sjungma@eit.uni-kl.de - Expanded naming of traced objects in VCD traces to use 5 characters 17712027Sjungma@eit.uni-kl.de rather than 3 to accommodate more signals (incomplete in 2.3.0). 17812027Sjungma@eit.uni-kl.de 17912027Sjungma@eit.uni-kl.de - Fix sc_signed/sc_unsigned conversion bug on GCC 4.8 or later, coming 18012027Sjungma@eit.uni-kl.de from its aggressive optimization in case of integer over/underflows 18112027Sjungma@eit.uni-kl.de (by avoiding the C++ undefined behaviour in the implementation). 18212027Sjungma@eit.uni-kl.de 18312027Sjungma@eit.uni-kl.de - An output stream operator<< for sc_status is added to enable 18412027Sjungma@eit.uni-kl.de pretty-printing of sc_status values (and bitwise combinations of 18512027Sjungma@eit.uni-kl.de such values). 18612027Sjungma@eit.uni-kl.de 18712027Sjungma@eit.uni-kl.de - Various minor code cleanups and compiler warning fixes 18812027Sjungma@eit.uni-kl.de - removal of some workarounds for very old versions of some 18912027Sjungma@eit.uni-kl.de compilers (e.g. MSVC < 8.0). 19012027Sjungma@eit.uni-kl.de - removal of unused variables and macros 19112027Sjungma@eit.uni-kl.de - some deduplication of redundant code paths 19212027Sjungma@eit.uni-kl.de 19312027Sjungma@eit.uni-kl.de 19412027Sjungma@eit.uni-kl.de3) New features 19512027Sjungma@eit.uni-kl.de=============== 19612027Sjungma@eit.uni-kl.de 19712027Sjungma@eit.uni-kl.deHere is an overview of changes in 2.3.1 compared to 2.3.0. 19812027Sjungma@eit.uni-kl.de 19912027Sjungma@eit.uni-kl.deNote: These features partly add functionality beyond the current 20012027Sjungma@eit.uni-kl.de IEEE Std. 1666-2011. 20112027Sjungma@eit.uni-kl.de 20212027Sjungma@eit.uni-kl.de 20312027Sjungma@eit.uni-kl.de - Major rewrite of the Autoconf/Automake build system 20412027Sjungma@eit.uni-kl.de - better control of the installation directories 20512027Sjungma@eit.uni-kl.de - improved libtool library dependency detection, especially 20612027Sjungma@eit.uni-kl.de in cross-compilation scenarios (--host=...) 20712027Sjungma@eit.uni-kl.de - support for pkg-config for SystemC and TLM 20812027Sjungma@eit.uni-kl.de (see http://www.freedesktop.org/wiki/Software/pkg-config/) 20912027Sjungma@eit.uni-kl.de - accept arbitrary GCC-compatible compilers 21012027Sjungma@eit.uni-kl.de (e.g. Clang, Intel compiler, compiler-wrappers like scan-build) 21112027Sjungma@eit.uni-kl.de - avoid deprecation warnings, cleanup implementation 21212027Sjungma@eit.uni-kl.de - less recursive build, silent rules by default 21312027Sjungma@eit.uni-kl.de - improved "make check" test handling 21412027Sjungma@eit.uni-kl.de 21512027Sjungma@eit.uni-kl.de 21612027Sjungma@eit.uni-kl.de - Updated MS Visual C++ project and solution files to include 21712027Sjungma@eit.uni-kl.de support for Visual Studio 2012 and 64-bit builds on Windows 21812027Sjungma@eit.uni-kl.de platforms. 21912027Sjungma@eit.uni-kl.de 22012027Sjungma@eit.uni-kl.de 22112027Sjungma@eit.uni-kl.de - Improved conversion between the underlying integral time 22212027Sjungma@eit.uni-kl.de representation and sc_time objects: 22312027Sjungma@eit.uni-kl.de 22412027Sjungma@eit.uni-kl.de - Add a nested typedef "value_type" to sc_time to enable an 22512027Sjungma@eit.uni-kl.de implementation-independent use of the underlying integral 22612027Sjungma@eit.uni-kl.de time representation (see IEEE 1666-2011, 5.11.1). 22712027Sjungma@eit.uni-kl.de 22812027Sjungma@eit.uni-kl.de - Adding an inverse to the 'sc_time::value()' function to 22912027Sjungma@eit.uni-kl.de convert a plain value back to an sc_time object: 23012027Sjungma@eit.uni-kl.de static sc_time sc_time::from_value( value_type t ); 23112027Sjungma@eit.uni-kl.de 23212027Sjungma@eit.uni-kl.de - Adding modulus operators (%, %=) to compute time offsets from 23312027Sjungma@eit.uni-kl.de clock or quantum boundaries: 23412027Sjungma@eit.uni-kl.de 23512027Sjungma@eit.uni-kl.de sc_time operator%(const sc_time& lhs, const sc_time& rhs); 23612027Sjungma@eit.uni-kl.de 23712027Sjungma@eit.uni-kl.de sc_time& sc_time::operator%=(); 23812027Sjungma@eit.uni-kl.de 23912027Sjungma@eit.uni-kl.de Note: These operators are missing from IEEE 1666-2011, which 24012027Sjungma@eit.uni-kl.de make e.g. the tlm_global_quantum implementation nearly 24112027Sjungma@eit.uni-kl.de impossible within the limits of the SystemC standard. 24212027Sjungma@eit.uni-kl.de 24312027Sjungma@eit.uni-kl.de 24412027Sjungma@eit.uni-kl.de - Add function to determine the current object hierarchy: 24512027Sjungma@eit.uni-kl.de 24612027Sjungma@eit.uni-kl.de sc_object* sc_core::sc_get_current_object() 24712027Sjungma@eit.uni-kl.de 24812027Sjungma@eit.uni-kl.de Returns a pointer to the sc_object instance (or NULL) that would 24912027Sjungma@eit.uni-kl.de currently become the parent object of a newly created sc_object 25012027Sjungma@eit.uni-kl.de instance (i.e. the current module during elaboration, and the 25112027Sjungma@eit.uni-kl.de currently active process during simulation). 25212027Sjungma@eit.uni-kl.de 25312027Sjungma@eit.uni-kl.de 25412027Sjungma@eit.uni-kl.de - Add compile-time configurable default signal writer policy 25512027Sjungma@eit.uni-kl.de (see INSTALL). 25612027Sjungma@eit.uni-kl.de 25712027Sjungma@eit.uni-kl.de Defining SC_DEFAULT_WRITER_POLICY to one of the sc_writer_policy 25812027Sjungma@eit.uni-kl.de values before including systemc(.h) allows application-wide selection 25912027Sjungma@eit.uni-kl.de of the default sc_writer_policy used for signals. 26012027Sjungma@eit.uni-kl.de 26112027Sjungma@eit.uni-kl.de Defining SC_NO_WRITE_CHECK is equivalent to 26212027Sjungma@eit.uni-kl.de SC_DEFAULT WRITER_POLICY=SC_UNCHECKED_WRITERS 26312027Sjungma@eit.uni-kl.de 26412027Sjungma@eit.uni-kl.de By default, the writer policy still disallows multiple 26512027Sjungma@eit.uni-kl.de writers (SC_ONE_WRITER). 26612027Sjungma@eit.uni-kl.de 26712027Sjungma@eit.uni-kl.de 26812027Sjungma@eit.uni-kl.de - Add an sc_signal initialization which does not create an event 26912027Sjungma@eit.uni-kl.de via newly provided constructors to the signal classes: 27012027Sjungma@eit.uni-kl.de 27112027Sjungma@eit.uni-kl.de sc_signal<T>::sc_signal( const char* name 27212027Sjungma@eit.uni-kl.de , const T& initial_value ); 27312027Sjungma@eit.uni-kl.de 27412027Sjungma@eit.uni-kl.de (similarly for sc_buffer and sc_signal_resolved) 27512027Sjungma@eit.uni-kl.de 27612027Sjungma@eit.uni-kl.de Compared to calling the "write()" function on a signal during 27712027Sjungma@eit.uni-kl.de the elaboration, these constructors will set the initial value 27812027Sjungma@eit.uni-kl.de of the signal without triggering an event at the beginning of the 27912027Sjungma@eit.uni-kl.de simulation (and therefore may avoid triggering sensitive processes). 28012027Sjungma@eit.uni-kl.de 28112027Sjungma@eit.uni-kl.de 28212027Sjungma@eit.uni-kl.de - Add a static function to sc_report_handler to query the current 28312027Sjungma@eit.uni-kl.de report handler function: 28412027Sjungma@eit.uni-kl.de 28512027Sjungma@eit.uni-kl.de static sc_report_handler_proc sc_report_handler::get_handler(); 28612027Sjungma@eit.uni-kl.de 28712027Sjungma@eit.uni-kl.de Additionally, sc_report_handler::set_handler() now returns the 28812027Sjungma@eit.uni-kl.de previously set handler (c.f. sc_report_handler::set_actions). 28912027Sjungma@eit.uni-kl.de 29012027Sjungma@eit.uni-kl.de 29112027Sjungma@eit.uni-kl.de - Improved conversion from bitvector element references to bool 29212027Sjungma@eit.uni-kl.de 29312027Sjungma@eit.uni-kl.de As it is surprising to the user that a reference to an explicit 29412027Sjungma@eit.uni-kl.de element of a sc_bv could not be used in a boolean context, a safe 29512027Sjungma@eit.uni-kl.de conversion has been added to this release. 29612027Sjungma@eit.uni-kl.de 29712027Sjungma@eit.uni-kl.de This enables the following coding style: 29812027Sjungma@eit.uni-kl.de 29912027Sjungma@eit.uni-kl.de sc_bv<8> mybits; 30012027Sjungma@eit.uni-kl.de // ... 30112027Sjungma@eit.uni-kl.de if( mybits[0] ) // no longer a compiler error here! 30212027Sjungma@eit.uni-kl.de /* do something */ ; 30312027Sjungma@eit.uni-kl.de 30412027Sjungma@eit.uni-kl.de Note: For logic vectors, the bit-references still need to be 30512027Sjungma@eit.uni-kl.de converted to bool explicitly (e.g. via the "to_bool()" 30612027Sjungma@eit.uni-kl.de function. 30712027Sjungma@eit.uni-kl.de 30812027Sjungma@eit.uni-kl.de 30912027Sjungma@eit.uni-kl.de 31012027Sjungma@eit.uni-kl.de4) Incompatibilities with previous releases 31112027Sjungma@eit.uni-kl.de=========================================== 31212027Sjungma@eit.uni-kl.de 31312027Sjungma@eit.uni-kl.deHere is a list of known incompatibilities between this release and 31412027Sjungma@eit.uni-kl.de2.3.0 (or earlier): 31512027Sjungma@eit.uni-kl.de 31612027Sjungma@eit.uni-kl.de - The non-standard sc_time constructors 31712027Sjungma@eit.uni-kl.de - sc_time( uint64, bool scale ) 31812027Sjungma@eit.uni-kl.de - sc_time( double, bool scale ) 31912027Sjungma@eit.uni-kl.de have been deprecated and issue a warning when being used. 32012027Sjungma@eit.uni-kl.de Use the new 'sc_time::from_value' function instead (see section 3). 32112027Sjungma@eit.uni-kl.de 32212027Sjungma@eit.uni-kl.de - The non-standard function 'sc_object::get_parent()' has been 32312027Sjungma@eit.uni-kl.de deprecated, use 'sc_object::get_parent_object()' instead. 32412027Sjungma@eit.uni-kl.de 32512027Sjungma@eit.uni-kl.de - The non-standard function 'sc_signal::get_new_value()' has been 32612027Sjungma@eit.uni-kl.de deprecated (as required by IEEE 1666-2011). 32712027Sjungma@eit.uni-kl.de 32812027Sjungma@eit.uni-kl.de - The non-standard implementation classes for the VCD and WIF tracing 32912027Sjungma@eit.uni-kl.de (vcd_trace_file, wif_trace_file) are now hidden from an application 33012027Sjungma@eit.uni-kl.de and no longer part of the public headers. 33112027Sjungma@eit.uni-kl.de Use the IEEE 1666-2011 functions 33212027Sjungma@eit.uni-kl.de - sc_trace 33312027Sjungma@eit.uni-kl.de - sc_create_[vcd|wif]_trace_file 33412027Sjungma@eit.uni-kl.de - sc_close_[vcd|wif]_trace_file 33512027Sjungma@eit.uni-kl.de - sc_trace_file::set_time_unit 33612027Sjungma@eit.uni-kl.de to set up the tracing in your application. 33712027Sjungma@eit.uni-kl.de 33812027Sjungma@eit.uni-kl.de - The non-standard header 'src/sysc/communication/sc_reset.h' is 33912027Sjungma@eit.uni-kl.de no longer part of the public headers. 34012027Sjungma@eit.uni-kl.de 34112027Sjungma@eit.uni-kl.de - The 'sc_string_old' class is no longer available by default. 34212027Sjungma@eit.uni-kl.de Define 'SC_USE_SC_STRING_OLD' before including "systemc.h", 34312027Sjungma@eit.uni-kl.de see INSTALL. 34412027Sjungma@eit.uni-kl.de 34512027Sjungma@eit.uni-kl.de - The implicit inclusion of the system-headers "windows.h" (on Windows) 34612027Sjungma@eit.uni-kl.de and (deprecated) "strstream" have been removed. See INSTALL. 34712027Sjungma@eit.uni-kl.de 34812027Sjungma@eit.uni-kl.de - The incomplete implementation of old "W_*" watching macros and the 34912027Sjungma@eit.uni-kl.de non-standard struct sc_watch have been removed. 35012027Sjungma@eit.uni-kl.de 35112027Sjungma@eit.uni-kl.deHere is a list of known incompatibilities between this release and 2.2.0: 35212027Sjungma@eit.uni-kl.de 35312027Sjungma@eit.uni-kl.de - The order that processes (SC_METHODs and SC_THREADs) are dispatched 35412027Sjungma@eit.uni-kl.de for execution may be different than the order with SystemC 2.2.0 for 35512027Sjungma@eit.uni-kl.de some SystemC programs. This is related to the new starvation policy 35612027Sjungma@eit.uni-kl.de support for the sc_start() function introduced with IEEE 1666_2011. 35712027Sjungma@eit.uni-kl.de 35812027Sjungma@eit.uni-kl.de - The various bind() functions for ports and exports are "virtual" as 35912027Sjungma@eit.uni-kl.de of IEEE 1666-2011. This leads to an incompatibility with the 36012027Sjungma@eit.uni-kl.de TLM 2.0.x release. To use SystemC 2.3 together with TLM 2.0.{0,1}, 36112027Sjungma@eit.uni-kl.de define SC_DISABLE_VIRTUAL_BIND during the build of the simulator and 36212027Sjungma@eit.uni-kl.de before including systemc.h (see INSTALL). 36312027Sjungma@eit.uni-kl.de 36412027Sjungma@eit.uni-kl.de 36512027Sjungma@eit.uni-kl.de5) Expanded Dynamic Process Support 36612027Sjungma@eit.uni-kl.de=================================== 36712027Sjungma@eit.uni-kl.de 36812027Sjungma@eit.uni-kl.deThis version implements the dynamic process extensions described in the 36912027Sjungma@eit.uni-kl.deIEEE Std 1666-2011 Language Reference Manual. 37012027Sjungma@eit.uni-kl.de 37112027Sjungma@eit.uni-kl.deCompared to SystemC 2.3.0, some bugs in corner cases of the 37212027Sjungma@eit.uni-kl.despecification have been fixed (see section 2). 37312027Sjungma@eit.uni-kl.de 37412027Sjungma@eit.uni-kl.de 37512027Sjungma@eit.uni-kl.de6) Experimental features 37612027Sjungma@eit.uni-kl.de======================== 37712027Sjungma@eit.uni-kl.de 37812027Sjungma@eit.uni-kl.deIn this section the experimental features of this release are listed. 37912027Sjungma@eit.uni-kl.de 38012027Sjungma@eit.uni-kl.deNote: These features are not enabled in the default library 38112027Sjungma@eit.uni-kl.de configuration and need to be explicitly activated during at 38212027Sjungma@eit.uni-kl.de library build time. See INSTALL file. 38312027Sjungma@eit.uni-kl.de 38412027Sjungma@eit.uni-kl.de 38512027Sjungma@eit.uni-kl.de - Extended Simulation Phase Callbacks 38612027Sjungma@eit.uni-kl.de 38712027Sjungma@eit.uni-kl.de This release adds an optional mechanism to register callbacks 38812027Sjungma@eit.uni-kl.de to several simulation phases. This can be used to integrate 38912027Sjungma@eit.uni-kl.de custom introspection techniques in a non-invasive manner. 39012027Sjungma@eit.uni-kl.de 39112027Sjungma@eit.uni-kl.de New phases are added to the sc_status enumeration: 39212027Sjungma@eit.uni-kl.de 39312027Sjungma@eit.uni-kl.de SC_END_OF_INITIALIZATION, 39412027Sjungma@eit.uni-kl.de SC_END_OF_UPDATE, 39512027Sjungma@eit.uni-kl.de SC_BEFORE_TIMESTEP 39612027Sjungma@eit.uni-kl.de 39712027Sjungma@eit.uni-kl.de to enable a more fine-grained view to the SystemC simulation phases. 39812027Sjungma@eit.uni-kl.de 39912027Sjungma@eit.uni-kl.de When the phase callback mechanism is activated (see the INSTALL file), 40012027Sjungma@eit.uni-kl.de any sc_object can subscribe to a (set of) elaboration/simulation phases 40112027Sjungma@eit.uni-kl.de for dynamic callbacks explicitly: 40212027Sjungma@eit.uni-kl.de 40312027Sjungma@eit.uni-kl.de // trigger current object before updating the simulation time 40412027Sjungma@eit.uni-kl.de this->register_simulation_phase_callback( SC_BEFORE_TIMESTEP ); 40512027Sjungma@eit.uni-kl.de 40612027Sjungma@eit.uni-kl.de // trigger current object before returning to "sc_start" 40712027Sjungma@eit.uni-kl.de this->register_simulation_phase_callback( SC_PAUSED | SC_STOPPED ); 40812027Sjungma@eit.uni-kl.de 40912027Sjungma@eit.uni-kl.de Unsubscribing from any simulation phase is possible via the corresponding 41012027Sjungma@eit.uni-kl.de unregister_simulation_phase_callback( phase_cb_mask ) 41112027Sjungma@eit.uni-kl.de function. 41212027Sjungma@eit.uni-kl.de 41312027Sjungma@eit.uni-kl.de Both functions return the effective mask after the requested callback mask 41412027Sjungma@eit.uni-kl.de update. Therefore, querying the currently active mask can be achieved by 41512027Sjungma@eit.uni-kl.de calling the (un)registration functions with an empty mask: 41612027Sjungma@eit.uni-kl.de 41712027Sjungma@eit.uni-kl.de sc_object::phase_cb_mask current_cb_mask = 41812027Sjungma@eit.uni-kl.de this->register_simulation_phase_callback( 0u ); 41912027Sjungma@eit.uni-kl.de 42012027Sjungma@eit.uni-kl.de To enable the external (un)registration of callbacks for a user-defined 42112027Sjungma@eit.uni-kl.de sc_object class, the (un)registration functions can be made public by 42212027Sjungma@eit.uni-kl.de adding the following using directives to a 'public:' section of the 42312027Sjungma@eit.uni-kl.de class definition: 42412027Sjungma@eit.uni-kl.de 42512027Sjungma@eit.uni-kl.de using sc_core::sc_object::register_simulation_phase_callback; 42612027Sjungma@eit.uni-kl.de using sc_core::sc_object::unregister_simulation_phase_callback; 42712027Sjungma@eit.uni-kl.de 42812027Sjungma@eit.uni-kl.de When the simulation passes a phase where dynamic callbacks are registered, 42912027Sjungma@eit.uni-kl.de the subscribed objects are triggered via the function: 43012027Sjungma@eit.uni-kl.de 43112027Sjungma@eit.uni-kl.de virtual void sc_object::simulation_phase_callback(); 43212027Sjungma@eit.uni-kl.de 43312027Sjungma@eit.uni-kl.de which should then be implemented by the subscribing object's class. 43412027Sjungma@eit.uni-kl.de 43512027Sjungma@eit.uni-kl.de Within a simulation callback, the triggering phase can be determined 43612027Sjungma@eit.uni-kl.de via the IEEE 1666-2011 'sc_get_status()' function: 43712027Sjungma@eit.uni-kl.de 43812027Sjungma@eit.uni-kl.de void simulation_phase_callback() { 43912027Sjungma@eit.uni-kl.de std::cout << sc_core::sc_get_status() << std::endl; 44012027Sjungma@eit.uni-kl.de } 44112027Sjungma@eit.uni-kl.de 44212027Sjungma@eit.uni-kl.de A related feature is the triggering of sc_trace updates via these 44312027Sjungma@eit.uni-kl.de simulation phase callbacks instead of the hard-coded calls in various 44412027Sjungma@eit.uni-kl.de places of the simulation loop. This feature has to be enabled separately, 44512027Sjungma@eit.uni-kl.de see INSTALL file. 44612027Sjungma@eit.uni-kl.de 44712027Sjungma@eit.uni-kl.de 44812027Sjungma@eit.uni-kl.de - Allow creation of sc_max_time() objects before fixing the sc_time 44912027Sjungma@eit.uni-kl.de resolution 45012027Sjungma@eit.uni-kl.de 45112027Sjungma@eit.uni-kl.de Currently. IEEE 1666-2011 requires that any call to 45212027Sjungma@eit.uni-kl.de 45312027Sjungma@eit.uni-kl.de sc_core::sc_set_time_resolution( double, sc_time_unit ) 45412027Sjungma@eit.uni-kl.de 45512027Sjungma@eit.uni-kl.de happens before the construction of the first non-SC_ZERO_TIME 45612027Sjungma@eit.uni-kl.de sc_time object. 45712027Sjungma@eit.uni-kl.de 45812027Sjungma@eit.uni-kl.de This can be inconvenient in cases, where an "uninitialized sc_time value" 45912027Sjungma@eit.uni-kl.de is needed, which needs to be separate from SC_ZERO_TIME in some cases. 46012027Sjungma@eit.uni-kl.de 46112027Sjungma@eit.uni-kl.de A relaxation of the strict sc_time construction rules wrt. to 46212027Sjungma@eit.uni-kl.de the simulation time resolution can be optionally enabled via the 46312027Sjungma@eit.uni-kl.de preprocessor switch SC_ENABLE_EARLY_MAXTIME_CREATION (see INSTALL). 46412027Sjungma@eit.uni-kl.de 46512027Sjungma@eit.uni-kl.de When this option is enabled, the creation of time objects with the 46612027Sjungma@eit.uni-kl.de values SC_ZERO_TIME and 'sc_max_time()' are allowed before fixing the 46712027Sjungma@eit.uni-kl.de time resolution. The resolution is still fixed once the actual 46812027Sjungma@eit.uni-kl.de relationship between the internal time representation and the physical 46912027Sjungma@eit.uni-kl.de time units (SC_FS, SC_PS, ...) is used or observed by the application. 47012027Sjungma@eit.uni-kl.de 47112027Sjungma@eit.uni-kl.de 47212027Sjungma@eit.uni-kl.de 47312027Sjungma@eit.uni-kl.de 47412027Sjungma@eit.uni-kl.de7) Known Problems 47512027Sjungma@eit.uni-kl.de================= 47612027Sjungma@eit.uni-kl.de 47712027Sjungma@eit.uni-kl.de - When building the SystemC library with QuickThreads support, the 47812027Sjungma@eit.uni-kl.de resulting shared library is marked as requiring an executable stack 47912027Sjungma@eit.uni-kl.de by certain compilers/assemblers (or rather not marked as not needing 48012027Sjungma@eit.uni-kl.de one). As a result, some system security systems (like SELinux) might 48112027Sjungma@eit.uni-kl.de refuse to load the library. As a workaround for GNU (compatible) 48212027Sjungma@eit.uni-kl.de assemblers, pass the assembler flags variable with the option 48312027Sjungma@eit.uni-kl.de CCASFLAGS="-Wa,--noexecstack" 48412027Sjungma@eit.uni-kl.de to the `configure' script call before building the SystemC library. 48512027Sjungma@eit.uni-kl.de 48612027Sjungma@eit.uni-kl.de 48712027Sjungma@eit.uni-kl.de - IEEE 1666-2011 does not explicitly define the behaviour in the corner 48812027Sjungma@eit.uni-kl.de cases of attempting to create sc_time objects smaller than the time 48912027Sjungma@eit.uni-kl.de resolution or bigger than sc_max_time(). This implementation currently 49012027Sjungma@eit.uni-kl.de truncates "small" sc_time objects to SC_ZERO_TIME, while "too big" 49112027Sjungma@eit.uni-kl.de objects wrap-around sc_max_time() and lead to a value modulo the 49212027Sjungma@eit.uni-kl.de maximum time. In both cases, no warning is generated. 49312027Sjungma@eit.uni-kl.de 49412027Sjungma@eit.uni-kl.de 49512027Sjungma@eit.uni-kl.de - The sign-extension of mixed-signedness logic expressions (&,|) 49612027Sjungma@eit.uni-kl.de involving one sc_bigint<> operand and C++ builtin integral types 49712027Sjungma@eit.uni-kl.de (int, short, etc.) is inconsistent between 32-bit and 64-bit 49812027Sjungma@eit.uni-kl.de platforms in some cases. Convert both operands to sc_bigint<> first. 49912027Sjungma@eit.uni-kl.de 50012027Sjungma@eit.uni-kl.de 50112027Sjungma@eit.uni-kl.de - The definition of sc_dt::(u)int64 differs from std::(u)int64_t types 50212027Sjungma@eit.uni-kl.de on some platforms. This may lead to problems with function overloads 50312027Sjungma@eit.uni-kl.de and/or format-string placeholders. As a workaround, convert these 50412027Sjungma@eit.uni-kl.de values explicitly to the correct type before passing them to functions 50512027Sjungma@eit.uni-kl.de expecting one of these types. For sc_time, use the new nested type 50612027Sjungma@eit.uni-kl.de sc_time::value_type to hold values of the underlying representation. 50712027Sjungma@eit.uni-kl.de 50812027Sjungma@eit.uni-kl.de 50912027Sjungma@eit.uni-kl.de - Bit/logic-vector reductions (or_reduce, and_reduce, etc.) return an 51012027Sjungma@eit.uni-kl.de 'sc_logic_value_t' enum value, instead of a bool or sc_logic (as required 51112027Sjungma@eit.uni-kl.de by IEEE 1666-2011). Using the return value of these functions in a 51212027Sjungma@eit.uni-kl.de boolean context, e.g. 51312027Sjungma@eit.uni-kl.de if( lv.or_reduce() ) { /* ... */ } 51412027Sjungma@eit.uni-kl.de might lead to wrong results in case of 'X' or 'Z' bits in the vector. 51512027Sjungma@eit.uni-kl.de Avoid this by converting the result to an 'sc_logic' first and perform 51612027Sjungma@eit.uni-kl.de a safe conversion to bool: 51712027Sjungma@eit.uni-kl.de if( sc_logic( lv.or_reduce() ).to_bool() ) { /* ... */ } 51812027Sjungma@eit.uni-kl.de 51912027Sjungma@eit.uni-kl.de 52012027Sjungma@eit.uni-kl.de - The use of the DEBUG_SYSTEMC macro does not work properly with certain 52112027Sjungma@eit.uni-kl.de compilers (e.g., gcc 2.95.x) if it was not also specified when the 52212027Sjungma@eit.uni-kl.de SystemC library was built. The problem is caused by the use of the 52312027Sjungma@eit.uni-kl.de library compiled version of some inline methods. This problem does not 52412027Sjungma@eit.uni-kl.de appear to be present in the gcc 3.3, Solaris, and aCC compilers. 52512027Sjungma@eit.uni-kl.de The work-around is to specify DEBUG_SYSTEMC when the SystemC library 52612027Sjungma@eit.uni-kl.de is built. 52712027Sjungma@eit.uni-kl.de 52812027Sjungma@eit.uni-kl.de 52912027Sjungma@eit.uni-kl.de - On some recent compilers (e.g. Clang, Solaris Studio), warnings are 53012027Sjungma@eit.uni-kl.de generated about the "hidden overloaded virtual function" bind of the 53112027Sjungma@eit.uni-kl.de sc_port(_b) class templates in the 'specialized_signals' example. 53212027Sjungma@eit.uni-kl.de These warnings are caused by the introduction of the virtual bind 53312027Sjungma@eit.uni-kl.de implementation in IEEE 1666-2011. 53412027Sjungma@eit.uni-kl.de As a workaround, check your compiler documentation how to suppress 53512027Sjungma@eit.uni-kl.de the warning (e.g. 'CXXFLAGS=-Wno-overloaded-virtual') or mark 53612027Sjungma@eit.uni-kl.de the SystemC include directory as "system directory" by using 53712027Sjungma@eit.uni-kl.de '-isystem ${SYSTEMC_HOME}/include' (or equivalent) instead of 53812027Sjungma@eit.uni-kl.de the usual '-I'. 53912027Sjungma@eit.uni-kl.de 54012027Sjungma@eit.uni-kl.de This also affects the TLM-2.0 sockets, see Section 9.3. 54112027Sjungma@eit.uni-kl.de 54212027Sjungma@eit.uni-kl.de 54312027Sjungma@eit.uni-kl.de - Some paths in this release are longer than the historical 99 character 54412027Sjungma@eit.uni-kl.de limit of tar archives, and several Windows archivers (e.g. WinZip) 54512027Sjungma@eit.uni-kl.de have been reported to trip over this. The open source archiver 7-zip 54612027Sjungma@eit.uni-kl.de (http://7-zip.org) is known to work. 54712027Sjungma@eit.uni-kl.de 54812027Sjungma@eit.uni-kl.de 54912027Sjungma@eit.uni-kl.de8) Fixed-point library 55012027Sjungma@eit.uni-kl.de====================== 55112027Sjungma@eit.uni-kl.de 55212027Sjungma@eit.uni-kl.deSystemC contains a fixed-point datatypes package. 55312027Sjungma@eit.uni-kl.de 55412027Sjungma@eit.uni-kl.deChanges compared to SystemC 2.0.1 55512027Sjungma@eit.uni-kl.de 55612027Sjungma@eit.uni-kl.de - support for explicit construction from "float" values 55712027Sjungma@eit.uni-kl.de 55812027Sjungma@eit.uni-kl.de - removing a conversion ambiguity by marking some constructors of 55912027Sjungma@eit.uni-kl.de sc_fxval[_fast] classes as 'explicit' 56012027Sjungma@eit.uni-kl.de 56112027Sjungma@eit.uni-kl.deCompile-time macro SC_INCLUDE_FX must be defined in order to build 56212027Sjungma@eit.uni-kl.deapplications that use fixed point types. You can specify a compiler 56312027Sjungma@eit.uni-kl.deflag, e.g., g++ -DSC_INCLUDE_FX ... or use a define statement before 56412027Sjungma@eit.uni-kl.deyou include systemc.h, e.g.: 56512027Sjungma@eit.uni-kl.de 56612027Sjungma@eit.uni-kl.de #define SC_INCLUDE_FX 56712027Sjungma@eit.uni-kl.de #include "systemc.h" 56812027Sjungma@eit.uni-kl.de 56912027Sjungma@eit.uni-kl.deDue to the large size of the fixed-point datatypes header files, 57012027Sjungma@eit.uni-kl.decompilation can take considerably more time. 57112027Sjungma@eit.uni-kl.de 57212027Sjungma@eit.uni-kl.deIf you want to use the fixed-point data types only (i.e., not data- 57312027Sjungma@eit.uni-kl.detypes sc_int, sc_uint, sc_bigint, sc_biguint), compilation time can be 57412027Sjungma@eit.uni-kl.dereduced by defining compile-time macro SC_FX_EXCLUDE_OTHER (in addition 57512027Sjungma@eit.uni-kl.deto SC_INCLUDE_FX). 57612027Sjungma@eit.uni-kl.de 57712027Sjungma@eit.uni-kl.de 57812027Sjungma@eit.uni-kl.de9) TLM Release Notes 57912027Sjungma@eit.uni-kl.de==================== 58012027Sjungma@eit.uni-kl.de 58112027Sjungma@eit.uni-kl.deCONTENTS 58212027Sjungma@eit.uni-kl.de======== 58312027Sjungma@eit.uni-kl.de 58412027Sjungma@eit.uni-kl.de 1) Supported SystemC versions 58512027Sjungma@eit.uni-kl.de 2) What's changed in this kit? 58612027Sjungma@eit.uni-kl.de 3) Known issues 58712027Sjungma@eit.uni-kl.de 58812027Sjungma@eit.uni-kl.de 58912027Sjungma@eit.uni-kl.de9.1) Supported SystemC versions 59012027Sjungma@eit.uni-kl.de=============================== 59112027Sjungma@eit.uni-kl.de 59212027Sjungma@eit.uni-kl.deSystemC 2.2.0 and 2.3.x are supported and have been tested. 59312027Sjungma@eit.uni-kl.deSystemC 2.1.v1 is still supported in principle, but has not 59412027Sjungma@eit.uni-kl.debeen tested extensively. 59512027Sjungma@eit.uni-kl.de 59612027Sjungma@eit.uni-kl.de 59712027Sjungma@eit.uni-kl.de9.2) What's changed in this kit? 59812027Sjungma@eit.uni-kl.de================================ 59912027Sjungma@eit.uni-kl.de 60012027Sjungma@eit.uni-kl.deCompared to TLM 2.0.2 kit (part of SystemC 2.3.0), the following has changed: 60112027Sjungma@eit.uni-kl.de 60212027Sjungma@eit.uni-kl.de 60312027Sjungma@eit.uni-kl.de - The tlm_utils headers have been cleaned up to include <tlm>, 60412027Sjungma@eit.uni-kl.de instead of <tlm.h> 60512027Sjungma@eit.uni-kl.de 60612027Sjungma@eit.uni-kl.de 60712027Sjungma@eit.uni-kl.de - The convenience sockets with base-protocol NB/B conversion support 60812027Sjungma@eit.uni-kl.de now automatically define the required SC_INCLUDE_DYNAMIC_PROCESSES, 60912027Sjungma@eit.uni-kl.de if not already provided by the user (since the B/NB conversion 61012027Sjungma@eit.uni-kl.de depends on the SystemC dynamic process support). 61112027Sjungma@eit.uni-kl.de 61212027Sjungma@eit.uni-kl.de 61312027Sjungma@eit.uni-kl.de - Improve the NB/B conversion in the simple_target_socket to avoid 61412027Sjungma@eit.uni-kl.de the dynamic allocation (and deletion) of sc_event instances in the 61512027Sjungma@eit.uni-kl.de use of the spawned helper processes for the converesion. 61612027Sjungma@eit.uni-kl.de 61712027Sjungma@eit.uni-kl.de 61812027Sjungma@eit.uni-kl.de - Fix a bug in the same simple_target_socket NB/B conversion thread, 61912027Sjungma@eit.uni-kl.de where the target socket may not detect the early completion of the 62012027Sjungma@eit.uni-kl.de response phase via a "TLM_UPDATED" return value and a "TLM_END_RESP" 62112027Sjungma@eit.uni-kl.de phase (base protocol violation). 62212027Sjungma@eit.uni-kl.de 62312027Sjungma@eit.uni-kl.de 62412027Sjungma@eit.uni-kl.de - Fix the "get_base_interface()" implementation provided by the 62512027Sjungma@eit.uni-kl.de multi_passthrough_target_socket. Prior to this release, a 62612027Sjungma@eit.uni-kl.de dummy interface object has been used as a return value in case 62712027Sjungma@eit.uni-kl.de of a hierarchical bind. Return the first bound interface instead. 62812027Sjungma@eit.uni-kl.de 62912027Sjungma@eit.uni-kl.de 63012027Sjungma@eit.uni-kl.de - Fixed missing initialization of some member variables in the 63112027Sjungma@eit.uni-kl.de callback_binder_fw|bw implementations, that caused segfaults 63212027Sjungma@eit.uni-kl.de in some cases. 63312027Sjungma@eit.uni-kl.de 63412027Sjungma@eit.uni-kl.de 63512027Sjungma@eit.uni-kl.de - The implementation-defined tlm::circular_buffer class has been 63612027Sjungma@eit.uni-kl.de updated with the following changes 63712027Sjungma@eit.uni-kl.de - now provides a "clear()" member function to drop the current 63812027Sjungma@eit.uni-kl.de contents, 63912027Sjungma@eit.uni-kl.de - fix a segmentation fault due to freeing invalid memory in 64012027Sjungma@eit.uni-kl.de "resize()", which could happen in some cases, 64112027Sjungma@eit.uni-kl.de - work around a parsing error on some EDG-based C++ frontends. 64212027Sjungma@eit.uni-kl.de 64312027Sjungma@eit.uni-kl.de 64412027Sjungma@eit.uni-kl.de - tlm_global_quantum: use sc_time::operator% 64512027Sjungma@eit.uni-kl.de 64612027Sjungma@eit.uni-kl.de Instead of relying on a manual remainder calculation based on 64712027Sjungma@eit.uni-kl.de sc_time::value and the non-standard backwards conversion, the new 64812027Sjungma@eit.uni-kl.de sc_time::operator% is used to compute the remaining time in the 64912027Sjungma@eit.uni-kl.de current quantum (see section 3). 65012027Sjungma@eit.uni-kl.de 65112027Sjungma@eit.uni-kl.de 65212027Sjungma@eit.uni-kl.de - The internal tlm_array class (to hold payload extensions) has been 65312027Sjungma@eit.uni-kl.de reimplemented based on std::vector (fixes copy constructor bug). 65412027Sjungma@eit.uni-kl.de 65512027Sjungma@eit.uni-kl.de 65612027Sjungma@eit.uni-kl.de - The TLM_VERSION_ORIGINATOR has been renamed from "ASI" to "Accellera" 65712027Sjungma@eit.uni-kl.de to follow the naming policies of the Accellera Systems Initiative. 65812027Sjungma@eit.uni-kl.de 65912027Sjungma@eit.uni-kl.de 66012027Sjungma@eit.uni-kl.de 66112027Sjungma@eit.uni-kl.de 66212027Sjungma@eit.uni-kl.de9.3) Known issues 66312027Sjungma@eit.uni-kl.de================= 66412027Sjungma@eit.uni-kl.de 66512027Sjungma@eit.uni-kl.dea. The tlm_simple_target_socket in tlm_utils does not obey the END_REQ rule 66612027Sjungma@eit.uni-kl.de when only an nb_ call is registered, an b_ call is being handled in the 66712027Sjungma@eit.uni-kl.de socket and there is an nb_ call coming in at the same time. In this case 66812027Sjungma@eit.uni-kl.de the incoming nb_ call will be forwarded to the registered nb_ call without 66912027Sjungma@eit.uni-kl.de checking whether the earlier b_ call has passed the END_REQ timing point. 67012027Sjungma@eit.uni-kl.de 67112027Sjungma@eit.uni-kl.deb. The implementation of the PEQ 'peq_with_get' in tlm_utils does not properly 67212027Sjungma@eit.uni-kl.de distinguish between immediate notifications and delta notifications. In the 67312027Sjungma@eit.uni-kl.de case that a immediate and delta notification happen at the same simulation 67412027Sjungma@eit.uni-kl.de time both types of notifications emerge from the PEQ in the same evaluation 67512027Sjungma@eit.uni-kl.de phase. This is wrong immediate notifications should overtake delta 67612027Sjungma@eit.uni-kl.de notifications. 67712027Sjungma@eit.uni-kl.de 67812027Sjungma@eit.uni-kl.dec. On some recent compilers (e.g. Clang, Solaris Studio), warnings are generated 67912027Sjungma@eit.uni-kl.de about the "hidden overloaded virtual function" bind of the sc_port(_b) 68012027Sjungma@eit.uni-kl.de class templates when using the TLM-2.0 sockets. These warnings are caused by 68112027Sjungma@eit.uni-kl.de the introduction of the virtual bind implementation in IEEE 1666-2011. 68212027Sjungma@eit.uni-kl.de As a workaround in your application, check your compiler documentation how to 68312027Sjungma@eit.uni-kl.de suppress the warning (e.g. adding the flag -Wno-overloaded-virtual), or mark 68412027Sjungma@eit.uni-kl.de the SystemC include directory as "system directory" by using 68512027Sjungma@eit.uni-kl.de '-isystem ${SYSTEMC_HOME}/include' (or equivalent) instead of the usual '-I'. 686