00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #if !defined(oagFuncSimOcc_P)
00014 #define oagFuncSimOcc_P
00015
00016 #include "oaDesignDB.h"
00017 #include "oagFunc.h"
00018 #include "oagFuncOccGraph.h"
00019 #include <list>
00020 #include <map>
00021 #include <set>
00022
00023 using namespace std;
00024
00025 namespace oagFunc {
00026
00027 typedef unsigned int SimulationVector;
00028
00029
00030
00031
00033
00034
00035
00036 class SimOcc {
00037
00038 public:
00039
00040 typedef unsigned int SimVec;
00041
00042 SimOcc(oa::oaDesign *design);
00043
00044 void setVector(OccRef &ref, SimulationVector vec);
00045 void generateRandomInputVectors();
00046 void generateRandomStateVectors();
00047 void clear();
00048
00049 void nextCycle();
00050
00051 void runFull();
00052
00053 void initializeIncremental();
00054 void runIncremental();
00055
00056 bool getVector(const OccRef &ref, SimulationVector &vec);
00057
00058 protected:
00059
00060 SimulationVector randomVector();
00061 int BITS_PER_RAND;
00062
00063 oa::oaDesign *design;
00064 list<OccRef> toBeSimulated;
00065 map<OccRef, SimulationVector> data;
00066 };
00067
00068 }
00069
00070 #endif