summaryrefslogtreecommitdiff
path: root/ext/dsent/DSENT.h
blob: 42abb98e1233d5388638f10e846a0a7e21db7c0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#ifndef __DSENT_DSENT_H__
#define __DSENT_DSENT_H__

// For DSENT operations
#include "libutil/OptionParser.h"
#include "libutil/Calculator.h"
#include "util/CommonType.h"
#include "util/Config.h"
#include "util/Result.h"
#include "model/Model.h"
#include "model/ModelGen.h"

// For timing optimization
#include "model/ElectricalModel.h"
#include "model/timing_graph/ElectricalNet.h"
#include "model/timing_graph/ElectricalTimingTree.h"
#include "model/timing_graph/ElectricalTimingOptimizer.h"
#include "model/PortInfo.h"

namespace DSENT
{
    using LibUtil::OptionParser;
    using LibUtil::Calculator;

    class DSENT
    {
        protected:
            class DSENTCalculator : public Calculator
            {
                public:
                    DSENTCalculator();
                    virtual ~DSENTCalculator();
        
                protected:
                    virtual double getEnvVar(const String& var_name_) const;
            }; // class DSENTCalculator

        public:
            static void run(int argc_, char** argv_);

        protected:
            static void setRuntimeOptions(OptionParser* option_parser_);
            static void initialize(int argc_, char** argv_);
            static void buildModel();
            static void processQuery();
            static const void* processQuery(const String& query_str_, bool is_print_);
            static void finalize();

            static void performTimingOpt();
            static void reportTiming();

            static void processEvaluate();

        protected:
            static Model* ms_model_;

            static bool ms_is_verbose_;

    }; // class DSENT

} // namespace DSENT

#endif // __DSENT_DSENT_H__