What systems has SENSE 3.0 been tested on?
Why does SENSE require lex and yacc?
How is the make system organized?
How do I change the make system to use a replacement for gcc/lex/yacc?
How do I specify a compile or link flag in the make system?
Where is there a description of the SSR/SHR simulator?
Where is there a description of the SSR/SHR analysis utilities?
Where is there a description of the SSR/SHR configuration file?
The main development was performed on a Linux system with gcc v4.0.2.
Mac OS X:
Windows XP:
Others?
The SSR/SHR simulation uses lex and yacc in two ways. First, to parse the configuration file that defines the topology matrix. (The configuration file is described here.) Second, SSR/SHR may be instructed to write a stats file which is then parsed by the analysis utilities, which are described here. While the other simulations do not use a configuration file, the make system links them against the configuration file library.
The make system is a combination of two different methodologies, type A and type B. (I know this is bad, but the cxx utility will not automatically generate dependencies.) Both types get compile flags and optimization flags from definitions.mk and optimizations.mk respectively. These files are located in the top directory.
Type A: The directories analyzer and libraries use the type A make system. The type A make system use several include files in addition to those mentioned above.
basicDefinitions.mk: This file is located in the directory sense-3.0.1/misc. It defines global definitions, such as the compile command. You will need to changed these definitions if your system uses different commands.
basicRules.mk: This file is located in the directory sense-3.0.1/misc. It defines the rules to build the targets. It is unlikely that you will need to modify this file.
projectDefinitions.mk: This file is located in the directory sense-3.0.1/<foo>/misc. It identifies the libraries that will be built, or optionally, used. It is unlikely that you will need to modify this file.
The Makefile contained in each src directory defines the targets (executables) and object files to be built by that directory. These are listed at the top of the file by programming language (C, C++ or Objective C) and exclude the filename extension. If a new source file needs to be added to the build list, simply add its name to the appropriate variable assignment statement. The source dependencies are automatically created.
Type B: The remaining directories use the type B make system. Each Makefile is self contained, except for definitions.mk and optimizations.mk. Adding a source file to the build list is more work than for type A and the dependency list must be manually maintained. Good luck if you want to build a library.
First, read this for an overview of the make system. The variable names that identify the commands are
Variable |
File |
Default |
Description |
---|---|---|---|
SCAN_GEN |
basicDefinitions.mk |
lex |
The lexical scanner. |
PARSE_GEN |
basicDefinitions.mk |
yacc |
The parser. |
CC |
basicDefinitions.mk or definitions.mk |
gcc |
The C/C++ compiler. |
LD |
basicDefinitions.mk |
gcc |
The linker. |
LIBS |
basicDefinitions.mk and projectDefinitions.mk |
dynamic |
The libraries to be linked against. If the target includes C++ files, then the library libstdc++ is included. |
Use a command of the form “CCFLAGS += <flag>” . The variable for linker flags is LDFLAGS. The command should be added to either definitions.mk (for global flags) or <dir>/Makefile (for local flags).
Protcol descriptions, including the command line arguments for running the simulator on the SSR family of protocols are described here.
The analyzer is described here.
The SSR/SHR configuration file format is described here.