BroadcastHTree.h revision 10447:a465576671d4
1#ifndef __DSENT_MODEL_ELECTRICAL_BROADCAST_HTREE_H__
2#define __DSENT_MODEL_ELECTRICAL_BROADCAST_HTREE_H__
3
4#include "util/CommonType.h"
5#include "model/ElectricalModel.h"
6
7#include <vector>
8
9namespace DSENT
10{
11    using std::vector;
12
13    class StdCell;
14    class ElectricalLoad;
15    class ElectricalTimingTree;
16
17    class BroadcastHTree : public ElectricalModel
18    {
19        public:
20            BroadcastHTree(const String& instance_name_, const TechModel* tech_model_);
21            virtual ~BroadcastHTree();
22
23        public:
24            // Set a list of properties' name needed to construct model
25            void initParameters();
26            // Set a list of properties' name needed to construct model
27            void initProperties();
28
29            // Clone and return a new instance
30            virtual BroadcastHTree* clone() const;
31
32        protected:
33            // Build the model
34            virtual void constructModel();
35            virtual void updateModel();
36            virtual void useModel();
37            virtual void propagateTransitionInfo();
38
39        private:
40            vector<StdCell*> m_repeaters_;
41            vector<ElectricalLoad*> m_repeater_loads_;
42            vector<ElectricalTimingTree*> m_timing_trees_;
43            vector<unsigned int> m_number_segments_;
44
45            vector<StdCell*> m_leaf_drivers_;
46            ElectricalLoad* m_leaf_load_;
47            StdCell* m_leaf_head_driver_;
48            ElectricalLoad* m_leaf_head_load_;
49
50    }; // class BroadcastHTree
51} // namespace DSENT
52
53#endif // __DSENT_MODEL_ELECTRICAL_BROADCAST_HTREE_H__
54
55