oagTimerTPointMaster.h

Go to the documentation of this file.
00001 /* (c) Copyright 2004-2005, Cadence Design Systems, Inc.  All rights reserved. 
00002 This file is part of the OA Gear distribution.  See the COPYING file in
00003 the top level OA Gear directory for copyright and licensing information. */
00004 
00005 /*
00006 Author: Zhong Xiu <zxiu@andrew.cmu.edu>
00007 
00008 ChangeLog:
00009 2004-09-15: ChangeLog started
00010 */
00011 
00012 #if !defined(oagTPointMaster_P)
00013 #define oagTPointMaster_P
00014 
00015 #include <assert.h>
00016 #include <vector>
00017 #include "oaDesignDB.h"
00018 
00019 #include "oagTimerModel.h"
00020 #include "oagTimerTPoint.h"
00021 
00022 namespace oagTimer {
00023 
00027 struct TimerPath {
00028     oaModTerm *other; 
00029     ModelType *delay; 
00030     ModelType *slew; 
00031     int transition; 
00032 };
00033 
00045 class TPointMaster {
00046   friend class TPoint;
00047   friend class Timer;
00048   friend class Report;
00049   friend class LibData;
00050   friend class ElmoreWireModel;
00051   friend class PowerSenseOpt;
00052   friend class DuetSensitivity;
00053   friend class Opt;
00054   friend class Util;
00055   friend class TimerUtil;
00056   friend class SubTimer;
00057 
00058   public:
00059     static const int TRANSITION_SRC_RISE = 0x01;
00060     static const int TRANSITION_SRC_FALL = 0x02;
00061     static const int TRANSITION_DST_RISE = 0x10;
00062     static const int TRANSITION_DST_FALL = 0x20;
00063 
00064   public:
00066     TPointMaster() { loadLimit = 0.0; }
00068     ~TPointMaster();
00069 
00070   public:
00072     double cap;
00074     double loadLimit;
00075 
00076   private:
00078     typedef std::vector<TimerPath> pathVector;
00080     pathVector inPaths;
00082     pathVector outPaths;
00083 
00084   private:
00086     typedef std::vector<ModelType *> modelVector;
00088     modelVector _models;
00089 
00091 
00092   private:
00093     // Static vars
00094     static oaVoidPointerAppDef<oaModTerm> *_termAppDef;
00095 
00097     static void initAppDefs();
00098 
00106     static TPointMaster *create(oaModTerm *term);
00107 
00113     static TPointMaster *get(oaModTerm *term);
00114 
00115   private:
00125     void _makePath(TimerPath        &p,
00126                    oaModTerm        *term,
00127                    const ModelType  *delay,
00128                    const ModelType  *slew,
00129                    int              transition);
00130 
00131   public:
00139     void addInPath(oaModTerm        *term,
00140                    const ModelType  *delay,
00141                    const ModelType  *slew,
00142                    int              transition);
00143 
00151     void addOutPath(oaModTerm       *term,
00152                     const ModelType *delay,
00153                     const ModelType *slew,
00154                     int             transition);
00155 
00157 
00158 };
00159 
00160 }
00161 
00162 #endif

Generated on Thu Aug 25 14:24:05 2011 by  doxygen 1.3.9.1