1.0 Introduction 1

1.1 Purpose of this document 1

2.0 Installation 2

2.1 Super-FinSim directory structure 2

2.2 Super-FinSim installation guide 2

2.2.1 Installing the UNIX distribution 2

2.2.2 Installing the Windows distribution 5

2.3 Host `C' compiler 7

2.4 Super-FinSim environment variables 7

3.0 How to use the compiler 8

3.1 Operations performed by the compiler 8

3.2 Invoking the Verilog Compiler 8

3.2.1 Verilog Compiler Options 9

3.2.2 Precedence order for simulation mode options 19

3.3 Files generated by the Verilog compiler finvc 19

3.4 Incremental recompilation 19

3.5 Separate compilation 20

3.5.1 Compiling a Verilog Design Hierarchy into object code for later reuse 20

3.5.2 Using a separately compiled hierarchy 21

3.5.3 Restrictions 21

3.6 Calling user C tasks/functions in Super-FinSim without the PLI interface 22

3.7 Using Mixed Verilog/SysytemC descriptions 23

3.7.1 3.7.2 Instantiating SystemC modules in Verilog 23

3.7.2 3.7.3 Invoking finvc when there are SystemC modules involved 23

3.7.3 3.7.4 Rules to be observed by SystemC modules instantiated in Verilog: 23

3.7.4 3.7.5 Invoking TOP.sim or the name of the simulator 24

4.0 How to build the simulator 24

4.1 Operations performed by the simulation builder 24

4.2 Invoking the simulation builder 25

4.2.1 Simulation builder options 26

4.2.2 Removing system files 27

5.0 Building the PLI interface in Super-FinSim 27

5.1 Using the Fintronic PLI table 27

5.1.1 Creating the table manually 28

5.1.2 Creating the table automatically 29

5.2 Building a custom compiler 30

5.3 Building the simulator with PLI 30

5.4 Using multiple veriusertfs tables 31

6.0 How to use the simulation engine 32

6.1 Operations performed by the simulation engine 32

6.2 Invoking the simulator 32

6.3 Simulator Options 33

6.4 Simulation Modes 35

6.4.1 Batch Simulation 35

6.4.2 Interactive Simulation 35

6.4.3 Using script files 36

6.4.4 The Save and Restart feature in Super-FinSim. 36

6.5 Starting a real time waveform display 38

6.6 Simulation output 38

6.7 Interrupting the simulator 38

6.8 Terminating the simulator 39

7.0 Super-FinSim Interactive commands 39

7.1 List of interactive commands 40

7.2 Processing simulation data structures 43

7.2.1 Build 43

7.2.2 Init 44

7.3 Running the simulation 44

7.3.1 Run 44

7.3.2 Cont 44

7.4 Handling of simulation scope 44

7.4.1 Cd 44

7.4.2 Ls 45

7.5 Querying of simulation objects 45

7.5.1 Info 45

7.5.2 Value 45

7.5.3 Force 45

7.5.4 Release 46

7.6 Super-FinSim environment variables 46

7.6.1 Setenv 46

7.6.2 Printenv 46

7.7 Miscellaneous system facilities 47

7.8 Simulation Help Facility 48

7.9 Command history 48

7.10 Command aliasing 48

8.0 Support for FinSimMath 49

8.1 Introduction 49

8.2 Variable Precision Fixed Point and Floating Point Support in Super-FinSim 50

8.3 Introduction 50

8.4 Values of VP registers 50

8.5 Specifying VP objects 51

8.5.1 Introduction 51

8.5.2 Setting the fields of the descriptor 53

8.5.3 The Default Descriptor 55

8.6 VP register manipulation 55

8.6.1 Simple Assignments toVP registers 55

8.6.2 Arithmetic Operators operating on VP registers 57

8.6.3 Logical Operators involving VP registers 59

8.6.4 Assignments to non-VP objects 59

8.6.5 Trigonometric Direct and Inverse Functions 59

8.6.6 Hyperbolic direct and Inverse Functions 60

8.6.7 Functions returning universal constants 61

8.6.8 Logarithm and Exponential Functions 61

8.6.9 Other Functions accepting VP registers as operators 62

8.6.10 Using Special Condition Signals/Flags of VP registers 63

8.6.11 Assigning VP registers to verilog registers 63

8.6.12 Assigning verilog registers to VP registers 64

8.6.13 Assigning Verilog Real to Verilog registers 64

8.6.14 Displaying VP register values 65

8.6.15 I/O of VP registers 65

8.6.16 Plotting data 65

8.7 Cartesian and Polar types 67

8.7.1 Type VpComplex 67

8.7.2 Type VpPolar 68

8.7.3 Type VpFComplex 68

8.7.4 Type VpFPolar 68

8.7.5 Operators on Cartesian and Polar types 68

8.8 Operations on Multi-dimensional arrays 69

8.8.1 Populating Multi-dimensional arrays with values 69

8.8.2 Viewing elements of a multi-dimensional array as part of a different structure 71

8.8.3 Displaying Multi-dimensional Arrays 71

8.8.4 Norms and Distances 73

8.8.5 Sparse Matrices 74

8.8.6 Fast Fourier Transform: $VpFft and $VpIfft 75

8.8.7 Discreete Cosine Transform: $VpDct and $VpIdct 75

8.8.8 Linear Differential Equations 76

8.8.9 Numeric Differentiation and Integration 77

8.8.10 Symbolic Computation 78

8.9 Generation of Gate-level models 80

8.9.1 FIR Filter Generation 80

9.0 Tour of the Super-FinSim design environment 84

9.1 Running Super-FinSim in pure interpreted mode 84

9.2 Running Super-FinSim in mixed mode 84

9.3 Running Super-FinSim in accelerated mode 85

9.4 General simulation tips 85

10.0 The Graphical User Interface for Super-FinSim 85

10.1 Super-FinSim status codes and errors 88

10.2 Syntactic errors 88

10.3 Semantic errors 89

10.4 Simulation errors 89

10.5 Compiler Internal errors 89

10.6 Simulation Internal errors 89

11.0 Running FinSim with Code Coverage 89

11.1 Introduction 89

11.2 Code Coverage Information 90

11.3 Display the Code Coverage Information 90

11.4 Graphical User Interface for Code Coverage 91

12.0 Running FinSim with third party tools 92

12.1 Running Super-FinSim with Specman 92

12.1.1 Verilog Compilation. 92

12.1.2 Building the simulator. 92

12.1.3 Running the simulation. 93

12.2 Running Super-FinSim with Debussy 94

12.3 Running Super-FinSim with Undertow 95

13.0 Super-FinSim Implementation Notes 95

13.1 Unsupported system tasks/functions 95

13.2 Default files 96

13.2.1 Default VCD dump file 96

13.2.2 Default simulation log file 96

13.2.3 Default simulation key file 96

13.2.4 Default SDF log file 96

13.3 Super-FinSim system limitations 96

13.4 Limitations of the host `C' compiler 96

14.0 Platform specific Implementation Notes 96

14.1 HP-UX 96

14.2 Solaris 97

14.3 Solaris 64 bit 97

14.4 Sony NEWS 97

14.5 Windows 95/98/ME/2000/NT 97