1 | /**CHeaderFile***************************************************************** |
---|
2 | |
---|
3 | FileName [sim.h] |
---|
4 | |
---|
5 | PackageName [sim] |
---|
6 | |
---|
7 | Synopsis [Simulation of a flattened network.] |
---|
8 | |
---|
9 | Description [The sim package provides functions for simulation. It also |
---|
10 | provides the "simulate" command in the VIS environment. The simulate command |
---|
11 | performs a simulation of a network or a part of a network. |
---|
12 | <p> |
---|
13 | sim conceives simulation through three operations: |
---|
14 | <p> |
---|
15 | 1- Build simulation vectors. |
---|
16 | <p> |
---|
17 | 2- Simulate. |
---|
18 | <p> |
---|
19 | 3- Print the result. |
---|
20 | <p> |
---|
21 | Exported functions make it possible to build an internal data-structure, and |
---|
22 | perform the three operations given above. Simulation vectors may be provided |
---|
23 | by the user. Using exported functions, it is also possible to generate |
---|
24 | simulation vectors randomly or reading it from a file. Low level functions |
---|
25 | are also available that evaluate, for example, a network node using a |
---|
26 | simulation vector. An example of a simulation vectors file may be generated |
---|
27 | using the simulate command with random-vectors-generation option, in VIS. |
---|
28 | <p> |
---|
29 | WARNING : In order to improve the speed of simulation, it is assumed that |
---|
30 | each combinational output function is completely specified, and that each |
---|
31 | simulation vector specifies a minterm over the combinational inputs this |
---|
32 | assumption is not checked. Incorrect results may be produced if this |
---|
33 | assumption is violated.] |
---|
34 | |
---|
35 | Author [Shaker Sarwary and Tom Shiple] |
---|
36 | |
---|
37 | Copyright [Copyright (c) 1994-1996 The Regents of the Univ. of California. |
---|
38 | All rights reserved. |
---|
39 | |
---|
40 | Permission is hereby granted, without written agreement and without license |
---|
41 | or royalty fees, to use, copy, modify, and distribute this software and its |
---|
42 | documentation for any purpose, provided that the above copyright notice and |
---|
43 | the following two paragraphs appear in all copies of this software. |
---|
44 | |
---|
45 | IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR |
---|
46 | DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT |
---|
47 | OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF |
---|
48 | CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
---|
49 | |
---|
50 | THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, |
---|
51 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
---|
52 | FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN |
---|
53 | "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE |
---|
54 | MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.] |
---|
55 | |
---|
56 | Revision [$Id: sim.h,v 1.5 2002/09/08 23:33:35 fabio Exp $] |
---|
57 | |
---|
58 | ******************************************************************************/ |
---|
59 | |
---|
60 | #ifndef _SIM |
---|
61 | #define _SIM |
---|
62 | |
---|
63 | /*---------------------------------------------------------------------------*/ |
---|
64 | /* Nested includes */ |
---|
65 | /*---------------------------------------------------------------------------*/ |
---|
66 | #include "ntk.h" |
---|
67 | |
---|
68 | /*---------------------------------------------------------------------------*/ |
---|
69 | /* Type declarations */ |
---|
70 | /*---------------------------------------------------------------------------*/ |
---|
71 | |
---|
72 | /* Sim main Data structure type */ |
---|
73 | |
---|
74 | typedef struct SimSimStruct Sim_Sim_t; |
---|
75 | |
---|
76 | /**Enum************************************************************************ |
---|
77 | |
---|
78 | Synopsis [Pseudo-inputs source.] |
---|
79 | |
---|
80 | Description [Pseudo-inputs source. There are 4 possible source : |
---|
81 | ---> undefined : If input vectors are read from a file, then user must |
---|
82 | specify the pseudo-inputs. If vectors are generated randomly, then |
---|
83 | pseudo-inputs are chosen randomly. |
---|
84 | ---> user : Pseudo-inputs are specified in the input vectors file. |
---|
85 | ---> random : Pseudo-inputs are generated randomly. If vectors are read from |
---|
86 | a file, this option cannot be used. |
---|
87 | ---> first : The first value of pseudo-input in the array of value of the |
---|
88 | variable is chosen. If vectors are read from a file, this option cannot be used. |
---|
89 | |
---|
90 | ******************************************************************************/ |
---|
91 | typedef enum { |
---|
92 | Sim_Undef_c, |
---|
93 | Sim_User_c, |
---|
94 | Sim_Random_c, |
---|
95 | Sim_First_c |
---|
96 | } Sim_PseudoSrc; |
---|
97 | |
---|
98 | |
---|
99 | /**AutomaticStart*************************************************************/ |
---|
100 | |
---|
101 | /*---------------------------------------------------------------------------*/ |
---|
102 | /* Function prototypes */ |
---|
103 | /*---------------------------------------------------------------------------*/ |
---|
104 | |
---|
105 | EXTERN void Sim_SimPrint(Sim_Sim_t * sim, FILE * of, boolean printMode, int printInputsFlag, int printOutputsFlag, int printPseudoInputsFlag, int printStatesFlag); |
---|
106 | EXTERN Sim_Sim_t * Sim_FileParseDeclaration(Ntk_Network_t * network, FILE * fp, char * inputFile, boolean verbose); |
---|
107 | EXTERN int Sim_FileParseVectors(FILE * fp, Sim_Sim_t * sim, int num); |
---|
108 | EXTERN void Sim_Init(void); |
---|
109 | EXTERN void Sim_End(void); |
---|
110 | EXTERN Sim_Sim_t * Sim_SimCreate(Ntk_Network_t * network, st_table * nodeToMvfTable, char * inputFile, int lineNumber, array_t * nodesArray, int currentStateHead, int internalPartitionHead, int nextStateHead, int outputHead, array_t * initState, array_t * vectorArray, boolean verbose); |
---|
111 | EXTERN void Sim_SimReset(Sim_Sim_t * sim); |
---|
112 | EXTERN void Sim_SimFree(Sim_Sim_t * sim); |
---|
113 | EXTERN array_t * Sim_NetworkCreateNodesArray(Ntk_Network_t * network, int * currentStateHead, int * internalPartitionHead, int * nextStateHead, int * outputHead); |
---|
114 | EXTERN void Sim_SimGenerateRandomVectors(Sim_Sim_t * sim, int numberVector, Sim_PseudoSrc pseudoInputSource); |
---|
115 | EXTERN void Sim_SimGenerateRandomInitState(Sim_Sim_t * sim); |
---|
116 | EXTERN void Sim_SimSimulate(Sim_Sim_t * sim); |
---|
117 | EXTERN int Sim_nodeToMvfTableEvaluateNode(st_table * nodeToMvfTable, Ntk_Node_t * node, mdd_t * vectorMdd); |
---|
118 | EXTERN array_t * Sim_nodeToMvfTableEvaluateNodesArray(st_table * nodeToMvfTable, array_t * nodesArray, mdd_t * vectorMdd); |
---|
119 | EXTERN mdd_t * Sim_RandomSimulate(Ntk_Network_t * network, int num, boolean verbose); |
---|
120 | EXTERN Ntk_Network_t * Sim_SimReadNetwork(Sim_Sim_t * sim); |
---|
121 | EXTERN st_table * Sim_SimReadNodeToMvfTable(Sim_Sim_t * sim); |
---|
122 | EXTERN char * Sim_SimReadInputFile(Sim_Sim_t * sim); |
---|
123 | EXTERN int Sim_SimReadLineNumber(Sim_Sim_t * sim); |
---|
124 | EXTERN array_t * Sim_SimReadNodesArray(Sim_Sim_t * sim); |
---|
125 | EXTERN int Sim_SimReadCurrentStateHead(Sim_Sim_t * sim); |
---|
126 | EXTERN int Sim_SimReadNextStateHead(Sim_Sim_t * sim); |
---|
127 | EXTERN int Sim_SimReadOutputHead(Sim_Sim_t * sim); |
---|
128 | EXTERN array_t * Sim_SimReadInitState(Sim_Sim_t * sim); |
---|
129 | EXTERN array_t * Sim_SimReadVectorArray(Sim_Sim_t * sim); |
---|
130 | EXTERN boolean Sim_SimTestIsVerbose(Sim_Sim_t * sim); |
---|
131 | EXTERN st_table * Sim_NetworkBuildNodeToMvfTable(Ntk_Network_t *network, array_t *nodesArray, int internalPartitionHead, int nextStateHead); |
---|
132 | |
---|
133 | /**AutomaticEnd***************************************************************/ |
---|
134 | |
---|
135 | #endif /* _SIM */ |
---|
136 | |
---|
137 | |
---|