Matthias Jung | aa651c7 | 2017-03-01 18:39:56 +0100 | [diff] [blame] | 1 | INSTALL NOTES FOR SystemC Release 2.3 |
| 2 | ------------------------------------- |
| 3 | |
| 4 | Contents: |
| 5 | |
| 6 | 1. Installation Notes for Unix |
| 7 | |
| 8 | 2. Installation Notes for Windows |
| 9 | |
| 10 | 3. SystemC Library Configuration Switches |
| 11 | |
| 12 | |
| 13 | 1. Installation Notes for Unix |
| 14 | ------------------------------ |
| 15 | |
| 16 | |
| 17 | System Requirements |
| 18 | =================== |
| 19 | |
| 20 | SystemC can be installed on the following UNIX, or UNIX-like platforms: |
| 21 | |
| 22 | o Linux |
| 23 | * Architectures |
| 24 | - x86 (32-bit) |
| 25 | - x86_64 (64-bit) |
| 26 | - x86 (32-bit) application running on x86_64 (64-bit) kernel |
| 27 | (../configure --host=i686-linux-gnu) |
| 28 | * Compilers |
| 29 | - GNU C++ compiler |
| 30 | - Clang C++ compiler |
| 31 | - or compatible |
| 32 | |
| 33 | o Mac OS X |
| 34 | * Architectures |
| 35 | - x86 (32-bit) |
| 36 | - x86_64 (64-bit) |
| 37 | - powerpc (32-bit) [deprecated] |
| 38 | - powerpc64 (64-bit) [deprecated] |
| 39 | * Compilers |
| 40 | - GNU C++ compiler |
| 41 | - Clang C++ compiler |
| 42 | - or compatible |
| 43 | |
| 44 | o Solaris |
| 45 | * Architectures |
| 46 | - SPARC (32-bit) |
| 47 | * Compilers |
| 48 | - GNU C++ compiler |
| 49 | - Sun/Solaris Studio |
| 50 | |
| 51 | o BSD |
| 52 | * Architectures |
| 53 | - x86 (32-bit) |
| 54 | - x86_64 (64-bit) |
| 55 | * Compilers |
| 56 | - GNU C++ compiler |
| 57 | - Clang C++ compiler |
| 58 | - or compatible |
| 59 | |
| 60 | o Windows |
| 61 | * Compatibility layer |
| 62 | - Cygwin |
| 63 | - MinGW / MSYS |
| 64 | * Architectures |
| 65 | - x86 (32-bit) |
| 66 | - x86_64 (64-bit) |
| 67 | * Compilers |
| 68 | - GNU C++ compiler |
| 69 | - or compatible |
| 70 | |
| 71 | Note: Not all combinations are equally well-tested and some combinations |
| 72 | may not work as expected. Please report your findings by following |
| 73 | the instructions in the README file. |
| 74 | |
| 75 | The README file contains a list of detailed platforms, architectures, |
| 76 | and compiler versions that have been used for testing this release. |
| 77 | |
| 78 | |
| 79 | Sources for Compilers and Related Tools |
| 80 | ======================================= |
| 81 | |
| 82 | To build, install, and use SystemC on UNIX platforms, you need |
| 83 | the following tools: |
| 84 | |
| 85 | 1. GNU C++ compiler, version 3.4 or later |
| 86 | or |
| 87 | Clang C++ compiler version 3.0 or later |
| 88 | |
| 89 | 2. GNU Make (gmake) |
| 90 | |
| 91 | GCC, Clang, and gmake are free software that you can |
| 92 | obtain from the following sources: |
| 93 | |
| 94 | GCC http://www.gnu.org/software/gcc/gcc.html |
| 95 | |
| 96 | Clang http://clang.llvm.org/ |
| 97 | |
| 98 | gmake http://www.gnu.org/software/make/make.html |
| 99 | |
| 100 | |
| 101 | Basic SystemC Installation |
| 102 | ========================== |
| 103 | |
| 104 | To install SystemC on a UNIX system, do the following steps: |
| 105 | |
| 106 | 1. Change to the top level directory (systemc-2.3.1) |
| 107 | |
| 108 | 2. Create a temporary directory, e.g., |
| 109 | |
| 110 | > mkdir objdir |
| 111 | |
| 112 | 3. Change to the temporary directory, e.g., |
| 113 | |
| 114 | > cd objdir |
| 115 | |
| 116 | 4. Choose your compiler by setting the CXX environment variable |
| 117 | (the configure script tries to guess the default compiler, if |
| 118 | this step is omitted): |
| 119 | |
| 120 | If you use a POSIX-compatible shell (e.g. bash): |
| 121 | |
| 122 | > export CXX="<compiler>" |
| 123 | |
| 124 | e.g. for GCC compilers |
| 125 | |
| 126 | > export CXX=g++ |
| 127 | |
| 128 | The Clang compiler is usually named 'clang++', thus e.g. |
| 129 | |
| 130 | > export CXX=clang++ |
| 131 | |
| 132 | When using a C shell (e.g. csh/tcsh), the syntax to set the |
| 133 | environment variable is different: |
| 134 | |
| 135 | > setenv CXX g++ |
| 136 | |
| 137 | For the Sun/Solaris Studio compilers, use |
| 138 | |
| 139 | > setenv CXX CC |
| 140 | |
| 141 | You can also specify an absolute path to the compiler of your choice. |
| 142 | |
| 143 | See also the Section "Compilation and Linking Options" below. |
| 144 | |
| 145 | |
| 146 | 5. Configure the package for your system, e.g., |
| 147 | (The configure script is explained below.) |
| 148 | |
| 149 | > ../configure |
| 150 | |
| 151 | While the 'configure' script is running, which takes a few moments, |
| 152 | it prints messages to inform you of the features it is checking. |
| 153 | It also detects the platform. |
| 154 | |
| 155 | Note for System V users: |
| 156 | If you are using `csh' on an older version of System V, you might |
| 157 | need to use the `sh ../configure' command instead of '../configure'. |
| 158 | Otherwise, `csh' will attempt to `configure' itself. |
| 159 | |
| 160 | SystemC 2.3 includes a fixed-point package that is always built. |
| 161 | When compiling your applications with fixed-point types, you still have |
| 162 | to use compiler flag -DSC_INCLUDE_FX. Note that compile times increase |
| 163 | significantly when using this compiler flag. |
| 164 | |
| 165 | In case you want to install the package in another place than the |
| 166 | top level directory (systemc-2.3.1), configure the package e.g. as |
| 167 | follows: |
| 168 | |
| 169 | > ../configure --prefix=/usr/local/systemc-2.3.1 |
| 170 | |
| 171 | Note: make sure you have created the target directory before installing |
| 172 | the package. Do _not_ use /usr/local as a prefix, unless you |
| 173 | follow the Unix/FHS directory layouts (see below). |
| 174 | |
| 175 | A fine grained configuration of the installation directories can |
| 176 | be achieved via additional options, given to the configure script. |
| 177 | |
| 178 | By default, the files are installed directly to the PREFIX directory |
| 179 | root and the library is installed to PREFIX/lib-<TARGETARCH>, |
| 180 | depending on the current target architecture. This may be undesired |
| 181 | in cases where the package is meant to be installed in a system-wide |
| 182 | location as part of shared (default) library and include hierarchies |
| 183 | (e.g. /usr/local, /usr, /opt, ...). To follow the Unix/FHS directory |
| 184 | standards, you can use the following options: |
| 185 | |
| 186 | --with-unix-layout use Unix directory layout for installation |
| 187 | [default=no] |
| 188 | when "yes", the following (fine-grained) settings will be used: |
| 189 | |
| 190 | --includedir=DIR C++ header files [PREFIX/include] |
| 191 | --libdir=DIR object code libraries [EPREFIX/lib] |
| 192 | --docdir=DIR documentation root [DATAROOTDIR/doc/systemc] |
| 193 | |
| 194 | The library destination itself can be further and separately configured |
| 195 | by using the following option: |
| 196 | |
| 197 | --with-arch-suffix add suffix to library installation directory |
| 198 | [default=-<TARGETARCH>] |
| 199 | |
| 200 | With this option, one can easily follow e.g. the "multi-arch" |
| 201 | conventions on some platforms: |
| 202 | |
| 203 | ../configure --with-arch-suffix=32 # lib32 |
| 204 | ../configure --with-arch-suffix=/x86_64-linux-gnu # lib/x86_64-linux-gnu |
| 205 | |
| 206 | |
| 207 | |
| 208 | Several options are available to the configure script to modify |
| 209 | the compiler configuration and the selection of certain features: |
| 210 | |
| 211 | --disable-shared do not build shared library (libsystemc.so) |
| 212 | --enable-debug include debugging symbols |
| 213 | --disable-optimize disable compiler optimization |
| 214 | --disable-async-updates disable request_async_update support |
| 215 | --enable-pthreads use POSIX threads for SystemC processes |
| 216 | --enable-phase-callbacks |
| 217 | enable simulation phase callbacks (experimental) |
| 218 | |
| 219 | |
| 220 | See the section on the general usage of the configure script and |
| 221 | "../configure --help" for more information. |
| 222 | |
| 223 | Note: If you change the configuration after having compiled the |
| 224 | package already, you should run a "gmake clean" before |
| 225 | recompiling. |
| 226 | |
| 227 | 6. Compile the package. |
| 228 | |
| 229 | > gmake |
| 230 | |
| 231 | Note: The explicit gmake targets "opt" and "debug", etc. have |
| 232 | been removed in this package. Use the corresponding |
| 233 | options to the configure script instead. |
| 234 | |
| 235 | 7. At this point you may wish to verify the compiled package by |
| 236 | testing the example suite. |
| 237 | |
| 238 | > gmake check |
| 239 | |
| 240 | This will compile and run the examples in the subdirectory |
| 241 | examples. |
| 242 | |
| 243 | 8. Install the package. |
| 244 | |
| 245 | > gmake install |
| 246 | |
| 247 | 9. You can now remove the temporary directory, .e.g, |
| 248 | |
| 249 | > cd .. |
| 250 | > rm -rf objdir |
| 251 | |
| 252 | Alternatively, you can keep the temporary directory to allow you to: |
| 253 | |
| 254 | a) Experiment with the examples. |
| 255 | |
| 256 | b) Later uninstall the package. To clean up the temporary |
| 257 | directory, enter: |
| 258 | |
| 259 | > gmake clean |
| 260 | |
| 261 | To uninstall the package, enter: |
| 262 | |
| 263 | > gmake uninstall |
| 264 | |
| 265 | |
| 266 | Running the Examples |
| 267 | ==================== |
| 268 | |
| 269 | Copies of the examples reside in the temporary directory - see |
| 270 | instruction 7 above for details on building and running them. |
| 271 | |
| 272 | In addition, a copy of the example code resides in the directory |
| 273 | examples at the highest level of the installation (or in the |
| 274 | shared documentation install directory). |
| 275 | |
| 276 | Use the makefiles provided in the 'examples' directory as templates |
| 277 | for makefiles you need for compiling your own examples. |
| 278 | |
| 279 | |
| 280 | Using the Configure Script |
| 281 | ========================== |
| 282 | |
| 283 | The `configure' shell script tries to determine the correct values for |
| 284 | various system-dependent variables used during compilation. It uses |
| 285 | these values to create a `Makefile' in each directory of the package. |
| 286 | It also creates one or more `.h' files containing system-dependent |
| 287 | definitions if needed. Then, it creates the following files: |
| 288 | |
| 289 | config.status A shell script that you can run at another time to |
| 290 | recreate the current configuration. |
| 291 | |
| 292 | config.cache A file in which the configure test results are |
| 293 | saved to speed up reconfiguration. |
| 294 | |
| 295 | Data is appended to the config.cache file. |
| 296 | You can remove unwanted data. |
| 297 | |
| 298 | config.log A file in which compiler output is saved. |
| 299 | This is used to debug the configure script. |
| 300 | |
| 301 | If you need to use other commands to successfully compile the package |
| 302 | on your system, please try to determine if the configure script can be used |
| 303 | for these commands. Then, send either a diff file or instructions about |
| 304 | the commands you used to the email address provided in the README file. |
| 305 | This information will be used to improve the installation process in |
| 306 | the next release. |
| 307 | |
| 308 | The `configure.ac' file is provided in case you want to change or regenerate |
| 309 | the `configure' script, for example to use a newer version of `autoconf'. |
| 310 | The `configure.ac' file is used by the `autoconf' program to create the |
| 311 | `configure' script. |
| 312 | |
| 313 | Note for (key) developers: |
| 314 | |
| 315 | In case you have changed the `configure.ac' file or one of the |
| 316 | `Makefile.am' files: |
| 317 | |
| 318 | - Use the `config/distclean' script to remove the generated `configure' |
| 319 | script, the generated `aclocal.m4' file and the generated `Makefile.in' |
| 320 | files. |
| 321 | |
| 322 | - Use the `config/bootstrap' script to generate the `configure' script |
| 323 | and the necessary `Makefile.in' files. This script makes use of the |
| 324 | GNU auto-tools `aclocal', `automake', and `autoconf'. |
| 325 | |
| 326 | |
| 327 | Compilation and Linking Options |
| 328 | =============================== |
| 329 | |
| 330 | Some systems require compilation or linking options that the `configure' |
| 331 | script does not define. You can define the initial values for these |
| 332 | options by setting them in your environment before running the |
| 333 | `configure' script. |
| 334 | |
| 335 | Instead of passing the variables via the environment, it is preferred |
| 336 | to pass the values as options to the configure script: |
| 337 | |
| 338 | > ../configure CXX=g++-4.4 LIBS=-lposix |
| 339 | |
| 340 | |
| 341 | Specifying the System Type |
| 342 | ========================== |
| 343 | |
| 344 | Some features cannot be automatically determined by `configure' unless |
| 345 | it can detect the host type on which the package will run. |
| 346 | If it prints a message that it cannot determine the host type, |
| 347 | use the `--host=TYPE' option to define it. TYPE can either be a |
| 348 | short system name, such as `sun4', or a canonical name with three fields: |
| 349 | |
| 350 | CPU-COMPANY-SYSTEM |
| 351 | |
| 352 | See the `config.sub' file for details about the values of each field. If |
| 353 | the `config.sub' file is not included in the package, the package does not |
| 354 | need to know the host type. |
| 355 | |
| 356 | If you are building compiler tools for cross-compiling, you can also |
| 357 | use the `--target=TYPE' option to select the type of system for which |
| 358 | the code is produced and the `--build=TYPE' option to select the type of |
| 359 | system on which you are compiling the package. |
| 360 | |
| 361 | |
| 362 | Sharing Defaults |
| 363 | ================ |
| 364 | |
| 365 | You can set the default values that `configure' scripts share by |
| 366 | creating a site shell script called `config.site'. This file contains the |
| 367 | default values for variables like `CC', `cache_file', and `prefix'. |
| 368 | The `configure' script looks for the `config.site' file in the following |
| 369 | search precedence: |
| 370 | |
| 371 | 1. PREFIX/share/config.site |
| 372 | |
| 373 | 2. PREFIX/etc/config.site |
| 374 | |
| 375 | Alternatively, you can set the `CONFIG_SITE' environment variable to the |
| 376 | site script path. |
| 377 | |
| 378 | Note: The `configure' script for some systems does not look for a site script. |
| 379 | |
| 380 | |
| 381 | Operation Controls |
| 382 | ================== |
| 383 | |
| 384 | The `configure' script recognizes the following additional options to control |
| 385 | its operation: |
| 386 | |
| 387 | `--cache-file=FILE' |
| 388 | Use and save the test results in FILE instead of |
| 389 | `./config.cache'. Set FILE to `/dev/null' to disable caching |
| 390 | when debugging `configure'. |
| 391 | |
| 392 | `--help' |
| 393 | Print a summary of `configure' options and exit. |
| 394 | |
| 395 | `--quiet' |
| 396 | `--silent' |
| 397 | `-q' |
| 398 | Do not print messages about checks being made. |
| 399 | To suppress all normal output, redirect it to `/dev/null'. |
| 400 | Error messages continue to print. |
| 401 | |
| 402 | `--srcdir=DIR' |
| 403 | Look for the package's source code in directory DIR. |
| 404 | Typically `configure' determines the directory automatically. |
| 405 | |
| 406 | `--version' |
| 407 | Print the version of `autoconf' used to generate the `configure' |
| 408 | script and exit. |
| 409 | |
| 410 | Other options that are rarely used are available in the `configure' script. |
| 411 | Use the `--help' option to print a list. |
| 412 | |
| 413 | |
| 414 | |
| 415 | 2. Installation Notes for Windows |
| 416 | --------------------------------- |
| 417 | |
| 418 | This release has been tested on Visual C++ versions 2005 through 2013, |
| 419 | running on Windows 7. |
| 420 | |
| 421 | |
| 422 | Note: This section covers the installation based on Microsoft Visual C++. |
| 423 | For Cygwin or MinGW-based installations, see Section 1. |
| 424 | |
| 425 | |
| 426 | Note: If you experience spurious errors about missing files in the |
| 427 | downloaded archive, please make sure to either download the |
| 428 | ZIP archive from accellera.org or use a reliable archive software, |
| 429 | fully supporting modern tar archive versions. |
| 430 | |
| 431 | Some paths in the SystemC archive are longer than the historical |
| 432 | 99 character limit, and several Windows archivers (e.g. WinZip) |
| 433 | have been reported to trip over this. The open source archiver |
| 434 | 7-zip (http://7-zip.org) is known to work. |
| 435 | |
| 436 | |
| 437 | Microsoft Visual C++ 2005 (compiler version 8.0) or later |
| 438 | --------------------------------------------------------- |
| 439 | |
| 440 | The download directory contains two subdirectories: 'msvc80' and |
| 441 | 'examples'. |
| 442 | |
| 443 | The 'msvc80' directory contains the project and workspace files to |
| 444 | compile the 'systemc.lib' library. Double-click on the 'SystemC.sln' |
| 445 | file to launch Visual C++ 2005 with the workspace file. The workspace file |
| 446 | will have the proper switches set to compile for Visual C++ 2005. |
| 447 | Select `Build SystemC' under the Build menu or press F7 to build |
| 448 | `systemc.lib'. |
| 449 | |
| 450 | The `examples' directory contains the project and workspace files to |
| 451 | compile the SystemC examples. Go to one of the examples subdirectories |
| 452 | and double-click on the .vcproj file to launch Visual C++ with the |
| 453 | workspace file. The workspace file will have the proper switches set |
| 454 | to compile for Visual C++ 2005. Select 'Build <example>.exe' under the |
| 455 | Build menu or press F7 to build the example executable. |
| 456 | |
| 457 | For convenience, a combined solution file 'SystemC-examples.sln' with |
| 458 | all example projects can be found in the 'msvc80' directory. A similar |
| 459 | solution file for the TLM examples is located in 'examples/tlm/build-msvc'. |
| 460 | |
| 461 | The provided project files are prepared for both the 32-bit 'Win32' and |
| 462 | 64-bit 'x64' configurations. Please refer to the Microsoft Visual Studio |
| 463 | documentation for details about 64-bit builds. |
| 464 | |
| 465 | |
| 466 | Creating SystemC Applications |
| 467 | ----------------------------- |
| 468 | |
| 469 | 1. Start Visual Studio. From the Start Page select New Project and Win32 |
| 470 | Console Project. Type the project name and select a suitable location |
| 471 | then click OK. |
| 472 | |
| 473 | 2. Select the Application Settings page of the Win32 Application Wizard |
| 474 | and make sure the 'Empty project' box is ticked. Click 'Finish' to |
| 475 | complete the wizard. |
| 476 | |
| 477 | 3. Add new/existing C++ files to the project and edit code. |
| 478 | |
| 479 | 4. Display the project Property Pages by selecting 'Properties...' from |
| 480 | the Project menu. |
| 481 | |
| 482 | 5. From the C/C++ tab, select the General properties and set |
| 483 | 'Detect 64-bit Portability Issues' to No |
| 484 | |
| 485 | 6. From the C/C++ tab, select the Language properties and set |
| 486 | 'Enable Run-Time Type Info' to Yes |
| 487 | |
| 488 | 7. From the C/C++ tab, select the Command Line properties and add /vmg |
| 489 | to the 'Additional Options:' box. |
| 490 | |
| 491 | 8. From the Linker tab, select the Input properties and type 'systemc.lib' |
| 492 | in the 'Additional Dependencies' box. |
| 493 | |
| 494 | 9. Click OK |
| 495 | |
| 496 | |
| 497 | Also make sure that the compiler and linker can find the SystemC header |
| 498 | and library files respectively. There are two ways to do this: |
| 499 | |
| 500 | To update the include file and library directory search paths for all |
| 501 | projects: |
| 502 | |
| 503 | 1. Select Tools -> Options... and the Projects -> VC++ Directories tab |
| 504 | |
| 505 | 2. Select show directories for: Library files |
| 506 | |
| 507 | 3. Select the 'New' icon and browse to: C:\systemc-2.3.1\msvc80\systemc\debug |
| 508 | |
| 509 | 4. Select show directories for: Include files |
| 510 | |
| 511 | 5. Select the 'New' icon and browse to: C:\systemc-2.3.1\src |
| 512 | |
| 513 | To add the include file and library directory search paths for the current |
| 514 | project only: |
| 515 | |
| 516 | 1. Display the project Property Pages by selecting 'Properties...' from |
| 517 | the Project menu. |
| 518 | |
| 519 | 2. From the C/C++ tab, select the General properties and type the path to the |
| 520 | SystemC 'src' directory in the text entry field labeled |
| 521 | 'Additional include directories' (e.g. the examples use '..\..\..\src'). |
| 522 | |
| 523 | 3. From the Linker tab, select the General properties and type the path to |
| 524 | the SystemC library: ...\systemc-2.3.1\msvc80\systemc\debug'systemc.lib' |
| 525 | in the 'Additional Library Directories:' box. |
| 526 | |
| 527 | 9. Click OK |
| 528 | |
| 529 | |
| 530 | |
| 531 | |
| 532 | 3. SystemC Library Configuration Switches |
| 533 | ----------------------------------------- |
| 534 | |
| 535 | In addition to the explicitly selectable feature given as options to |
| 536 | the `configure' script (see 1.), some aspects of the library |
| 537 | implementation can be controlled via |
| 538 | |
| 539 | - preprocessor switches given during library build |
| 540 | - preprocessor switches added while building a SystemC application |
| 541 | - environment variables |
| 542 | |
| 543 | The currently supported switches are documented in this section. |
| 544 | |
| 545 | Preprocessor switches |
| 546 | ===================== |
| 547 | |
| 548 | Additional preprocessor switches for the library build can be passed |
| 549 | to the configure script via the CXXFLAGS variable: |
| 550 | |
| 551 | ../configure CXXFLAGS="-DSC_OVERRIDE_DEFAULT_STACK_SIZE=0x80000" |
| 552 | |
| 553 | In Visual C++, the preprocessor symbols can be added to the project |
| 554 | configuration via the 'C/C++' tab under the 'Preprocessor' properties |
| 555 | in the 'Preprocessor definitions' setting. |
| 556 | |
| 557 | |
| 558 | * SC_DEFAULT_WRITER_POLICY=<sc_writer_policy> - |
| 559 | Override default value for the signal writer policy |
| 560 | |
| 561 | This setting allows deactivating the multiple writer checks for |
| 562 | sc_signals at (application) compile time. This mechanism supersedes |
| 563 | the old environment variable SC_SIGNAL_WRITE_CHECK (see below). |
| 564 | |
| 565 | Supported values: |
| 566 | SC_ONE_WRITER (default) |
| 567 | SC_MANY_WRITERS (allow multiple writers in different deltas) |
| 568 | SC_UNCHECKED_WRITERS (non-standard, disable all checks) |
| 569 | |
| 570 | Note: Only effective when building an application. |
| 571 | |
| 572 | Note: This setting needs to be consistently set across all |
| 573 | translation units of an application. |
| 574 | |
| 575 | |
| 576 | * SC_DISABLE_ASYNC_UPDATES - |
| 577 | Exclude the "async_request_update" support |
| 578 | |
| 579 | Note: This option is usually set by the `configure` option |
| 580 | --disable-async-update, or |
| 581 | --enable-async-update=no |
| 582 | |
| 583 | On non-Automake platforms (e.g. Visual C++), this preprocessor |
| 584 | symbol can be used to manually build the library with this feature. |
| 585 | |
| 586 | Note: Only effective during library build. |
| 587 | |
| 588 | |
| 589 | * SC_DISABLE_VIRTUAL_BIND - |
| 590 | Keep the "bind" function of sc_ports non-virtual |
| 591 | |
| 592 | When this symbol is defined, the "bind" function in sc_ports is |
| 593 | kept non-virtual (although it is required to be 'virtual' since |
| 594 | IEEE 1666-2011). |
| 595 | |
| 596 | Note: This symbol needs to be consistently defined in the library |
| 597 | and any application linking against the built library. |
| 598 | |
| 599 | |
| 600 | * SC_DISABLE_COPYRIGHT_MESSAGE - |
| 601 | Do not print the copyright message when starting the application |
| 602 | |
| 603 | Note: This does not remove the copyright from the binary. |
| 604 | sc_core::sc_copyright() still works as expected. |
| 605 | Note: Only effective during library build. |
| 606 | See : Environment variable SC_COPYRIGHT_MESSAGE |
| 607 | |
| 608 | |
| 609 | * SC_ENABLE_IMMEDIATE_SELF_NOTIFICATIONS - |
| 610 | Allow a process to trigger itself immediately |
| 611 | |
| 612 | Allow a method process to trigger itself immediately by using |
| 613 | next_trigger( ev ); // or a static sensitivity |
| 614 | ev.notify(); |
| 615 | |
| 616 | This behaviour has been disabled by default in IEEE 1666-2011 and |
| 617 | can be reenabled by this option. |
| 618 | |
| 619 | Note: Only effective during library build. |
| 620 | |
| 621 | |
| 622 | * SC_ENABLE_EARLY_MAXTIME_CREATION - |
| 623 | Allow creation of sc_time objects with a value of sc_max_time() |
| 624 | before finalizing the time resolution |
| 625 | |
| 626 | In IEEE 1666-2011, it is not allowed to create sc_time objects with |
| 627 | a non-SC_ZERO_TIME value before setting/changing the time resolution. |
| 628 | |
| 629 | This preprocessor switch activates an extension to allow the |
| 630 | initialization of sc_time variables with sc_max_time() while |
| 631 | still accepting changes to the time resolution afterwards. |
| 632 | |
| 633 | sc_time t = sc_max_time(); |
| 634 | sc_set_time_resolution( 1, SC_NS ); // OK, with this extension |
| 635 | |
| 636 | The time resolution will still be fixed, once you have explicitly or |
| 637 | implicitly relied on the physical value (i.e. the relation to seconds) |
| 638 | of any sc_time object. |
| 639 | |
| 640 | Note: Only effective during library build. |
| 641 | |
| 642 | |
| 643 | * SC_ENABLE_SIMULATION_PHASE_CALLBACKS (experimental) |
| 644 | SC_ENABLE_SIMULATION_PHASE_CALLBACKS_TRACING (experimental) - |
| 645 | Enable a generic simulation phase callback mechanism. |
| 646 | |
| 647 | Note: This option is usually set by the `configure` option |
| 648 | --enable-phase-callbacks, or |
| 649 | --enable-phase-callbacks=tracing |
| 650 | |
| 651 | See the RELEASENOTES for more information about this feature. |
| 652 | |
| 653 | The *_TRACING variant of this flag enables the sc_trace |
| 654 | implementation use these callbacks, instead of hard-coded updates |
| 655 | from the main simulator loop. |
| 656 | |
| 657 | Note: Setting tracing flag includes the generic phase callback |
| 658 | infrastructure automatically. |
| 659 | Note: Only effective during library build. |
| 660 | |
| 661 | |
| 662 | * SC_INCLUDE_DYNAMIC_PROCESSES - |
| 663 | Enable dynamic process support (sc_spawn, sc_bind) |
| 664 | |
| 665 | To improve compilation times, the functions for spawing dynamic |
| 666 | processes are not included by default in an SystemC application. |
| 667 | |
| 668 | Define this symbol before including the SystemC header in your |
| 669 | application, if you want to use dynamically spawned processes. |
| 670 | |
| 671 | Note: Can be optionally set per translation unit in an application. |
| 672 | |
| 673 | Note: Some TLM convenience sockets require this feature and define |
| 674 | the symbol for you if needed. |
| 675 | |
| 676 | |
| 677 | * SC_INCLUDE_FX - |
| 678 | Enable SystemC fix-point datatypes |
| 679 | |
| 680 | To improve compilation times, the fixpoint datatypes are not enabled |
| 681 | by default in an SystemC application. |
| 682 | |
| 683 | Define this symbol before including the SystemC header in your |
| 684 | application, if you want to use the SystemC fixpoint types. |
| 685 | |
| 686 | Note: Is by default always defined during the library build to enable |
| 687 | later use of the fixpoint datatypes in an application. |
| 688 | |
| 689 | Note: Can be optionally set per translation unit in an application. |
| 690 | |
| 691 | |
| 692 | * SC_INCLUDE_STRSTREAM - |
| 693 | Include (deprecated) <strstream> header from <systemc.h> |
| 694 | |
| 695 | Pre-standard C++ compilers had support for an old stringstream |
| 696 | implementation called 'strstream'. In the unlikely case that your |
| 697 | application still relies on this deprecated class and that <systemc.h> |
| 698 | includes this header for you automatically, you now need to define this |
| 699 | symbol when building your application. |
| 700 | |
| 701 | Note: Only effective when building an application. |
| 702 | |
| 703 | |
| 704 | * SC_INCLUDE_WINDOWS_H - |
| 705 | Explicitly include <windows.h> header from <systemc> header |
| 706 | |
| 707 | Previous versions of SystemC always included the full <windows.h> |
| 708 | header on all Windows platforms. This adds unnecessary bloat to |
| 709 | many SystemC applications, reducing compilation times. |
| 710 | |
| 711 | If you rely on the inclusion of the <windows.h> header in your |
| 712 | application, you can add this symbol to the list of preprocessor |
| 713 | switches for your compiler. |
| 714 | |
| 715 | Note: Only effective when building an application. |
| 716 | |
| 717 | |
| 718 | * SC_OVERRIDE_DEFAULT_STACK_SIZE=<size> - |
| 719 | Define the default stack size used for SystemC (thread) processes |
| 720 | |
| 721 | Note: Only effective during library build. |
| 722 | |
| 723 | |
| 724 | * SC_USE_SC_STRING_OLD / SC_USE_STD_STRING - |
| 725 | Define 'sc_string' symbol. |
| 726 | |
| 727 | Pre-IEEE-1666 versions of SystemC included an 'sc_string' class for |
| 728 | string objects. This class has been superseeded by 'std::string' these |
| 729 | days. |
| 730 | |
| 731 | If your application still relies on 'sc_string' being available, set one |
| 732 | of the two supported preprocessor switches to provide it: |
| 733 | |
| 734 | SC_USE_SC_STRING_OLD - |
| 735 | Uses old implementation `sc_string_old' to provide `sc_string': |
| 736 | typedef sc_string_old sc_string; |
| 737 | |
| 738 | SC_USE_STD_STRING - |
| 739 | Provide `sc_string' as an alias to `std::string': |
| 740 | typedef std::string sc_string; |
| 741 | |
| 742 | |
| 743 | Influential environment variables |
| 744 | ================================= |
| 745 | |
| 746 | Currently, three environment variables are checked at library load time |
| 747 | and influence the SystemC library's behaviour: |
| 748 | |
| 749 | 1) SC_COPYRIGHT_MESSAGE=DISABLE - |
| 750 | Run-time alternative to SC_DISABLE_COPYRIGHT_MESSAGE (see above). |
| 751 | |
| 752 | 2) SC_SIGNAL_WRITE_CHECK=DISABLE |
| 753 | Run-time alternative to SC_DEFAULT_WRITER_POLICY=SC_UNCHECKED_WRITERS |
| 754 | (see above) |
| 755 | |
| 756 | 3) SC_DEPRECATION_WARNINGS=DISABLE |
| 757 | Do not issue warnings about using deprecated features as of |
| 758 | IEEE 1666-2011. |
| 759 | |
| 760 | Usually, it is not recommended to use any of these variables in new or |
| 761 | on-going projects. They have been added to simplify the transition of |
| 762 | legacy code. |
| 763 | |
| 764 | |
| 765 | // Taf! |