00001 #ifndef AMSKERNEL_STATE_HH 00002 #define AMSKERNEL_STATE_HH 00003 00004 // Copyright (c) 2002-2005 The University of Cincinnati. All rights 00005 // reserved. 00006 00007 // You may modify, distribute, and use the software contained in this 00008 // package under the terms of the "GNU LIBRARY GENERAL PUBLIC LICENSE" 00009 // version 2, June 1991. A copy of this license agreement can be found in 00010 // the file "LGPL", distributed with this archive. 00011 00012 // Authors: Sameer Kher kherss@ececs.uc.edu 00013 // Shriram Subramanian subramsi@ececs.uc.edu 00014 00015 #include "tyvis/CallStack.hh" 00016 #include "tyvis/Block.hh" 00017 #include "tyvis/Variable.hh" 00018 #include "tyvis/VHDLKernel_state.hh" 00019 #include "tyvis/Constants.hh" 00020 #include "warped/SimulationObject.h" 00021 #include "warped/State.h" 00022 00023 class Wait; 00024 class SignalBase; 00025 class VHDLKernel; 00026 class AMSKernel; 00027 00028 typedef long long int discreteTime; 00029 00032 class AMSKernel_state: public VHDLKernel_state { 00033 00034 public: 00035 AMSKernel_state(); 00036 virtual ~AMSKernel_state(); 00037 00039 double* getRhs(); 00040 00042 double* getOldRhs(); 00043 00045 void cleanState(); 00046 00049 virtual SignalBase* locateSig(int); 00050 00052 long getMode(); 00053 00057 void setMode(long newMode); 00058 00060 int getIterMode(); 00061 00062 /* Sets the iteration state machine state vector. 00063 00064 @param newMode vector indicating iteration state vector.*/ 00065 void setIterMode(int newMode); 00066 00070 void setRhs(double* newRhs ); 00071 00076 void setRhsValue(int position, double value); 00077 00081 void setOldRhs(double* newRhs); 00082 00087 void setOldRhsValue(int position, double value); 00088 00090 int getVectorSize(); 00091 00095 void setVectorSize(int size); 00096 00098 void initState(); 00099 00101 discreteTime getCurTime(); 00102 00106 void setCurTime(discreteTime value); 00107 00113 double* getStateVector(int i); 00114 00116 int getStateLength(); 00117 00121 void setStateLength(int value); 00122 00124 int getIntegOrder(); 00125 00129 void setIntegOrder(int value); 00130 00132 double getDelta(); 00133 00137 void setDelta(double value); 00138 00144 double getOldDelta(int i); 00145 00151 void setOldDelta(int i, double value); 00152 00158 double getIntegCoeff(int i); 00159 00165 void setIntegCoeff(int i, double value); 00166 00172 double* getStates(int i); 00173 00179 void setStates(int i, double* value); 00180 00188 void setStates(int i, int j, double value); 00189 00191 discreteTime getFinalTime(); 00192 00196 void setFinalTime(discreteTime value); 00197 00198 00199 00200 00201 protected: 00202 00203 private: 00204 00206 long mode; 00207 00209 int iterMode; 00210 00212 double* rhs; 00213 00215 double* oldRhs; 00216 00218 int vectorSize; 00219 00221 int stateLength; 00222 00224 double* states[4]; 00225 00227 int integOrder; 00228 00230 double integCoeff[7]; 00231 00233 discreteTime finalTime; 00234 00236 discreteTime curTime; 00237 00239 double delta; 00240 00242 double oldDelta[7]; 00243 00244 }; 00245 00246 #endif
1.4.6