summaryrefslogtreecommitdiff
path: root/ext/systemc/INSTALL
diff options
context:
space:
mode:
Diffstat (limited to 'ext/systemc/INSTALL')
-rw-r--r--ext/systemc/INSTALL765
1 files changed, 765 insertions, 0 deletions
diff --git a/ext/systemc/INSTALL b/ext/systemc/INSTALL
new file mode 100644
index 000000000..a5231d489
--- /dev/null
+++ b/ext/systemc/INSTALL
@@ -0,0 +1,765 @@
+ INSTALL NOTES FOR SystemC Release 2.3
+ -------------------------------------
+
+Contents:
+
+ 1. Installation Notes for Unix
+
+ 2. Installation Notes for Windows
+
+ 3. SystemC Library Configuration Switches
+
+
+1. Installation Notes for Unix
+------------------------------
+
+
+System Requirements
+===================
+
+SystemC can be installed on the following UNIX, or UNIX-like platforms:
+
+ o Linux
+ * Architectures
+ - x86 (32-bit)
+ - x86_64 (64-bit)
+ - x86 (32-bit) application running on x86_64 (64-bit) kernel
+ (../configure --host=i686-linux-gnu)
+ * Compilers
+ - GNU C++ compiler
+ - Clang C++ compiler
+ - or compatible
+
+ o Mac OS X
+ * Architectures
+ - x86 (32-bit)
+ - x86_64 (64-bit)
+ - powerpc (32-bit) [deprecated]
+ - powerpc64 (64-bit) [deprecated]
+ * Compilers
+ - GNU C++ compiler
+ - Clang C++ compiler
+ - or compatible
+
+ o Solaris
+ * Architectures
+ - SPARC (32-bit)
+ * Compilers
+ - GNU C++ compiler
+ - Sun/Solaris Studio
+
+ o BSD
+ * Architectures
+ - x86 (32-bit)
+ - x86_64 (64-bit)
+ * Compilers
+ - GNU C++ compiler
+ - Clang C++ compiler
+ - or compatible
+
+ o Windows
+ * Compatibility layer
+ - Cygwin
+ - MinGW / MSYS
+ * Architectures
+ - x86 (32-bit)
+ - x86_64 (64-bit)
+ * Compilers
+ - GNU C++ compiler
+ - or compatible
+
+Note: Not all combinations are equally well-tested and some combinations
+ may not work as expected. Please report your findings by following
+ the instructions in the README file.
+
+The README file contains a list of detailed platforms, architectures,
+and compiler versions that have been used for testing this release.
+
+
+Sources for Compilers and Related Tools
+=======================================
+
+To build, install, and use SystemC on UNIX platforms, you need
+the following tools:
+
+ 1. GNU C++ compiler, version 3.4 or later
+ or
+ Clang C++ compiler version 3.0 or later
+
+ 2. GNU Make (gmake)
+
+GCC, Clang, and gmake are free software that you can
+obtain from the following sources:
+
+ GCC http://www.gnu.org/software/gcc/gcc.html
+
+ Clang http://clang.llvm.org/
+
+ gmake http://www.gnu.org/software/make/make.html
+
+
+Basic SystemC Installation
+==========================
+
+To install SystemC on a UNIX system, do the following steps:
+
+ 1. Change to the top level directory (systemc-2.3.1)
+
+ 2. Create a temporary directory, e.g.,
+
+ > mkdir objdir
+
+ 3. Change to the temporary directory, e.g.,
+
+ > cd objdir
+
+ 4. Choose your compiler by setting the CXX environment variable
+ (the configure script tries to guess the default compiler, if
+ this step is omitted):
+
+ If you use a POSIX-compatible shell (e.g. bash):
+
+ > export CXX="<compiler>"
+
+ e.g. for GCC compilers
+
+ > export CXX=g++
+
+ The Clang compiler is usually named 'clang++', thus e.g.
+
+ > export CXX=clang++
+
+ When using a C shell (e.g. csh/tcsh), the syntax to set the
+ environment variable is different:
+
+ > setenv CXX g++
+
+ For the Sun/Solaris Studio compilers, use
+
+ > setenv CXX CC
+
+ You can also specify an absolute path to the compiler of your choice.
+
+ See also the Section "Compilation and Linking Options" below.
+
+
+ 5. Configure the package for your system, e.g.,
+ (The configure script is explained below.)
+
+ > ../configure
+
+ While the 'configure' script is running, which takes a few moments,
+ it prints messages to inform you of the features it is checking.
+ It also detects the platform.
+
+ Note for System V users:
+ If you are using `csh' on an older version of System V, you might
+ need to use the `sh ../configure' command instead of '../configure'.
+ Otherwise, `csh' will attempt to `configure' itself.
+
+ SystemC 2.3 includes a fixed-point package that is always built.
+ When compiling your applications with fixed-point types, you still have
+ to use compiler flag -DSC_INCLUDE_FX. Note that compile times increase
+ significantly when using this compiler flag.
+
+ In case you want to install the package in another place than the
+ top level directory (systemc-2.3.1), configure the package e.g. as
+ follows:
+
+ > ../configure --prefix=/usr/local/systemc-2.3.1
+
+ Note: make sure you have created the target directory before installing
+ the package. Do _not_ use /usr/local as a prefix, unless you
+ follow the Unix/FHS directory layouts (see below).
+
+ A fine grained configuration of the installation directories can
+ be achieved via additional options, given to the configure script.
+
+ By default, the files are installed directly to the PREFIX directory
+ root and the library is installed to PREFIX/lib-<TARGETARCH>,
+ depending on the current target architecture. This may be undesired
+ in cases where the package is meant to be installed in a system-wide
+ location as part of shared (default) library and include hierarchies
+ (e.g. /usr/local, /usr, /opt, ...). To follow the Unix/FHS directory
+ standards, you can use the following options:
+
+ --with-unix-layout use Unix directory layout for installation
+ [default=no]
+ when "yes", the following (fine-grained) settings will be used:
+
+ --includedir=DIR C++ header files [PREFIX/include]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/systemc]
+
+ The library destination itself can be further and separately configured
+ by using the following option:
+
+ --with-arch-suffix add suffix to library installation directory
+ [default=-<TARGETARCH>]
+
+ With this option, one can easily follow e.g. the "multi-arch"
+ conventions on some platforms:
+
+ ../configure --with-arch-suffix=32 # lib32
+ ../configure --with-arch-suffix=/x86_64-linux-gnu # lib/x86_64-linux-gnu
+
+
+
+ Several options are available to the configure script to modify
+ the compiler configuration and the selection of certain features:
+
+ --disable-shared do not build shared library (libsystemc.so)
+ --enable-debug include debugging symbols
+ --disable-optimize disable compiler optimization
+ --disable-async-updates disable request_async_update support
+ --enable-pthreads use POSIX threads for SystemC processes
+ --enable-phase-callbacks
+ enable simulation phase callbacks (experimental)
+
+
+ See the section on the general usage of the configure script and
+ "../configure --help" for more information.
+
+ Note: If you change the configuration after having compiled the
+ package already, you should run a "gmake clean" before
+ recompiling.
+
+ 6. Compile the package.
+
+ > gmake
+
+ Note: The explicit gmake targets "opt" and "debug", etc. have
+ been removed in this package. Use the corresponding
+ options to the configure script instead.
+
+ 7. At this point you may wish to verify the compiled package by
+ testing the example suite.
+
+ > gmake check
+
+ This will compile and run the examples in the subdirectory
+ examples.
+
+ 8. Install the package.
+
+ > gmake install
+
+ 9. You can now remove the temporary directory, .e.g,
+
+ > cd ..
+ > rm -rf objdir
+
+ Alternatively, you can keep the temporary directory to allow you to:
+
+ a) Experiment with the examples.
+
+ b) Later uninstall the package. To clean up the temporary
+ directory, enter:
+
+ > gmake clean
+
+ To uninstall the package, enter:
+
+ > gmake uninstall
+
+
+Running the Examples
+====================
+
+Copies of the examples reside in the temporary directory - see
+instruction 7 above for details on building and running them.
+
+In addition, a copy of the example code resides in the directory
+examples at the highest level of the installation (or in the
+shared documentation install directory).
+
+Use the makefiles provided in the 'examples' directory as templates
+for makefiles you need for compiling your own examples.
+
+
+Using the Configure Script
+==========================
+
+The `configure' shell script tries to determine the correct values for
+various system-dependent variables used during compilation. It uses
+these values to create a `Makefile' in each directory of the package.
+It also creates one or more `.h' files containing system-dependent
+definitions if needed. Then, it creates the following files:
+
+ config.status A shell script that you can run at another time to
+ recreate the current configuration.
+
+ config.cache A file in which the configure test results are
+ saved to speed up reconfiguration.
+
+ Data is appended to the config.cache file.
+ You can remove unwanted data.
+
+ config.log A file in which compiler output is saved.
+ This is used to debug the configure script.
+
+If you need to use other commands to successfully compile the package
+on your system, please try to determine if the configure script can be used
+for these commands. Then, send either a diff file or instructions about
+the commands you used to the email address provided in the README file.
+This information will be used to improve the installation process in
+the next release.
+
+The `configure.ac' file is provided in case you want to change or regenerate
+the `configure' script, for example to use a newer version of `autoconf'.
+The `configure.ac' file is used by the `autoconf' program to create the
+`configure' script.
+
+Note for (key) developers:
+
+ In case you have changed the `configure.ac' file or one of the
+ `Makefile.am' files:
+
+ - Use the `config/distclean' script to remove the generated `configure'
+ script, the generated `aclocal.m4' file and the generated `Makefile.in'
+ files.
+
+ - Use the `config/bootstrap' script to generate the `configure' script
+ and the necessary `Makefile.in' files. This script makes use of the
+ GNU auto-tools `aclocal', `automake', and `autoconf'.
+
+
+Compilation and Linking Options
+===============================
+
+Some systems require compilation or linking options that the `configure'
+script does not define. You can define the initial values for these
+options by setting them in your environment before running the
+`configure' script.
+
+Instead of passing the variables via the environment, it is preferred
+to pass the values as options to the configure script:
+
+ > ../configure CXX=g++-4.4 LIBS=-lposix
+
+
+Specifying the System Type
+==========================
+
+Some features cannot be automatically determined by `configure' unless
+it can detect the host type on which the package will run.
+If it prints a message that it cannot determine the host type,
+use the `--host=TYPE' option to define it. TYPE can either be a
+short system name, such as `sun4', or a canonical name with three fields:
+
+ CPU-COMPANY-SYSTEM
+
+See the `config.sub' file for details about the values of each field. If
+the `config.sub' file is not included in the package, the package does not
+need to know the host type.
+
+If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system for which
+the code is produced and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+
+Sharing Defaults
+================
+
+You can set the default values that `configure' scripts share by
+creating a site shell script called `config.site'. This file contains the
+default values for variables like `CC', `cache_file', and `prefix'.
+The `configure' script looks for the `config.site' file in the following
+search precedence:
+
+ 1. PREFIX/share/config.site
+
+ 2. PREFIX/etc/config.site
+
+Alternatively, you can set the `CONFIG_SITE' environment variable to the
+site script path.
+
+Note: The `configure' script for some systems does not look for a site script.
+
+
+Operation Controls
+==================
+
+The `configure' script recognizes the following additional options to control
+its operation:
+
+`--cache-file=FILE'
+ Use and save the test results in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching
+ when debugging `configure'.
+
+`--help'
+ Print a summary of `configure' options and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages about checks being made.
+ To suppress all normal output, redirect it to `/dev/null'.
+ Error messages continue to print.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR.
+ Typically `configure' determines the directory automatically.
+
+`--version'
+ Print the version of `autoconf' used to generate the `configure'
+ script and exit.
+
+Other options that are rarely used are available in the `configure' script.
+Use the `--help' option to print a list.
+
+
+
+2. Installation Notes for Windows
+---------------------------------
+
+This release has been tested on Visual C++ versions 2005 through 2013,
+running on Windows 7.
+
+
+Note: This section covers the installation based on Microsoft Visual C++.
+ For Cygwin or MinGW-based installations, see Section 1.
+
+
+Note: If you experience spurious errors about missing files in the
+ downloaded archive, please make sure to either download the
+ ZIP archive from accellera.org or use a reliable archive software,
+ fully supporting modern tar archive versions.
+
+ Some paths in the SystemC archive are longer than the historical
+ 99 character limit, and several Windows archivers (e.g. WinZip)
+ have been reported to trip over this. The open source archiver
+ 7-zip (http://7-zip.org) is known to work.
+
+
+Microsoft Visual C++ 2005 (compiler version 8.0) or later
+---------------------------------------------------------
+
+The download directory contains two subdirectories: 'msvc80' and
+'examples'.
+
+The 'msvc80' directory contains the project and workspace files to
+compile the 'systemc.lib' library. Double-click on the 'SystemC.sln'
+file to launch Visual C++ 2005 with the workspace file. The workspace file
+will have the proper switches set to compile for Visual C++ 2005.
+Select `Build SystemC' under the Build menu or press F7 to build
+`systemc.lib'.
+
+The `examples' directory contains the project and workspace files to
+compile the SystemC examples. Go to one of the examples subdirectories
+and double-click on the .vcproj file to launch Visual C++ with the
+workspace file. The workspace file will have the proper switches set
+to compile for Visual C++ 2005. Select 'Build <example>.exe' under the
+Build menu or press F7 to build the example executable.
+
+For convenience, a combined solution file 'SystemC-examples.sln' with
+all example projects can be found in the 'msvc80' directory. A similar
+solution file for the TLM examples is located in 'examples/tlm/build-msvc'.
+
+The provided project files are prepared for both the 32-bit 'Win32' and
+64-bit 'x64' configurations. Please refer to the Microsoft Visual Studio
+documentation for details about 64-bit builds.
+
+
+Creating SystemC Applications
+-----------------------------
+
+1. Start Visual Studio. From the Start Page select New Project and Win32
+ Console Project. Type the project name and select a suitable location
+ then click OK.
+
+2. Select the Application Settings page of the Win32 Application Wizard
+ and make sure the 'Empty project' box is ticked. Click 'Finish' to
+ complete the wizard.
+
+3. Add new/existing C++ files to the project and edit code.
+
+4. Display the project Property Pages by selecting 'Properties...' from
+ the Project menu.
+
+5. From the C/C++ tab, select the General properties and set
+ 'Detect 64-bit Portability Issues' to No
+
+6. From the C/C++ tab, select the Language properties and set
+ 'Enable Run-Time Type Info' to Yes
+
+7. From the C/C++ tab, select the Command Line properties and add /vmg
+ to the 'Additional Options:' box.
+
+8. From the Linker tab, select the Input properties and type 'systemc.lib'
+ in the 'Additional Dependencies' box.
+
+9. Click OK
+
+
+Also make sure that the compiler and linker can find the SystemC header
+and library files respectively. There are two ways to do this:
+
+To update the include file and library directory search paths for all
+projects:
+
+1. Select Tools -> Options... and the Projects -> VC++ Directories tab
+
+2. Select show directories for: Library files
+
+3. Select the 'New' icon and browse to: C:\systemc-2.3.1\msvc80\systemc\debug
+
+4. Select show directories for: Include files
+
+5. Select the 'New' icon and browse to: C:\systemc-2.3.1\src
+
+To add the include file and library directory search paths for the current
+project only:
+
+1. Display the project Property Pages by selecting 'Properties...' from
+ the Project menu.
+
+2. From the C/C++ tab, select the General properties and type the path to the
+ SystemC 'src' directory in the text entry field labeled
+ 'Additional include directories' (e.g. the examples use '..\..\..\src').
+
+3. From the Linker tab, select the General properties and type the path to
+ the SystemC library: ...\systemc-2.3.1\msvc80\systemc\debug'systemc.lib'
+ in the 'Additional Library Directories:' box.
+
+9. Click OK
+
+
+
+
+3. SystemC Library Configuration Switches
+-----------------------------------------
+
+In addition to the explicitly selectable feature given as options to
+the `configure' script (see 1.), some aspects of the library
+implementation can be controlled via
+
+ - preprocessor switches given during library build
+ - preprocessor switches added while building a SystemC application
+ - environment variables
+
+The currently supported switches are documented in this section.
+
+Preprocessor switches
+=====================
+
+Additional preprocessor switches for the library build can be passed
+to the configure script via the CXXFLAGS variable:
+
+ ../configure CXXFLAGS="-DSC_OVERRIDE_DEFAULT_STACK_SIZE=0x80000"
+
+In Visual C++, the preprocessor symbols can be added to the project
+configuration via the 'C/C++' tab under the 'Preprocessor' properties
+in the 'Preprocessor definitions' setting.
+
+
+ * SC_DEFAULT_WRITER_POLICY=<sc_writer_policy> -
+ Override default value for the signal writer policy
+
+ This setting allows deactivating the multiple writer checks for
+ sc_signals at (application) compile time. This mechanism supersedes
+ the old environment variable SC_SIGNAL_WRITE_CHECK (see below).
+
+ Supported values:
+ SC_ONE_WRITER (default)
+ SC_MANY_WRITERS (allow multiple writers in different deltas)
+ SC_UNCHECKED_WRITERS (non-standard, disable all checks)
+
+ Note: Only effective when building an application.
+
+ Note: This setting needs to be consistently set across all
+ translation units of an application.
+
+
+ * SC_DISABLE_ASYNC_UPDATES -
+ Exclude the "async_request_update" support
+
+ Note: This option is usually set by the `configure` option
+ --disable-async-update, or
+ --enable-async-update=no
+
+ On non-Automake platforms (e.g. Visual C++), this preprocessor
+ symbol can be used to manually build the library with this feature.
+
+ Note: Only effective during library build.
+
+
+ * SC_DISABLE_VIRTUAL_BIND -
+ Keep the "bind" function of sc_ports non-virtual
+
+ When this symbol is defined, the "bind" function in sc_ports is
+ kept non-virtual (although it is required to be 'virtual' since
+ IEEE 1666-2011).
+
+ Note: This symbol needs to be consistently defined in the library
+ and any application linking against the built library.
+
+
+ * SC_DISABLE_COPYRIGHT_MESSAGE -
+ Do not print the copyright message when starting the application
+
+ Note: This does not remove the copyright from the binary.
+ sc_core::sc_copyright() still works as expected.
+ Note: Only effective during library build.
+ See : Environment variable SC_COPYRIGHT_MESSAGE
+
+
+ * SC_ENABLE_IMMEDIATE_SELF_NOTIFICATIONS -
+ Allow a process to trigger itself immediately
+
+ Allow a method process to trigger itself immediately by using
+ next_trigger( ev ); // or a static sensitivity
+ ev.notify();
+
+ This behaviour has been disabled by default in IEEE 1666-2011 and
+ can be reenabled by this option.
+
+ Note: Only effective during library build.
+
+
+ * SC_ENABLE_EARLY_MAXTIME_CREATION -
+ Allow creation of sc_time objects with a value of sc_max_time()
+ before finalizing the time resolution
+
+ In IEEE 1666-2011, it is not allowed to create sc_time objects with
+ a non-SC_ZERO_TIME value before setting/changing the time resolution.
+
+ This preprocessor switch activates an extension to allow the
+ initialization of sc_time variables with sc_max_time() while
+ still accepting changes to the time resolution afterwards.
+
+ sc_time t = sc_max_time();
+ sc_set_time_resolution( 1, SC_NS ); // OK, with this extension
+
+ The time resolution will still be fixed, once you have explicitly or
+ implicitly relied on the physical value (i.e. the relation to seconds)
+ of any sc_time object.
+
+ Note: Only effective during library build.
+
+
+ * SC_ENABLE_SIMULATION_PHASE_CALLBACKS (experimental)
+ SC_ENABLE_SIMULATION_PHASE_CALLBACKS_TRACING (experimental) -
+ Enable a generic simulation phase callback mechanism.
+
+ Note: This option is usually set by the `configure` option
+ --enable-phase-callbacks, or
+ --enable-phase-callbacks=tracing
+
+ See the RELEASENOTES for more information about this feature.
+
+ The *_TRACING variant of this flag enables the sc_trace
+ implementation use these callbacks, instead of hard-coded updates
+ from the main simulator loop.
+
+ Note: Setting tracing flag includes the generic phase callback
+ infrastructure automatically.
+ Note: Only effective during library build.
+
+
+ * SC_INCLUDE_DYNAMIC_PROCESSES -
+ Enable dynamic process support (sc_spawn, sc_bind)
+
+ To improve compilation times, the functions for spawing dynamic
+ processes are not included by default in an SystemC application.
+
+ Define this symbol before including the SystemC header in your
+ application, if you want to use dynamically spawned processes.
+
+ Note: Can be optionally set per translation unit in an application.
+
+ Note: Some TLM convenience sockets require this feature and define
+ the symbol for you if needed.
+
+
+ * SC_INCLUDE_FX -
+ Enable SystemC fix-point datatypes
+
+ To improve compilation times, the fixpoint datatypes are not enabled
+ by default in an SystemC application.
+
+ Define this symbol before including the SystemC header in your
+ application, if you want to use the SystemC fixpoint types.
+
+ Note: Is by default always defined during the library build to enable
+ later use of the fixpoint datatypes in an application.
+
+ Note: Can be optionally set per translation unit in an application.
+
+
+ * SC_INCLUDE_STRSTREAM -
+ Include (deprecated) <strstream> header from <systemc.h>
+
+ Pre-standard C++ compilers had support for an old stringstream
+ implementation called 'strstream'. In the unlikely case that your
+ application still relies on this deprecated class and that <systemc.h>
+ includes this header for you automatically, you now need to define this
+ symbol when building your application.
+
+ Note: Only effective when building an application.
+
+
+ * SC_INCLUDE_WINDOWS_H -
+ Explicitly include <windows.h> header from <systemc> header
+
+ Previous versions of SystemC always included the full <windows.h>
+ header on all Windows platforms. This adds unnecessary bloat to
+ many SystemC applications, reducing compilation times.
+
+ If you rely on the inclusion of the <windows.h> header in your
+ application, you can add this symbol to the list of preprocessor
+ switches for your compiler.
+
+ Note: Only effective when building an application.
+
+
+ * SC_OVERRIDE_DEFAULT_STACK_SIZE=<size> -
+ Define the default stack size used for SystemC (thread) processes
+
+ Note: Only effective during library build.
+
+
+ * SC_USE_SC_STRING_OLD / SC_USE_STD_STRING -
+ Define 'sc_string' symbol.
+
+ Pre-IEEE-1666 versions of SystemC included an 'sc_string' class for
+ string objects. This class has been superseeded by 'std::string' these
+ days.
+
+ If your application still relies on 'sc_string' being available, set one
+ of the two supported preprocessor switches to provide it:
+
+ SC_USE_SC_STRING_OLD -
+ Uses old implementation `sc_string_old' to provide `sc_string':
+ typedef sc_string_old sc_string;
+
+ SC_USE_STD_STRING -
+ Provide `sc_string' as an alias to `std::string':
+ typedef std::string sc_string;
+
+
+Influential environment variables
+=================================
+
+Currently, three environment variables are checked at library load time
+and influence the SystemC library's behaviour:
+
+ 1) SC_COPYRIGHT_MESSAGE=DISABLE -
+ Run-time alternative to SC_DISABLE_COPYRIGHT_MESSAGE (see above).
+
+ 2) SC_SIGNAL_WRITE_CHECK=DISABLE
+ Run-time alternative to SC_DEFAULT_WRITER_POLICY=SC_UNCHECKED_WRITERS
+ (see above)
+
+ 3) SC_DEPRECATION_WARNINGS=DISABLE
+ Do not issue warnings about using deprecated features as of
+ IEEE 1666-2011.
+
+Usually, it is not recommended to use any of these variables in new or
+on-going projects. They have been added to simplify the transition of
+legacy code.
+
+
+// Taf!