Router.h revision 10447
110447Snilay@cs.wisc.edu#ifndef __DSENT_MODEL_ELECTRICAL_ROUTER_ROUTER_H__
210447Snilay@cs.wisc.edu#define __DSENT_MODEL_ELECTRICAL_ROUTER_ROUTER_H__
310447Snilay@cs.wisc.edu
410447Snilay@cs.wisc.edu#include "util/CommonType.h"
510447Snilay@cs.wisc.edu#include "model/ElectricalModel.h"
610447Snilay@cs.wisc.edu
710447Snilay@cs.wisc.edunamespace DSENT
810447Snilay@cs.wisc.edu{
910447Snilay@cs.wisc.edu    /** \class Router
1010447Snilay@cs.wisc.edu     * \param Input ports: In[0-9]*
1110447Snilay@cs.wisc.edu     * \param Output ports: Out[0-9]*
1210447Snilay@cs.wisc.edu     */
1310447Snilay@cs.wisc.edu    class Router : public ElectricalModel
1410447Snilay@cs.wisc.edu    {
1510447Snilay@cs.wisc.edu        public:
1610447Snilay@cs.wisc.edu            Router(const String& instance_name_, const TechModel* tech_model_);
1710447Snilay@cs.wisc.edu            virtual ~Router();
1810447Snilay@cs.wisc.edu
1910447Snilay@cs.wisc.edu        public:
2010447Snilay@cs.wisc.edu            // Set a list of properties' name needed to construct model
2110447Snilay@cs.wisc.edu            void initParameters();
2210447Snilay@cs.wisc.edu            // Set a list of properties' name needed to construct model
2310447Snilay@cs.wisc.edu            void initProperties();
2410447Snilay@cs.wisc.edu
2510447Snilay@cs.wisc.edu            // Clone and return a new instance
2610447Snilay@cs.wisc.edu            virtual Router* clone() const;
2710447Snilay@cs.wisc.edu
2810447Snilay@cs.wisc.edu        protected:
2910447Snilay@cs.wisc.edu            // Build the model
3010447Snilay@cs.wisc.edu            virtual void constructModel();
3110447Snilay@cs.wisc.edu            virtual void updateModel();
3210447Snilay@cs.wisc.edu            virtual void propagateTransitionInfo();
3310447Snilay@cs.wisc.edu
3410447Snilay@cs.wisc.edu        private:
3510447Snilay@cs.wisc.edu            void createRouterInputPort();
3610447Snilay@cs.wisc.edu            void createVirtualChannelAllocator();
3710447Snilay@cs.wisc.edu            void createSwitchAllocator();
3810447Snilay@cs.wisc.edu            void createCrossbar();
3910447Snilay@cs.wisc.edu            void createClockTree();
4010447Snilay@cs.wisc.edu            void createPipelineReg();
4110447Snilay@cs.wisc.edu
4210447Snilay@cs.wisc.edu    }; // class Router
4310447Snilay@cs.wisc.edu} // namespace DSENT
4410447Snilay@cs.wisc.edu
4510447Snilay@cs.wisc.edu#endif // __DSENT_MODEL_ELECTRICAL_ROUTER_ROUTER_H__
4610447Snilay@cs.wisc.edu
47