Router.h revision 10447:a465576671d4
1#ifndef __DSENT_MODEL_ELECTRICAL_ROUTER_ROUTER_H__
2#define __DSENT_MODEL_ELECTRICAL_ROUTER_ROUTER_H__
3
4#include "util/CommonType.h"
5#include "model/ElectricalModel.h"
6
7namespace DSENT
8{
9    /** \class Router
10     * \param Input ports: In[0-9]*
11     * \param Output ports: Out[0-9]*
12     */
13    class Router : public ElectricalModel
14    {
15        public:
16            Router(const String& instance_name_, const TechModel* tech_model_);
17            virtual ~Router();
18
19        public:
20            // Set a list of properties' name needed to construct model
21            void initParameters();
22            // Set a list of properties' name needed to construct model
23            void initProperties();
24
25            // Clone and return a new instance
26            virtual Router* clone() const;
27
28        protected:
29            // Build the model
30            virtual void constructModel();
31            virtual void updateModel();
32            virtual void propagateTransitionInfo();
33
34        private:
35            void createRouterInputPort();
36            void createVirtualChannelAllocator();
37            void createSwitchAllocator();
38            void createCrossbar();
39            void createClockTree();
40            void createPipelineReg();
41
42    }; // class Router
43} // namespace DSENT
44
45#endif // __DSENT_MODEL_ELECTRICAL_ROUTER_ROUTER_H__
46
47