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