Router.h revision 10447:a465576671d4
18706Sandreas.hansson@arm.com#ifndef __DSENT_MODEL_ELECTRICAL_ROUTER_ROUTER_H__ 212522Sandreas.sandberg@arm.com#define __DSENT_MODEL_ELECTRICAL_ROUTER_ROUTER_H__ 38706Sandreas.hansson@arm.com 48706Sandreas.hansson@arm.com#include "util/CommonType.h" 58706Sandreas.hansson@arm.com#include "model/ElectricalModel.h" 68706Sandreas.hansson@arm.com 78706Sandreas.hansson@arm.comnamespace DSENT 88706Sandreas.hansson@arm.com{ 98706Sandreas.hansson@arm.com /** \class Router 108706Sandreas.hansson@arm.com * \param Input ports: In[0-9]* 118706Sandreas.hansson@arm.com * \param Output ports: Out[0-9]* 128706Sandreas.hansson@arm.com */ 138706Sandreas.hansson@arm.com class Router : public ElectricalModel 148706Sandreas.hansson@arm.com { 158706Sandreas.hansson@arm.com public: 168706Sandreas.hansson@arm.com Router(const String& instance_name_, const TechModel* tech_model_); 178706Sandreas.hansson@arm.com virtual ~Router(); 188706Sandreas.hansson@arm.com 198706Sandreas.hansson@arm.com public: 208706Sandreas.hansson@arm.com // Set a list of properties' name needed to construct model 218706Sandreas.hansson@arm.com void initParameters(); 228706Sandreas.hansson@arm.com // Set a list of properties' name needed to construct model 238706Sandreas.hansson@arm.com void initProperties(); 248706Sandreas.hansson@arm.com 258706Sandreas.hansson@arm.com // Clone and return a new instance 268706Sandreas.hansson@arm.com virtual Router* clone() const; 278706Sandreas.hansson@arm.com 288706Sandreas.hansson@arm.com protected: 298706Sandreas.hansson@arm.com // Build the model 308706Sandreas.hansson@arm.com virtual void constructModel(); 318706Sandreas.hansson@arm.com virtual void updateModel(); 328706Sandreas.hansson@arm.com virtual void propagateTransitionInfo(); 338706Sandreas.hansson@arm.com 348706Sandreas.hansson@arm.com private: 358706Sandreas.hansson@arm.com void createRouterInputPort(); 368706Sandreas.hansson@arm.com void createVirtualChannelAllocator(); 378706Sandreas.hansson@arm.com void createSwitchAllocator(); 388706Sandreas.hansson@arm.com void createCrossbar(); 398706Sandreas.hansson@arm.com void createClockTree(); 408706Sandreas.hansson@arm.com void createPipelineReg(); 418706Sandreas.hansson@arm.com 428706Sandreas.hansson@arm.com }; // class Router 438706Sandreas.hansson@arm.com} // namespace DSENT 448853Sandreas.hansson@arm.com 458853Sandreas.hansson@arm.com#endif // __DSENT_MODEL_ELECTRICAL_ROUTER_ROUTER_H__ 468853Sandreas.hansson@arm.com 478853Sandreas.hansson@arm.com