[14] | 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 | |
---|