Frequently Asked Questions (version 3.0)


Contents:

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?


What systems has SENSE 3.0 been tested on?

The main development was performed on a Linux system with gcc v4.0.2.
Mac OS X:
Windows XP:
Others?

Why does SENSE require lex and yacc?

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.

How is the make system organized?

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.
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.

How do I change the make system to use a replacement for gcc/lex/yacc?

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.




How do I specify a compile or link flag in the make system?

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).

Where is there a description of protocols implemented in the simulator?

Protcol descriptions, including the command line arguments for running the simulator on the SSR family of protocols are described here.

Where is there a description of the SSR/SHR analysis utilities?

The analyzer is described here.

Where is there a description of the SSR/SHR configuration file?

The SSR/SHR configuration file format is described here.